컴퓨터/SQL

데이터 삽입과 변경

해피밀세트 2020. 1. 22. 17:17

INSERT 절 

1. 다양한 INSERT 구문 

  1) 단일행 입력 

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

        INSERT INTO 테이블명 [(속성명,…, 속성명)]

        VALUES (값,…, 값) 

     - “INTO”는 생략이 가능함

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

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

     예) 실습을 위하여 사원과 같은 구조의 테이블 EMPTEST 생성 

     -  EMPTEST 테이블에 사원 정보 삽입 

     - 50, “홍길동”, “staff”, NULL, 2012-10-01, 500, 30, 10

  2) NULL의 입력

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

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

     - 묵시적인 방법 : INSERT INTO 절에 해당 속성명 생략

     - 명시적인 방법 : VALUES 절에 있는 속성값에 NULL을 사용

     ① EMPTEST 테이블에 묵시적인 방법을 이용하여 사원 번호(51)와 사원이름(‘심청이’) 입력,

        나머지는 NULL 입력

      ② EMPTEST 테이블에 명시적인 방법을 이용하여 사원 번호(52)와 사원이름(‘임꺽정’) 입력, 나머지는 NULL 입력 

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

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

         - 한번에 여러 튜플을 넣을 수 있음

            INSERT INTO 테이블

            subquery

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

     예) 사원 테이블에서 부서번호 30인 사원들을 EMPTEST에 삽입

 4) 질의 결과 테이블 만들기

    - 질의 결과를 바로 테이블 만들고 저장하기 

       SELECT 컬럼리스트 INTO 대상테이블

       FROM 테이블

       WHERE 조건 

       예) 부서 테이블에서 부서번호 30인 부서의 부서번호와 부서명을 DEPTEST란 테이블로 저장 

    - 오라클의 경우에는 구문이 다소 다름 

       CREATE TABLE 테이블명

       AS

                     SELECT 컬럼리스트

                     FROM 테이블

                     [WHERE 조건] 

         질의 결과로 만든 테이블은 기존 테이블의 속성명과 타입을 그대로 적용함

         ② NOT NULL 조건을 그대로 적용함

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

  5) 테이블 구조의 복사

      - 상황에 따라서 기존 테이블과 동일한 구조를 지니는 테이블을 생성할 필요가 있음

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

       - SELECT ~ INTO ~ 구문을 이용함

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

         예) 1 > 2 

     예) DEPARTMENT의 구조만 복사하여 DEPT_COPY 테이블 생성

  6) 테이블의 구조 검색문

     - 오라클

        - 명령어 : DESCRIBE[DESC] 테이블명

     - MS SQL

        - 저장 프로시저 : sp_help 테이블명

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

      예) DEPTEST의 튜플들과 구조정보 검색

  7) VALUES를 이용한 다중행 입력

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

       INSER INTO table1

       VALUES (속성값들), (속성값들)


UPDATE와 DELETE

1. UPDATE 구문 

  1) 데이터 수정

     - UPDATE 문 : 테이블에 저장된 데이터를 수정하기 위한 데이터 조작어

       UPDATE 테이블명

       SET column = 값, ...

       [WHERE 조건] 

     - WHERE 절이 생략되면 테이블의 모든 행이 수정됨 

    예) EMPTEST에 있는 모든 사원의 봉급 10% 인상

      예) EMPTEST에 있는 사원들 중 30번 부서에 속한 사원들의 직급 모두 staff로 변경

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

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

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

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

       UPDATE table

       SET 속성1 = (SELECT ~ FROM ~ WHERE~)

       [WHERE 조건]  

    예) EMPTEST 테이블에서 사원번호 50번인 사원의 관리자번호 ⇨ 사원테이블의 사원번호 101번의 값으로 변경

  3) 복수 속성값 변경

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

       - SET 절에 (속성명 = 값), (속성명= 값), … 으로 작성함

         UPDATE table

         SET 속성1 = 값, 속성2 = 값, …

         [WHERE 조건]  

      예) EMPTEST 에서 eno가 51인 튜플

           ⇨ SALARY를 300으로 변경

           ⇨ COMMISSION은 50으로 변경

 

2. DELETE 구문 

  1) 데이터 삭제

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

       DELETE [FROM] 테이블

       [WHERE 조건] 

     - WHERE 절이 생략되면 테이블의 모든 행을 삭제함 

   예) DEPTEST에 있는 모든 정보를 삭제

  예) EMPTEST에서 급여가 400 미만인 사원 제거

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

    - WHERE 절에서 서브 쿼리를 이용함

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

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

    예) 부서명이 Accounting인 부서에 속한 사원들을 EMPTEST 테이블에서 삭제하기

반응형

'컴퓨터 > SQL' 카테고리의 다른 글

오라클 SQL 함수 정리 - ① 문자 함수  (0) 2020.01.28
트랜잭션  (0) 2020.01.22
데이터 검색  (0) 2020.01.21
제약조건  (0) 2020.01.21
데이터 구조 생성과 변경  (0) 2020.01.20