[2023 정보처리기사] 3과목 – 21. SQL – DML(Data Manipulation Language)

1. DML(Data Manipulation Language)의 정의

: 데이터 조작어로서 DB사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 관리하는데 사용되는 언어.

종류: INSERT, DELETE, UPDATE, SELECT 등.

 

2. INSERT ★

: 테이블에 데이터를 삽입할 때 사용.

– 구조: INSERT INTO 테이블이름([속성명]) VALUES(데이터);

Ex1.) INSERT INTO 학생(이름, 학과) VALUES(‘김민수‘, ’컴퓨터공학‘);

-> “학생”테이블에 “이름, 학과“속성에 ”김민수, 컴퓨터공학“을 삽입.

Ex2.) INSERT INTO 학생 VALUES(‘홍길동’, ‘소프트웨어공학’, ‘2023’);

-> ”학생“테이블에 (홍길동, 소프트웨어공학, 2023)을 삽입.

 

3. DELETE  ★

: 테이블의 데이터를 삭제할때 사용.

– 구조: DELETE FROM 테이블이름 [WHERE 조건];

Ex1.) DELETE FROM 학생 WHERE 이름 = ’김민수‘;

-> ”학생“테이블에서 “이름”속성이 ”김민수“인 튜플을 삭제.

Ex2.) DELETE FROM 학생;

-> ”학생“테이블의 모든 레코드를 삭제.

 

4. UPDATE ★

: 테이블의 데이터를 갱신(변경)할때 사용.

– 구조: UPDATE 테이블명 SET 속성명 = 데이터 [WHERE 조건];

Ex1.) UPDATE 학생 SET 학과 = ‘소프트웨어공학’ [WHERE 이름 = ‘김민수’];

-> “학생”테이블에서 “이름”이 “김민수”인 튜플의 “학과”를 “소프트웨어공학”으로 변경.

 

5. SELECT ★★

: 테이블에서 데이터를 검색할때 사용.

5. 1. SELECT ~ FROM ~ [WHERE 조건] ~ [AND | OR] ~

– 구조: SELECT [*ALL | *DISTINCT] 속성명 FROM 테이블이름 [WHERE 조건]

*ALL: 모든 튜플 검색, 주로 생략.

*DISTINCT: 중복된 튜플이 있으면 첫 번째 한개만 검색. (중복삭제)

5. 1. 1. SELECT [ALL | DISTINCT] ~ FROM ~;

: 테이블에서 튜플을 검색하는 가장 기본적인 검색 형태.

Ex1.) SELECT * FROM 학생;

-> “학생” 테이블의 모든(*) 튜플 검색.

Ex2.) SELECT 이름 FROM 학생;

-> “학생”테이블에서 “이름“속성만 검색.

Ex3.) SELECT 이름, 학과 FROM 학생;

-> ”학생“테이블에서 ”이름”과 ”학과“를 검색.

EX4.) SELECT DISTINCT 이름 FROM 학생;

-> “학생”테이블에서  ”이름“속성을 검색하되, 같은 ”이름“은 한번만 검색.

5. 1. 2. SELECT ~ FROM ~ [WHERE 조건] ~ [AND | OR];

: 조건이 맞는 데이터를 검색.

Ex1.) SELECT 학과 FROM 학생 WHERE 이름 = ‘김민수’;

-> ”학생“테이블에서 ”이름“이 ”김민수“인 튜플의 “학과”를 검색.

Ex2.) SELECT 이름 FROM 학생 WHERE 학과 = ’컴퓨터공학‘ AND 주소 = ’서울‘;

-> “학생”테이블에서 “학과”가 “컴퓨터공학이고, ”주소“가 ”서울“인 “이름”을 검색.

Ex3.) SELECT 이름, 학과 FROM 학생 WHERE 이름 = (SELECT 학생명 FROM 동아리 WHERE 동아리명 = ‘축구’);

-> ”동아리명“이 ”축구“인 ”학생“의 ”이름, 학과“를 검색.

5. 1. 3. LIKE 연산자

– 종류: %(모든문자), _(문자하나), #(숫자하나)

Ex1.) SELECT * FROM 학생 WHERE 이름 LIKE ‘김%‘;

-> ”학생“테이블에서 ”이름“이 ”김“으로 시작하는 튜플을 검색.

Ex2.) SELECT * FROM 학생 WHERE 학번 IS NULL;

-> “학생”테이블에서 “학번”이 NULL인 튜플 검색.

 

5. 2. SELECT ~ FROM ~ ORDER BY ~ [*ASC | *DESC]

: 오름차순, 내림차순에 따라 정렬 할 경우 사용.

*ASC: 오름차순 정렬.

*DESC: 내림차순 정렬.

Ex1.) SELECT * FROM 학생 ORDER BY 이름 DESC;

-> “학생”테이블에서 모든 레코드를 “이름”을 기준으로 내림차순 정렬 검색.

Ex2.) SELECT * FROM 학생 ORDER BY 학점 ASC;

-> “학생” 테이블에서 모든 레코드를 “학점“을 기준으로 오름차순 정렬 검색.

 

5. 3. SELECT ~ FROM ~ WHERE ~ GROUP BY ~ HAVING ~

: 특정 속성을 기준으로 그룹화 하여 검색할 때 GROUP BY를 사용하며, 해당 그룹에 대한 조건을 지정할 때 HAVING를 사용.

5. 3. 1. 그룹함수(집계함수)

: GROUP BY에 의해 선택된 그룹에 대한 조건에서 사용할 수 있는 함수.

  • COUNT: 그룹별 튜플의 수를 계산.
  • SUM: 그룹별 합계를 계산.
  • AVG: 그룹별 평균을 계산.
  • MAX: 그룹별 최댓값을 계산.
  • MIN: 그룹별 최솟값을 계산.

5. 3. 2. SELECT ~ FROM ~ GROUP BY ~

Ex1.) SELECT 학과, COUNT(*) AS 학생수 FROM 학생 GROUP BY 학과;

-> “학생”테이블에서 “학과”별 튜플의 수 검색.

Ex2.) SELECT 학년, AVG(점수) *AS 평균 FROM 성적표 GROUP BY 학년;

-> “성적표”테이블에서 “학년”별 “점수”의 평균을 ”평균“으로 검색.

* AS: 그룹합수(집계함수)결과의 이름을 재설정. 속성명이 “AVG(점수)”가 아닌 “평균”으로 출력된다.

Ex3.) SELECT 이름, MAX(점수) AS 최대점수, MIN(점수) AS 최소점수 FROM 학생 GROUP BY 이름

-> “학생”테이블에서 ”이름“별 ”점수“의 최댓값을 ”최대점수“로, 최솟값을”최소점수“로 검색.

5. 3. 3. SELECT ~ FROM ~ GROUP BY ~ HAVING ~

Ex1.) SELECT 학과, COUNT(*) AS 학생수 FROM 성적표 WHERE 점수 >=80 GROUP BY 학과 HAVING(*) >=3;

-> “성적표”테이블에서 “점수”가 80이상인 학생이 3명 이상인 ”학과“와 ”학생수“를 검색.

5. 4. 통합구조

SELECT [DISTINCT] ~ FROM ~

WHERE ~ [AND | OR ~]

GROUP BY ~ HAVING ~

ORDER BY [ASC | DESC]

Leave a Comment