SQL 데이터 추가, 수정, 삭제
JeongSeulho
2025년 01월 04일
준비중...
클립보드로 복사
데이터 추가
- 다음과 같은 테이블의 tuple을 추가하는 방법
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
birth_date DATE,
sex CHAR(1) CHECK (sex IN ('M', 'F')),
position VARCHAR(10),
salary INT DEFAULT 50000000,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES department(id) ON DELETE SET NULL ON UPDATE CASCADE,
CHECK (salary >= 50000000)
);
기존 attribute 값 생략
INSERT INTO employee
VALUES (1, 'John Doe', '1990-01-01', 'M', 'Engineer', 60000000, NULL);
- dept_id의 왜래키는 아직 부서 테이블에 데이터가 없으므로 NULL로 임시 추가(항상 빈곳 없이 모든 컬럼에 대하여 값 명시)
- 컬럼 순서는 테이블 정의 순서와 동일하게 명시
기존 attribute 값 명시
INSERT INTO employee (name, birth_date, sex, position, id)
VALUES ('John Doe', '1990-01-01', 'M', 'Engineer', 1);
- 컬럼 순서를 직접 명시하여 데이터 추가
- dept_id는 명시하지 않았으므로 NULL로 추가
- salary는 명시하지 않았으므로 기본값 50000000으로 추가
복수의 튜플 동시에 추가
INSERT INTO employee
VALUES (1, 'John Doe', '1990-01-01', 'M', 'Engineer', 60000000, NULL),
(2, 'Jane Smith', '1991-02-15', 'F', 'Manager', 70000000, NULL);
- 복수의 튜플 동시에 추가
데이터 수정
단순 tuple 수정
UPDATE employee
SET dept_id = 1003 -- 수정할 attribute와 수정할 값 명시
WHERE id = 1; -- 수정할 tuple을 선택하기 위한 조건
WHERE 조건에 다른 테이블도 연관되어 있는 경우
CREATE TABLE WORKS_ON (
employee_id INT,
project_id INT,
FOREIGN KEY (employee_id) REFERENCES employee(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (project_id) REFERENCES project(id) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (employee_id, project_id)
);
- WORKS_ON과 같은 중계 테이블 존재하고 프로젝트 2003에 참여한 직원의 연봉을 2배로 수정
UPDATE employee, works_on
SET employee.salary = employee.salary * 2
WHERE employee.id = works_on.employee_id AND works_on.project_id = 2003;
데이터 삭제
- John Doe은 프로젝트 2001을 비롯해 여러 프로젝트에 참여 중, 2001에만 집중하기 위해 나머지 프로젝트 하차
DELETE FROM works_on
WHERE employee_id = 1 AND project_id != 2001;