[3주차] 강의노트 DML- Function & Update
2022-03-12 프로그래머스 3주차 강의
1. 3주차 세션 리뷰
1.0. 지난 과제 리뷰
- GROUP BY절 주의사항
- PPT 10쪽
->productLine을 기준으로 GROUP BY 했지만 name, scale을 select할 수 는 있다.
-> 이 부분에 대해 MySQL에서는 에러 여부 옵션 설정이 가능. (ONLY_FULL_GROUP_BY)
-> MySQL의 디폴트 SQL mode 중 하나인 ONLY_FULL_GROUP_BY: GROUP BY란?
-> ONLY_FULL_GROUP_BY: GROUP BY 기준 컬럼 혹은 기준 컬럼에 종속되지 않은 컬럼이 SELECT, HAVING,
OREDER BY절에서 사용되면 질의 실행을 거부한다.
-> 표준SQL에서는 에러이다.
- 윈도우 함수(중요!)
1) ROW_NUMBER() OVER: 투플에 일련번호를 부여한다. pignation에 활용
2) RANK() OVER: 투플 순위 제공, 동점자 처리가능
-> SELECT절의 윈도우 함수 안에 ORDER BY 되어 있으면 ORDER BY 절에 또 다시 쓸 필요는 없다.
- 내장 함수
-> 날짜 처리는 신중하게 한다. (숫자 또는 스트링으로 처리될 수 있다.)
Ex) shippedDate - orderDate는 숫자 빼기 숫자로 처리가 된다.
->해결법: INTERVAL / ★TIMESTAMPDIFF()★
Ex) DATE((NOW())) + INTERVAL 5MONTH AS '..'
- 여기서 DATE는 정수(Integer) 타입으로 출력하고, INTERVAL은 '월'의 특성을 반영한다.
-> 따라서 둘을 더하면 INTERVAL에 따라 시간 개념으로 반환한다.
-> YEAR, MONTH, DAY 와 HOUR, MINUTE, SECOND는 시간 개념이 아닌 정수를 출력한다.
- TIMESTAMP: 내부적으로 카운트로 저장(1초의 개수)
- 지난 과제 중에서 COALESCE() 관련 문제 푸는데 꽤 오래 걸렸다.
-> MySQL이라 그런지 IFNULL()로 처리하니까 해결됐다.
-> 따라서 스키마를 만들 때, 모두 NOT NULL로 정의하면 COALESCE를 쓸 필요가 없다.
- 정규식 처리하기
-> character group 숙지하기
-> [ ... ] : character set
-> '.' : 임의의 한 문자!!★
- 정규식 이용한 패턴 매칭: 정규식은 "매칭 가능한 가장 긴 패턴"을 리턴한다.
Ex) ^[^@]+ : @이 아닌 문자가 한 번 이상 반복된다.
-> NOT@라서 @ 뒤에는 보지 않는 건가??? 포지션을 디폴트로 두어서 자연스레 @의 앞부분이 조회???
Ex) [T.e]
=> The, Tre , T6e,.... '.'은 모든 글자가 가능하기 때문에 주읜한다.
=> T.e를 스려면 [T\\.e]
=> 슬래시 하나만 쓰면 안된다는 매뉴얼이 있으나 업데트 안되어 있으면 하나로도 실행된다.
=> 일반 SQL을 슬래시를 하나만 쓴다.
- 정규식 관련 문제에서
->'-'(하이픈)으로 범위가 아닌 문자 자체를 나타내기 위해 '\\'을 쓰는데(규칙) 한 개만 써도 실행이 되기도 한다.(설정에 따라?)
1.1 느낀 점
- 플립러닝 강의 방식이 정말 효율적이라고 느꼈다.
- 코딩 과제를 다시 풀어볼 수 있어서 복습하기에 좋고 소피아 매니저님, 단테 교수님도 정말 잘 알려주신다.
- 이번 과제에서 정규식이 많이 어려웠다.
- PPT에 정규식 링크 달아주신 곳에 가서 연습해야겠다.
- 날짜 관련 문제를 다른 수강생들도 많이 틀렸다니까 나만 어려운 게 아니었나보다.
- 과제를 푸는데 시간이 오래 걸렸는데 앞으로는 강의 내용을 더 깊이 숙지한 다음 과제를 해야겠다.
- 다음주 부터는 훨씬 어려워진다니까 더 깊이 공부하는 습관을 가져야겠다.
본 게시글은 프로그래머스의 "학교 밖에서 듣는 전공 필수SQL/DB Essentials" 강의 내용을 토대로 업로드 했습니다.
[스터디/2기] 학교 밖에서 듣는 전공필수 SQL/DB Essentials
⏰마지막 할인 중 2기 일정이 맞지 않다면 오픈 알림 신청하고 최저가에 수강하세요! 오픈 알림 신청 개발자에게 데이터베이스를 이해하는 능력은 필수! 데이터베이스의 기본 개념부터 ERD를 읽
programmers.co.kr