본문 바로가기
정보처리기사 실기/데이터베이스

[정보처리기사 실기] 데이터베이스 4일 차

by 포리즈FOREZ 2019. 6. 12.

안녕하세요. 하루인생입니다.

 

벌써 시험이 17일 정도 남았는데요. 오늘도 열심히 해서 합격에 가까워지길 바라요!

데이터베이스 4일 차

오늘은 DML을 공부해볼 건데요.

DML은 SQL 언어 문제 중 가장 자주 출제되는 문제이고, DML의 빈칸 채우기 문제보다는

풀 코딩으로 자주 출제되므로 직접 적어보고 익혀야 합니다.

 

[2019 정보처리기사] 데이터베이스

DML은 SELECT, INSERT, UPDATE, DELETE 이렇게 네 가지로 구성되어있습니다. 

하나하나씩 알아가 보도록 하겠습니다.

 

① SELECT : 원하는 자료를 검색하기 위해 사용

SELECT [DISTINCT] 속성이름	// DISTINCT : 중복을 제거
FROM 테이블이름
[WHERE 조건]
[GROUP BY 속성이름 [HAVING 그룹조건] ]
[ORDER BY 속성이름 [ASC | DESC] ]; // ASC : 오름차순, DESC : 내림차순

여기서 SELECT *을 하게 되면 모든 속성의 자료를 검색할 수 있습니다.

WHERE의 조건에는 =, <, >, <, >, <=, >= 와 NOT, AND, OR 등의 연산자를 사용할 수 있습니다.

예를 들어보겠습니다.

// 문제: 학생테이블에서 수강과목이 '데이터베이스'인 튜플 중 학번과 성명을 출력하라. 

SELECT 학번,성명
FROM 학생
WHERE 수강과목='데이터베이스';

WHERE절에는 BETWEEN A AND B 구문을 사용할 수도 있습니다.

A 이상 B 이하인 경우에 사용합니다!! (A 초과 B미만 아닙니다)

또 IN을 사용할 수도 있는데요. 이해하기 쉽게 한 번에 정리해드리겠습니다.

 

학년이 3~4학년인 튜플은?

= WHERE 학년 IN(3,4);

= WHERE 학년=3 OR 학년=4;

= WHERE 학년 BETWEEN 3 AND 4;

 

[2019 정보처리기사] 데이터베이스

GROUP BY절 사용하기

GROUP BY는 HAVING과 같이 사용됩니다. 이유는 HAVING은 그룹에 대한 조건을 설정하기 때문이죠.

// '학생'테이블에서 학년으로 그룹을 묶고 그 수가 2개 이상인 그룹의 학년을 출력하라.

SELECT 학년
FROM 학생
GROUP BY 학년
HAVING COUNT(*)>=2;

부속 질의문 : 메인 질의문 후 이어서 질의문을 사용

=, IN, EXISTS로 연결

'=' - 하나의 결과 값일 때 사용

'IN' - 여러 가지 결과 값을 출력할 때 사용

부분 매치 질의문 : 조건문 작성 시 자료의 일부를 가지고 비교하여 검색하는 질의문

LIKE와 함께 ' % '  or ' _ ' 사용

// 7588로 끝나는 연락처를 출력하라.
WHERE 연락처 LIKE '%7588'

NULL값과 비교하는 질의문

IS , IS NOT 사용

// 연락처 테이블에서 이름이 NULL이 아닌 튜플의 학번을 출력하라.

SELECT 학번
FROM 연락처
WHERE 이름 IS NOT NULL;

JOIN 질의문 : 두 개의 테이블을 합침

테이블1 JOIN 테이블2 ON (조인 조건)

SELECT 이름, 학과, 학생수
FROM 학생정보 JOIN 학과인원 ON(학생정보.학과=학과인원.학과);

// USING을 사용하면 
// FROM 학생정보 JOIN 학과인원 USING(학과); 과 같다.

[2019 정보처리기사] 데이터베이스

INSERT : 기존 테이블에 새로운 튜플을 삽입하는 경우 사용

INSERT INTO 테이블이름(속성이름...)
VALUES(자료...);

기존의 테이블에 튜플을 삽입하는 것이므로 속성의 값과 자료의 값을 모두 입력해야 합니다.

하지만 모든 속성의 자료를 입력하는 경우라면 속성의 이름을 생략해도 됩니다.

//	'학생'테이블에 학번:15115, 이름:'김정미', 학년: 4, 수강과목:'데이터베이스',
//	연락처:'243-0707'를 가진 튜플을 추가하라!

INSERT INTO 학생(학번, 성명, 학년, 수강과목, 연락처)
VALUES(15115, '김정미',4,'데이터베이스','243-0707');


//	만약 여기서 [학번, 성명, 학년, 수강과목, 연처]가 
//	'학생'테이블의 모든 속성에 해당한다면 생략할 수 있다.

INSERT INTO 학생
VALUES(15115, '김정미',4,'데이터베이스','243-0707');

UPDATE : 튜플의 속성 값을 변경하고자 할 때 사용

UPDATE 테이블이름
SET 속성이름=변경내용
[WHERE 조건];

예를 들면

//	학생테이블에서 성명이 이영진인 튜플의 점수 속성을 92점으로 수정하여라.

UPDATE 학생
SET 점수=92;
WHERE 성명='이영진';

DELETE : 튜플을 삭제할 경우 사용

DELETE FROM 테이블이름
[WHERE 조건]

예를 들면

//	'학생'테이블에서 학년이 2인 튜플을 삭제하여라.

DELETE FROM 학생
WHERE 학년=2;

 

구분

DELETE(DML)에서 WHERE절 생략 시 -> 빈 테이블!

DROP(DDL)에서 WHERE절 생략 시 -> 테이블 자체가 삭제!