728x90
목차
SQL 명령어를 신속하게 찾고 이해하는 것은 데이터베이스 관리에 있어 필수적이다. 이 포스트에서는 DDL, DML, DCL 각 부분의 핵심 명령어들을 리스트업하여, 필요할 때 쉽게 접근하고 활용할 수 있도록 구성하였다.
1. DDL (Data Definition Language) - 데이터 정의 언어
DDL은 데이터베이스의 구조를 정의하고 관리하는 명령어들로 구성된다.
- CREATE
- 테이블 생성: CREATE TABLE tname (column1 datatype, ...);
- 뷰 생성: CREATE VIEW vname AS SELECT column1, ... FROM tname WHERE condition;
- 인덱스 생성: CREATE INDEX iname ON tname (column1);
- 스키마 생성: CREATE SCHEMA sname;
- 시퀀스 생성: CREATE SEQUENCE seqname START WITH 1 INCREMENT BY 1;
- 데이터베이스 생성: CREATE DATABASE dbname;
- ALTER
- 테이블 수정: ALTER TABLE tname ADD column_name datatype;
- 테이블의 컬럼 수정: ALTER TABLE tname ALTER COLUMN column_name datatype;
- 테이블의 컬럼 삭제: ALTER TABLE tname DROP COLUMN column_name;
- DROP
- 테이블 삭제: DROP TABLE tname;
- 뷰 삭제: DROP VIEW vname;
- 인덱스 삭제: DROP INDEX iname;
- 스키마 삭제: DROP SCHEMA sname;
- 시퀀스 삭제: DROP SEQUENCE seqname;
- 데이터베이스 삭제: DROP DATABASE dbname;
- TRUNCATE
- 테이블 내 데이터 전체 삭제: TRUNCATE TABLE tname;
2. DML (Data Manipulation Language) - 데이터 조작 언어
DML은 데이터를 조작하기 위한 명령어들이다.
2-1. 기본 DML문
- INSERT
- 데이터 삽입: INSERT INTO tname (column1, ...) VALUES (value1, ...);
- UPDATE
- 데이터 수정: UPDATE tname SET column1 = value1 WHERE condition;
- DELETE
- 데이터 삭제: DELETE FROM tname WHERE condition;
- SELECT
- 데이터 조회: SELECT column1, ... FROM tname WHERE condition;
2-2. SELECT 문 확장
- WHERE
- 데이터를 조회할 때 특정 조건을 만족하는 레코드만 선택하여 결과에 포함시킨다.
- 예: SELECT * FROM tname WHERE column1 = 'value';
- ORDER BY
- 조회 결과를 특정 컬럼의 값에 따라 정렬한다. 기본적으로 오름차순(ASC)으로 정렬되며, 내림차순(DESC)으로 정렬을 변경할 수 있다.
- 예: SELECT * FROM tname ORDER BY column1 DESC;
- GROUP BY
- 특정 컬럼을 기준으로 데이터를 그룹화한다. 이는 보통 집계 함수와 함께 사용되어 각 그룹의 데이터를 요약하는 데 사용된다.
- 예: SELECT column1, COUNT(*) FROM tname GROUP BY column1;
- HAVING
- GROUP BY와 함께 사용되며, 특정 집계 조건을 만족하는 그룹만을 결과로 반환한다.
- 예: SELECT column1, COUNT(*) FROM tname GROUP BY column1 HAVING COUNT(*) > 10;
- 집계 함수(Aggregate Functions)
- COUNT(): 그룹 내 항목 수를 계산한다.
- SUM(): 그룹 내 항목의 합을 계산한다.
- AVG(): 그룹 내 항목의 평균 값을 계산한다.
- MAX(): 그룹 내 최대 값을 찾는다.
- MIN(): 그룹 내 최소 값을 찾는다.
- 예: SELECT MAX(column2) FROM tname;
2-3. JOIN 문
- 데이터베이스 내 여러 테이블 간의 관계를 활용하여 데이터를 결합할 수 있음.
- INNER JOIN
- 두 테이블의 교집합만을 반환한다.
- 예: SELECT * FROM tname1 INNER JOIN tname2 ON tname1.id = tname2.id;
- LEFT JOIN
- 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환한다. 오른쪽 테이블에 일치하는 레코드가 없으면 NULL을 반환한다.
- 예: SELECT * FROM tname1 LEFT JOIN tname2 ON tname1.id = tname2.id;
- RIGHT JOIN
- 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환한다. 왼쪽 테이블에 일치하는 레코드가 없으면 NULL을 반환한다.
- 예: SELECT * FROM tname1 RIGHT JOIN tname2 ON tname1.id = tname2.id;
- FULL JOIN
- 두 테이블의 합집합을 반환한다. 일치하지 않는 레코드는 NULL과 함께 반환한다.
- 예: SELECT * FROM tname1 FULL JOIN tname2 ON tname1.id = tname2.id;
- CROSS JOIN
- 두 테이블의 모든 가능한 조합을 생성하는 조인 유형
- 예: SELECT * FROM tname1 CROSS JOIN tname2;
2-4. DML에서 추가적으로 다룰 수 있는 구문들
- LIMIT
- 조회 결과의 레코드 수를 제한. 특히 큰 데이터베이스에서 특정 수의 결과만 빠르게 보고자 할 때 사용.
- 예: SELECT * FROM tname LIMIT 10;
- OFFSET
- 지정된 수의 행을 건너뛰고 데이터를 반환. LIMIT과 함께 페이지네이션 구현에 자주 사용.
- 예: SELECT * FROM tname LIMIT 10 OFFSET 20;
- DISTINCT
- 중복된 결과를 제거하고 유니크한 레코드만 반환. 특정 컬럼에 대한 중복 없는 값들을 조회할 때 유용.
- 예: SELECT DISTINCT column1 FROM tname;
- UNION / UNION ALL
- 두 개 이상의 SELECT 쿼리 결과를 결합. UNION은 중복된 결과를 제거하고, UNION ALL은 모든 결과를 포함.
- 예: SELECT column1 FROM tname1 UNION SELECT column1 FROM tname2;
- INTERSECT
- 두 쿼리의 결과 중 공통적인 레코드만 반환.
- 예: SELECT column1 FROM tname1 INTERSECT SELECT column1 FROM tname2;
- EXCEPT
- 첫 번째 쿼리의 결과에서 두 번째 쿼리의 결과를 제외한 레코드만 반환.
- 예: SELECT column1 FROM tname1 EXCEPT SELECT column1 FROM tname2;
3. DCL (Data Control Language) - 데이터 제어 언어
DCL은 데이터 접근 및 권한 관리를 위한 명령어들이다.
- GRANT
- 권한 부여: GRANT SELECT ON tname TO uname;
- REVOKE
- 권한 철회: REVOKE SELECT ON tname FROM uname;
'DBMS > SQL' 카테고리의 다른 글
[SQL] SQL 정규표현식 가이드 (0) | 2024.04.30 |
---|---|
[데이터베이스] 정규화(Normalization) (1NF - 5NF) (0) | 2024.04.15 |
[데이터베이스] DB용어 - 키 (슈퍼키, 후보키, 기본키, 대체키, 외래키) (1) | 2024.04.14 |
[데이터베이스] DB용어 - [완전, 이행, 부분] 함수(적) 종속 (0) | 2024.04.14 |
[데이터베이스] 무결성 제약 조건 (Integrity Constraints : IC) (0) | 2024.03.21 |