ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [한기교] SQL 활용 필기(7) - DML (INSERT, UPDATE, DELETE)
    비전공자 공부일기/:: DB - SQL 2020. 5. 3. 13:10

    데이터 삽입과 변경

     

    < INSERT 절 >

    ㅁ 단일행 입력

    : 한번에 하나의 튜플을 테이블에 입력하는 방법

    INSERT INTO 테이블명 [(속성명, ..., 속성명)]
    VALUES (값, ..., 값)

    - INTO 는 생략 가능

    - 테이블명에 명시한 속성에 VALUES절에 지정한 값을 입력

    - 테이블명에 속성을 명시하지 않으면 테이블 생성시 정의한 컬럼 순서와 동일한 순서로 입력함

     

     

    ㅁ NULL의 입력

    : 데이터를 입력하는 시점에서 해당 속성값을 모르거나, 미정일 때 사용

    : NOT NULL 조건이 지정된 경우 입력이 불가능

     

    1) 묵시적 방법

    : INSERT INTO절에 해당 속성명 생략

     

    2) 명시적 방법

    : VALUES 절에 있는 속성값 대신 NULL 입력

     

     

    ㅁ 서브 쿼리를 이용한 데이터 삽입

    : 서브 쿼리의 결과를 테이블에 삽입

    INSERT INTO 테이블
    subquery
    
    
    (ex)
    INSERT INTO SAMPLETABLE
    SELECT *
    FROM EMPLOYEE
    WHERE DNO = 30

    - 한번에 여러 튜플 삽입 가능

    - 서브쿼리의 결과 집합은 INSERT 명령문에 지정된 칼럼 개수와 데이터 타입이 일치해야 함

     

     

    ㅁ 질의 결과를 새로운 테이블 생성 후 저장

    SELECT 컬럼명, 컬럼명, ... INTO 대상테이블
    FROM 테이블
    WHERE 조건

    단, 오라클의 경우 아래와 같이 작성해야 함

    CREATE TABLE 테이블명
    AS
    SELECT 컬럼 리스트
    FROM 테이블
    [WHERE 조건]

    *** 질의 결과로 만든 테이블은

    1) 기존 테이블의 속성명과 타입 그대로 적용

    2) NOT NULL 조건 그대로 적용

    3) 다른 제약조건은 적용되지 않음

     

     

    ㅁ 테이블 구조의 복사

    : 구조만 복사하고 튜플들은 복사하고 싶지 않은 경우

     

    - SELECT ~ INTO ~ 구문 사용

    - WHERE 조건에 항상 거짓이 되는 조건을 기술함

    ---> SELECT문의 결과에 아무것도 조회되지 않음

    ---> 따라서 내용 없이 테이블의 구조만 복사 가능

    SELECT * INTO 대상 테이블
    FROM 복사할 테이블
    WHERE 항상 거짓인 조건문

     

     

    ㅁ 테이블의 구조 검색문

     

    - 오라클

    DESCRIBE[DESC] 테이블명

     

    - MS SQL  --- 저장 프로시저를 수행시키기 위하여 EXEC명령어가 필요

    sp_help 테이블명

     

     

     

    ㅁ VALUES 이용한 다중행 입력

    : MS-SQL 2008부터는 서브쿼리가 아닌 VALUES를 이용해서도 다중행 삽입이 가능

    INSERT INTO table1
    VALUES (속성값들), (속성값들)

     

     

     

    < UPDATE 구문>

    ㅁ UPDATE ~ SET 키워드

    UPDATE 테이블명
    SET column = 값, ...
    [WHERE 조건]                   --> 생략 시 테이블의 모든 행이 수정됨

     

    ㅁ 서브쿼리를 이용한 데이터 수정

    - UPDATE문의 SET 절에서 서브 쿼리를 이용

    - 다른 테이블에 저장된 데이터를 검색하여 한번에 여러 속성값을 수정할 수 있음

    - SET절의 속성명은 서브 쿼리의 속성명과 달라도 됨

     

     

    ㅁ 복수 속성값 변경

    : 하나 이상의 속성값 한번에 변경

     

    UPDATE 테이블명
    SET 속성1=값1, 속성2=값2, ...
    [WHERE 조건]

     

     

    < DELETE 구문 >

     

    ㅁ DELETE문 (데이터 삭제)

    : 테이블에 저장된 데이터 삭제를 위한 조작어

    DELETE [FROM] 테이블     ---> 테이블 제거가 아닌, 테이블 속 튜플 삭제
    [WHERE 조건]             ---> 생략되면 테이블의 모든행 삭제

     

    ㅁ 서브쿼리를 이용한 데이터 삭제

    - WHERE 절에서 서브쿼리 이용

    - 다른 테이블에 저장된 데이터를 검색하여 한번에 여러 행 삭제

    - WHERE절의 속성명은 서브 쿼리의 속성명과 달라도 됨

     

     

    댓글

coding wanee