DML은 데이터 조작어로, DB에서 데이터를 조회, 삽입, 수정, 삭제하는 데 사용되는 SQL 명령어를 포함하고 있다. DML 명령어는 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어이다.
SELECT * FROM employees;
// 이 쿼리는 employees 테이블의 모든 행과 열을 조회
SELECT name, score FROM 성적 ORDER BY score DESC
INSERT INTO
문을 사용하여 테이블에 데이터를 추가할 때, 데이터가 하나만 추가될 경우에도 VALUES
키워드를 사용하여 값을 지정한다.
INSERT INTO 학생(학번, 이름, 학년, 전공, 전화번호)
VALUES(1974111, '헬로키티', 3, '귀여움', '010-0000-2222);
// 이 쿼리는 학생 테이블에 새로운 학생 정보를 추가
VALUES
를 여러 번 사용하여 한 번에 여러 행을 추가할 수도 있다:INSERT INTO employees (employee_id, first_name, last_name, department)
VALUES
(103, 'Alice', 'Johnson', 'Marketing'),
(104, 'Bob', 'Brown', 'Sales');
UPDATE 학생부
SET 학과번호 = 999
WHERE 입학생수 >= 300;
// 이 쿼리는 입학생수가 300명 이상인 학과번호를 999번으로 변경
DELECT FROM 학생
WHERE 이름 = 민수;
// 이 쿼리는 이름이 민수인 학생을 학생 테이블에서 삭제
WHERE절에 다음 연산자들을 이용한 조건을 지정하여 조건에 만족하는 튜플만 검색한다.
=
같다, <>
같지 않다>
크다, <
작다, >=
크거나 같다, <=
작거나 같다%
모든 문자를 대표함 :SELECT * FROM 학생 WHERE 이름 LIKE '이%' ORDER BY 이름 DESC;
-
문자 하나를 대표함 : 'A_' → AB (A:x, ABC:x)#
숫자 하나를 대표함SELECT 이름 FROM R1 WHERE 학번 IN(SELECT 학번 FROM R2 WHERE 과목번호 = 'C100');
SELECT * FROM emp WHERE name NOT IN ('JONES', 'SCOTT', 'MILLER')
📍ex) 다음 [TABLE]을 참조하여 [SQL문]을 실행했을 때 출력되는 결과를 쓰시오.
[TABLE]
INDEX | COL1 | COL2 |
---|---|---|
1 | 2 | NULL |
2 | 4 | 6 |
3 | 3 | 5 |
4 | 6 | 3 |
5 | NULL | 3 |
[SQL문]
SELECT COUNT(COL2)
FROM TABLE
WHERE COL1 IN (2,3)
OR COL2 IN(3,5);
조건에 맞는 'COL2' 속성만 추출
COL2 |
---|
NULL |
5 |
3 |
3 |
∴ COUNT(COL2)
는 'COL2' 속성의 개수를 계산하지만 'NULL'값은 제외함으로 결과는 3이다.'
SELECT 제품명, 단가, 제조사 FROM 제품
WHERE 단가 > ALL (SELECT 단가 FROM 제품 WHERE 제조사 = 'H');
SELECT * FROM emp WHERE sal = ANY(950, 3000, 1250)
COUNT(*)
: null
값을 포함한 튜플의 수 개수 COUNT(속성명)
: null
값을 포함하지 않은 튜플의 수 개수 📍ex) [성적] 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최초점수', '최대점수'를 검색하고자 한다. [처리 조건]을 참고하여 적합한 SQL문을 작성하시오.
[성적]
학번 | 과목번호 | 과목이름 | 학점 | 점수 |
---|---|---|---|---|
a2001 | 101 | 컴퓨터구조 | 6 | 95 |
a2002 | 101 | 컴퓨터구조 | 6 | 84 |
a2003 | 302 | 데이터베이스 | 5 | 89 |
a2004 | 201 | 인공지능 | 5 | 92 |
a2005 | 302 | 데이터베이스 | 5 | 100 |
a2006 | 302 | 데이터베이스 | 5 | 88 |
a2007 | 201 | 인공지능 | 5 | 93 |
[결과]
과목이름 | 최소점수 | 최대점수 |
---|---|---|
데이터베이스 | 88 | 100 |
인공지능 | 92 | 93 |
[처리 조건]
∴
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름
HAVING AVG(점수) >= 90;
📍ex) 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.
[학생]
학과 | 학생 |
---|---|
전기 | 이순신 |
컴퓨터 | 안중근 |
컴퓨터 | 윤봉길 |
전자 | 이봉창 |
전자 | 강우규 |
[결과]
학과 | 학과별튜플수 |
---|---|
전기 | 1 |
컴퓨터 | 2 |
전자 | 2 |
∴
SELECT 학과, count(학과) AS 학과별튜플수
FROM 학생
GROUP BY 학과;
📍ex) UNION의 연산 결과 값을 작성하시오.
SELECT A FROM t1
UNION
SELECT A FROM t2
ORDER BY A DESC;
A |
---|
4 |
3 |
2 |
1 |
트리거는 데이터베이스 시스템에서 데이터의 INSERT(삽입), DELECT(삭제), UPDATE(갱신) 등의 Event(이벤트)가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL이다.
참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023
NCS 정보처리기사 연구회(윤영빈, 서용욱, 김학배, 박인상 공저). 『수제비 2023 정보치리기사 실기』. 건기원. 2023
https://carami.tistory.com/18