데이터베이스(쉬운코드)
4. SQL로 데이터 추가/수정/삭제하기
youbing
2024. 11. 27. 15:16
본 내용은 유튜버 쉬운코드의 강의 "데이터베이스"를 참고하여 작성하였습니다.
SQL로 데이터 추가하기 (feat. constraints)
INSERT INTO table_name
INSERT INTO employee VALUES (1, 'MESSI', '1987-02-01', 'M', 'DEV_BACK', 10000000, null);
- 이때 attribute 순서는 create table 할 때 입력한 순서대로+모든 attribute에 해당하는 값들을 넣어야 함.
- dept_id 값이 현재 null인 이유는 DEPARTMENT 테이블에 값이 없어서 참조할 수 있는 값이 없음.
위와 같이 attribute 값을 나열해두면
- create table 할 때 정해둔 순서에 상관없이 넣을 수 있음.
- 실제로 내가 넣고 싶은 attribute에 대한 값만 넣을 수 있음.
SELECT * FROM table_name; : 테이블에 들어간 데이터 조회
INSERT statement
- INSERT INTO table_name VALUES (comma-separated all values);
- INSERT INTO table_name (attributes list) VALUES (attributes list 순서와 동일하게 comma-separated values);
- INSERT INTO table_name VALUES (~, ~), (~, ~), ... ; -> 여러 개의 data를 넣을 때 사용
SQL로 데이터 수정하기
- employee 테이블을 department 테이블보다 먼저 생성해서 FK인 dept_id가 null 값임. -> 수정 필요
바꾸고자 하는 것 1
- employee ID가 1인 Messi는 개발(development)팀 소속이다.
- 개발팀 ID : 1003
UPDATE employee SET dept_id = 1003 WHERE id = 1;
- 수정이 잘 되었는지 확인하고 싶으면 : SELECT * FROM employee WHERE id = 1;
바꾸고자 하는 것 2
- 개발팀 연봉을 두 배로 인상하고 싶다.
- 개발팀 ID : 1003
UPDATE employee SET salary = salary * 2 WHERE dept_id = 1003;
바꾸고자 하는 것 3
- 프로젝트 ID 2003에 참여한 임직원의 연봉을 두 배로 인상하고 싶다.
UPDATE employee, works_on SET salary = salary * 2 WHERE id = empl_id and proj_id = 2003;
- 그런데 각각의 속성이 어디 테이블에서 온 건지 헷갈릴 수 있어서 아래와 같이 쓰기도 함.
UPDATE employee, works_on SET salary = salary * 2 WHERE employee.id = works_on.empl_id and proj_id = 2003;
바꾸고자 하는 것 4
- 회사의 모든 구성원의 연봉을 두 배로 인상하고 싶다.
UPDATE employee SET salary = salary * 2;
UPDATE statement
UPDATE table_name(s) SET attribute = value[, attribute = value] [WHERE condition(s)];
SQL로 데이터 삭제하기
바꾸고자 하는 것 1
- John이 퇴사하게 되면서 employee 테이블에서 John의 정보를 삭제해야 한다.
- John의 employee ID = 8 / 현재 Jonn은 project 2001에 참여하고 있었다.
DELETE FROM employee WHERE id = 8;
Q. works_on 테이블에서는 정보를 안 지워도 되는지?
A. works_on 테이블을 처음 생성할 때 FK 설정을 한대로 실행됨.
바꾸고자 하는 것 2
- Jane이 휴직을 떠나게 되면서 현재 진행 중인 프로젝트에서 중도하차하게 됐다.
- Jane의 ID = 2
DELETE FROM works_on WHERE impl_id = 2;
바꾸고자 하는 것 3
- 현재 Dingyo가 두 개의 프로젝트에 참여하고 있었는데, 프로젝트 2001은 그대로 하고 2002에서는 빠지기로 했다.
- Dingyo의 ID = 5
DELETE FROM works_on WHERE impl_id = 5 and proj_id = 2002;
만약 Dingyo가 여러 개의 프로젝트에 참여하고 있었는데, 2001만 하기로 했다면,
~~~ WHERE impl_id = 5 and proj_id <> 2001;
~~~ WHERE impl_id = 5 and proj_id != 2001;
바꾸고자 하는 것 4
- 회사에 큰 문제가 생겨서 진행 중인 모든 프로젝트들이 중단됐다.
DELETE FROM project;
DELETE statement
DELETE FROM table_name [WHERE condition(s)];