[MySQL] ORDER BY

Bpius·2023년 11월 11일
0

MySQL

목록 보기
4/15
post-thumbnail

table 생성

  • not null : NaN값을 허용하지 않는 컬럼 생성 시 사용
  • auto_increment : 숫자형 데이터일 때, not null이라면 자동으로 오름차순으로 순서 부여.
  • primary key : 데이터에는 하나의 'primary key'만 존재할 수 있으며, 해당 컬럼이 기본 키로 설정된다.
    primary key(기본 키)는 다른 항목과 중복되어 나타날 수 없는 단일 값(unique)를 가진다. 그리고 null값을 가지지 못하기에 table를 생성 시, not null 설정해야 한다. 또한 하나 이상의 컬럼이 그룹화 되어 기본 키로 사용될 수 있다.
    이러한 primary key는 다른 데이터들과 관계를 가지며 통합할 때 사용이 된다.

'celeb'이란 table을 생성하여 실습을 진행해보자.

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.02 sec)

생성된 table를 확인해보자.

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    |                |
+-----------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

그리고 celeb에 임의로 셀럽들의 데이터를 입력하고 실습을 진행해보자.

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    | 텔런트                  | 나무엑터스               |
|  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엔터테이먼트           |
+----+-----------+------------+------+------+-------------------------+--------------------------+
7 rows in set (0.00 sec)

ORDER BY

select 구문에서 데이터를 특정 컬럼을 기준으로 오름차순 혹은 내림차순 정렬하여 조회할 때 사용된다.

  • asc(ascending) : 오름차순 정렬
  • desc(desending) : 내림차순 정렬

asc

celeb table에서 이름과 나이를 '나이'순으로 조회해보자.(default = asc)

mysql> select age, name
    -> from celeb
    -> order by age asc;
+------+-----------+
| age  | name      |
+------+-----------+
|   23 | 이수현    |
|   28 | 이미주    |
|   28 | 송강      |
|   29 | 아이유    |
|   41 | 강동원    |
|   48 | 차승원    |
|   50 | 유재석    |
+------+-----------+
7 rows in set (0.00 sec)

desc

celeb table에서 이름과 나이를 '나이' 역순으로 조회해보자.

mysql> select age, name from celeb
    -> order by age desc;
+------+-----------+
| age  | name      |
+------+-----------+
|   50 | 유재석    |
|   48 | 차승원    |
|   41 | 강동원    |
|   29 | 아이유    |
|   28 | 이미주    |
|   28 | 송강      |
|   23 | 이수현    |
+------+-----------+
7 rows in set (0.00 sec)

asc, desc

celeb table에서 이름과 나이를 '나이' 역순으로 정렬한 뒤, 이름 순으로 조회해보자.

mysql> select age, name
    -> from celeb
    -> order by age desc, name asc;
+------+-----------+
| age  | name      |
+------+-----------+
|   50 | 유재석    |
|   48 | 차승원    |
|   41 | 강동원    |
|   29 | 아이유    |
|   28 | 송강      |
|   28 | 이미주    |
|   23 | 이수현    |
+------+-----------+
7 rows in set (0.00 sec)
profile
데이터 굽는 타자기

0개의 댓글