SQLite | 데이터 조회 | 데이터를 컬럼의 값으로 정렬 (ORDER BY 절)
SELECT 문을 사용하여 데이터를 조회하면 테이블에 저장된 순서대로 값을 받아 오지만, ORDER BY 절을 사용하면 지정된 열을 기준으로 정렬을 수행하여 데이터를 받아올 수 있다. 여기에서는 ORDER BY 절을 사용하여 데이터를 정렬하여 조회하는 방법에 대해 설명한다.
ORDER BY 절을 사용하여 정렬하기
SELECT 문을 사용하여 데이터를 조회할 때 ORDER BY 절을 사용하여 지정 컬럼을 기준으로 정렬할 수 있다. 형식은 다음과 같다.
SELECT 컬럼명, ... FROM 테이블명 ORDER BY 컬럼명 [ASC|DESC];
ORDER BY 절 후에 정렬하려는 컬럼명과 오름차순 또는 내림차순을 지정한다. 오름차순인 경우는 ASC, 내림차순인 경우는 DESC를 지정한다. 생략하면 오름차순으로 정렬된다.
그리고 정렬하려는 컬럼을 여러 개를 지정할 수 있다. 이 경우 쉼표(,)로 구분하여 계속해서 작성한다. 여러 컬럼을 지정한 경우에는 먼저 첫 번째 컬럼으로 정렬을 하고, 다음 첫 번째 열에서 같은 값인 경우만 두 번째 컬럼에서 정렬한다. 3개 이상 지정하는 경우도 동일하다.
SELECT 컬럼명, ... FROM 테이블명
ORDER BY 컬럼명1 [ASC|DESC], 컬럼명2 [ASC|DESC] ...;
–
실제로 정렬을 해보도록 하자. 다음과 같이 테이블을 만든다.
create table user (name text, old integer, address text);
sqlite> create table user (name text, old integer, address text);
sqlite>
INSERT 문을 사용하여 테이블에 데이터를 추가한다.
insert into user values ('devkuma', 39, 'Seoul');
insert into user values ('kimkc', 34, 'Busan');
insert into user values ('araikuma', 26, 'Seoul');
insert into user values ('happykuma', 19, 'Seoul');
insert into user values ('mykuma', 27, 'Daejeon');
insert into user values ('yourkuma', 28, 'Gwangju');
insert into user values ('raccoon', 31, 'Busan');
sqlite> insert into user values ('devkuma', 39, 'Seoul');
sqlite> insert into user values ('kimkc', 34, 'Busan');
sqlite> insert into user values ('araikuma', 26, 'Seoul');
sqlite> insert into user values ('happykuma', 19, 'Seoul');
sqlite> insert into user values ('mykuma', 27, 'Daejeon');
sqlite> insert into user values ('yourkuma', 28, 'Gwangju');
sqlite> insert into user values ('raccoon', 31, 'Busan');
sqlite>
데이터가 추가된 순서대로 테이블에 저장되었다. 정렬하지 않고 데이터를 조회하면 테이블에 저장된 순서대로 데이터를 받아온다.
select * from user;
sqlite> select * from user;
name old address
---------- ---------- ----------
devkuma 39 Seoul
kimkc 34 Busan
araikuma 26 Seoul
happykuma 19 Seoul
mykuma 27 Daejeon
yourkuma 28 Gwangju
raccoon 31 Busan
sqlite>
그러면 old 컬럼의 값으로 정렬하여 데이터를 받아온다. 우선 오름차순으로 정렬해 본다.
select * from user order by old asc;
old 컬럼의 값을 오름차순으로 정렬된 결과를 받아올 수 있다.
sqlite> select * from user order by old asc;
name old address
---------- ---------- ----------
happykuma 19 Seoul
araikuma 26 Seoul
mykuma 27 Daejeon
yourkuma 28 Gwangju
raccoon 31 Busan
kimkc 34 Busan
devkuma 39 Seoul
sqlite>
이번에는 동일한 old 컬럼을 내림차순으로 정렬해 본다.
select * from user order by old desc;
sqlite> select * from user order by old desc;
name old address
---------- ---------- ----------
devkuma 39 Seoul
kimkc 34 Busan
raccoon 31 Busan
yourkuma 28 Gwangju
mykuma 27 Daejeon
araikuma 26 Seoul
happykuma 19 Seoul
sqlite>
old 컬럼의 값으로 내림차순으로 정렬된 결과를 받아올 수 있다.
이렇게 지정한 컬럼에 저장되어 있는 값을 사용하여 오름차순 또는 내림차순으로 데이터를 정렬하여 받아 올 수 있다.
여러 컬럼을 정렬하기
여러 컬럼으로 정렬을 해보도록 하자. 먼저 address 컬럼만 정렬한 결과를 확인해 본다.
select * from user order by address asc;
sqlite> select * from user order by address asc;
name old address
---------- ---------- ----------
kimkc 34 Busan
raccoon 31 Busan
mykuma 27 Daejeon
yourkuma 28 Gwangju
devkuma 39 Seoul
araikuma 26 Seoul
happykuma 19 Seoul
sqlite>
다음은 address 컬럼의 값으로 정렬하고 address 컬럼의 값이 동일한 데이터에 대해서는 old 컬럼의 값으로 정렬한다. ORDER BY 절 이후는 작성하는 순서에 주의해야 한다.
select * from user order by address asc, old asc;
sqlite> select * from user order by address asc, old asc;
name old address
---------- ---------- ----------
raccoon 31 Busan
kimkc 34 Busan
mykuma 27 Daejeon
yourkuma 28 Gwangju
happykuma 19 Seoul
araikuma 26 Seoul
devkuma 39 Seoul
sqlite>
address 컬럼의 값으로 정렬한 후에 old 컬럼으로 정렬한 결과를 받아왔다.