본문 바로가기
DB

4. SQL 데이터 추가, 수정, 삭제

by 유니개발 2023. 4. 27.

데이터 추가 insert 문법

데이터를 insert 할 때 value들의 값은 처음에 설정했던 attribute 순서대로 괄호 안에 지정해주어야함.

다만, 사진 두번째 줄 처럼 insert할 attribute list를 먼저 table_name옆에 적어준다면 그 값들만 VALUES 옆에 적어주면 됨.

(안 적은 attribute들의 값은 NULL이나 default 값으로 자동으로 들어감. NOT NULL인데 값을 안 적어주면 에러나겠죠?)

 

SELECT뒤에 * 를 붙여주면 전체 attribute에 대한 값들을 가져오라는 의미

SELECT * FROM employee; -> employee table의 전체 attribute 값을 보여줌

 

한 번에 많은 튜플들 추가 가능함.

insert into employee values

(4, 'BROWN', '1996-03-13', 'M', 'CEO', 120000000, null),

(5, 'DINGYO', '1990-11-05', 'M', 'CTO', 120000000, null),

...

(12, 'CURRY', '1998-01-15', 'M', 'PLN', 85000000, null);

 

데이터 수정 update

조건문을 WHERE 라는 문법으로 처리함.

WHERE 조건문 없이 update나 delete를 사용하게 되면, 그 table의 전체 데이터 값이 수정되거나 삭제될 수 있음. (큰일남)

 

UPDATE employee SET dept_id = 1003 WHERE id = 1;

-> employee table에서 id가 1인 직원의 dept_id(부서id)를 1003으로 업데이트 해라.

 

UPDATE employee, works_on

SET salary = salary * 2

WHERE id = empl_id and proj_id = 2003;

-> 프로젝트 ID 2003에 참여한 임직원의 연봉을 두 배로 인상해라.

 

연봉값을 업데이트하기 위해선 employee table이 필요하고, 프로젝트 ID를 참조하기 위해선 works_on table이 필요하기 때문에 두 table 모두 써서 참조하는 문법

좀더 직관적으로 쓰고 싶다면

WHERE id = empl_id and proj_id = 2003; -> WHERE employee.id = works_on.empl_id and proj_id = 2003; 로 표현가능

 

데이터 삭제 delete

- 현재 Dingyo가 여러 프로젝트에 참여하고 있었는데 프로젝트 2001에 선택과 집중을 하기로 하고 나머지에서 빠졌다.

- Dingyo의 ID는 5다

 

DELETE FROM works_on WHERE impl_id = 5 and proj_id != 2001

(프젝 id가 2001이 아닌 다른 것들은 모두 삭제. != 로 쓸수도 있고, <>라고 쓸수도 있음. != 이게 더 익숙하니까 이거쓰자)

 

WHERE 절을 실수로 안쓰고 DELETE를 한다면 table의 데이터가 전부 날아간다. 조심하자

댓글