본문 바로가기

SQL(Structured Query Language:)

SQL : MySQL Workbench를 이용해서 테이블 생성하기

use yh_db;

SELECT * FROM yh_db.books;

insert into books
(title, author_fname, auther_lname, released_year, stock_quantity, pages)
values
('10% Hppir', 'Dan', 'Harris', 2014, 29, 256),
('fake_book', 'Freida', 'Harris', 2001, 287, 428), 
('Lincoln In The Baardo', 'George', 'Saunders', 2017, 111, 388); 

select * from books;

-- distinct 판다스의 유니크와 비슷함
-- author_lname의 이름을 중복없이 가져오세요.
select distinct author_lname
from books;

-- 작가의 full name을 중복없이 가져오세요.
select distinct author_fname
from books;

-- 작가의 풀네임을 중복없이 가져오세요.
select distinct concat(author_fname,' ', author_lname)
from books;

-- 데이터 정렬 order by
-- 책 제목으로 으로 정렬하세요

select *
from books
order by  title;

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

-- 책제목 내림차순으로 가져오라
select *
from books
order by title desc;

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


-- full name을 내림차순으로 정렬하고, 책 페이지가 많은것부터 가져오세요.

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

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

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

-- 책테이블의 데이터를 3개만 가져오시오(방법1)
select *
from books
limit 3;

-- 최신책을 기준으로 3개만 가져오시오. (방법2)
select *
from books
order by released_year desc
limit 3, 3;  -- 하나만 쓰면 갯수, 왼쪽이 오프셋, 오룬쪽이 갯수

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

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

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

-- 문자열 포함 (Serach)   : like 키워드
-- 내가 찾고자 하는 문자열이, 컬럼에 포함되어 있는지 확인하는 방법.

-- 책 제목에 the 라고 들어있는 책마 가져오시오.
select *
from books
where title like the;


-- the로 시작하는 책만 가져오시오.
select *
from books
where title like '%the' ;

-- author_fname애 da라고 들어있는 작가의
-- 책 제목, author_fname, 페이지수를 가져오시오.
select title, author_fname, pages
from books
where author_fname like '%da%' ; 

-- 언더스코어 기호를 이용한 쿼리문.
-- 언더스코어 갯수만큼, 숫자가 2자리 수인지 3자리수인지 자리수를 나타낸다.
select *
from books
where stock_quantity like '___' ;



-- 실습 첫번째 답
select title from books where title like '%stories%';
select title, pages from books order by pages desc limit 1;
select concat(title, ' - ', released_year) as summary from books order by released_year desc limit 3;
select title, author_lname from books where author_lname like '% %';
select title, released_year, stock_quantity from books order by stock_quantity limit 3;
select title, author_lname from books order by author_lname, title;
select concat('My favorite is ', author_lname) from books order by author_lname;


-- 실습 2번째 답
select * from books where released_year < 1980;
select * from books where author_lname like 'Chabon' or author_lname like 'Eggers';
select * from books where author_lname like 'Lahiri' and released_year > 2000;
select * from books where pages >= 100 and pages <= 200;
select title from books where author_lname like 'C%' or author_lname like 'S%'; alter