postgresql 기초겅의강좌, order by
5강 SQL이 뭐지? Column Aliases ORDER BY
안녕하세요.
5강 시작합니다.
HeidiSQL을 사용하는 데 익숙해지셨나요?
다른 Query Tool도 사용해보세요,
그중에 마음에 드는 것을 찾아보세요.
DBeaver를 사용해보려 합니다.
이번 강의에서는
▶ Column Aliases
▶ ORDER BY
에 대해서 알아보겠습니다.
1. Column Aliases (열 별칭)
기본구문 형식
SELECT column_name AS alias_name
FROM table_name;
-> AS 키워드로 별칭을 할당한다.
SELECT column_name alias_name
FROM table_name;
-> AS 키워드는 생략할 수 있다.
SELECT expression AS alias_name
FROM table_name;
-> 표현 식을 할당할 수 있다.
이렇게 Column Aliases를 사용하는 이유는 쿼리 출력의 머리글을 더 의미 있게 만들기 위해서입니다.
실습 1)
SELECT
first_name,
last_name AS surname
FROM customer;
last_name 컬럼의 머리글이 surname으로 변경됨.
실습 2)
SELECT
first_name,
last_name surname
FROM customer;
결과:
first_name|surname |
----------+----------+
Jared |Ely |
Mary |Smith |
Patricia |Johnson |
Linda |Williams |
Barbara |Jones |
Elizabeth |Brown |
Jennifer |Davis |
Maria |Miller |
Susan |Wilson |
AS를 생략해도 last_name 컬럼의 머리글이 surname으로 변경됨.
실습3)
SELECT
first_name || ' ' || last_name
FROM customer;
결과
?column? |
------------------+
Jared Ely |
Mary Smith |
Patricia Johnson |
Linda Williams |
Barbara Jones |
Elizabeth Brown |
SELECT
first_name || ' ' || last_name AS full_name
FROM customer;
결과
full_name |
------------------+
Jared Ely |
Mary Smith |
Patricia Johnson |
Linda Williams |
Barbara Jones |
Elizabeth Brown |
Jennifer Davis |
두 번째 쿼리 결과에서 할당된 별칭으로 출력된다.
실습 4) 공백이 포함된 컬럼 column aliases
열 별칭에 하나 이상의 공백이 포함되어 있는 경우 큰따옴표로 둘러싸야 합니다.
SELECT
first_name || ' ' || last_name full name
FROM customer;
따옴표를 생략하면 오류가 납니다.
SELECT
first_name || ' ' || last_name "full name"
FROM customer;
결과
full name |
------------------+
Jared Ely |
Mary Smith |
Patricia Johnson |
Linda Williams |
Barbara Jones |
Elizabeth Brown |
Jennifer Davis |
요약)
1. column_name AS alias_name or expression AS alias_name 구문으로
열 별칭을 할당할 수 있다.
2. AS 키워드는 옵션이다. 소스의 명확성을 위하여 표현하는 것을 권장한다.
3. 열 별칭에 공백이 포함된 경우 큰따옴표(")로 묶는다.
2. ORDER BY 조건절
기본구문
SELECT
select_list
FROM
table_name
ORDER BY
sort_expression1 [ASC | DESC],
...
sort_expressionN [ASC | DESC];
- order by 키워드로 정렬조건을 지정합니다.
여러 열 또는 표현식을 기준으로 정렬하려면 쉼표(,)를 넣어야 합니다.
- 오름차순(ASC) 또는 내림차순(DESC) 옵션을 지정합니다.
생략하면 오름차순(ASC)으로 정렬됩니다.
실습 1) ORDER BY 절을 사용하여 first_name 오름차순으로 정렬
SELECT
first_name,
last_name
FROM
customer
ORDER BY
first_name ASC;
결과
first_name |last_name |
-----------+-----------+
Aaron |Selby |
Adam |Gooch |
Adrian |Clary |
Agnes |Bishop |
Alan |Kahn |
Albert |Crouse |
first_name 오름차순으로 정렬된 결과가 나왔습니다.
ASC 옵션을 제거해도 같은 결과가 나옵니다. (해보세요^^)
실습 2) 내림차순으로 정렬
SELECT
first_name,
last_name
FROM
customer
ORDER BY
last_name DESC;
결과
first_name|last_name |
----------+------------+
Cynthia |Young |
Marvin |Yee |
Luis |Yanez |
Brian |Wyman |
Brenda |Wright |
Tyler |Wren |
last_name 내림차순으로 정렬된 결과가 나왔습니다.
실습 3) 여러 열로 정렬
SELECT
first_name,
last_name
FROM
customer
ORDER BY
first_name ASC,
last_name DESC;
결과
first_name |last_name |
-----------+-----------+
Aaron |Selby |
Adam |Gooch |
Adrian |Clary |
Agnes |Bishop |
Alan |Kahn |
Albert |Crouse |
Alberto |Henning |
이름이 오름차순으로 정렬되고 성이 내림차순으로 정렬되었습니다.
327, 328행을 보면 같은 이름이고 성이 큰 값인 Torres가 먼저 나온 게 확인됩니다.
ORDER BY 절이 첫 번째 이름 열의 값을 기준으로 행을 정렬합니다. 그런 다음 성 열의 값을 기준으로 정렬된 행을 정렬합니다.
실습 4) LENGTH() 함수를 사용한 예제
SELECT
first_name,
LENGTH(first_name) AS len
FROM
customer
ORDER BY
len DESC;
결과
first_name |len|
-----------+---+
Christopher| 11|
Jacqueline | 10|
Constance | 9|
Katherine | 9|
Nathaniel | 9|
Catherine | 9|
Christian | 9|
Christine | 9|
이름이 긴 사람부터 나옵니다.
LENGTH() 함수는 문자열을 받아들이고 해당 문자열의 길이를 반환합니다.
ORDER BY 절은 SELECT 후 작업이 이루어지기 때문에
길이로 정렬하는 것이 가능합니다.
실습 5) ORDER BY절과 NULL
데이터베이스에서 NULL은 누락된 데이터, 알 수 없는 데이터를 나타내는 MARK입니다.
PostgreSQL에서는 ORDER BY절에 NULL의 순서를 지정할 수 있습니다.
이 구문은 지원되는 DBMS가 있고, 지원되지 않는 DBMS가 있습니다.
지원되지 않는 DBMS에서는 NULL 값을 다른 값으로 치환하여 처리합니다.
구문은
ORDER BY sort_expresssion [ASC | DESC] [NULLS FIRST | NULLS LAST]
입니다.
실습을 위해서 TEMP 테이블을 생성하고 데이터를 INSERT 하겠습니다.
-- create a new table
CREATE TABLE sort_temp(
num INT
);
-- insert some data
INSERT INTO sort_temp (num)
VALUES(1),(2),(3),(4),(null);
-- commmit
commit;
위의 SQL을 차례로 실행합니다.
이 SQL을 지금은 이해할 필요 없습니다.
앞으로 학습할 내용입니다.
SELECT num FROM sort_temp ORDER BY num;
를 실행합니다.
NULL은 알 수 없는 데이터이기 때문에 다른 값이 정렬되고 마지막에 위치해 있습니다.
ORDER BY 절은 NULLS LAST옵션을 디폴트로 선택합니다.
SELECT num
FROM sort_temp
ORDER BY num NULLS FIRST;
를 실행합니다.
NULL이 먼저 나옵니다.
SELECT num
FROM sort_temp
ORDER BY num DESC;
를 실행합니다.
DESC 옵션이면, NULLS FIRST가 디폴트입니다.
요약)
1. SELECT후에 ORDER BY가 실행된다.
2. ASC 또는 DESC 옵션을 선택한다. DEFAULT는 ASC
3. NULL 값에 대해 순서를 지정하는 옵션 NULLS FIRST 또는 NULLS LAST를 쓸 수 있다.
DEFAULT는 ASC이면, NULLS LAST
DESC이면, NULLS FIRST
다음 시간에 만나요~~
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
7강 SQL이 뭐지? WHERE 절 (3) | 2022.12.13 |
---|---|
6강 SQL이 뭐지? SELECT DISTINCT 뽀개기 (3) | 2022.12.13 |
4강 SQL이 뭐지? 너와의 첫 만남... 살짝 설렜어... (6) | 2022.12.12 |
3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL ) (17) | 2022.12.10 |
2강 SQL이 뭐지? (8) | 2022.12.10 |
댓글