본문 바로가기

프로그래밍 언어/MySQL

[MySQL] 정렬하기: order by/ 몇 행의 데이터 가져오기: limit

반응형

 

정렬하기: order by

-- 데이터 정렬 order by, sql문의 맨 마지막에 작성하는 것. + 내가 정렬할 컬럼.

-- 내림차순 정렬은 desc, 오름차순 정렬은 디폴트이므로, 아무것도 안쓰거나, asc라고 써주면 된다. 

-- 컬럼 이름 대신, 숫자를 써도 된다. 숫자는 첫 컬럼부터(1) 뜻한다.

 

-- 책 제목으로 정렬하세요.

select *
from books
order by title;

select *
from books
order by title desc;

select * 
from books
order by title asc;

-- 년도 내림차순으로 정렬하여, 년도와 책 제목을 가져오시오.
select released_year,title
from books
order by released_year desc;

-- author_lname으로 정렬을 하고, 이 author_lname이 같으면, author_fname으로 정렬하세요. 

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


-- full name을 내림차순으로 정렬하고, 책 페이지 많은 것부터 가져오세요. 
select *,concat(author_fname, ' ', author_lname) as fullname
from books
order by 1 desc, pages desc;
-- 숫자를 써도 된다. 숫자는 첫 컬럼부터(1) 뜻한다.

 

몇 행의 데이터 가져오기: limit

-- limit와 offset : 몇개씩 끊어서 가져오시오 !!!

-- limit 에 숫자 하나만 쓰면, 가져오고싶은 갯수, 

-- 숫자가 두개면 처음이 offset(index): 가져오고싶은 시작점. 

-- 처음부터 가져오는 건 똑같은 것. 


-- 무조건 테이블에 들어있는 위에서부터 3개. 

-- 인덱스는 0부터 시작.

 

-- 책 테이블의 데이터를 3개만 가져오시오.
select *
from books
limit 3;
-- 무조건 테이블에 들어있는 위에서부터 3개. 

-- 최신 책을 기준으로 3개만 가져오시오.
select *
from books
order by released_year desc
limit 0,3;

select *
from books
order by released_year desc
limit 3;
-- 위랑(0,3) 같은 의미

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

-- 최신책을 기준으로 10번째 책부터 끝까지 가져오시오.
-- 인덱스는 0부터 시작.
select * 
from books
order by released_year desc
limit 9, 4564564;
-- 끝까지면 데이터를 엄청나게 큰 수로 적어둔다. 

 

반응형