MySQL

7. MySQL 데이터를 가공하는 키워드 distinct, order by, limit, like, group by

oioioa 2024. 11. 28. 17:52

MySQL Workbench 데이터 가공

 

데이터를 유니크하게 만드는(중복제거) distinct
데이터를 정렬하는 order by
데이터를 끊어서 가져오는 limit 와 offset
문자열 안에 원하는 문자가 들어있는지 검색하는 lik

데이터를 집계하는 group by

 

 distinct(중복제거 키워드)

SELECT DISTINCT author_lname

from books;

 

 

 데이터를 정렬하는 order by

-- author_lname 으로 정렬해서 가져오기 - 오름차순 정렬

SELECT *

from books

order by author_lname;

 

-- ASC 오름차순(생략시 오름차순으로 적용)

SELECT *

from books

order by author_lname ASC;

 

-- DESC 내림차순

SELECT *

from books

order by author_lname DESC;

 

-- full_name 으로 내림차순 정렬

SELECT *,CONCAT( author_fname,' ',author_lname) as full_name

FROM books

order by full_name DESC;

 

-- 출간년도 내림차순으로 정렬하여서, 책제목, 출간년도,페이지수를 가져오세요.

SELECT title,released_year,stock_quantity

FROM books

order by released_year DESC;

 

-- 정렬은 여러개가 가능하다.

-- author_lname은 내림차순으로 정렬하되,

-- lname 이 같으면, author_fname은 오름차순 으로 정렬하자.

SELECT *

FROM books

order by author_lname DESC ,author_fname asc;

 

 

 데이터를 끊어서 가져오는 limit 와 offset

limit 에 숫자 2개를 입력하면 왼쪽은 시작위치(offset) 오른쪽은 갯수

페이징(paging)에 사용된다

 

-- books 테이블의 데이터를, 5개만 가져오세요.

SELECT *

from books

limit 5;

 

-- offset !! offset 이란, 데이터를 가져오는 시작점!

-- books 테이블의 데이터를, 처음부터 5개 가져오세요.

-- 0(off set), 5 에서 처음에 0은, 처음부터라는 뜻 두번째의 5는, 5개씩 가져오라는 뜻 페이징

SELECT *

FROM books

limit 0,5;

-- 그 다음의 5개도 가져오시오.

SELECT *

from books

limit 5,5;

-- 그 다음의 5개도 가져오시오.

SELECT *

FROM books

limit 10,5;

-- 그 다음의 5개도 가져오시오.

SELECT *

FROM books

limit 15,5;

 

-- 출간년도 내림차순으로 정렬하여, 처음부터 7개의 데이터를 가져오시오.(순차적으로 증가)

SELECT *

FROM books

order by released_year DESC

limit 0,7;

 

SELECT *

FROM books

order by released_year DESC

limit 7,7;

 

SELECT *

FROM books

order by released_year DESC

limit 14,7;

 

 

※  문자열 안에 원하는 문자가 들어있는지 검색하는 like

-- 문자열 안에, 원하는 문자열이 들어있는지 검색 하는 키워드 : like %데이터%->가 들어가면 데이터 양옆에 글자가 있어도 없어도 검색

-- 책 제목에 the 가 들어있는 책 데이터를 가져오시오.

-- %데이터%->가 들어가면 데이터 양옆에 글자가 있어도 없어도 검색

-- 데이터%->가 들어가면 데이터 오른쪽 글자가 있어도 없어도 검색

-- %데이터->가 들어가면 데이터 왼쪽 글자가 있어도 없어도 검색

 

SELECT *

FROM books

where title LIKE '%the%'

 

-- 책 제목에 the 로 시작하는 책 데이터를 가져오시오.

SELECT *

FROM books

WHERE title LIKE 'the%'

 

-- 책 제목이 e 로 끝나는 책 데이터를 가져오시오.

SELECT *

FROM books

WHERE title LIKE '%e';

 

-- stock_quantiy 의 숫자가, 두자리 수인 데이터만 가져오시오. '_'>- 숫자 1자리 검색 / '__'<-숫자 두자리 검색

SELECT *

FROM books

where stock_quantity LIKE '__';

 

※  데이터를 집계하는 group by

-- ~ 별로 묶어서 처리하는 경우 : 집계 => group by

 

-- author_lname 별로 몇권의 책을 썼는지,

-- 작가의 author_lname과 책의 갯수를 보여주세요.

SELECT author_lname,COUNT(*) as book_cnt

from books

group by author_lname;

 

-- 년도별로 각각 몇권의 책이 출간되었는지,

-- 년도와 그년도의 출간된 책의 갯수를 보여주세요.

SELECT released_year,COUNT(*) as book_cnt

FROM books

group by released_year

order by released_year DESC ;