열정 실천

004. SQL - DML 데이터 조작어 SELECT, INSERT, DELETE, UPDATE 본문

CS/DATABASE

004. SQL - DML 데이터 조작어 SELECT, INSERT, DELETE, UPDATE

구운오니 2024. 9. 24. 16:13
728x90

DDL (Data Define Language)

DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정하는데 사용하는 언어 

DML (Data Manipulation Language)

저장된 데이터를 실직적으로 관리하는데 사용하는 언어

DCL (Data Control Language)

데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어

 

 

 > DML 유형

SELECT 테이블에서 튜플을 검색함
INSERT 테이블에 새로운 튜플을 삽입함
DELETE 테이블에서 튜플을 삭제함
UPDATE 테이블에서 튜플의 내용을 갱신함

 

 

 

 

 

DDL로 만든 EMPLOYEE 테이블 >>

 

 

 

 

INSERT 문

튜플 삽입

 

Syntax

INSERT INTO 테이블명
VALUES ( ... , ... , .... );

 

INSERT INTO EMPLOYEE
VALUES ('James','E','Borg',888665555,'1937-11-10','450 Stone, Houston TX','M',55000,null,1),
('Franklin','T','Wong',333445555,'1965-12-08','638 Voss, Houston TX','M',40000,888665555,5),
('John','B','Smith',123456789,'1965-01-09','731 Fondren, Houston TX','M',30000,333445555,5),
('Ramesh','K','Narayan',666884444,'1962-09-15','975 Fire Oak, Humble TX','M',38000,333445555,5),
('Jennifer','S','Wallace',987654321,'1941-06-20','291 Berry, Bellaire TX','F',43000,888665555,4),
('Joyce','A','English',453453453,'1972-07-31','5631 Rice, Houston TX','F',25000,333445555,5),
('Alicia','J','Zelaya',999887777,'1968-01-19','3321 Castle, Spring TX','F',25000,987654321,4),
('Ahmad','V','Jabbar',987987987,'1969-03-29','980 Dallas, Houston TX','M',25000,987654321,4);

 

 

SELECT 문

튜플 검색


Syntax

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

 


💚 비교 연산 💚

= 같다.
<> 같지 않다.
> 크다.
>= 크거나 같다.
< 작다.
<= 작거나 같다.

 

BETWEEN ... AND ... 두 값 사이
NOT BETWEEN ... AND ... 두 값 사이가 아님
IN ( ... , ...) 괄호 안 값들 중 일치하는게 있음
NOT IN( ...) 괄호 안 값 중 없음
LIKE 대표 문자를 이용해 문자 패턴과 일치하는지

% : 모든 문자 대신
 _ : 문자 하나 대신 
#  : 숫자 하나 대신
IS NULL NULL
IS NOT NULL NULL 아님

 

 

 

 

⭕ 테이블의 모든 데이터 출력하기 

SELECT * FROM EMPLOYEE;

 

 

 

DISTINT - 중복 제거

 

 

 

WHERE 조건

 

 

원하는 속성만 골라서 검색하기

 

모든 사원의 이름, 연봉, 부서번호를 조회

SELECT Fname, Salary, Dno FROM EMPLOYEE;

 

 

 

 

 

 

 

 

 

부서번호(Dno)가 4인 사원의 부서번호, 이름, 직무번호를 조회

SELECT Dno, Fname, Ssn FROM EMPLOYEE WHERE Dno=4;

 

 

<>

SELECT Fname, Minit FROM EMPLOYEE WHERE Minit <> 'B';

 

 

 

<

SELECT Fname, Salary, Bdate FROM EMPLOYEE WHERE Bdate <'1972-07-31';

 

 

 

 

 

 

BETWEEN ... AND 

 

Bdate가 1941-06-20과 1972-07-31사이에 있는 사원의 이름과 Bdate 조회

SELECT Fname, Bdate FROM EMPLOYEE WHERE Bdate BETWEEN '1941-06-20' AND '1972-07-31';

 

 

NOT BETWEEN ...  AND ...

 

급여가 27,000과 40,000 사이에 있지 않은 사원의 이름과 급여 조회

SELECT Fname, Salary FROM EMPLOYEE WHERE Salary NOT BETWEEN 27000 AND 40000;

 

 

⭕ IN 

 

Minit이 B또는 A인 사원 이름 조회

SELECT Fname FROM EMPLOYEE WHERE Minit IN('A','B');

 

 

 

⭕ LIKE

 

Fname이 'J'으로 시작하는 사원 이름 조회

SELECT Fname FROM EMPLOYEE WHERE Fname LIKE 'J%';

 

 

 

입사 날짜가 ' 20 '로 끝나는 사원 이름, Bdate 조회

SELECT Fname, Bdate FROM EMPLOYEE WHERE Bdate LIKE '%20';

 

 

 

사원 이름에 'A'를 포함하는 사원 조회

SELECT Fname FROM EMPLOYEE WHERE Fname LIKE '%A%';

 

 

 

사원 이름이 'J'로 시작해서 ‘S’끝나는 다섯 글자의 사원 이름 조회

SELECT Fname FROM EMPLOYEE WHERE Fname LIKE 'J___S';

 

 

 

두 번째 문자가 ‘L'인 사원의 이름 조회

SELECT Fname FROM EMPLOYEE WHERE Fname LIKE '_L%';

 

 

 

 

IS NOT NULL

 

커미션이 NULL 값인 아닌 사원의 이름, 직무, 커미션조회

SELECT Fname, SUPER_SSN  FROM EMPLOYEE WHERE SUPER_SSN IS NOT NULL;

 

 

 

 

 

 

AND, OR을 이용해 WHERE절에서 여러 조건을 결합하여 테이블 조회

 

 

부서 번호가 4이고, 급여가 40,000 보다 큰 사원의 이름, 급여, 부서 번호 조회

SELECT Fname, Salary, Dno FROM EMPLOYEE WHERE Dno=4 AND Salary>40000;

 

 

 

부서 번호가 4이거나, 급여가 30,000보다 큰 사원의 이름, 급여, 부서 번호 조회

 SELECT Fname, Salary, Dno FROM EMPLOYEE WHERE Dno=4 OR Salary>30000;

 

 

 

 

ORDER BY

 

⭕ ORDER BY 칼럼 명 [ ASC | DESC ]

 

 

급여를 기준으로 오름차순

SELECT Fname, Salary FROM EMPLOYEE ORDER BY Salary;

 

 

급여를 기준으로 내림차순

SELECT Fname, Salary FROM EMPLOYEE ORDER BY Salary DESC;

 

 

급여가 30,000이상인 사원의 이름, 부서 번호, 급여를 조회하고, 부서 번호로 오름차순, 급여로 내림차순하여 정렬

SELECT Fname, Dno, Salary FROM EMPLOYEE WHERE Salary>=30000 ORDER BY Dno, Salary DESC;

 

 

 

 

 

 

 

UPDATE 문

 

 

Syntax

UPDATE 테이블명
SET column = value
[WHERE 조건]

 

 

ALEX 사원의 급여를 4000으로 변경

 

🔻🔻

UPDATE S_EMP
SET sal=4000
WHERE ename='ALEX';

 

🔻🔻

 

 

 

 

 

 

 

DELETE 문

 

 

Syntax

DELETE FROM 테이블명
[WHERE 조건]

 

 

ALEX 사원 삭제 

 

🔻🔻

DELETE FROM S_EMP WHERE ename='ALEX';

 

🔻🔻

 

 

728x90