본문 바로가기

프로그래밍 언어/MySQL

[MySQL] ~인것 가져오기: where, and, or, between…and, in(), case when …then.. else… end

반응형

~인것 가져오기 : where, and, or, between…and, in(), case when …then.. else… end

-- 오늘 가장 중요한 이야기. 

-- ~인것 가져오기 
-- 연도가 2017인 데이터를 가져오시오
select * 
from books
where released_year = 2017;

select * 
from books
where released_year = 2010;

-- 년도가 2017년이 아닌 데이터만 가져오시오. 
select * 
from books
where released_year != 2017;

-- author_lname이 Harris가 아닌 데이터만 가져오시오. 
select *
from books
where author_lname != 'Harris';

select * from books;

-- 책 제목이 w로 시작하는 책을 가져오시오.
select * 
from books
where title like 'w%';

-- 책 제목이 w로 시작하지 않는 책을 가져오시오.
select * 
from books
where title not like 'w%';

-- 년도가 2000년보다 큰 데이터만 가져오세요. 
select *
from books
where released_year > 2000;

-- 년도가 2000년보다 큰 데이터만 가져오되, 최신순으로 가져오세요. 
select *
from books
where released_year > 2000
order by released_year desc;

-- author_lname 이름이 'Eggers'이고, 년도는 2000년 이후인 데이터를 가져오시오.  
select *
from books
where author_lname = 'Eggers' and released_year > 2000;

-- author_lname 이름이 'Eggers'이고, 년도는 2000년 이후이며,
-- 제목에 novel 이라고 들어간 데이터를 가져오세요.   
select *
from books
where author_lname = 'Eggers' and 
             released_year > 2000 and 
         title like '%novel%';

-- author_lname 이름이 'Eggers'이고, 출간년도가 2010보다 큰 책을 가져오시오.
select *
from books
where author_lname = 'Eggers' or released_year > 2010;

 

~와/과~ 사이/~이거나의 데이터 가져오기:  between~and~, in()

-- 무엇과 무엇 사이의 데이터를 가져올 때!!(포함)
-- 년도가 2004년부터 2015년 사이의 책 데이터를 가져오시오. 
select * 
from books
where released_year >= 2004 and released_year <=2015;

select * 
from books
where released_year between 2004 and 2015;

-- author_lname이 'Carver'이거나 'Lahiri' 이거나 'Smith'인 데이터만 가져오시오
select *
from books
where author_lname = 'Carver' or 'Lahiri' or 'Smith';

select *
from books
where author_lname in ('Carver','Lahiri','Smith');



새로운 컬럼 : case when ~then~else~end 

- case ~ end 전까지가 새로운 컬럼이다. 

-- 년도가 2000년 이후에 나온 책들은 Modern 이라고 하고, 
-- 그렇지 않는 책들은 old라고 새로운 컬럼을 만들어서 가져오세요.

-- case ~ end 전까지가 새로운 컬럼이다. 

select * , 
case when released_year >= 2000 then 'Modern'
        else 'Old'
end as Genre
from books;

-- stock_quantity 가 0~50사이면, *(별표 1개)
-- stock_quantity가 51~100사이면, **(별표 2개)
-- stock_quantity가 그 회에는 ***(별표 3개)
select *, case when stock_quantity between 0 and 50 then '*'
  when stock_quantity between 51 and 100 then '**'
               else '***'
               end as stars
from books;



반응형