실습환경 만들기
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 | 이수현 |
+------+--------+