본문 바로가기
프로그래밍 언어/SQL

DML(insert, delete, update, select, union, join)

by 진진리 2023. 9. 15.
728x90

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