본문 바로가기
SQL

[MySQL] 정렬과 기준: distinct, order by, limit, like

by eyoo 2022. 5. 16.

distinct로 고유한 값을 가져올수 있다.

 

author_lname의 이름을 중복없이 가져오자.

 

in:

select distinct author_lname
from books;

out:

 

 

작가의 full name을 중복없이 가져오자.

 

in:

select distinct concat(author_fname,' ',author_lname)
from books;

out:

 

 

SQL에서는 order by로 데이터들을 정렬할수있다.

 

in:

select * 
from books
order by title;

out:

# order by는 원하는 데이터를 가져온 다음 마지막에 써줘야 한다.

 

 

order by 뒤에 desc 를 입력해서 내림차순 정렬을 해줄수 있다.

 

in:

select * 
from books
order by title desc;

out:

# 오름차순은 디폴트로 설정되어 있으며 따로 asc를 입력해도 오름차순 정렬이 된다.

 

 

lname은 오름차순으로, fname은 내림차순으로 정렬하자.

 

in:

select * from books
order by author_lname asc, author_fname desc;

out:

 

 

 order by의 대상을 컬럼 인덱스를 사용하여 지정할수 있다.

 

in:

select * , concat(author_fname ,' ', author_lname) as full_name
from books
order by 8 desc, 1 desc;

out:

# 8번째 컬럼인 full_name을 기준으로 내림차순하고 그 다음으로 1번째 컬럼인 id를 기준으로 내림차순 했다. 

 

 

select를 할때 limit를 사용하면 어디까지 나타낼지 설정할수있다.

 

books 테이블의 데이터 3개만 가져오자.

 

in:

select * 
from books
limit 3;

out:

# 테이블의 맨 위에서 부터 가져온다.

 

 

책 출간연도를 사용하여 최신책 기준으로 3개만 가져오자.

 

in:

select * 
from books
order by released_year desc
limit 3;

out:

 

 

 

여기서 limit와 3 사이에 오프셋 추가하여 어디서부터 데이터를 가져올지 설정할수 있다.

 

in:

select * 
from books
order by released_year desc
limit 1,3;

out:

# 첫번째 숫자로 시작점(offset), 두번째 숫자오 가져오고싶은 갯수를 설정한다.

 

 

리미트와 오프셋을 사용하여 사용자에게 페이지를 나눠서보여주는 paging을 한다.

 

사용자에게 세개씩 나눠서 보여준다고 할떄 3번째 페이지를 보여주려면

 

in:

select * 
from books
order by released_year desc
limit 6,3;

out:

 

 

최신책을 기준으로 10번째 책부터 끝까지 가져오자

 

in:

select * 
from books
order by released_year desc
limit 9,99999999;

out:

# 지금까지 배운것들만 이용하면 큰수를 넣어서 보여줘야 한다.

 

 

like를 사용하여 찾고자 하는 문자열이 컬럼에 포함되어있는지 확인할수 있다.

책 제목에 the가 포함된 책만 가져오자.

 

in:

select * 
from books
where title like '%the%';

out:

# '%'를 사용하면 % 앞이나 뒤에 문자가 있어도 가져온다.

# 'The%'를 입력하면 the로 시작하는 책만 가져올수 있으며

# '%The'를 입력하면 the로 끝나는 책만 가져올수 있다.

 

 

like에 언더스코어 (_) 를 이용하여 숫자 데이터를 가져오자.

 

in:

select *
from books
where stock_quantity like '___';

out:

#  언더스코어를 세개 써서 세자리 숫자들을 가져왔다.

 

 

책제목에 퍼센트기호가 있는책을 가져오자.

 

in:

select *
from books
where title like '%\%%';

out:

# 역슬래쉬'\'와 퍼센트 기호'%'를 사용해서 가져올수 있다.

 

 

 

 

 

댓글