Computer Science/Database Systems

[DB] 제3장 SQL

iseop 2022. 3. 2. 22:12   인쇄용 버전

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], ...
  • 조인 연산에 대한 설명
    • 내부 조인: 조인 조건에 맞는 레코드만 결합하여 출력
    • 외부 조인: 조인 조건에 맞는 레코드를 결합하고, 조건에 맞지 않는 레코드도 출력
      • 왼쪽 외부 조인: 왼쪽 테이블의 레코드에 조건에 맞는 오른쪽 테이블의 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
      • 오른쪽 외부 조인: 오른쪽 테이블의 레코드에 조건에 맞는 왼쪽 테이블의 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
      • 완전 외부 조인: 양쪽 테이블의 조건에 맞는 레코드가 결합되어 출력되며, 조건에 맞지 않는 레코드의 해당 컬럼 값은 NULL로 대체됨
    • 크로스 조인: 카티션 프로덕트 연산과 동일
    • 내추럴 조인: 자연 조인 연산과 동일
    • 셀프 조인: 한 테이블 내에서 별칭을 활용하여 조인 연산을 수행

DCL (Data Control Language)

  • GRANT <ALL PRIVILEGES | 권한명> ON <테이블명> TO <사용자명>
  • REVOKE <ALL PRIVILEGES | 권한명> ON <테이블명> FROM <사용자명>