728x90
반응형
1. INSERT
테이블 생성
-- DEPT 테이블 복사해서 새로운 테이블 생성
CREATE TABLE DEPT_TEMP
AS SELECT * FROM DEPT where 1 <> 1;
테이블 삭제
DROP TABLE 테이블 이름;
데이터 추가
-- 지정한 테이블의 열 순서와 자료형에 맞는 입력 데이터를 지정
-- 숫자는 바로 명시, 문자열은 작은따옴표('')안에 명시
INSERT INTO 테이블 이름 (열1, 열2, ..., 열N(선택))
VALUES (열1 값, 열2 값, ..., 열N 값);
NULL의 명시적 입력
데이터 값에 직접 NULL 입력해 추가 (문자열이나 날짜형이면 빈 공백 문자열('')로도 NULL 입력 가능)
INSERT INTO DEPT_TEMP(DEPTNO, DNAME, LOC) VALUES (70, 'WEB', NULL);
NULL의 암시적 입력
열 데이터를 넣지 않는 형태
INSERT INTO DEPT_TEMP(DEPTNO, DNAME) VALUES (70, 'WEB');
현재 날짜
SYSDATE를 이용해 현재 시점의 날짜 입력
여러 데이터 추가 (feat. 서브쿼리)
INSERT INTO EMP_TEMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
SELECT E.EMPNO, E.ENAME, E.JOB. E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
AND S.GRADE = 1;
서브쿼리 INSERT의 유의점?
- VALUES절은 사용하지 않음
- 추가되는 테이블의 열 개수와 자료형, 서브쿼리 열 개수와 자료형이 일치해야 함
이 외에도 ALL 또는 FIRST 등의 옵션으로 한 번에 여러 데이터 추가 가능
MERGE문으로 같은 열 구조를 가지는 여러 테이블 또는 서브쿼리의 결과 데이터를 한 테이블에 병합하여 추가 가능
2. UPDATE
데이터 수정
-- 여러 열을 수정하려면 쉼표(,)로 구분
UPDATE 변경할 테이블
SET 변경할 열1 = 값, 변경할 열2 = 값, ..., 변경할 열N = 값
WHERE 변경할 행 조건
여러 데이터 수정 (feat. 서브쿼리)
-- 서브쿼리로 데이터 여러 개 수정 (두 개의 열 한 번에 수정)
UPDATE DEPT_TEMP
SET (DNAME, LOC) = (SELECT DNAME, LOC
FROM DEPT
WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
-- 서브쿼리로 데이터 하나씩 수정
UPDATE DEPT_TEMP
SET DNAME = (SELECT DNAME
FROM DEPT
WHERE DEPTNO = 40),
LOC = (SELECT LOC
FROM DEPT
WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
-- WHERE절에 서브쿼리 사용해 수정
UPDATE DEPT_TEMP
SET LOC = 'SEOUL'
WHERE DEPTNO = (SELECT DEPTNO WEHRE DEPT_TEMP WHERE DNAME = 'OPERATIONS');
3. DELETE
데이터 삭제
DELETE [FROM] 테이블 이름
WHERE 삭제할 행 조건 (생략 시 모든 데이터 삭제)
여러 데이터 삭제 (feat. 서브쿼리)
DELETE FROM EMP_TEMP
WHERE EMPNO IN (SELECT E.EMPNO
FROM EMP_TEMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
AND S.GRADE = 3
AND DEPTNO = 30);
UPDATE, DELETE의 유의점?
데이터를 수정하거나 삭제하는 일은 위험성이 큰 명령어로, WHERE 절을 꼼꼼히 확인하는 작업이 필요.
따라서, UPDATE나 DELETE 실행 전 해당 조건이 맞는지 SELECT절로 결과 값을 확인 후 적용하기
728x90
반응형
'Programming > Database' 카테고리의 다른 글
[ORACLE 초급] DDL - CREATE, ALTER, RENAME, TRUNCATE, DROP (0) | 2020.09.26 |
---|---|
[ORACLE 초급] 트랜잭션(COMMIT, ROLLBACK), SESSION, LOCK (0) | 2020.09.26 |
[ORACLE 초급] 서브쿼리 - WHERE절(단일행, 다중행, 다중열), 인라인뷰(WITH절), 스칼라서브쿼리 (0) | 2020.09.20 |
[ORACLE 초급] 문법별 JOIN 사용법 - 내부조인, 외부조인, JOIN ~ USING/ON (0) | 2020.09.20 |
[ORACLE 중급] 그룹화 함수 - ROLLUP, CUBE, GROUPING, PIVOT 등 (0) | 2020.09.18 |