'SQL(Structrued Query Language)'은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하기위해 쓰이는 '비절차적 언어'로 절차없이 사용자가 원하는 것만을 기술합니다.
※ 이 글에서는 MySQL의 SQL 문법을 기준으로 작성합니다.
([내용] 부분은 옵션으로, 반드시 기술해야하는 부분은 아닙니다.)
DDL 문으로 생성 가능한 개체 중 가장 상위 단계인 데이터베이스(스키마)를 생성합니다.
CREATE DATABASE(SCHEMA) 데이터베이스(스키마)명;
데이터베이스(스키마)를 생성한 후 USE 데이터베이스(스키마)명;
문을 사용하여 데이터베이스에 진입할 수 있습니다.
SHOW TABLES;
문으로 현재 데이터베이스에 존재하는 릴레이션(테이블) 목록을 조회할 수 있습니다.
아직은 릴레이션이 없는 상태이므로 릴레이션을 생성해주어야합니다.
자료를 실질적으로 저장하는 구조인 릴레이션(테이블)을 생성합니다.
CREATE TABLE 릴레이션명 (
컬럼1 데이터_타입 [제약조건],
컬럼2 데이터_타입 [제약조건],
...
컬럼n 데이터_타입 [제약조건],
[PRIMARY KEY 기본키로_지정할_컬럼],
[그외 UNIQUE, FOREIGN KEY 등의 조건]
)[CHARSET='인코딩_형식'];
릴레이션 생성 후 릴레이션 목록을 조회 해보면 릴레이션이 생성된 것을 확인할 수 있습니다.
SHOW CREATE TABLE 릴레이션명;
문을 사용하면 해당 릴레이션이 어떻게 정의되었는지 확인할 수 있습니다.
DESC 릴레이션명;
문을 사용하면 릴레이션에 어떤 컬럼들이 있고 어떤 데이터 타입을 사용하고있는지 등을 확인할 수 있습니다.
※ 데이터 타입
표기 | 범위 |
---|---|
TINYINT | 1byte, -128 ~ 127 |
SMALLINT | 2byte, -32,768 ~ 32,767 |
MEDIUMINT | 3byte, -8,388,608 ~ 8,388,607 |
INT | 4byte, -2,147,483,648 ~ 2,147,483,647 |
BIGINT | 8byte, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
표기 | 범위 |
---|---|
FLOAT | 4byte 크기의 부동 소수점 형식 유리수 |
표기 | 범위 |
---|---|
CHAR(n) | 길이 n의 고정 문자열 |
VARCHAR(n) | 길이 n 이하의 가변 문자열 |
표기 | 형식 | 범위 |
---|---|---|
DATE | YYYY-MM-DD | 3byte, 1000-01-01 ~ 9999-12-31 |
YEAR | YYYY | 1byte |
TIME | hh:mm:ss | 3byte |
DATETIME | YYYY-MM-DD hh:mm:ss | 8byte, 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
TIMESTAMP | YYYY-MM-DD hh:mm:ss | 4byte, 1970-01-01 00:00:01 ~ 2038-01-09 03:14:07 |
DATETIME의 경우 시간대가 일정하게 유지되지만, TIMESTAMP의 경우 타임존에 따라 시간이 달라지므로 의도치않은 시간값이 저장될 수 있습니다. 따라서 DATETIME이 권장됩니다.
※ 제약조건
NOT NULL : 해당 컬럼에 반드시 어떤 값이 저장되어야합니다.
NOT NULL
DEFAULT : 해당 컬럼에 어떤 값도 입력되지않으면 지정한 값이 자동으로 입력됩니다.
DEFAULT 값
CHECK : 데이터 무결성 유지를 위해 조건에 맞는 값만 입력 가능합니다.
CHECK 조건
AUTO_INCREMENT : 데이터 입력시 어떤 값도 입력되지않으면 1부터 시작하여 데이터 추가시마다 자동으로 1씩 증가된 값이 저장됩니다. INT 타입이 사용되며, 숫자를 직접 지정할 수도 있습니다.
AUTO_INCREMENT
PRIMARY KEY : 기본키를 지정합니다. 기본키로 지정할 컬럼을 하나 이상 선택해야하며, 해당 컬럼값은 서로 중복되지않는 값(UNIQUE)을 가져야하고, NULL 값을 가질 수 없습니다.
PRIMARY KEY(컬럼)
UNIQUE : 해당 컬럼에 위치한 값들은 서로 중복되지않는 값(UNIQUE)을 가져야합니다.
UNIQUE 컬럼
FOREIGN KEY : 특정 릴레이션의 컬럼을 참조하는 외래키를 지정합니다.
FOREIGN KEY 참조받을_컬럼 REFERENCES 참조할_릴레이션(참조할_컬럼)
CHARSET : 인코딩 방식을 지정합니다.
CHARSET='인코딩_방식'
CREATE TABLE 문으로 생성한 릴레이션의 정보를 수정합니다.
ALTER TABLE 릴레이션명
[ADD COLUMN 컬럼 데이터_타입],
[DROP COLUMN 컬럼],
[CHANGE COLUMN 수정전_컬럼 수정후_컬럼 변경할_데이터_타입],
[MODIFY COLUMN 컬럼 변경할_데이터_타입]
[ALTER COLUMN 컬럼 SET DEFAULT 값];
ADD COLUMN 절을 사용하면 릴레이션에 새로운 컬럼을 추가할 수 있습니다.
MODIFY COLUMN 절을 사용하면 데이터 타입을 다른 데이터 타입으로 변경할 수 있습니다.
CHANGE COLUMN 절을 사용하면 컬럼의 이름을 변경할 수 있고, 데이터 타입을 추가하면 데이터 타입까지도 변경 가능합니다.
ALTER COLUMN과 SET DEFAULT 절을 사용하면 DEFAULT 값을 변경할 수 있습니다.
DROP COLUMN 절을 사용하면 컬럼을 삭제할 수 있습니다.
데이터베이스(스키마)를 삭제합니다.
DROP DATABASE 데이터베이스명;
릴레이션을 삭제합니다.
DROP TABLE 릴레이션명;