-
SQL - DMLDataBase/Oracle 2023. 9. 1. 16:47
- INSERT,UPDATE,DELETE
1. 테이블 데이터 추가
1.1 테이블 생성
CREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT; DROP TABLE 테이블명;
CREATE TABLE EMP_TEMP AS SELECT * FROM EMP WHERE 1<>1; -- 급하게 테이블 떠야할때 (데이터 뺴고 틀만)
- > 테이블 복사 및 삭제
1.2 INSERT
INSERT INTO 테이블명 [(열,열,열)] VALUES (데이터,데이터,데이터)
- 지정한 열 개수와 데이터 개수가 일치 x , 자료형 일치x, 열길이 초과시 입력 x
- 열지정을 생략하면, 모든 열에 데이터를 입력해줘야함
- 열을 지정하면 , 열에 맞는 데이터 넣으면됨
- null입력은 명시적으로 null을 입력 혹은 열 지정을 빼면됨
- 문자열 혹은 날짜형은 '' 공백문자로 null 표시 가능
- 날짜형 데이터는 YYYY/MM/DD 혹은 YYYY-MM-DD 포맷으로 입력하면 된다. (TO_DATE 추천)
* 서브쿼리 사용하면 한 번에 여러 데이터 입력 가능
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;
> VALUES절을 사용하지 않는다.
> 데이터 추가되는 데이블의 열 개수와 서브쿼리 열 개수가 일치해야한다.
> 데이터가 추가되는 테이블의 자료형과 서브쿼리 자료형이 일치해야한다.
*MERGE라는 것도 있음 나중에 살펴보자
* TO_CHAR 은 날짜데이터가 이런 포맷으로 출력해달라
* TO_DATE는 문자열에 날짜데이터가 여기여기 이렇게 적혀있다 알려주는 것
MMDDYYYY예
2. 테이블에 데이터 수정하기
UPDATE
UPDATE 변경할 테이블 SET 열=값, 열=값 WHERE [데이터 변경할 대상 행 선별 조건]
* WHERE 생략시 테이블 내 모든 열의 데이터 바뀜
- 수정한 내용 다시 되돌리고 싶을 때 ROLLBACK;합시다.
*서브쿼리 이용한 수정
UPDATE DEPT_TEMP2 SET (DNAME,LOC) = (SELECT DNAME,LOC FROM DEPT WHERE DEPTNO =40) WHERE DEPTNO = 40; --열 하나씩 수정 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');
- 이때 당연히 서브쿼리에 나열한 열과 UPDATE문에 변경할 열 개수나 자료형 일치해야함
- WHERE절에 사용한 경우는 SELECT문에서 WHERE절에 서브쿼리 사용한 것과 같다.
*UPDATE에 주의점
- WHERE조건을 면밀하게 따져보자. UPDATE하기전에 SELECT에 넣고 확인해보기 꼭!
3. 데이터 삭제
- DELETE문은 데이터 삭제하기 위해 사용합니다.
DELETE [FROM] 테이블명 WHERE 조건식
* 조건 생략시 모든 데이터 삭제함
- WHERE절에 서브쿼리 사용하여 데이터 일부 삭제하기
DELETE FROM EMP_TEMP2 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);
* 모든데이터 삭제할 수도 있음으로 사용 주의하자!!
SELECT문을 통해 WHERE 평가하고 사용해야함!
'DataBase > Oracle' 카테고리의 다른 글
SQL - 데이터 정의어 (DDL) (0) 2023.09.04 SQL - 트랜잭션 제어와 세션 (0) 2023.09.04 오라클 sql - 인라인 뷰를 사용한 TOP-N SQL (0) 2023.09.01 SQL 레벨업 (1) DBMS 아키텍처 (0) 2023.08.31 오라클 - 객체 종류 (0) 2023.08.31