INSERT,DELETE,UPDATE

강상은·2024년 1월 8일

SQL

목록 보기
3/3

INSERT문

  1. 기존의 릴레이션(테이블)에 투플을 삽입
  2. 릴레이션에 한 번에 한 투플씩 삽입
  3. 한 번에 여러 개의 투플들을 삽입
  4. 릴레이션에 한 번에 한 두플씩 삽입하는 INSERT 구문
       
  • 한 번에 하나의 투플을 삽입

INSERT
INTO 릴레이션(속성1,...속성n)
VALUES(값1,...값n);

질의 : 부서 릴레이션에 (5,연구,^) 투플을 삽입
INSERT INTO DEPT
	VALUES(5,'연구',NULL);
    

질의 : EMP 릴레이션에 (5003, '이진현','사원') 투플을 삽입

INSERT INTO EMP(EMPNO,EMPNAME,TITLE)
	VALUES(5003,'이진현','사원');

  • 한 번에 여러 개의 투플들을 삽입

INSERT
INTO 릴레이션(속성1,...,속성n)
SELECT ... FROM ... WHERE...;

질의 : 급여가 3,000,000 이상인 사원들의 이름, 직급, 급여를 검색하여 HIGH_SAL 릴레이션에 삽입

INSERT INTO HIGH_SAL
SELECT EMPNAME,TITLE,SALALY
FROM EMPLOYEE WHERE SALARY >= 3000000;

CREATE TABLE HIGH_SAL(
EMPNAME CHAR(10),
TITLE CHAR(10),
SALARY INT
);

  • 한 번에 여러 개의 투플들을 삽입

INSERT INTO EMPINFO
SELECT EMPNO, EMPNAME, TITLE,
DEPTNAME,SALALY
FROM EMPLOYEE E, DEPT D
WHERE E.DNO = D.DEPTNO;

CREATE TABLE EMPINFO (
EMPSNO INT PRIMARY KEY,
EMPNAME CHAR(10),
TITLE CHAR(10),
DEPTNAME CHAR(10),
SALARY INT
);

DELETE문

  1. 릴레이션으로부터 한 개 이상의 투플들을 삭제
  2. 삭제 시 참조 무결성 제약조건 관여
  3. DELETE문의 구문

DELETE
FROM 릴레이션
WHERE 조건;

CASE 1

질의 : DEPT 릴레이션에서 4번 부서를 삭제
DELETE FROM DEPT
WHERE DEPTNO = 4;

CASE 2

질의 : 개발 부서의 사원이면서 급여가 3000000 미만인 사원 정보를 삭제

DELETE FROM EMP
WHERE SALARY < 3000000 AND
	DNO IN(SELECT DEPTNO FROM DEPARTMENT
    	WHERE DEPTNAME = '개발');

CASE 3

질의 : 운영체제 과목을 수강한 학생 정보를 삭제
DELETE FROM STUDENT
WHERE SNO IN
	(SELECT E.SNO FROM ENROL E, COURSE C
    WHERE E.CON = C.CNO AND C.CNAME = '운영체제');

릴레이션의 모든 정보를 삭제

질의 : 부서(DEPT) 릴레이션의 모든 정보를 삭제

DELETE FROM DEPT;

UPDATE문

  1. 한 릴레이션에 들어 있는 투플들의 속성 값들을 수정
  2. 수정 시 참조무결성 제약조건이 관여됨
  3. UPDATE문의 구문

UPDATE 릴레이션
SET 속성=값 또는 식[,...][WHERE 조건];

CASE 1

질의 : 사원 번호가 2106인 사원의 부서를 3번 부서로 변경하고 급여를 5% 인상

UPDATE EMP
SET DNO=3,SALARY = SALARY * 1.05
WHERE EMPNO =2106;

CASE 2

질의 : 박영권 사원의 급여를 이수민 사원의 급여로 변경
UPDATE EMP
SET SALARY=(SELECT SALARY FROM EMPLOYEE
				WHERE EMPNAME='이수민')
WHERE EMPNAME = '박용권';                

CASE 3

질의 : 개발 부서이거나 영어 부서에 근무하는 사원의 급여를 10% 인상

UPDATE EMP
SET SALARY = SALARY * 1.1
WHERE DNO IN
	(SELECT DEPTNO FROM DEPARTMENT WHERE (DEPTNAME = '개발')

운영체제 과목을 수강한 학생의 점수를 5점씩 올리기

UPDATE ENROL
SET SCORE = SCORE +5
WHERE ENROL.CNO IN
(SELECT COURSE.CNO
FROM COURSE
WHERE CNAME = '운영체제');

0개의 댓글