본문 바로가기

DB

[MySQL] DATETIME, TIMEZONE MySQL의 자료형 중 DATETIME과 TIMESTAMP는 모두 날짜와 시간 정보를 저장하는데 사용된다. 이 둘의 차이는 TIMEZONE의 반영 여부이다.​xCREATE TABLE datetest ( test_datetime DATETIME, test_timestamp TIMESTAMP);​INSERT INTO datetest VALUE(NOW(), NOW());테스트를 위해 DATETIME과 TIMESTAMP를 가진 테이블을 만들고 현재 시간을 저장했다. xxxxxxxxxxSELECT * FROM datetest;위와 같이 동일한 값이 저장된 것을 확인할 수 있다. xxxxxxxxxxSET TIME_ZONE = "Asia/Seoul";하지만 위처럼 세션의 TIMEZONE을 변경하고 데이터를 조회할 경..
[MySQL]8. 데이터베이스 설계 34. 데이터베이스 설계데이터베이스를 설계한다는 것은 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 드으이 데이터베이스 객체를 정의하는 것을 말한다.테이블 명테이블을 설계할 떄 테이블 이름이나 열 이름을 지정한다.CREATE TABLE로 지정하는걸 물리명, 설꼐산 이름이 논리명테이블 생성시 COMMENT로 논리명을 표시해줄 수 있다.CREATE TABLE 물리명 ( id INT NOT NULLCOMMENT = '논리명 설명';자료형테이블의 열에 적절한 자료형 지정5.-2) 참고기본키테이블을 작성할 떄 기본키 제약을 거는 경우 주의 : 행의 유일성을 지정AUTO_INCREMENT : PRIMARY KEY, UNIQUE로 유일성을 지정하도록 한다. ER 다이어그램테이블을 설계할 떄 테이블 간의 관계를 명확..
[MySQL] 7. 복수의 테이블 다루기 31. 집합 연산 SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] UNION은 다중 SELECT 문을 하나의 결과 집합으로 결합할 때 사용된다. SELECT로 지정된 튜플에 속해 있는 모든 컬럼의 값들 자체가 중복 체크의 기준이 된다. UNION ALL UNION [DISTINCT] union과 union all의 실행 계획을 보면 union는 실행 시 임시 테이블을 생성한다는 것을 확인할 수 있다. union에서 중복제거를 위한? 추가 연산을 수행한다. MySQL 내부적으로 UNION/UNION ALL 처리과정 최종 UNION [ALL | DISTINCT] 결과에 적합한 임시 테이블(Temporary tab..
[MySQL] 6. 데이터베이스 객체 작성과 객체 25) 데이터베이스 객체 데이터베이스 객체란? 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의해서 사용하는 실체를 가진 것을 말한다. 데이터베이스 객체는 스키마 내부에 만들어진다. 스키마를 정의하고, 그 안에 테이블 등 객체들을 담는다. MySQL에서 스키마를 생성하는 명령어는 다음과 같다. CREATE DATABASE [스키마 명]; 이렇게 생성한 스키마에 테이블이나 뷰 등 여러 객체를 생성할 수 있다. 스키마가 다르면 내부의 객체 이름이 같아도 상관없다. 26) 테이블 작성·삭제·변경 SELECT, INSERT, DELETE, UPDATE 같은 SQL은 데이터를 조작하는 DML로 분류된다. DDL은 데이터를 정의한는 명령으로, 스키마 내의 객체를 생성 및 관리할 떄 사용한다. xxxxxxxxxx C..
[MySQL] 5. 집계와 서브쿼리 20. 집계함수COUNT() : 행 개수를 반환 NULL 값이 있는경우 : COUNT(*)는 NULL 포함, 칼럼 지정할 경우 포함하지 않는다.AVG() : 해당 행 평균MIN() : 해당 열의 최소값MAX() : 해당 열의 최대값 GROUP BY가 MIN/MAX의 경우 EXPAIN을 실행해보면, Using index for group-by를 확인할 수 있다.22. 그룹화GROUP BY 구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶인다. GROUP BY 구로 그룹화된 각각의 그룹이 하나의 집합으로서 집계함수의 인수로 넘겨진다.xxxxxxxxxxSELECT ...FROM 테이블명GROUP BY 열1, 열2, ....GROUP BY에서 조건을 주고 싶을 경우 WHERE를 사용..
[MySQL] 4. 데이터의 추가, 삭제, 갱신 16. 행 추가하기 - INSERT 1) INSERT로 행 추가하기 INSERT INTO 테이블명 VALUES(값1, 값2, ...) INSERT INTO 테이블명(열1, 열2, ...) VALUES(값1, 값2, ...) , (값1, 값2, ...) , (값1, 값2, ...) , ... 테이블의 열에 NOT NULL제약이 있을 경우, 해당 열에 NULL 삽입 시 에러가 발생한다. CREATE TABLE IF NOT EXISTS sample ( id INT, num INT NOT NULL ); INSERT INTO sample VALUES(1); //error... INSERT INTO sample VALUES(1, NULL); //error... CREATE TABLE IF NOT EXISTS sam..
[MySQL]3. 정렬과 연산 9. 정렬 - ORDER BY ORDER BY 구를 사용하여 검색 결과의 행 순서를 바꿀 수 있다. 지정하지 않을 경우 데이터베이스 내부에 저장된 순서로 반환된다. ORDER BY는 검색된 레코드를 어떤 순서로 정렬할지 결정한다. 만약 ORDER BY 절이 사용되지 않으면 SELECT 쿼리의 결과는 어떤 순서로 정렬될까? 인덱스를 사용한 SELECT의 경우에는 인덱스의 정렬된 순서대로 레코드를 가져온다. 인덱스를 사용하지 못하고 MyISAM 테이블은 테이블에 저장된 순서대로 가져오는데 이 순서가 INSERT 된 순서를 의미하는 것은 아니다. 일반적으로 테이블의 레코듸가 삭제 되면서 빈 공간이 생기고, ISNERT 되는 레코드는 항상 테이블의 마지막이 아니라 빈 공간이 있으면 그 빈 공간에 저장되기 때문이..
[MySQL] 2. 테이블에서 데이터 검색 4. 데이터 조회하기 SQL을 통해 데이터를 조회해보자. 1) 'SELECT * FORM 테이블명' 실행 SQL 명령은 mysql클라이언트를 통해 실행할 수 있다. SELECT * FROM 테이블명 xxxxxxxxxx SELECT * FROM employees; SELECT 문을 통해 데이터를 조회할 수 있다. 2) SELECT 명령 구문 SELECT는 DML에 속하는 명령으로 SQL에서 자주 사용된다. SELECT 명령으로 데이터베이스의 데이터를 읽어올 수 있다. xxxxxxxxxx SELECT * //열 이름, *은 모든 열 FROM employees; *는 테이블의 모든 열을 출력하도록 한다. 열 이름을 지칭하면 해당 열의 데이터들만 표시된다. 3) 예약어와 데이터베이스 객체명 SQL에서 이미 사용..