# 중복제거
DISTINCT
# 조건 검색
WHERE
AND
AND + OR : 2개 이상 연산자를 사용해서 DB 검색을 할 수 있다.
# 연산자
SELECT 1=1; // TRUE
SELECT 1=2; // FALSE
SELECT 1>2; // FALSE
SELECT 1<2; // TRUE
# 같지 않음
SELECT 1<>2; // TRUE
SELECT 1<>1; // FALSE
# LIMIT
# OFFSET
offset은 특정 숫자까지의 DB 객체들을
보여주지 않는다. 그 다음의 숫자부터
객체들을 보여주는 명령어다.
# OFFSET + LIMIT
OFFSET에 LIMIT을 더하면,
특정 숫자 이후부터 특정 숫자까지의
range를 설정하여 DB검색을 할 수 있다.
# IN
만약 조건 검색시 다양한 조건값이 존재한다면,
중복해서 조건값을 넣어야 한다.
이런 경우 IN 키워드를 사용하면, 다양한 조건식을
한번에 정리해서 입력할 수 있다.
# BETWEEN
특정 조건의 값을 임의로 range를 만들어서
검색가능하도록 하는 키워드다.
# LIKE , # ILIKE
LIKE에서는 wildcard를 이용해서,
유사한 문자열을 찾아내는 키워드다.
'%' 는 모든 문자열을 의미한다.
'_'는 문자열의 갯수를 의미한다.
ILIKE는 lowercase를 uppercase로 바꾸어
검색해주는 명령어다.
#GROUP BY
중복된 DB를 그룹화해서 보여주는 명령어다.
DISTINCT와 유사하지만, 그룹으로 묶어서
보여주기 때문에, count도 가능하다.
GROUNT BY는 COUNT와 같이 사용할 경우
그룹내 객체들의 개수를 확인할 수 있다.
결과물들을 특정 column에 따라서 정렬도 가능하다.
그룹내 갯수에 따라서도 정렬이 가능하다.
그룹내 객체들의 갯수들의 Descending으로도 order이
가능하다.
# HAVING
aggregate funcion이라 부른다.
조건식을 만들어서 쿼리를 효과적으로
검색하는 명령어다.
테이블에서 country_of_birth column이 40개 이상인
데이터만 추출하는 명령어로 사용가능하다.
# MAX, MIN, AVG
테이블의 데이터 중 숫자에 대한 최대값, 최소값,
평균값을 구할 수 있다. 그리고, 구해진 값을 통해서
순서 정렬도 가능하다.
차량의 브랜드와 모델명을 추출하고,
가격이 낮은 데이터만 추출해서
보여주는 명령어다.
가격이 가장 높은 메이커와 모델만
보여주는 명령어다.
메이커의 가격 평균을 보여주는 명령어다.
# SUM
메이커 혹은 모델별로
가격의 합을 보여주는 명령어다.
SUM, MAX, MIN, AVG 모두
GROUP BY 명령어와 함께 사용되어야 한다.
만약 단독으로 사용하게 되면 에러가 발생한다.
# Artithemetic Operators
postgres에서는 기본적인 수학 연산자를 제공한다.
# ALIAS
TABLE에서 특정 데이터를 출력하면 column name이
제멋대로 변경되어있는 것을 볼 수 있다.
postgres에서는 함수명을 그대로 column네임으로 사용하기
때문이다.
AS "column name" 명령어를 통해 새로운 column에 대한
이름을 지정하여 출력할 수 있다.
SELECT id, make, model, price AS original_price, ROUND(price*.10) AS ten_percent_value, ROUND(price-(price*0.10), 2) AS discount_percent_value FROM car;
# COALESCE
테이블에 NULL값으로 들어간 데이터들이 존재한다.
이런 데이터들을 그냥 두지 않고, NULL값이 발견
되었을 때 Exception 처리를 해주는 명령어가
COALESCE 명령어다.
SELECT COALESCE(email, '** Email Not Provided') FROM person;
# NULL IF
#TIME
postgres에서 시간을 구하는 방법은 다음과 같다.
시간 : NOW()::TIME;
날짜 : NOW()::DATE;
# INTERVAL
posgres에서 시간을 더하거나 빼서 결과값을
구해야 하는 경우가 있다. 이럴 경우 INTERVAL
keyword를 사용한다.
SELECT NOW() - INTERVAL '1 YEAR';
SELECT NOW() - INTERVAL '10 YEAR';
SELECT NOW() - INTERVAL '10 MONTH';
SELECT NOW() + INTERVAL '10 DAY';
SELECT NOW() + INTERVAL '10 MONTH';
SELECT NOW() + INTERVAL '10 YEAR';
INTERVAL 로 얻은 결과값을 DATE나 TIME으로
보기 위해서는 전체를 ()로 감싸주면 된다.
SELECT (NOW() + INTERVAL '10 YEAR')::DATE;
# AGE
특정 출생일을 기준으로 나이를 계산할 수 있다.
파라미터 값으로는 (현재시간 + 출생일자)를
받고 있다.
SELECT first_name,email,gender, AGE(NOW(), date_of_birth) AS age FROM person;
'Programming > Database' 카테고리의 다른 글
postgres DATABASE #Export CSV, UUID, JOIN USING (0) | 2021.10.24 |
---|---|
postgres Database # Foreign Key (0) | 2021.10.24 |
postgres Database # Primary Key (0) | 2021.10.24 |
postgreSQL in windows BASIC TUTORIAL (0) | 2021.10.22 |
Database #4 Relation Database (0) | 2021.10.21 |
Database #3 Database Model & Architecture (0) | 2021.10.20 |
댓글