13:30 ~ 18:00 대학교 전공 강의 수강 및 복습
19:00 ~ 21:00 SQL 3주차 강의 2회 수강
21:00 ~ 22:00 SQL 문법 연습문제 풀기
22:00 ~ 22:30 블로그 작성 & 개인회고
3주차 SQL 기본구조와 문법 연습
오늘 강의의 주제는 REPLACE, SUBSTRING, CONCAT에 대한 이해와 문법을 활용하는 방법이었고 실습을 통해 직접 작업해보았다.
REPLACE(바꿀 컬럼, 현재 값, 바꿀 값)
replace는 특정문자를 다른 것으로 바꿀 수 있는 기능을 제공한다.
별명을 설정할 때 as를 입력할지 공백으로 입력할지 한 방식으로 선택하는 것이 좋다는 어떤 개발자의 이야기를 듣고 확실한 표현을 위해 as를 쓰고자 마음을 먹었다. 그런데 강사님은 초반에 as를 꼭 넣으시다가 이제는 공백으로만 표기하고 계신다.
다른 사람이 이에 대해 문의를 한 글을 읽어보았는데 답변이 '편한 방식을 선택해 그 방식으로만 쓰시는게 좋다' 라는 정도였다. 뭔가 상당히 마음에 들지 않는 답변이었다.
내가 궁금한 점은 무조건적인 짧은 코드가 좋은 것인지, 짧은 코드가 좋기 때문에 공백을 사용하신건지, as를 넣는게 명확해서 좋은 코드인지 그런 부분이 궁금했다.
구글링을 통해 다른 개발자들의 생각과 글을 살펴보았다. 별칭을 설정하는데에는 한가지 방법이 더 있다는 것도 알게 되었다.
AS 사용
SELECT 컬럼명
FROM 테이블명
AS 별칭
공백 ( ) 사용
SELECT 컬럼명
FROM 테이블명
별칭
큰 따옴표 ("") 사용
SELECT 컬럼명
FROM 테이블명
"별칭"
🚨 차이점 🚨
AS 사용 시, 별칭에 공백, 특수문자 사용 불가
큰 따옴표 ("") 사용 시, 별칭에 공백, 특수문자 사용 가능
이러한 차이점으로 인해 AS사용과 공백사용, 큰따옴표 사용이 나뉜다는 것을 알게되었다.
(강의 내용에 이런 점이 있었으면 좋았을텐데 조금 아쉽다. 하지만 덕분에 직접 알아보는 기회를 가졌기에 괜찮다)
substr(조회 할 컬럼, 시작 위치, 글자 수)
substr은 특정문자만 골라서 조회할 수 있는 기능을 제공한다.
substr은 사용할 때 '컬럼명, 시작하는 위치가 몇번째인지, 몇번째 글자까지 보이게 할지'에 대해 잘 기억하고 사용하면 될 것 같다.
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
CONCAT은 여러 컬럼의 값을 하나로 합칠 수 있는 기능을 제공한다.
강사님이 User Segmentation 라는 용어를 사용하셨는데 '유저 세그먼트'가 정확하게 무엇인지 잘 알지 못해서 검색해보았다.
User Segmentation는 한국어로 '사용자 세분화'라고 부른다. 공유된 특성에 따라 사용자를 별개의 그룹 또는 세그먼트로 구분하는 프로세스이다.
User Segmentation는 사용자의 사용 패턴을 이해하는데 도움이 되기 때문에 필요로 한다. 예를 들어 식사 계획에 대한 서비스를 제공하는 구독 앱이 있다고 가정한다면 연령, 식단제한, 운동 목표 등과 같은 요인을 기준으로 사용자를 그룹으로 세분화할 수 있다. 세분화를 하면 각 그룹에 맞는 레시피와 계획을 알림으로 발송할 수 있기 때문에 중요한 분석 방법이라고 할 수 있다. (사용자 니즈에 맞는 서비스를 제공할 수 있기 때문이라는 생각이 들었다)
오늘 주어진 숙제의 주제는 '배달시간이 늦었는지 판단하는 값'을 구하는 것이다.
집중력이 떨어진 채로 들은 탓에 노션에 올라온 강의자료를 다시 읽어보며 작성해보았다.
SELECT order_id,
restaurant_name,
day_of_the_week,
delivery_time,
CASE when day_of_the_week='Weekday' AND delivery_time>=25 THEN 'Late'
WHEN day_of_the_week='Weekend' AND delivery_time>=30 THEN 'Late'
else 'On-time' end "배달 지연 여부"
FROM food_orders
우선 SELECT에는 내가 보고자 하는 컬럼명을 넣어주었다. 그 후, FROM에는 열고자 하는 테이블 명을 입력하고 조건을 작성했다. IF문을 사용할지 CASE를 사용할지 고민해보았는데 IF문보다 CASE문이 조금 더 직관적이게 짤 수 있을 것 같아서 CASE를 선택했다.
💡 작성하며 알게된 점
CASE문은 여러 조건을 처리할 때 더 읽기 쉽고 명확하다. IF문을 중첩해서 사용하는 경우 가독성이 떨어질 수 있기 때문이라고 한다. 이러한 이유로 SQL에서 조건을 평가할 때 CASE 문을 선호한다고 한다.
솔직히 오늘은 수업을 들을 때 집중력이 흐트러져있었다. 아마 어제 신나게 오전5시까지 코딩을 하다가 잔 탓이리라.. 다음날을 위해 일찍 취침하고 일찍 일어나는 패턴으로 다시 바꾸려 노력해야겠다. (공부에 방해되면 안되니까) 그래서 오늘 들었던 3주차 강의는 내일 저녁에 한 번 더 듣고 실습도 다시 한 번 진행해보려 한다.
강의에 없거나 질문에 대한 답변이 모호한 경우가 종종 있는데 직접 알아보며 성장하는 것을 권장하기 때문인지, 아니면 그냥 알 필요가 없는 부분이기 때문인지 이유는 알 수 없지만, 그래도 전자라고 생각하려는 중이다. 궁금한 점에 대해 직접 구글링해가며 새로운 지식에 대해 탄탄하게 알아가는 재미를 느꼈다.
오늘 회고를 하면서 다음 시간까지 함께 가지고 갈 좋은 점은 '궁금한 점에 대해 구글링을 하는 습관' 이라고 생각한다. 잘못한 점은 '체력관리를 제대로 하지 못한 것' 이라고 생각한다. 다음 시간에는 체력관리도 소중히 생각해서 집중력을 잃지 않고 공부하는 내가 되어야겠다.