간단 지식/Database

08. SQL을 이용한 데이터 조작 - insert, delete, update, search

납작한돌맹이 2020. 1. 23. 19:04
반응형

지난 글에서 DB 서버에 DB를 생성하고 3가지 table을 생성했다.

이제 우리는 데이터 조작을 할 건데 insert, delete, update, search 중 가장 먼저 해야하는 것은 insert이다. 왜냐하면 table이 생성되긴 했지만 그 안에는 텅 비어있기 때문에 delete, update, search는 할 수 없다.


university라는 이름의 DB에 있는 student table에 데이터를 insert해보겠다.

 

insert into student(sno, sname, year, dept)

values

(100, '소현', 4, '컴퓨터공학과'),

(200, '뫄뫄', 1, '영어영문학과'),

(300, '묘묘', 3, '기계공학과'), 

(400, '띠띠', 3, '부동산학과'),

(500, '나나', 2, '수학과');

 

간단하기 때문에 설명은 생략하겠다.

같은 형식으로 course, enroll table에 데이터를 insert해보겠다.

 

insert into course(cno, cname, credit, dept)

values

(1, '대학영어', 2, '영어영문학과'),

(2, 'java프로그래밍', 3, '컴퓨터공학과'),

(3, '인공지능', 3, '컴퓨터공학과'), 

(4, '공학수학', 2, '수학과'),

(5, '기초기계공학', 3, '기계공학과'),

(6, '부동산세법', 3, '부동산학과');

 

insert into enroll(sno, cno, grade, midterm, final)

values

(100, 1, 'B', 75, 70),

(100, 3, 'A', 80, 95),

(200, 1, 'A', 90, 90),

(300, 1, 'C', 50, 45), 

(300, 4, 'B', 65, 80), 

(300, 5, 'A', 80, 95), 

(400, 1, 'C', 30, 65), 

(400, 6, 'B', 70, 80), 

(500, 4, 'B', 85, 55);


그럼 올바르게 데이터가 삽입됬는지 확인하기 위해 search를 해보겠다. 단순하게 각 table의 데이터를 찾는 것은 아래 두줄만 입력하면 된다.

select *

from table이름;

 

그 결과는 아래와 같다.


이번에는 delete를 해보겠다.

단순하게 한 table 자체를 삭제하려면

delete

from table이름;

만 하면 되지만 대부분 일부 데이터를 삭제하는 경우가 많을 것이다. 

따라서 예를 들어 course table에서 컴퓨터공학과의 인공지능 과목만을 삭제하기 위해서는 

delete

from course

where cno = 3;

을 실행하면 과목번호가 3인 과목이 course table에서 사라지게 된다. 여기서부터는 where가 등장하는데 조건이라고 생각하면 된다. 즉, 삭제하라(delete) course에서(from course) 과목번호가 3인 것을(where cno = 3) 이라는 것이다. 제대로 삭제가 됬는지 확인하기 위해 다시한번 search를 해보았다.

올바르게 삭제되었음을 확인할 수 있다. 참고로 그냥 delete를 하면 'cannot delete or update a parent row a foreign key constraint fails' 이라는 에러가 날것이다. course table은 enroll과 왜래키 관계로 묶여있기 때문에 MySQL에서 데이터 보호를 목적으로 삭제를 못하게 했기 때문이다. 그럴때는 그냥 SET FOREIGN_KEY_CHECKS=0; 로 왜래키 체크를 비활성화해주면 된다.


마지막으로 update는 이미 저장된 데이터를 변경할 수 있다. 예를 들어 course table의 cno가 1인 과목의 학점을 3으로 변경하고 싶다면 아래와 같이 하면 된다.

update course

set credit = 3

where cno = 1;

제대로 갱신이 됐는지 확인해보겠다.

올바르게 갱신이 되었고 modify_date에 update를 한 시간이 기록되었다.


이렇게 가장 기본적인 sql에 대해서 정리했는데 위 4가지 sql 중 가장 복잡한 것은 역시 search 이다. 다음 글에서는 search에 대해 깊숙히 파고들 것이다. 예를 들어 흔히들 검색에서 사용하는 필터 기능은 sql으로 작성하려면 join, 부속질의문 등을 사용해야하는데 이를 연마하는 것이 쉽지 않다.

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형