지난 포스팅에선 SQL문 중 DCL 문에 대하여 정리하였다.
이번 포스팅에선 SQL문 중 DML 문에 대하여 정리하겠다.
지난 번에도 언급했듯이 [ ]는 생략 가능한 문장이다.
1. SELECT(검색문)
--> SELECT문은 조건에 해당하는 튜플들을 검색하는 역할을 수행한다
1.1 하나의 릴레이션 내의 검색문
SELECT [검색할튜플의제한조건] 속성명 [AS 별칭]
FROM 테이블명
[WHERE 조건]
[GROUP BY ~ HAVING ~]
[ORDER BY ASC/DESC];
- 검색할 튜플의 제한 조건:
● ALL : 조건에 맞는 튜플 전체를 검색하는 조건 --> ' * '로 표기함
● DISTINCT : 조건에 맞는 튜플들 중 겹치는것을 제외하고 출력하게하는 조건
● TRIM : 좌우 공백을 삭제한 채로 출력하도록 하는 조건
● LTRIM : 좌 공백을 삭제한 채로 출력하도록 하는 조건
● RTRIM : 우 공백을 삭제한 채로 출력하도록 하는 조건
- AS 별칭
● 뷰 에 표시되는 가상의 속성 명
- WHERE 조건 종류
● 특정 속성 값 지정 가능
--> WHERE 부서 = '마케팅';
● 특정 속성 값의 범위 지정 가능
--> WHERE 월급 >= 110;
● AND, OR 사용
--> WHERE 부서 = '기획' AND 월급 >= 110;
● IN 사용 : 특정 집합을 만들고 속성값이 해당 집합 안에 속해있는지를 확인
--> WHERE 부서 IN ('기획', '마케팅', '인사');
● LIKE 사용 : 검색하고 싶은 속성값을 내포하고 있는 값들을 검색
▶ % : 글자 수에 상관없이 해당 값들을 전부 검색함
▶ _ : ' _' 한개당 한개의 글자가 포함된 값들을 검색
- GROUP BY A HAVING B
A에 의해 튜플들을 그룹화하고, 그중 B 조건을 만족시키는 그룹을 검색함
- ORDER BY ASC/DESC
▶ ASC: 오름차순 정렬
▶ DESC: 내림차순 정렬
EX_검색할 튜플의 제한 조건_1)
SELECT * FROM 사원;
// 사원 테이블에 있는 튜플 전체를 검색해라
EX_검색할 튜플의 제한 조건_2)
SELECT DISTINCT 부서 FROM 사원;
// '부서' 속성을 기준으로 겹치는 튜플들을 제외하고 검색하여라
EX_WHERE 조건 종류_특정 속성 값 지정 가능)
SELECT 이름 FROM 사원 WHERE 부서 = '마케팅';
// 사원테이블에서 부서가 마케팅인 튜플들의 "이름"속성을 검색하여 나열하여라
EX_WHERE 조건 종류_특정 속성값의 범위 지정 가능)
SELECT 이름 FROM 사원 WHERE 월급 >= 100;
// 사원 테이블에서 월급이 100 이상인 사원의 이름을 검색하여 나열하여라
EX_WHERE 조건 종류_AND, OR 사용)
SELECT 이름, 직급 FROM 사원 WHERE 부서 = '기획' AND 월급 >=100 AND 월급 =< 200;
// 사원 테이블에서 기획 부서이고, 월급이 100이상 200이하인 튜플의 이름과 직급을 검색하여 나열하여라
EX_WHERE 조건 종류_IN 사용)
SELECT * FROM 사원 WHERE 거주지 IN ('서울', '경기도');
사원 테이블에서 거주지가 서울이나 경기도 안에 살고있는 튜플들의 전체 속성을 검색하여 나열하여라
EX_WHERE 조건 종류 _ LIKE 사용)
SELECT * FROM 떡볶이 WHERE 이름 LIKE %떡볶이%;
// 앞 뒤 글자수 상관없이 '떡볶이'가 들어간 튜플들 검색
// '떡볶이','치즈떡볶이','떡볶이 매운맛','로제떡볶이','바질크림떡볶이','치즈떡볶이매운맛'이 검색됨
SELECT * FROM 떡볶이 WHERE 이름 LIKE %떡볶이;
// 떡볶이 앞 글자수는 상관없고, 떡볶이 뒤에 글자가 없는 튜플들이 검색됨
// '떡볶이','치즈떡볶이','로제떡볶이','바질크림떡볶이' 가 검색됨
SELECT * FROM 떡볶이 WHERE 이름 LIKE 떡볶이%;
// 떡볶이 뒷 글자 수는 상관없고 떡볶이 앞에 글자가 없는 튜플들이 검색됨
// '떡볶이 매운맛' 이 검색됨
SELECT * FROM 떡볶이 WHERE 이름 LIKE _ _떡볶이%;
// 떡볶이 앞에는 두글자가, 뒤에는 글자수 상관없이 튜플이 검색됨
// '치즈떡볶이','로제떡볶이','치즈떡볶이매운맛'이 검색됨
SELECT * FROM 떡볶이 WHERE 이름 LIKE _ _ _ _ 떡볶이;
// 떡볶이 뒷 글자는 없고 앞글자는 4글자인 튜플들이 검색됨
// '바질크림떡볶이'가 검색됨
EX_GROUP BY A HAVING B)
SELECT 부서, COUNT(*) FROM 사원
WHERE 기본급>= 100
GROUP BY 부서 HAVING COUNT(*) >= 2;
//첫번째 줄: 사원 테이블에서 각 튜플별 부서 속성을 뽑고 전체 튜플 수를 세어라
//두번째 줄: 위의 명령 실행 결과중 기본급이 100 넘는 튜플들만 남겨라
//세번째 줄: 뽑은 튜플들을 부서별로 묶고, 뽑은 튜플들 중 부서별 인원수가 2 이상인 부서만 표시하여라
EX_ORDER BY ASC/DESC)
SELECT * FROM 사원 ORDER BY 입사년도 ASC, 나이 DESC;
// 입사년도 기준으로 오름차순 정렬 후, 입사년도가 같으면 나이순으로 내림차순 정렬하여라
1.2 여러 개의 릴레이션 내의 검색문
이는 '다중 검색'이라고 불리며 보다 심화적인 내용이기 때문에 다음 포스팅에서 상세하게 정리하겠다
2. INSERT(튜플 삽입)
INSERT INTO 테이블명 속성1, 속성2, 속성3...
VALUES (데이터1, 데이터2, 데이터3...);
--> INSERT는 릴레이션에 튜플을 삽입해주는 역할을 한다
--> 지정 테이블의 지정 속성들에 각각의 속성과 인덱스가 대응되는 데이터들을 대입해줄것이다.
EX) 속성1 <-- 데이터1, 속성2 <-- 데이터2, 속성3 <-- 데이터3
EX)
INSERT INTO 떡볶이(NAME, PRICE, AMOUNT)
VALUES('바질크림떡볶이','15,000','3');
3. DELETE(튜플 삭제)
--> DELETE문은 튜플을 삭제하는 역할을 수행한다
DELETE FROM 테이블명
[WHERE ~ ];
WHERE 조건절 생략시 릴레이션의 전체 튜플 삭제
4. UPDATE(튜플 갱신)
--> UPDATE문은 튜플을 갱신하는 역할을 수행한다
UPDATE 테이블명 SET 속성명 = 데이터, 속성명 = 데이터...
[WHERE ~];
EX)
UPDATE 떡볶이 SET PRICE = '7,000' , AMOUNT = '1'
WHERE NAME = '치즈떡볶이';
이번 포스팅에선 SQL문 중 DML 문에 대하여 정리하였다.
다음 포스팅에선 DML문 중 다중검색에 대하여 정리하겠다.
'정보처리 기능사 정리' 카테고리의 다른 글
8. 운영체제 (0) | 2022.08.31 |
---|---|
7. SQL - DML - 다중검색 (0) | 2022.08.31 |
5. SQL 기본 문법 - DCL (0) | 2022.08.30 |
4. SQL 기본 문법 - DDL (0) | 2022.08.23 |
3. 관계형 데이터베이스 (0) | 2022.08.20 |