오래 못 할 짓 하지 않기
[ 데이터베이스 ] 4. SQL 활용 ( 추가/수정/삭제 ) 본문
Insert - 데이터 추가
INSERT INTO (데이터를 추가할 table name)
-> VALUES (1,'Kim','2001-03-01' , 'M' );
Data를 Table에 넣을 때 사용한다.
※ 주의할 점
1) Primary Key를 입력해야한다면, 겹치지 않게 넣어주어야 한다.
2) Attribute를 생성한 순서대로 데이터 값도 순서대로 추가해주어야 한다.
3) Constraints 를 지켰는지 확인한다.
-> 문제가 생겼을 때,
SHOW CREATE TABLE (문제가 생기고 있는 table 이름);
하면 어떤 조건을 만족시키지 못했는지 알 수 있다.
위와 같이 Table 다음에 attribute 이름을 나열한 뒤에 VALUES를 추가한다면
1) 원하는 순서대로 값을 넣을 수 있고.
2) 해당 Attribute에만 값을 넣는다는 의미이다.
데이터 Insert 방식
1) Attribute를 추가한 순서대로 데이터를 넣어준다.
→ 한 set의 data가 추가됨
2) 원하는 Attribute list를 적은 뒤, 그 Attribute에만 값을 넣어준다.
→ 한 set안에서 list에 추가한 값들만 더해진다.
3) 여러 개의 데이터를 한 번에 넣는다.
Update - 데이터 수정
Update ( table 이름 ) set ( 바꿀 attribute = 바꿀 값 ) WHERE ( 바꾸려고 하는 것의 attribute 값 ) <<주로 id값이나 이름
ex)
Update table1 set attributeA = hello Where id=3;
id=1 인 데이터에서, dept_id만 1003으로 바꿨다.
문제 1)
개발 팀 직원들의 연봉을 2배 인상시키려고 한다.
개발 팀 부서 id는 1003이다.
update employee set salary = salary * 2 where dept_id =1003;
※ salary *= 2 이거 안 됨
문제 2)
project 2003에 참여한 사람들만 연봉을 2배 늘려주려고 한다.
update employee,works_on set salary = salary * 2 where id= empl_id and proj_id = 2003;
→ update 후에 관련된 table들을 적어준다.
→ 연봉을 인상하는 것을 적어준다.
→ 조건 ) [ id와 empl_id가 동일 ] 하고, [ proj_id =2003 ] 인 곳
조건절에서 attribute가 어느 table의 attribute인지 직관적이지 않기 때문에 이를 위해 더 자세히 기술할 수 있다.
update employee,works_on
set salary = salary * 2
where employee.id= works_on.empl_id and works_on.proj_id = 2003;
문제 3) 모든 직원의 연봉을 올려주자
Update employee
set salary = salary *2 ;
※ Where을 할 필요도, *를 붙일 필요도 없다.
Delete - 데이터 삭제
Delete From (지울 데이터가 있는 table) Where (조건);
ex) Delete From table1 Where id=3;
문제1) Employee에서 id=8인 데이터를 지웠는데, WORKS_On에서 지울 필요가 없다고 한다.
그 이유는??

WORKS_ON을 만들 때, 값들을 FOREIGN KEY로 설정하면서 id값을 참조하도록 만들었는데
그 밑에 option에 참조하는 값이 사라지면 같이 삭제되도록 만들었기 때문!
문제 2) 휴직을 떠난 A가 진행 중인 프로젝트에서 빠지게 되었다.
A의 id는 2이다.
Delete from works_on WHERE empl_id=2;
empl_id 가 2인 튜플들이 모두 삭제된다.
문제 3) B는 현재 2개의 프로젝트를 하고있다. B의 id는 5이다.
하지만 2001 프로젝트를 열심히 하고자 2002 프로젝트에서 빠지려고 한다.
Delete from works_on where empl_id=5 and proj_id=2002;
만약 프로젝트가 두 개가 아니라 훨씬 많다면
Delete from works_on where empl_id=5 and proj_id <> 2001;
Delete from works_on where empl_id=5 and proj_id != 2001;
회사에서 하고있는 모든 프로젝트를 다 삭제하려면?
DELETE FROM project;
모두 지우려면 where절이 필요없다.
반대로 생각하면 까먹고 where 안 적으면 다 날아감
(참고)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 6. NULL / 3 valued logic (0) | 2023.12.31 |
---|---|
[ 데이터베이스 ] 5. Subquery (0) | 2023.12.31 |
[ 데이터베이스 ] 3. SQL (0) | 2023.12.28 |
[ 데이터베이스 ] 2. Relational Database (0) | 2023.12.26 |
[ 데이터베이스 ] 1. 기본 개념들 ( DB , DBMS ) (0) | 2023.12.26 |