SQL 구문 - DDL

코딩하는 기린·2022년 6월 27일
0

Database(DB)

목록 보기
3/5

'SQL(Structrued Query Language)'은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하기위해 쓰이는 '비절차적 언어'로 절차없이 사용자가 원하는 것만을 기술합니다.

※ 이 글에서는 MySQL의 SQL 문법을 기준으로 작성합니다.
([내용] 부분은 옵션으로, 반드시 기술해야하는 부분은 아닙니다.)

CREATE 문

CREATE DATABASE(SCHEMA)

DDL 문으로 생성 가능한 개체 중 가장 상위 단계인 데이터베이스(스키마)를 생성합니다.

CREATE DATABASE(SCHEMA) 데이터베이스(스키마)명;

데이터베이스(스키마)를 생성한 후 USE 데이터베이스(스키마)명; 문을 사용하여 데이터베이스에 진입할 수 있습니다.

SHOW TABLES; 문으로 현재 데이터베이스에 존재하는 릴레이션(테이블) 목록을 조회할 수 있습니다.
아직은 릴레이션이 없는 상태이므로 릴레이션을 생성해주어야합니다.

CREATE TABLE

자료를 실질적으로 저장하는 구조인 릴레이션(테이블)을 생성합니다.

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
제약 조건에 'UNSGINED' 추가시, 동일 byte에서 음수는 표현할 수 없습니다.

부동 소수
표기 범위
FLOAT 4byte 크기의 부동 소수점 형식 유리수

문자
표기 범위
CHAR(n) 길이 n의 고정 문자열
VARCHAR(n) 길이 n 이하의 가변 문자열
VARCHAR 타입 사용시, 지정한 길이에서 실제 저장된 문자열과 문자열의 길이가 함께 저장되고 남은 공간은 줄어듭니다.

날짜/시간
표기 형식 범위
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='인코딩_방식'

ALTER 문

ALTER TABLE

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 문

DROP DATABASE(SCHEMA)

데이터베이스(스키마)를 삭제합니다.

DROP DATABASE 데이터베이스명;

DROP TABLE

릴레이션을 삭제합니다.

DROP TABLE 릴레이션명;

profile
Coding Giraffe.

0개의 댓글