Database
[Oracle Database] 8. 데이터 조작어에 대해 알아보자.
myeongju
2024. 7. 14. 18:59
반응형
INSERT문
기본 형태
INSERT INTO 테이블 이름[(열1, 열2, ..., 열N)]
VALUES(열1에 들어갈 데이터, 열2에 들어갈 데이터, ..., 열N에 들어갈 데이터);
- INSERT문에 지정하는 열은 생략할 수 있다.
- 열을 생략하면 해당 테이블을 만들 때 설정한 열 순서대로 모두 나열되어 있다고 가정하고 데이터를 작성해야 한다.
- 열 개수나 자료형 및 길이는 반드시 맞춰 줘야 한다.
NULL 데이터 입력하기
데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나 굳이 넣을 필요가 없는 데이터인 경우에는 NULL을 사용한다.
NULL을 INSERT문에 지정하는 방법
- NULL을 직접 명시적으로 입력해주는 방법
- 대상 열을 생략하여 암시적으로 NULL이 입력되도록 유도하는 방식
NULL을 지정 입력
INSERT INTO DEPT_TEMP
VALUES(70, 'WEB', NULL);
해당 열의 자료형이 문자열 또는 날짜형일 경우 빈공백 문자열도 NULL을 입력할 수 있다
INSERT INTO DEPT_TEMP
VALUES(80, 'MOBILE', '');
날짜 데이터 입력하기
YYYY/MM/DD 형식
INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (9999, '홍길동', 'PRESIDENT', NULL, '2001/01/01',
5000, 1000, 10);
YYYY-MM-DD 형식
INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES( 1111, '성춘향', 'MANAGER', 9999, '2001-01-05', 4000, NULL, 20);
TO_DATE 함수를 사용하여 날짜 데이터 입력하기
INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES( 2111, '이순신', 'MANAGER', 9999, TO_DATE('07/01/2001', 'DD/MM/YYYY'), 4000, NULL, 20);
SYSDATE를 사용하여 날짜 데이터 입력하기
- 현재 시점으로 날짜를 입력할 경우에는 SYSDATE를 지정하여 처리
- SYSDATE 방식 : 데이터 입력 시점을 정확히 입력할 수 있어 자주 사용
SYSDATE를 사용하여 날짜 데이터 입력하기
INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES( 3111, '심청이', 'MANAGER', 9999, SYSDATE, 4000, NULL, 30);
UPDATE문
기본 형식
UPDATE [변경할 테이블]
SET [변경할 열1]=[데이터], [변경할 열2]=[데이터], ..., [변경할 열N]=[데이터]
[WHERE 데이터를 변경할 대상 행을 선별하기 위한 조건];
데이터 전체 수정
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL';
수정한 내용을 되돌리고 싶을 때는 아래 명령어를 치면 된다.
ROLLBACK;
데이터 일부분만 수정하기
Ex) 40번 부서의 부서 이름을 DATABASE로 수정하고 지역을 SEOUL로 수정
UPDATE DEPT_TEMP2
SET DNAME = 'DATABASE',
LOC = 'SEOUL'
WHERE DEPTNO = 40;
SELECT * FROM DEPT_TEMP2;
여러 열을 한 번에 수정하는 경우
UPDATE DEPT_TEMP2
SET(DNAME, LOC) = (SELECT DNAME, LOC FROM DEPT WHERE DEPTNO=40)
WHERE DEPTNO=40;
열 하나하나를 수정하는 경우
서브쿼리에 나열한 열과 UPDATE문으로 변경할 열 개수나 자료형은 일치해야한다.
UPDATE DEPT_TEMP2
SET DNAME = (SELECT DNAME FROM DEPT WHERE DEPTNO=40),
LOC = (SELECT LOC FROM DEPT WHERE DEPTNO=40)
WHERE DEPTNO=40;
WHERE절에 서브쿼리를 사용하기
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL'
WHERE DEPTNO = (SELECT DEPTNO FROM DEPT_TEMP2 WHERE DNAME='OPERATIONS');
SELECT * FROM DEPT_TEMP2;
DELETE 문
기본 형식
DELETE [FROM] [테이블 이름]
[WHERE 삭제할 대상 행을 선별하기 위한 조건식];
WHERE절 사용
DELETE EMP_TEMP3
WHERE JOB = 'MANAGER';
SELECT * FROM EMP_TEMP3;
서브쿼리를 사용하여 데이터 삭제
DELETE FROM EMP_TEMP3
WHERE EMPNO
IN (SELECT E.EMPNO
FROM EMP_TEMP2 E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL
AND S.HISAL
AND S.GRADE=3
AND DEPTNO=30
);
반응형