DML: 사용자가 저장된 데이터를 실질적으로 관리하는데 사용하는 언어
- INSERT INTO: 테이블에 새로운 튜플 삽입
INSERT INTO 테이블명([속성명1, 속성명2, ...]) VALUES (데이터1, 데이터2, ...);
- DELETE FROM: 테이블의 특정 튜플을 삭제
DELETE FROM 테이블명 [WHERE 조건];
- UPDATE SET: 테이블의 특정 튜플의 내용을 변경
UPDATE 테이블명 SET 속성명=데이터[, 속성명=데이터, ...] [WHERE 조건];
- SELECT: 테이블에서 튜플 검색
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭] [, [테이블명,]속성명, ...]
[, 그룹함수(속성명) [AS 별칭]]
[, Window함수 OVER (PARTITION BY 속성명1, 속성명2, ...
ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
// PREDICATE: ALL(주로 생략), DISTINCT, DISTINCTROW(튜플 전체를 대상으로 함)
- 그룹함수: COUNT(), SUM(), AVG(), MAX(), MIN(), STDDEV(), VARIANCE(), ROLLUP(), CUBE()
- ROLLUP(): 인수로 주어진 속성을 대상으로 그룹별 소계를 구함. n+1 레벨까지, 하위 ~ 상위 레벨 순
- CUBE(): 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구합. 2^n 레벨 까지, 상위 ~ 하위 레벨 순
- // 그룹함수를 사용할 때는 지정 속성과 그룹 함수를 select 해야 함
- WINDOW 함수: PARTITON BY로 나눠진 속성 범위(윈도우)에 대하여 속성의 값 집계
- ROW_NUMBER(): 윈도우별 각 레코드에 대한 일련 번호 반환
- RANK(): 윈도우별 순위 (공동 순위 반영)
- DENSE_RANK(): 윈도우별 순위 (공동 순위 무시)
- SHOW TABLES; 특정 데이터베이스에 있는 모든 테이블 내역 검색
- LIKE 연산자: 문자 패턴을 검색할 때 사용
- %: 모든 문자 대표
- _: 문자 하나를 대표
- #: 숫자 하나를 대표
- Not in (): 포함되지 않는 데이터, in (): 포함하는 데이터
- EXISTS (): 하위 질의 결과에 존재하는지 확인
- between A and B
- limit: 쿼리절 마지막에 붙여서 가져올 데이터의 개수를 표시
- 집합 연산자: 여러 개의 테이블의 데이터를 하나로 통합
SELECT 문1
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 문2;
// UNION ALL: 중복된 행도 그대로 출력
// 테이블을 통합한 후에 정렬 해야 함 (이전 쿼리에 ORDER BY가 있는 경우 적용되지 않음)
JOIN: 2개의 테이블에 대해 연관된 튜플들을 결합해 하나의 새로운 릴레이션을 반환
- INNER JOIN
1. EQUI JOIN
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
2. INNER JOIN ~ ON
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 INNER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
3. NATURAL JOIN
SELECT [테이블명.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;
4. JOIN ~ USING
SELECT [테이블명.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING(속성명);
5. NON-EQUI JOIN: WHERE절에 '=' 조건이 아닌 연산자 사용
- OUTER JOIN
SELECT [테이블명.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 LEFT OUTER JOIN | RIGHT OUTER JOIN | FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
// WHERE절을 활용할 경우 반대쪽에 해당하는 테이블.속성명에 (+)를 붙임
- SELF JOIN: 같은 테이블에서 EQUI JOIN을 하는 경우, 서로 다른 별칭을 사용하여 JOIN
'프로그래밍 언어 > SQL' 카테고리의 다른 글
프로시저(Procedure) (0) | 2023.09.15 |
---|---|
문자열 관련 함수, Case(조건문) (0) | 2023.09.15 |
Subquery, WITH (0) | 2023.09.15 |
DCL(grant, revoke, commit, rollback, savepoint) (0) | 2023.09.15 |
SQL 개념, DDL(create, alter, drop) (0) | 2023.09.14 |