본문 바로가기
Programming/Oracle SQL

DML and DCL (Data Manipulation, Control Language)

UPDATE: 표를 수정  ex) UPDATE 대상테이블 SET 변경대상칼럼 = 변경대상 칼럼의 값 WHERE 조건

예제)

UPDATE DEPT
SET DNAME = '영업'  -- 이것만 입력시 모든 DNAME이 영업으로 획일화
WHERE DNAME = 'SALES' ;  -- SALES 부분만 영업으로 변경 -> 일부 수정을 위한 필수 구문



ROLLBACK;  실험 후 되돌아가기

 

 

DELETE: 삭제   ex) DELETE FROM 대상테이블 where 조건  (조건 없으면 테이블 전체 삭제)

예제)

DELETE FROM DEPT WHERE DEPTNO = 60;

실수로 지웠다면 바로 ROLLBACK; 실행 (commit을 함부로 하지 않는다.)

 

 

 

 

 

 

INSERT INTO: 새로운 열 혹은 행 데이터 추가

예제)

..

 

 

 

 

 

 

 

 

 

 

 

 

 

NULL 입력 예

 

 

 

 

날짜 데이터 입력하기
INSERT에 서브쿼리 사용시 주의점

 

 

 

 

TABLE에서 맨 뒤에 SQL을 누르면 생성원리를 볼 수 있다.

빨간 건 DBA영역. 몰라도 됨

 

 

 

 

INSERT INTO CHAP10HW_DEPT (DEPTNO, DNAME, LOC) VALUES (50, 'ORACLE', 'BUSAN');
INSERT INTO CHAP10HW_DEPT (DEPTNO, DNAME, LOC) VALUES (60, 'SQL', 'ILSAN');
INSERT INTO CHAP10HW_DEPT (DEPTNO, DNAME, LOC) VALUES (70, 'SELECT', 'INCHEON');
INSERT INTO CHAP10HW_DEPT (DEPTNO, DNAME, LOC) VALUES (80, 'DML', 'BUNDANG');


-- INSERT INTO 테이블이름 (칼럼1,칼럼2,칼럼3) VALUES (값1, 값2, 값3);  스트링은 ''안에 기입!

INSERT INTO CHAP10HW_EMP
VALUES(7201, 'TEST_USER1', ' MG', 7788, TO_DATE('2016-01-02', 'YYYY-MM-DD'), 4500, NULL, 50);
 
INSERT INTO CHAP10HW_EMP
VALUES(7202, 'TEST_USER2', 'CLERK', 7201, TO_DATE('2016-02-21', 'YYYY-MM-DD'), 1800, NULL, 50);
 
INSERT INTO CHAP10HW_EMP
VALUES(7203, 'TEST_USER3', 'ANALYST', 7201, TO_DATE('2016-04-11', 'YYYY-MM-DD'), 3400, NULL, 60);
 
INSERT INTO CHAP10HW_EMP
VALUES(7204, 'TEST_USER4', 'SALESMAN', 7201, TO_DATE('2016-05-31', 'YYYY-MM-DD'), 2700, 300, 60);
 
INSERT INTO CHAP10HW_EMP
VALUES(7205, 'TEST_USER5', 'CLERK', 7201, TO_DATE('2016-07-20', 'YYYY-MM-DD'), 2600, NULL, 70);
 
INSERT INTO CHAP10HW_EMP
VALUES(7206, 'TEST_USER6', 'CLERK', 7201, TO_DATE('2016-09-08', 'YYYY-MM-DD'), 2600, NULL, 70);
 
INSERT INTO CHAP10HW_EMP
VALUES(7207, 'TEST_USER7', 'LECTURER', 7201, TO_DATE('2016-10-28', 'YYYY-MM-DD'), 2300, NULL, 80);
 
INSERT INTO CHAP10HW_EMP
VALUES(7208, 'TEST_USER8', 'STUDENT', 7201, TO_DATE('2018-03-09', 'YYYY-MM-DD'), 1200, NULL, 80);


-- 앞에 칼럼지정 안해도 VALUE 순서대로 입력시 자동으로 원본기준 순서대로 입력됨.

UPDATE CHAP10HW_EMP
   SET DEPTNO = 70
 WHERE SAL > (SELECT AVG(SAL)
                FROM CHAP10HW_EMP   -- 서브쿼리로 평균 연봉이 높은 경우 설정.
               WHERE DEPTNO = 50);  -- 서브쿼리로 50번 부서로 한정

 

 

 

UPDATE CHAP10HW_EMP
   SET SAL = SAL*1.1,       -- 80번 부서로 10퍼 인상하는 설정
       DEPTNO = 80
 WHERE HIREDATE > (SELECT MIN(HIREDATE)  -- 입사일이 가장 빠른(MIN) 설정.
                     FROM CHAP10HW_EMP
                    WHERE DEPTNO = 60); -- 60번 부서 한정 서브쿼리

 

 

 

 

 

DCL: Commit, Rollback  이 둘이 핵심  TCL(Transaction Control Language라고도 함)

Transaction: 하나의 일 처리, 하나의 데이터 변형 작업

Ex) (그냥 한 단위의 작업)

insert;

commit;   <- transaction

 

update;

commit;   <- transaction

 

insert

update;  <- transaction

 

insert

rollback;  <- transaction  

 

세션(SESSION): DB 접속시작부터 종료까지의 전체 기간

                         = 실행되는 하나의 SQL 파일

 

 

728x90
반응형

'Programming > Oracle SQL' 카테고리의 다른 글

DDL (Data Definition Language)  (0) 2023.08.28
IMPORT and EXPORT DATA, 끄적임  (0) 2023.08.25
Subquery  (0) 2023.08.25
JOIN  (0) 2023.08.24
다중행 함수, GROUP BY, HAVING  (0) 2023.08.24