Structured Query Language
관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위한 비절차적 선언형 언어이다.
SQL 구문은 그 역할에 따라 DDL, DML, DCL로 분류할 수 있다.
*관계 대수는 절차적, SQL은 비절자적이다.
SQL 데이터 타입
더보기
- 정수
- TINYINT: 2^8 (-128~127)
- SMALLINT: 2^16
- MEDIUMINT: 2^24
- INT: 2^32
- BIGINT: 2^64
- 고정 소수형
- DECIMAL/NUMERIC(M, N): 전체 길이가 M이고 소수점 아래 길이가 N인 소수
- 부동 소수형
- FLOAT: 4바이트 부동 소수
- FLOAT(P): 유효숫자 자릿수가 P개인 부동 소수
- DOUBLE: 8바이트 부동 소수
- 문자
- CHAR(N): 길이가 N인 고정길이 문자열
- VARCHAR(N): 최대길이가 N인 가변길이 문자열
- TEXT: 길이가 긴 가변길이 문자열
- ENUM: 정의된 목록에서 하나를 선택, e.g. 성별 ENUM('남', '여')
- 날짜/시간
- DATE: YYYY-MM-DD
- TIME: hh:mm:ss
- DATETIME/TIMESTAMP: YYYY-MM-DD
- YEAR: YYYY
SQL 제약 조건
더보기
- PRIMARY KEY <컬럼명>: 해당 컬럼을 기본키로 사용하며 모든 레코드에 대해 유일해야 한다.
- NOT NULL: 해당 컬럼은 반드시 값을 가져야 한다.
- UNIQUE: 해당 컬럼의 값은 모든 레코드에 대해 유일해야 한다.
- AUTO_INCREMENT: 기존 레코드의 값에 1을 더한 값을 저장한다.
- DEFAULT (기본 값): 입력값이 없을 경우 기본 값을 저장한다.
- FOREIGN KEY (컬럼명) REFERENCES <참조 테이블명>(컬럼명): 다른 컬럼을 참조하는 외래키를 정의한다.
- CHECK (조건식): 입력값이 특정 조건을 준수하지 않으면 레코드 삽입/수정이 거부된다.
SQL 함수
더보기
- 수학 함수
- ABS(X): 절댓값
- CEILING(X): X보다 큰 정수 중 최소값
- FLOOR(X): X보다 작은 정수 중 최대값
- ROUND(X, Y): 소수 X의 소수점 Y 이하 자릿수에서 반올림
- TRUNCATE(X, Y): 소수 X의 소수점 Y 이하 자릿수에서 버림
- POWER(X, Y): X^Y
- MOD(X, Y): X MOD Y
- 문자 함수
- ASCII(S): 문자열 S에서 첫 문자의 ASCII 코드값을 반환
- CONCAT(S1, S2, ...): 문자열들을 연결한 값을 반환
- CHAR_LENGTH(S): 문자열 길이를 반환
- INSERT
- REPLACE
- UPPER
- SUBSTRING
- STRCMP
- 날짜 함수
- ADDDATE/SUBDATE
- CURDATE/CURTIME: 현재 날짜/현재 시각을 반환
- NOW()
- DATE()
- HOUR()
- TIMESTAMPDIFF()
- TO_SECONDS()
- 집계 함수
- AVG: 평균값
- MIN: 최소값
- MAX: 최대값
- SUM: 합
- COUNT: 개수
DDL (Data Definition Language)
- CREATE
- SCHEMA/DATABASE <DB명>
- TABLE <테이블명> (
- <컬럼명> <데이터 타입> [제약 조건], ...,
- [제약 조건] )
- INDEX
- VIEW <뷰명> AS
- <SELECT 구문>
- [WITH CHECK OPTION]
- ALTER
- SCHEMA/DATABASE
- TABLE <테이블명>
- ADD COLUMN <컬럼명> <타입>
- DROP COLUMN <컬럼명>, ...
- CHANGE COLUMN <컬럼명>, {새 컬럼명 | 새 타입 | 새 제약 조건}
- MODIFY COLUMN <컬럼명> <새 타입>
- VIEW
- DROP
- SCHEMA/DATABASE
- TABLE
- INDEX
- VIEW
DML (Data Manipulation Language)
- INSERT INTO <테이블명> VALUES(1, 2, ...)
- UPDATE <테이블명> SET <컬럼명> = <값>, ...
- [WHERE <조건>]
- DELETE FROM <테이블명>
- WHERE <조건>
- SELECT [DISTINCT] <컬럼명>, ...
- FROM <테이블명> [별칭]
- [INNER JOIN | OUTER JOIN | CROSS JOIN | NATURAL JOIN] <테이블명> [별칭]
- ...
- ON <조인 조건식>
- WHERE <조건>
- GROUP BY <컬럼명>, ...
- HAVING <조건>
- ORDER BY <컬럼명> [ASC | DESC], ...
- FROM <테이블명> [별칭]
- 조인 연산에 대한 설명
- 내부 조인: 조인 조건에 맞는 레코드만 결합하여 출력
- 외부 조인: 조인 조건에 맞는 레코드를 결합하고, 조건에 맞지 않는 레코드도 출력
- 왼쪽 외부 조인: 왼쪽 테이블의 레코드에 조건에 맞는 오른쪽 테이블의 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
- 오른쪽 외부 조인: 오른쪽 테이블의 레코드에 조건에 맞는 왼쪽 테이블의 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
- 완전 외부 조인: 양쪽 테이블의 조건에 맞는 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
DCL (Data Control Language)
- GRANT <ALL PRIVILEGES | 권한명> ON <테이블명> TO <사용자명>
- REVOKE <ALL PRIVILEGES | 권한명> ON <테이블명> FROM <사용자명>