SQL 기초 - ORDER BY

Yang HyunIl·2023년 2월 6일
0

SQL

목록 보기
4/14
post-thumbnail

실습환경 만들기

CREATE TABLE celeb
(
	ID int NOT NULL AUTO_INCREMENT PRIMANY KEY,
    NAME varchar(32) NOT NULL DEFAULT '',
    BIRTHDAY date,
    AGE int,
    SEX char(1),
    JOB_TITLE varchar(32),
    AGENCY varchar(32)
);
mysql> create table celeb
    -> (
    ->  id not null auto_increment primary key,
    ->  name varchar(32) not null default '',
    ->  birthday date^C
mysql> create table celeb
    -> (
    ->  ID int not null auto_increment primary key,
    ->  NAME varchar(32) not null default '',
    ->  BIRTHDAY date,
    ->  AGE int,
    ->  SEX char(1),
    ->  JOB_TITLE varchar(32),
    ->  AGENCY varchar(32)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc celeb;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| ID        | int         | NO   | PRI | NULL    | auto_increment |
| NAME      | varchar(32) | NO   |     |         |                |
| BIRTHDAY  | date        | YES  |     | NULL    |                |
| AGE       | int         | YES  |     | NULL    |                |
| SEX       | char(1)     | YES  |     | NULL    |                |
| JOB_TITLE | varchar(32) | YES  |     | NULL    |                |
| AGENCY    | varchar(32) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

실습할 데이터 추가

INSERT INTO celeb VALUES (1, '아이유', '1993-05-16', 29, 'F', '가수, 탤런트', 'EDAM엔터테인먼트');
INSERT INTO celeb VALUES (2, '이미주', '1994-09-23', 28, 'F', '가수', '울림엔터테인먼트');
INSERT INTO celeb VALUES (3, '송강', '1994-04-23', 28, 'M', '탤런트', 'EDAM엔터테인먼트');
INSERT INTO celeb VALUES (4, '강동원', '1981-01-18', 41, 'M', '영화배우, 탤런트', 'YG엔터테인먼트');
INSERT INTO celeb VALUES (5, '유재석', '1972-08-14', 50, 'M', 'MC, 개그맨', '안테나');
INSERT INTO celeb VALUES (6, '차승원', '1970-06-07', 48, 'M', '영화배우, 모델', 'YG엔터테인먼트');
INSERT INTO celeb VALUES (7, '이수현', '1999-05-04', 23, 'F', '가수', 'YG엔터테인먼트');
mysql> INSERT INTO celeb VALUES (1, '아이유', '1993-05-16', 29, 'F', '가수, 탤런트', 'EDAM엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (2, '이미주', '1994-09-23', 28, 'F', '가수', '울림엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (3, '송강', '1994-04-23', 28, 'M', '탤런트', 'EDAM엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (4, '강동원', '1981-01-18', 41, 'M', '영화배우, 탤런트', 'YG엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (5, '유재석', '1972-08-14', 50, 'M', 'MC, 개그맨', '안테나');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (6, '차승원', '1970-06-07', 48, 'M', '영화배우, 모델', 'YG엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO celeb VALUES (7, '이수현', '1999-05-04', 23, 'F', '가수', 'YG엔터테인먼트');
Query OK, 1 row affected (0.00 sec)

mysql> select * from celeb;
+----+--------+------------+------+------+------------------+------------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE        | AGENCY           |
+----+--------+------------+------+------+------------------+------------------+
|  1 | 아이유 | 1993-05-16 |   29 | F    | 가수, 탤런트     | EDAM엔터테인먼트 |
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수             | 울림엔터테인먼트 |
|  3 | 송강   | 1994-04-23 |   28 | M    | 탤런트           | EDAM엔터테인먼트 |
|  4 | 강동원 | 1981-01-18 |   41 | M    | 영화배우, 탤런트 | YG엔터테인먼트   |
|  5 | 유재석 | 1972-08-14 |   50 | M    | MC, 개그맨       | 안테나           |
|  6 | 차승원 | 1970-06-07 |   48 | M    | 영화배우, 모델   | YG엔터테인먼트   |
|  7 | 이수현 | 1999-05-04 |   23 | F    | 가수             | YG엔터테인먼트   |
+----+--------+------------+------+------+------------------+------------------+

●ORDER BY

  • SELECT문에서 데이터를 특정 컬럼을 기준으로 오름차순 혹은 내림차순 정렬하여 조회

문법

  • ASC(Ascending) : 오름차순으로 정렬
  • DESC(Descending) : 내림차순으로 정렬
SELECT column1, column2, ...
FROM tablename
ORDER BY column1, column2, ... ASC | DESC;

예제 1

  • celeb 테이블에서 이름과 나이를 나이순으로 조회
SELECT age, name
FROM celeb
ORDER BY age ASC;
mysql> select age, name
    -> from celeb
    -> order by age asc;
+------+--------+
| age  | name   |
+------+--------+
|   23 | 이수현 |
|   28 | 이미주 |
|   28 | 송강   |
|   29 | 아이유 |
|   41 | 강동원 |
|   48 | 차승원 |
|   50 | 유재석 |
+------+--------+

예제 2

  • celeb 테이블에서 이름과 나이를 나이의 역순 (내림차순)으로 조회
SELECT age, name
FROM celeb
ORDER BY age DESC;
mysql> select age, name from celeb order by age desc;
+------+--------+
| age  | name   |
+------+--------+
|   50 | 유재석 |
|   48 | 차승원 |
|   41 | 강동원 |
|   29 | 아이유 |
|   28 | 이미주 |
|   28 | 송강   |
|   23 | 이수현 |
+------+--------+

예제 3

  • celeb 테이블에서 이름과 나이를 나이와 이름순으로 정렬하여 조회
SELECT age, name
FROM celeb
ORDER BY age, name;
mysql> select age, name
    -> from celeb order by age, name;
+------+--------+
| age  | name   |
+------+--------+
|   23 | 이수현 |
|   28 | 송강   |
|   28 | 이미주 |
|   29 | 아이유 |
|   41 | 강동원 |
|   48 | 차승원 |
|   50 | 유재석 |
+------+--------+

예제 4

  • celeb 테이블에서 이름과 나이를 나이의 역순으로 정렬한 뒤 이름순으로 정렬하여 조회
SELECT age, name
FROM celeb
ORDER BY age DESC, name ASC;
mysql> select age, name from celeb order by age desc, name;
+------+--------+
| age  | name   |
+------+--------+
|   50 | 유재석 |
|   48 | 차승원 |
|   41 | 강동원 |
|   29 | 아이유 |
|   28 | 송강   |
|   28 | 이미주 |
|   23 | 이수현 |
+------+--------+
profile
ヾ(•ω•`)o

0개의 댓글