새로운 한주가 시작되는 월요일이다. 주말에 좀 쉬었더니 컨디션이 좋다. 첫 주의 기초를 바탕으로 2주차가 본격적으로 시작된 느낌이다.
오늘 아침부터 SQL 라이브 강의가 있었다. 재미있었던 점은 개인 학습할 때 사용했던 쿼리를 다시 만나게 된 것이다. 스스로 작성했던 코드를 튜터에게 직접 설명 듣으니 이해가 훨씬 잘 된다. 마치 내가 쓴 글을 누군가 다시 읽어주고 피드백해주는 느낌이었다.
강의 중에 얻은 가장 실질적인 팁들이 몇 가지 있다.
첫째는 테이블 명시 방식이다. 개인적으로 학습할 때는 FROM 테이블명 이렇게만 했는데, 튜터는 FROM DB명.테이블명 이렇게 하는 게 좋다고 했다. 특히 여러 데이터베이스를 다루게 될 때는 이 습관이 정말 중요하다고 했다. 오늘부터 이 방식을 습관으로 만들어야겠다.
둘째는 세미콜론(;)이다. 쿼리 끝나는 마지막에 세미콜론을 작성해야 한다고 했다. 이것은 단순한 형식이 아니라 실무의 관례다. 세미콜론이 있으면 다른 쿼리들의 영향을 받지 않기 때문이다. 이것도 꼭 습관으로 만들어야겠다.
CASE WHEN은 처음에 "조건에 따라 다른 결과값을 반환하는" 정도로만 이해했었다. 조건1이 참이면 결과1, 조건2가 참이면 결과2... 이런 식이다. 생각보다 다양한 방식으로 활용할 수 있다는 걸 오늘 알았다.
특히 흥미로웠던 부분은 퀴즈 문제였다. 나는 BETWEEN으로 작성했는데, 튜터는 >=, <= 같은 비교 연산자로 작성했다. 같은 결과값을 가져오지만, 비교 연산자 방식이 보기에 훨씬 깔끔했다. 상황에 따라 어떤 방식이 더 효율적인지 판단하는 능력도 필요하다는 걸 깨달았다.
오늘 배운 내용을 정리하면서 반드시 외워야 할 연산자들을 표로 정리해봤다.
| +, -, *, / | 각각 더하기, 빼기, 곱하기, 나누기 |
| % | MOD나머지 |
| IS | 양쪽이 모두 TRUE 또는 FALSE |
| IS NOT | 한쪽은 TRUE, 한쪽은 FALSE |
| AND, && | 양쪽이 모두 TRUE일 때만 TRUE |
| OR, = | 양쪽 값이 같음 |
| !=, <> | 양쪽 값이 다름 |
| >, < | (왼쪽, 오른쪽) 값이 더 큼 |
| >=, <= | (왼쪽, 오른쪽) 값이 같거나 더 큼 |
| BETWEEN {MIN} AND {MAX} | 두 값 사이에 있음 |
| NOT BETWEEN {MIN} AND {MAX} | 두 값 사이가 아닌 곳에 있음 |
| IN (...) | 괄호 안의 값들 가운데 있음 |
| NOT IN (...) | 괄호 안의 값들 가운데 없음 |
| LIKE '... % ...' | 0~N개 문자를 가진 패턴 |
| LIKE '... _ ...' | _ 갯수만큼의 문자를 가진 패턴 |
이 표가 나중에 헷갈릴 때마다 빠르게 참조할 수 있도록 아예 외워둬야겠다.
저녁 7시에는 오늘 배운 내용의 퀴즈를 튜터와 함께 풀었다.
결과값 자체는 맞았지만, 방식과 형식에서 약간의 차이가 있었다. 튜터가 제시한 방식이 더 효율적이고 실무에 가까웠다. 단순히 "답이 맞으면 되는 게 아니라, 어떻게 푸는지도 중요하다"는 걸 다시 한 번 깨달았다.
한 번 더 복습하고 자야겠다. 같은 문제를 푸는 여러 방식을 이해해야 상황에 맞는 최적의 쿼리를 작성할 수 있을 테니까.
2주차 첫 날, 첫 주의 기초 위에서 한 단계 더 나아간 느낌이다. SQL의 기초 문법을 배우는 단계에서, 이제는 "좋은 습관"과 "효율적인 방식"을 배우는 단계로 진입한 것 같다.
세미콜론을 붙인다, DB명.테이블명으로 명시한다, 비교 연산자를 정확히 이해한다... 이런 것들이 사소해 보이지만, 실무에서는 협업과 버그 방지의 차이를 만든다.
2주차도 이 페이스로 나아가자. 작은 습관이 모여 큰 실력이 된다.