Timestamp
TIME - time
DATE - date
TIMESTAMP - date, time
TIMESTAMPTZ- date, time, timezone
TIMEZONE -표준시간지역
https://www.postgresql.org/docs/12/sql-show.html
NOW - 현재
TIMEOFDAY - 시계시각
CURRENT_TIME - 현재 시간
CURRENT_DATE - 현재 날짜
EXTRACT() - 추출함수
: 값의 서브 컴포넌트를 추출하되 년,월,일,분기별로 추출 가능하다.
EXTRACT(YEAR FROM date_col)
AGE() - 타임스탬프 내에서 현재까지의 시기를 계산해서 알려준다.
AGE(date_col)
TO_CHAR() - 원하는 형태의 날짜, 시간 출력 가능 (첫 매개변수로 날짜 열을 입력하고, 쉼표를 입력한 뒤 문자열 매개변수로 원하는 문자열을 입력한다.)
TO_CHAR(date_col, 'mm-dd-yyyy')
https://www.postgresql.org/docs/12/functions-formatting.html
Math Fucntion
https://www.postgresql.org/docs/12/functions-math.html
String Functions
https://www.postgresql.org/docs/12/functions-string.html
Sub-query
다른 쿼리의 결과에 대한 쿼리를 실행하거나 다른쿼리의 결과를 사용할 수 있다.
1.단독 쿼리를 얻고자 서브쿼리를 사용할 수 있다.
(서브쿼리의 내용을 먼저 실행한다. 서브쿼리의 결과를 이용해 WHERE절에서 조건을 추가할 수 있다.)
2. EXISTS를 사용하여 서브쿼리를 작성한다.
SELECT first_name, last_name
FROM customer as c
WHERE EXISTS
(SELECT *
FROM payment as p
WHERE p.customer_id = c.customer_id
AND amount > 11)
EXISTS는 서브쿼리에 적용하는 함수로, 두 서브쿼리를 비교하여 해당 조건에 맞는 값을 반환하는 함수이다.
NOT EXISTS는 두 서브쿼리를 비교하여 해당 조건에 부합하지 않는 값을 반환하는 함수이다.
EXISTS는 교집합, NOT EXISTS는 차집합 이라고 보면 된다.
IN과 JOIN과 쓰임이 비슷한데,
IN보다는 EXISTS가 더 빠르고 (중복이 적을 경우) JOIN이 EXITS보다 빠르다고 한다.
참고 : https://yahwang.github.io/posts/35
Self-Join
SELECT tableA.col, tableB.col
FROM table AS tableA
JOIN table AS tableB ON
tableA.some_col = tableB.other_col
같은 표 내 여러 열 속여러 값을 비교할 때 유용하다.
같은 표 이름을 두 이름으로 지정하여 셀프 조인이라고 할 수 있는데 table, tableA, tableB는 모두 다 같은 테이블을 의미한다.
예시를 들어 self join을 설명하면
만약 다음과 같은 마니또 테이블이 있다고 가정하자.
마니또 | ||
id | 이름 | 마니또_id |
1 | 신짱구 | 2 |
2 | 김철수 | 3 |
3 | 이훈이 | 1 |
만약 마니또 테이블을 이름과 마니또이름으로 변경하 싶다면
SELECT 마니또A.이름, 마니또B.이름 AS 마니또이름
FROM 마니또 AS 마니또A
JOIN 마니또 AS 마니또B ON
tableA.id = tableB.마니또id
으로 바꿀 수 있다.
'AI > 데이터베이스\SQL' 카테고리의 다른 글
데이터베이스(2) (3) | 2022.03.21 |
---|---|
데이터베이스(1) (0) | 2022.03.21 |
[SQL / postgreSQL] SQL 기초 (AS, UNION, JOIN - INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN) (0) | 2022.02.24 |
[SQL / postgreSQL] SQL 기초 (집계함수, GROUP BY, HAVING) (0) | 2022.02.16 |
SQL 기초 (SELECT, COUNT, WHERE, ORDER BY, LIMIT, BETWEEN, IN, LIKE, ILIKE) (0) | 2022.02.16 |