23. 데이터 조작어(DML)

이번에는 정보처리기사 필기 과목인 데이터베이스의 데이터 조작어를 살펴볼게요.

데이터 조작어(DML, Data Manupulation Language)
INSERT : 테이블에 새로운 튜플을 추가
DELETE: 테이블에서 조건에 맞는 튜플을 제거
UPDATE: 테이블에서 조건에 맞는 튜플을 수정
SELECT: 원하는 조건에 맞는 튜플을 검색

INSERT INTO 테이블명(속성명, …) VALUES(값,…);
예: INSERT INTO 학생(학번, 이름, 나이) (20160734, ‘홍길동’, 20) ;

DELETE FROM [테이블 명 WHERE 조건];
전체 삭제: DELETE FROM 학생
DELETE로 모든 레코드를 삭젝하여도 테이블 구조는 남아있어 DROP과는 다릅니다.
예: DELETE FROM 학생 WHERE 학번=20160734 ;

UPDATE 테이블 명 SET 속성명 = 값,… WHERE 조건;
예: UPDATE 학생 SET 이름=’강감찬’, 나이=22 WHERE 학번=20160734

SELECT [PREDICATE][테이블 명].속성,…
FROM 테이블명,…
[WHERE 조건]
[GROUP BY 속성,…]
[HAVING 조건]
[ORDER BY 속성[ASC | DESC] ];

PREDICATE
ALL(디폴트, 모든 튜플 검색), DISTINCT(중복 튜플을 하나만 검색), DISTICTROW (중복 행을 하나만 검색)

GROUP BY: 그룹화하여 검색
HAVING: GROUP BY와 함께 사용하며 조건을 지정
ORDER BY: 정렬 기준의 속성 지정

예:
학생 테이블의 모든 튜플을 검색: SELECT * FROM 학생;
학생 테이블의 모든 튜플을 검색: SELECT 학생.* FROM 학생;
학생 테이블의 학번, 이름을 검색: SELECT 학번, 이름 FROM 학생;
학생 테이블의 나이(중복 제거)를 검색: SELECT DISTINCT 나이 FROM 학생;
학생 테이블에서 나이가 20인 모든 튜플을 검색: SELECT * FROM 학생 WHERE 나이=20;
학생 테이블에서 이름이 장으로 시작하는 모든 튜플을 검색: SELECT * FROM 학생 WHERE 이름 LIKE “장%”
학생 테이블에서 학번 순으로(오름차순) 정렬한 후 3명의 모든 튜플을 검색:
SELECT TOP 3 * FROM 학생 ORDER BY 학번 ASC;
학생 테이블에서 나이의 평균:  SELECT AVG(나이) AS 평균 FROM 학생
학생 테이블에서 학과별로 나이의 평균: SELECT 학과, AVG(나이) AS 평균 FROM 학생 GROUP BY 학과
학생 테이블에서 학과에 인원이 50명 이상인 학과와 학생수를 검색: SELECT 학과, COUNT(*) AS 학생수 FROM 학생 GROUP BY 학과 HAVING COUNT(*)>50
학생 테이블에서 나이가 20,21,23인 학생의 학번을 검색: SELECT 학번 FROM 학생 WHERE 나이 IN (20, 21, 23)