(TIL) 2020-11-29 기록

업데이트:

오늘 한 일

  • 거의 어제 오늘 해서 하루 내내 SELECT문에 대해서 배웠다. 좀 더 멋지게 말하자면 데이터 질의어에 대해서 배웠다.
  • 칼럼 이름을 바꿔서 출력하는 법에 대해 배웠다.
    column AS 'name'
    

    이렇게 하면 된다.

  • 그리고 CONCAT() 함수에 대해 배웠다. 이 함수는 여러 개의 칼럼을 하나의 칼럼으로 합쳐 준다. 띄어쓰기 같은 건 없기 때문에 예쁘게 보이고 싶으면 중간에 ‘ ‘를 하나씩 넣어줘야 한다.
  • Aggregate Functions에 대해 배웠다. 이 함수들은 여러 개의 데이터를 받아 하나의 값을 뱉어내는 함수들이다. 기본적인 예로 SUM(), AVG(), MIN(), MAX() 등이 있다.
  • '’와 ““가 다르다. ‘‘는 말 그대로 문자열을 나타내는 것이고 ““는 칼럼 이름을 나타내는 것이다. 둘을 혼동하면 큰일난다.
  • ANDOR가 특이하게 작동한다. OR이 있으면 무조건 OR 양 옆부터 따진 다음 OR 연산이 적용 된다. 그냥 마음 편하게 괄호를 쳐주면 연산 우선순위를 씹을 수 있다.
  • COALESCE() 함수에 대해서도 배웠다. COALESCE(column, value) 이런 식으로 해주면 해당 칼럼 내에 있는 NULL값을 가진 행들을 모두 정해준 value로 치환해준다. NULL이 있으면 안 되는 table을 다룰 때 쓰면 좋다.
  • NULL은 다른 어떠한 것과 비교 연산을 해도 반환값이 NULL이다. 즉 NULL=NULLtrue가 아니라 NULL이라는 것이다. 그래서 어떤 값이 null인지 아닌지 알아보려면 IS 연산자를 사용해야 한다.
  • ~이하 ~이상 같은 범위 조건을 걸 때에 부등호와 AND 연산자의 향연을 보기 싫다면 BETWEEN ~ AND ~ 구문을 쓰면 좋다.
  • IN연산자는 A IN (A,B,C,...)와 같은 식으로 쓰며 A가 뒤의 괄호 안의 목록에 있는지 없는지 불리언 값을 반환한다.
  • LIKE 연산자는 문자열을 찾아야 하는데 내가 정확히 무엇을 찾고 있는지 모를 때 쓴다. 연산자 뒤에 패턴을 입력하는데 ‘s%’이런 식으로 쓴다. 저 패턴은 s로 시작하는 모든 문자열이다. %는 갯수, 어떤 문자이든지 상관없는 와일드카드이고 _는 한 글자만을 말한다.
  • 그 다음에 날짜를 다루는 법에 대해서도 배웠는데 이 부분이 살짝 복잡했다.
  • 일단 Date와 Timestamp로 나뉘는데 Date는 연월일로 구성된 자료형이고 Timestamp는 1800-01-01년부터 시간이 얼마나 흘렀는지를 밀리초 단위로 보여주는 자료형이다.
  • date형을 내가 원하는 방식으로 포매팅하려면 TO_CHAR(date, 'yyyy/mm/dd')이런 식으로 문자열로 포맷팅 할 수 있다. 사용할 수 있는 패턴은 postgresql 홈페이지에 가보면 찾을 수 있다.
  • 그리고 시간은 차이를 계산할 수 있는데 - 연산자를 쓰면 그 시간 차이를 일 단위로 보여준다.
  • AGE() 함수도 있다. 매개변수를 하나를 받으면 이것을 생년월일로 받아 오늘 날짜 기준으로 몇 살인지 보여주고 매개변수 두 개를 입력하면 두 번째 매개변수가 생년월일이 되고 첫 번째 매개변수가 기준일이 되어 나이를 계산해준다. 이때 나이는 일 수까지 다 나온다.
  • EXTRACT() 함수를 쓰면 연월일로 나타나있는 정보에서 원하는 것만 추출할 수 있다. 예를 들어 연도를 추출하고 싶다면 EXTRACT(YEAR FROM '1992-09-27') 이렇게 쓰면 된다.
  • 그리고 DATE_TRUNC() 함수를 쓰면 시간을 내림할 수 있다. 무슨 말이냐 하면 DATE_TRUNC('year', date '1992/11/31')이렇게 하면 1992년의 첫 번째 날, 즉 1월 1일을 반환한다. 두 날짜를 비교하는데 연, 월, 일을 동일하게 맞추고 비교하고 싶을 때 쓰면 좋다.
  • DISTINCT에 대해서도 배웠다. 이 키워드를 칼럼 이름 앞에 쓰면 중복되는 데이터는 보여주지 않는다.
  • 그리고 또 JOIN, USING 키워드에 대해서도 배웠고 GROUP BY와 GROUP에 대해 필터링을 할 수 있는 HAVING 키워드에 대해서도 배웠다.
  • 그리고 OVER 키워드와 PARTITION, RANGE를 이용한 windows function에 대해서도 배웠다.
  • 또 View를 생성하는 법에 대해서도 배우고 Index의 종류, 알고리즘 종류, 언제 어떻게 쓰면 좋은지에 대해 배웠다.
  • 그리고 Subquery에 대해 배우고 Subquery에 대해 JOIN을 하는 것과 WHERE을 해서 필터링 하는 것의 퍼포먼스 차이에 대해 배웠다.
  • 데이터 질의어 강의를 마치고 데이터 정의어를 배우기 시작했다. DB 생성하는 법, 스키마 생성하는 법 그리고 Role과 User를 생성하고 권한을 부여하고 박탈하는 법에 대해 배웠다.

    내일 할 일

  • 계속 데이터 정의어를 배우면서 DB 관리에 대해 배우고 아마 곧 DB 설계를 배울 것 같다. 짧은 시간에 기술 하나를 습득하려고 하니 아주 힘들다.

태그:

카테고리:

업데이트:

댓글남기기