use yh_db; select * from yh_db.books; use yh_db; select * from books; |
if() 함수
-- pages가 300보다 크면 long, 그렇지 않으면 short
-- if( 조건, 조건이 맞으면~하겠다,조건이 맞지 않으면 ~하겠다. )
ㄴ 첫번째 파라미터: 컬럼이름 및 조건 ,
ㄴ 두번째 파라미터 : ~하겠다
ㄴ 세번째 파라미터: 그렇지 않으면~하겠다.
select *, if( pages >=300, 'long','short') as 'long/short' from books; |
select * from people; insert into people (first_name) values ('Mike'); |
ifnull() 함수
-- null이라는 값이 있으면, 내가 원하는 형태로 바꿔주는 함수
- ifnull(컬럼이름,null 처리 명령)
-- 컬럼의 null값을 다른값으로 변경할 때
-- (컬럼이름 무엇에 null이 있으면, 해당 입력값으로 바꿔라)라는 뜻
-- 데이터가 없으면 웬만하면 null이라고 입력해놓자.
select *, ifnull(age,100) from people; |
-- 실습: DB2
-- 1번 문제: 1980년 이전에 발행된 책을 가져오시오.
select * from books where released_year <1980; |
-- 2번 문제: Eggers나 Chabon이 쓴 책을 가져오시오.
select * from books where author_lname = 'Eggers' or 'Chabon'; select * from books where author_lname in('Eggers','Chabon'); |
ㄴ 같은 뜻, 다른 풀이
-- 3번 문제: Lahiri가 썻고, 2000년 이후에 발행된 책을 가져오시오.
select * from books where author_lname = 'Lahiri' and released_year >2000; |
-- 4번 문제: 페이지수가 100부터 200까지인 책들을 가져오시오.
select * from books where pages between 100 and 200; |
-- 5번 문제: lname이 c나 s로 시작하는 작가가 쓴 책을 가져오시오.
select * from books where author_lname like 'c%' or author_lname like 's%'; select * from books where author_lname REGEXP '^c|^s'; select * from books where substring(author_lname,1,1) = 'c' or substring(author_lname,1,1) = 's'; |
ㄴ 같은 뜻, 다른 풀이
-- 6번 문제:
-- if title contains 'stories' -> short stories
-- just kids and a heartbreaking work -> memoir
-- everything else -> novel
select * , case when title like '%stories%' then 'short stories' when title = 'just kids' or title = 'a heartbreaking works' then 'Memoir' else 'Novel' end as TYPE from books; |
-- 7번 문제:
-- bonus: make this happen(refer to a image below)
-- column: title, author_lname, count(number + book(s))
select title, author_lname, case when count(*) = 1 then concat(count(*),' book') else concat(count(*),' books') end as COUNT from books group by author_lname,author_fname order by author_lname; select title, author_lname, if(count(*) = 1 , concat(count(*),' book'), concat(count(*),' books')) as COUNT from books group by author_lname,author_fname order by author_lname; |
'프로그래밍 언어 > MySQL' 카테고리의 다른 글
[MySQL] 관계형 데이터베이스 합치기: join, left join (0) | 2022.05.17 |
---|---|
[MySQL] Foreign key 생성 (0) | 2022.05.17 |
[MySQL] ~인것 가져오기: where, and, or, between…and, in(), case when …then.. else… end (0) | 2022.05.17 |
[MySQL] 쿼리문으로 테이블 생성 및 현재 시간 기록 설정 (0) | 2022.05.17 |
[MySQL] 시간 계산: datediff(), date_add(), interval + 시간 (0) | 2022.05.16 |