컴퓨터 과학/[프로그래머스] SQL DB Essentials

[3주차] 강의노트 DML- Function & Update

계란💕 2022. 3. 12. 12:18

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

https://programmers.co.kr/learn/courses/13484