DML

DML의 개념

- DML(데이터 조작어)는 데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 관리하는 데 사용하는 언어

 

INSERT

- 테이블에 새로운 튜플을 삽입

INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES (데이터1, 데이터2, ...)

- 사원 테이블에 (이름 - 김이박, 부서 - 개발)을 삽입하는 SQL문

INSERT INTO 사원(이름, 부서) VALUE(김이박, 개발);

- 사원 테이블에 있는 개발의 모든 튜플을 개발 부원(이름, 생일) 테이블에 삽입하는 SQL문

INSERT INTO 개발부원(이름, 주소)
SELECT 이름, 주소
FROM 사원
WHERE 부서 = "개발"

 

DELETE

- 테이블의 튜플 중 특정 튜플을 삭제

DELETE
FROM 테이블명
[WHERE 조건]

- 사원 테이블에서 부서가 개발인 튜플을 삭제하는 SQL문

DELETE FROM 사원 WHERE 부서 = "개발";

 

UPDATE

- 테이블의 튜플 중 특정 튜플의 내용을 변경

UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터, ...]
[WHERE 조건];

- 사원 테이블에서 김이박의 부서를 IT로 변경하는 SQL문

UPDATE 사원
SET 부서 = "IT"
WHERE 이름 = "김이박";

 

SELECT

- 테이블에서 튜플을 검색

SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...]
FROM 테이블명[, 테이블명, ...]
[, WINDOW 함수 OVER (PARTITION BY 속성명1, 속성명2, ... ORDER BY 속성명3, 속성명4, ...) [AS 별칭]]
[WHERE 조건]
[GROUP BY 속성명, 속섬영, ..]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];

- ORDER BY : 특정 속성을 기준으로 정렬하여 검색

    -> ASC : 오름차순

    -> DESC : 내림차순

- WINDOW 함수 : GROUP BY 절을 이용하지 않고 속성의 값을 집계할 함수를 기술

    -> PARTITION BY : WINDOW 함수가 적용될 범위로 사용할 속성을 지정

    -> ORDER BY : PARTITION 안에서 정렬 기준으로 사용할 속성을 지정

    -> ROW_NUMBER() : 각 레코드에 대한 일련번호 반환

    -> RANK() : 순위를 반환하되 공동 순위를 반영

    -> DENSE_RANK() : 순위를 반환하되 공동 순위를 반영하지 않음

- GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 그룹 함수와 같이 사용

    -> COUNT(속성명) : 그룹별 튜플 수를 구하는 함수

    -> SUM(속성명) : 그룹별 합계를 구하는 함수

    -> AVG(속성명) : 그룹별 평균을 구하는 함수

    -> MAX(속성명) : 그룹별 최대값을 구하는 함수

    -> MIN(속성명) : 그룹별 최소값을 구하는 함수

    -> ROLLUP(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수

    -> CUBE(속성명, 속성명, ...) : 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구하는 함수

- HAVING : GROUP BY와 함께 사용하여 그룹에 조건을 지정

 

SELECT 예제

예제

- 기본 검색

    -> 사원 테이블에 있는 모든 튜플을 검색하는 SQL문

SELETE * FROM 사원;

-> 사원 테이블에서 부서를 중복없이 검색하는 SQL문

SELECT DISTINCT 부서 FROM 사원;

- 조건 지정 검색

    -> 사원 테이블에서 부서가 개발인 튜플을 검색하는 SQL문

SELECT * FROM 사원 WHERE 부서 = "개발";

    -> 사원 테이블에서 부서가 개발 혹은 IT인 튜플을 검색하는 SQL문

SELECT * FROM 사원 WHERE 부서 = "개발" OR 부서 = "IT";
SELECT * FROM 사원 WHERE 부서 IN("개발","IT");

    -> 사원 테이블에서 성이 김인 튜플을 검색하는 SQL문

SELECT * FROM 사원 WHERE 이름 LIKE "김%";

    -> 사원 테이블에서 부서가 NULL인 튜플을 검색하는 SQL문

SELECT * FROM 사원 WHERE 부서 IS NULL;

- 정렬 검색 : ORDER BY를 이용한 검색

    -> 사원 테이블에서 이름을 오름차순으로 정렬하여 튜플을 검색하는 SQL문

SELECT * FROM 사원 ORDER BY 이름 ASC;

- 하위 질의 : 조건절에 다시 SELECT문을 넣어 그 결과를 조건으로 검색

    -> 취미 테이블에서 취미활동이 축구인 사원 이름의 튜플을 검색하는 SQL문

SELECT 이름 FROM 사원 WHERE 이름 = (SELECT 이름 FROM 취미 WHERE 취미활동 = "축구");

- 복수 테이블 : 여러 테이블을 대상으로 검색

    -> 경력이 10년 이상인 사원의 이름, 부서, 취미활동을 검색하는 SQL문

SELECT 사원.이름, 사원.부서
FROM 사원, 취미
WHERE 사원.경력 >= 10 AND 사원.이름 = 취미.이름;

SELECT 예제 2

예제 2

- WINDOW 함수 이용

    -> 사원 테이블에서 부서 별로 경력에 대한 일련번호를 구하여 짬순이라는 이름을 붙이는 SQL문 

SELECT 부서, 경력
    ROW_NUMBER() OVER (PARTITION BY 부서 ORDER BY 경력 DESC) AS 짬순
FROM 사원;

- GROUP BY : 그룹 지정 검색

    -> 사원 테이블에서 부서별 경력의 평균을 구하는 SQL문

SELECT 부서, AVG(경력) AS 평균
FROM 사원
GROUP BY 부서;

- 집합 연산자를 이용한 통합 질의

SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];

- UNION : 두 SELECT 문의 결과를 통합하고 중복된 행은 한 번만 출력

- UNION ALL : 두 SELECT 문의 결과를 통합하고 중복된 행도 그대로 출력

- INTERSECT : 두 SELECT 문의 결과 중 공통된 행만 출력

- EXCEPT : 첫번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제외한 행을 출력 

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중..

1d1cblog.tistory.com

 

반응형

+ Recent posts