클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

데이터를 추가, 수정, 삭제하는 데이터 조작어 3 - 단원 마무리 연습문제 풀기 본문

알고리즘 및 자료 관리/데이터베이스

데이터를 추가, 수정, 삭제하는 데이터 조작어 3 - 단원 마무리 연습문제 풀기

huenuri 2024. 8. 21. 17:42

어제 밤 11시까지 DB 공부를 하다가 연습문제는 졸려서 도무지 풀지 못할 것 같았다. 30분 정도 정처기 공부를 하고 잠을 청했다. 그리고 오늘 새벽에 4시에 일어나 하루를 시작해본다. 오늘은 4시간 반 정도 공부할 시간이 있다.
3시간은 공부를 하고 1시간 반에서 1시간은 팀 프로젝트에 관한 과제를 해볼 생각이다. 지난주까지는 금요일마다 줌으로 진행되는 수업이 있어 금요일이 조금은 기대가 되었다. 이번주부터는 없어서 금요일도 다른 날과 별반 다르지 않는 날이다.

그래도 오늘만 수업에 가면 주말이니 정말 기쁘다. 주말에는 하루종일 공부를 하며 부족한 부분을 보충해볼 수 있을 것이다. 오늘 새벽에는 1시간 정도는 연습문제를 풀고 나머지 트랜젝션을 공부해볼 것이다. 충분히 잘할 수 있을 것이다.

 

학습 목표

연습문제 5문제를 한 문제당 10분에 걸쳐 1시간 안에 다 풀어본다.

학습 시간

새벽 4시 ~ 5시


 

 

 

단원 마무리 연습문제 풀기

문제를 풀기 전 테이블 생성하기

 

 

 

문제 1번

테이블을 조회하고 싶었는데 이 부분은 잘 되지 않았다. 테이블 생성 작업에서 뭔가를 하나 잘못하면 전체가 안 되는 부분이 있어 난감할 때가 많다. 롤백으로 되돌릴 수도 있지만 그냥 귀찮아서 다음에 해보기로 했다. 문제를 풀 시간도 많지 않으니까.


 

 

 

문제 2번

 

여기서 중요한 점은 날짜를 삽입할 때 날짜형으로 변환해주어야 한다는 것이다. 어떤 유형인지도 적어주고, 값이 없을 때는 NULL로 채워준다.

 

이제 테이블을 조회하는 법을 알았다. 이렇게 8명의 사원이 가장 마지막에 추가되었음을 볼 수 있다.


 

 

 

문제 3번

 

문제가 좀 어려워서 풀이를 보면서 풀었다. 수정을 할 때는 UPDATE를 사용하는데 이때 SET을 쓴다는 것을 꼭 기억하자. 사원번호가 70일 때 다음 조건을 만족해야 하므로 서브쿼리문으로 작성한다.
이때 WHERE절에 어떤 조건인지 써야 한다. 그런 다음 소괄호에 서브쿼리를 쓰는데 FROM절은 지금 현재 업데이트하려는 공간을 써준다.

처음에 테이블을 잘못 수정해서 ROLLBACK으로 되돌려주었다.

 


 

 

 

문제 4번

프로그래밍 언어를 할 때처럼 데이터베이스도 비슷하다. 인상한 값을 원래 SAL에 넣어주고 80번 부서도 옮긴다. 입사일보다 늦다는 건 지금 현재의 사원의 값이 더 크다는 의미이므로 이렇게 쿼리문을 작성해보았다.

 

 

 

문제 5번

 

이 문제는 너무 어려워서 아예 손도 못대는 문제였다. 정답을 보면서 써보았는데 아직 이해가 되지 않는 코드가 있다. 다음에 다시 학습해볼 것이다. 지금 내 수준에서 풀 수 있는 문제가 아니었다.

 

 

행이 삭제가 되었음을 볼 수 있다. 한번 더 삭제하면 삭제가 되지 않는다.


 

 

학습을 마치고

오늘은 공부할 게 참 많아서 연습문제를 가능하면 1시간 안에 다 마치고 싶었다. 충분히 생각할 시간이 없어서 빠르게 학습하기 위해 답을 많이 참조했다. 그래도 테이블을 생성하고 수정, 삭제하는 방법을 배울 수 있는 좋은 시간이었다.
문제를 풀며 잠을 완전히 깼다. 오늘도 일어나기 힘들었지만 새벽 4시에 일어나 공부를 할 수 있어서 정말 기뻤다.

이제 남은 2시간 동안은 트랜젝션에 대해 빠르게 학습해보려고 한다.