SQL 추가, 수정, 삭제

JEREGIM·2023년 4월 1일
0

데이터베이스

목록 보기
4/6

📌INSERT INTO(추가)

INSERT INTO 테이블이름 VALUES (all values);

INSERT INTO 테이블이름 (attributes list) VALUES (attributes list 순서에 맞는 values);

INSERT INTO 테이블이름 VALUES (...), (...), (...);

  • 맨 마지막 null 부분은 외래키에 해당하는 값이다. 아직 해당 값을 참조하는 테이블에 데이터를 추가하지 않았기 때문에 null을 추가한 것이다.

  • 'employee_chk_2' 라는 제약사항을 위반했다면서 데이터가 추가되지 않았다.

  • 저 제약사항이 뭔지 확인하고 싶을때 SHOW CREATE TABLE 테이블이름; 을 사용하면 된다.

    • salary가 5천만 이상이어야 하는 제약사항을 위반함

  • VALUES의 마지막 값은 department 테이블의 pk인 id를 참조한 외래키이다. 그런데 department 테이블에 데이터를 아직 추가하지 않았기 때문에 111이라는 값은 존재하지 않는다. 따라서 데이터가 추가되지 않고 에러가 발생한다.

  • 값을 넣을 attribute를 적고 이에 해당하는 값만 추가해줄 수 있다. attribute의 순서를 꼭 테이블 만들때 생성했던 순서로 하지 않아도 된다.

  • salary의 default 값을 5천만으로 정해줬기 때문에 추가할 때 값을 넣어주지 않으면 5천만으로 자동설정된다.

  • dept_id 또한 따로 추가해주지 않았기 때문에 NULL값으로 자동설정 되었다.

  • 이렇게 tuple들을 한꺼번에 추가해줄수도 있다.

데이터를 추가해준 테이블들은 다음과 같다
1. department 테이블

  1. employee 테이블

  2. project 테이블

  3. works_on 테이블


📌UPDATE(수정)

UPDATE 테이블이름
SET 수정할 값
WHERE 조건

  • employee 테이블에 값을 추가해줄 당시에는 dept_id 값을 전부 null로 해줬기 때문에 update를 해줘야 한다.

  • 정상적으로 dept_id가 수정이 된 것을 확인할 수 있다.

개발팀의 연봉을 2배로 늘리시오(개발팀의 dept_id는 1003)

프로젝트 ID가 2003인 프로젝트에 참여한 임직원의 연봉을 2배로 늘리시오


📌DELETE(삭제)

DELETE FROM 테이블이름
WHERE 조건

JOHN이라는 직원이 퇴사하였으니 employee 테이블에서 삭제하시오

id = 8 인 JOHN을 employee 테이블에서 삭제하려고 한다. 근데 JOHN은 프로젝트 id가 2001인 프로젝트에 참여중이다. 그러나 works_on 테이블에서 따로 삭제해줄 필요가 없다.
이유는 works_on 테이블을 생성할 때

이러한 제약사항을 설정해줬기 때문이다. on delete CASCADE는 참조한 키가 삭제되었을 때 그 키와 대응하는 empl_id도 삭제하라는 제약사항이다.

DINGYO(id = 5)는 2001, 2002, 2003 프로젝트에 참여중이다. 2001 프로젝트에만 참여하도록 하기 위해 나머지 프로젝트를 삭제하시오

  • <>!= 이 표시와 같다. 2001을 제외한 proj_id를 모두 삭제하기 위해서 사용되었다.

0개의 댓글