01. DML(데이터 조작 언어)
- INSERT(삽입 - 행단위)
INSERT TO 테이블 VALUES(값1, 값2, ...)
- UPDATE(변경 - 컬럼단위)
UPDATE 테이블
SET 컬럼 = '값'
WHERE 컬럼 = '조건값'
- DELETE
DELETE FROM 테이블
WHERE 컬럼 = '조건값'
<aside> 💡 CRUD(CREATE, READ, UPDATE, DELETE)
</aside>
1. INSERT 문
DEPT 테이블을 복사해서 DEPT_TEMP 테이블 만들기
-- 실습 10-1
CREATE TABLE "HR"."DEPT_TEMP"
( "DEPTNO" NUMBER(2,0),
"DNAME" VARCHAR2(14 BYTE),
"LOC" VARCHAR2(13 BYTE),
CONSTRAINT "PK_DEPT_TEMP" PRIMARY KEY ("DEPTNO")
);
SELECT * FROM DEPT_TEMP;
DROP TABLE DEPT_TEMP;
CREATE TABLE DEPT_TEMP
AS SELECT * FROM DEPT;
DEPT_TEMP 테이블 전체 열 조회하기
-- 실습 10-2
SELECT * FROM DEPT_TEMP;
DEPT_TEMP 테이블에 데이터 추가하기
-- 실습 10-3
INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC)
VALUES (50, 'DATABASE', 'SEOUL');
SELECT * FROM DEPT_TEMP;
INSERT문에 열 지정 없이 데이터 추가하기
-- 실습 10-4
INSERT INTO DEPT_TEMP
VALUES (60 , 'NETWORK', 'BUSAN');
SELECT * FROM DEPT_TEMP;
1) 테이블에 NULL 데이터 입력하기
NULL을 지정하여 입력하기
-- 실습 10-5
INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC)
VALUES (70 , 'WEB', NULL);
SELECT * FROM DEPT_TEMP;
열 데이터를 넣지 않는 방식으로 NULL 데이터 입력하기
-- 실습 10-7
INSERT INTO DEPT_TEMP (DEPTNO, LOC)
VALUES (90 , 'INCHEON');
SELECT * FROM DEPT_TEMP;
2) 테이블에 날짜 데이터 입력하기
EMP 테이블을 복사해서 EMP_TEMP 테이블 만들기
-- 실습 10-8
DROP TABLE EMP_TEMP;
CREATE TABLE EMP_TEMP
AS SELECT *
FROM EMP
WHERE 1 <> 1
;--FALSE
SELECT * FROM EMP_TEMP;
INSERT문으로 날짜 데이터 입력하기(날짜 사이에 / 입력)
-- 실습 10-9
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG, HIREDATE, SAL, COMM, DEPTNO)
VALUES (9999, '홍길동', 'PRESIDENT', NULL, '2001/01/01', 5000, 1000, 10);
SELECT * FROM EMP_TEMP;
ROLLBACK;
INSERT문으로 날짜 데이터 입력하기(날짜 사이에 - 입력)
-- 실습 10-10
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG, HIREDATE, SAL, COMM, DEPTNO)
VALUES (1111, '성춘향', ' MG', 9999, '2001-01-05', 4000, NULL, 20);
SELECT * FROM EMP_TEMP;
날짜 데이터 형식을 반대로 했을 때
-- 실습 10-11(에러-날자타입)
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG , HIREDATE, SAL , COMM, DEPTNO)
VALUES (2111, '이순신', ' MG', 9999, '07/01/2001', 4000, NULL, 20);
3) TO_DATE 함수 사용
TO_DATE 함수를 사용하여 날짜 데이터 입력하기
-- 실습 10-12
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG, HIREDATE, SAL, COMM, DEPTNO)
VALUES (2111, '이순신', ' MG', 9999,
TO_DATE('07/01/2001', 'DD/MM/YYYY'), 4000, NULL, 20);
SELECT * FROM EMP_TEMP;
4) SYSDATE 사용
SYSDATE를 사용하여 날짜 데이터 입력하기
-- 실습 10-13
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG, HIREDATE, SAL, COMM, DEPTNO)
VALUES (3111, '심청이', ' MG', 9999, SYSDATE, 4000, NULL, 30);
SELECT * FROM EMP_TEMP;
5) 서브쿼리를 사용하여 한 번에 여러 데이터 추가하기
서브쿼리로 여러 데이터 추가하기
-- 실습 10-14
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MG, HIREDATE, SAL, COMM, DEPTNO)
SELECT E.EMPNO, E.ENAME, E.JOB, E. MG, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO
FROM EMP E, SAL S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
AND S.GRADE = 1;
SELECT * FROM EMP_TEMP;
2. UPDATE문
DEPT 테이블을 복사해서 DEPT_TEMP2 테이블 만들기
-- 실습 10-15
CREATE TABLE DEPT_TEMP2
AS SELECT * FROM DEPT;
SELECT * FROM DEPT_TEMP2;
COMMIT;
1) 데이터 전체 수정하기
DEPT_TEMP2 테이블 업데이트하기
-- 실습 10-16
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL';
SELECT * FROM DEPT_TEMP2;
ROLLBACK으로 테이블 내용을 이전 상태로 되돌리기
-- 실습 10-17
ROLLBACK;
2) 데이터 일부 수정하기(WHERE절 활용)
테이블 데이터 중 일부분만 수정하기
-- 실습 10-18
UPDATE DEPT_TEMP2
SET DNAME = 'DATABASE',
LOC = 'SEOUL'
WHERE DEPTNO = 40
;
ROLLBACK;
SELECT * FROM DEPT_TEMP2;
3) 서브쿼리를 사용하여 데이터 수정하기
서브쿼리로 데이터 일부분 수정하기
-- 실습 10-19
UPDATE DEPT_TEMP2
SET (DNAME, LOC) = (SELECT DNAME, LOC
FROM DEPT
WHERE DEPTNO = 30)
WHERE DEPTNO = 40;
SELECT * FROM DEPT_TEMP2;
COMMIT;
서브쿼리로 데이터 일부분 수정하기
-- 실습 10-20
UPDATE DEPT_TEMP2
SET DNAME = (SELECT DNAME
FROM DEPT
WHERE DEPTNO = 40),
LOC = (SELECT LOC
FROM DEPT
WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
COMMIT;
SELECT *
FROM DEPT_TEMP2
WHERE DEPTNO = 40 ;
UPDATE문의 WHERE절에 서브쿼리 사용하기
-- 실습 10-21
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL'
WHERE DEPTNO = (SELECT DEPTNO
FROM DEPT_TEMP2
WHERE DNAME='OPERATIONS');
SELECT * FROM DEPT_TEMP2;
UPDATE DEPT_TEMP2
SET dname = 'PRODUCT'
WHERE DEPTNO = 40;
3. DELETE문
EMP 테이블을 복사해서 EMP_TEMP2 테이블 만들기
-- 실습 10-22
DROP TABLE EMP_TEMP2;
CREATE TABLE EMP_TEMP2
AS SELECT * FROM EMP;
SELECT * FROM EMP_TEMP2;
WHERE절을 사용하여 데이터 일부분만 삭제하기
-- 실습 10-23
DELETE FROM EMP_TEMP2
WHERE JOB = ' MG';
SELECT * FROM EMP_TEMP2;
WHERE절에 서브쿼리를 사용하여 데이터 일부만 삭제하기
-- 실습 10-24
DELETE FROM EMP_TEMP2
WHERE EMPNO IN (SELECT E.EMPNO
FROM EMP_TEMP2 E, SAL S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
AND S.GRADE = 3
AND DEPTNO = 30);
SELECT * FROM EMP_TEMP2;
테이블에 있는 전체 데이터 삭제하기
-- 실습 10-25
DELETE FROM EMP_TEMP2;
SELECT * FROM EMP_TEMP2;
'SQL > 개념' 카테고리의 다른 글
08. 데이터 정의어(DDL) (0) | 2023.05.09 |
---|---|
07. 트랜잭션 제어와 세션(TCL) (0) | 2023.05.09 |
05. 서브쿼리 (0) | 2023.05.03 |
04. 조인 (0) | 2023.05.03 |
03. 다중행 함수와 데이터 그룹화 (0) | 2023.05.03 |