ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - DML
    DataBase/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
Designed by Tistory.