본문 바로가기
SQL

[질의구조] 삽입, 삭제, 갱신

by 빅데이터1020 2020. 7. 20.
SMALL

삽입(INSERT)

1) 테이블에 단일 레코드 삽입

튜플값들은 CREATE TABLE 명령에서 지정한 애트리뷰트 순서와 동일하게 지정해야합니다.

애트리뷰트 순서와 다르게 필드값을 지정하려면 애트리뷰트 이름을 함께 명시하면 됩니다.

명시되지 않은 필드에는 NULL이나 DEFAULT 값이 지정됩니다.

 

(예) CREATE TABLE 명령에서 지정한 애트리뷰트 순서와 동일하게 지정

INSERT INTO EMPLOYEE
VALUES ('Richard', 'K', "Marini', '653298653', '30-DEC-52');

 

(예) 애트리뷰트 순서와 다르게 필드값 지정

INSERT INTO EMPLOYEE (FNAME, LNAME, SSN)
VALUES ('Richard', 'Marini', '65329863');

*이 경우, 명시하지 않은 필드에는 NULL값이 지정됨

 

2) SELECT와 결합된 INSERT 명령

질의의 결과로 생성된 다중 튜플을 또 다른 릴레이션에 삽입하는 경우 SELECT와 INSERT 명령을 결합할 수 있습니다.

문장 또 한 두 가지 명령을 결합해서 사용합니다.

 

(예)

CREATE TABLE DEPTS_INFO (DEPT_NAME VARCHAR(15),
                         NO_OF_EMPS INTEGER,
                         TOTAL_SAL INTEGER);

INSERT INTO DEPTS_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL)
         SELECT DNAME, COUNT(*), SUM(SALARY)
         FROM   DEPARTMENT, EMPLOYEE
         WHERE  DNUMBER = DNO
         GROUP BY DNAME;

*뷰와 DEPTS_INFO 테이블의 차이

- 위의 질의를 수행한 후에 EMPLOYEE 릴레이션을 갱신한다면,

  DEPTS_INFO 테이블은 이 변경을 반영하지 못하기 때문에 최신정보를 가지고 있지 않을 수도 있습니다.

- DEPTS_INFO 테이블을 최신정보로 유지하려면 뷰(VIEW)로 정의해야 합니다.

 

삭제(DELETE)

릴레이션에서 튜플을 제거하는 명령입니다.

삭제할 튜플에 대한 조건은 WHERE 절에서 명시하면 됩니다.

이 경우 한번의 DELETE 명령으로 WHERE 조건을 만족하는 모든 튜플을 삭제하게 됩니다.

WHERE 절을 생략한 경우에는 테이블 내의 모든 튜플을 삭제하고,

테이블은 데이터베이스 내에서 빈 테이블로 남게 됩니다.

 

(예 - 1)

DELETE FROM EMPLOYEE
WHERE LNAME = 'Brown';

(예 - 2)

DELETE FROM EMPLOYEE
WHERE DNO IN (SELECT DNUMBER
             FROM  DEPARTMENT
             WHERE DNAME = 'Research');

(예 - 3)

DELETE FROM EMPLOYEE ;

 

갱신(UPDATE)

튜플들의 애트리뷰트 값을 수정하기 위해 사용합니다.

WHERE절은 한 릴레이션에서 수정할 튜플을 선택하는 조건을 설정합니다.

SET절은 변경할 애트리뷰트의 새로운 값을 명시합니다.

 

(예) PROJECT 테이블에서 PNUMBER가 10인 튜플에 대해 PLOCATION을 'Bellaire'로 변경하고,

     담당부서인 DNUM을 5로 변경하기

UPDATE PROJECT
SET PLOCATION = 'Bellaire', DNUM = 5
WHERE PNUMBER = 10;

(예) 'Research' 부서에 있는 모든 종업원들의 봉급을 10% 인상하기

UPDATE EMPLOYEE
SET SALARY = SALARY*1.1
WHERE DNO IN (SELECT DNUMBER
              FROM DEPARTMENT
              WHERE DNAME = 'Research');

 

LIST