SQL query 기본 문법

query는 데이터베이스를 조작할 때 사용하는 요청문이다. SQL 표준 문법이 있지만 DBMS에 따라 조금씩 차이가 있다. 

예시: Postgresql (pgAdmin, dvdrental.tar)


테이블 생성

CREATE TABLE table_name
(  attr domain
   ...
)

table_name은 생성할 베이스 테이블의 이름이다. attr, domain은 각각 테이블의 항목과 해당 항목의 자료형을 의미한다. 

table_name
attr1 (domain) attr2 (domain) attr3 (domain)
( attr domain NOT NULL
  attr domain DEFAULT default_Value
  attr domain CHECK condition
)
  • NOT NULL: null 값을 허용하지 않도록 설정한다.
  • DEFAULT: 기본값을 설정한다.
  • CHECK: 특정 조건을 만족하는지 확인한다.
CREATE TABLE r
( attr domain NOT NULL
  ...
  PRIMARY KEY (attr),
  UNIQUE (attr),
  FOREIGN KEY (attr) REFERENCES r (attr)
)
  • PRIMARY KEY: primary key를 지정한다.
  • UNIQUE: candidate key를 지정한다.
  • FOREIGN KEY: foreign key를 지정한다.
  • REFERENCE: foreign key가 어떤 테이블을 참조하고 있는지 지정한다. 
FOREIGN KEY (attr) REFERENCE r(attr)
  ON DELETE OPTION
  ON UPDATE OPTION
  • ON DELETE: FK가 참조 중인 데이터가 삭제되었을 때 실행할 명령을 설정한다. 
  • ON UPDATE: FK가 참조 중인 데이터가 수정되었을 때 실행할 명령을 설정한다. 
  • OPTION: SET DEFAULT, SET NULL, CASCADE
    • SET DEFAULT: 기본값으로 설정한다.
    • SET NULL: null 값으로 변경한다.
    • CASCADE: FK의 튜플도 함께 삭제되거나 수정된다. 

테이블 삭제

DROP TABLE d OPTION

OPTION: RESTRICT, CASCADE

  • RESTRICT: 다른 곳에서 참조하고 있는 값이 있다면 삭제하지 않는다. 
  • CASCADE: 다른 곳에서 참조하고 있는 값이 있다면 해당 FK도 함께 삭제한다. 

테이블 수정

ALTER TABLE r ADD COLUMN attr domain
ALTER TABLE r DROP COLUMN attr OPTION

ADD: 항목을 추가하고 null값으로 채운다.

DROP: 항목을 삭제하고, RESTRICT 또는 CASCADE 옵션을 사용할 수 있다.


데이터 선택

SELECT attrs
FROM tables
WHERE conditions

SELECT-FROM(-WHERE) 구문을 통해 원하는 데이터를 선택한다. 

예:

SELECT *
FROM table1 as t1, table2 as t2
WHERE (t1.attr > t2.Attr) AND (t1.attr' = 30)

* 은 모든 항목을 의미한다. as는 테이블 별칭을 설정한다. 


집합 연산

SELECT
FROM
  OPERATION
SELECT
FROM

OPERATION: UNION, INTERSECT, EXCEPT

  • UNION ALL: 합집합 연산
  • INTERSECT ALL: 교집합 연산
  • EXCEPT ALL: 차집합 연산

IS (NOT)

WHERE (attr IS NULL)
WHERE (attr IS NOT NULL)

ISIS NOT을 통해 null 값을 확인할 수 있다. 


JOIN

FROM r JOIN_OP s ON condition

JOIN_OP는 JOIN, NATURAL JOIN, LEFT OUTER JOIN 등 여러  join 연산을 의미한다. 이후 ON을 활용해 join 할 조건을 작성한다. 

예:

FROM table1 AS t1 NATURAL JOIN table2 AS t2 ON t1.attr < t2.attr

GROUP BY

SELECT attr... FUNCTION
FROM table1, table2
GROUP BY attr1, attr2

데이터를 FUNCTION을 통해 계산한 후, 하나의 항목으로 반환한다. FUNCTION은 MAX, COUNT, AVG, SUM 등이 있다. 

예:

SELECT age, COUNT(*)
FROM participants
GROUP BY age

/*
  | age | COUNT |
*/

+

SELECT attr... FUNCTION
FROM
GROUP BY
HAVING conditions

HAVING을 통해 FUNCTION으로 만들어진 항목에 조건을 추가할 수 있다. 


ORDER BY

SELECT attr
FROM table
ORDER BY (ASC/DESC) attr

ORDER BY를 통해 정렬을 수행한다. 생략하거나 ASC를 통해 오름차순 정렬이 가능하다. DESC는 내림차순 정렬을 수행한다. 


INSERT, DELETE, UPDATE

INSERT INTO table
VALUES tuple

DELETE FROM table
WHERE conditions

UPDATE table
SET (compute attr)
  • INSERT INTO: 삽입
  • DELETE FROM: 삭제
  • UPDATE...SET: 변경

연습

W3Schools에 SQL query를 짜는 연습 페이지가 있다. 

 

W3Schools SQL Exercise

I completed all the SQL exercises on w3schools.com

www.w3schools.com