1.join
:두테이블을 공통된 키값으로 결합하여 하나의 테이블로 만드는 작업
2. 여러종류중 자주사용하는 두가지
inner join(공통 교집합)
-inner 생략가능
left outer join(공통적인 교집합에 왼쪽에 있는 모든것포함)
준이 되는 데이터는 모두 모두 보여줄 필요가 있을때 사용. 왼쪽에 있는 모든것과 오른쪽에 공통적인것들의 모움
- outer 생략가능
글제목중에 샘플제목888번 글을 쓴 사람의 아이디를 출력해주세요
select A.memberid from member0803 A
inner join board0803 B
on A.midx = B.midx
where B.subject ='샘플제목888';
회원아이디 test가 작성한 모든 글의 수를 출력하세요
count() 집계함수 사용
select count(B.bidx) as cnt from member0803 A inner join board0803 B
on A.midx = B.midx
where A.memberid ='test';
각 회원의 지역별로 게시글을 쓴 사람들의 인원수를 출력하시오
group by절 사용
select A.memberaddr,count(B.bidx) as cnt
from member0803 A left join board0803 B
on A.midx=B.midx
group by A.memberaddr;
게시글을 쓴 사람들의 남성비율과 여성비율을 출력하시오
if()함수 사용 count()함수 사용
select
sum(if(A.membergender='남성',1,0))/(select count(bidx) from board0803) as 남성인원수,
sum(if(A.membergender='여성',1,0))/(select count(bidx) from board0803) as 여성인원수
from member0803 A join board0803 B
on A.midx=B.midx;
글번호가 홀수인 사람들의 회원 아이디를 출력하세요
select A.memberid from member0803 A join board0803 B
on A.midx = B.midx
where mod(B.bidx,2)=1;
글 내용중에 반가워요라고 하는 글을 포함하고있는 사람들의 지역을 출력하세요
select A.memberaddr from member0803 A join board0803 B
on A.midx = B.midx
where B.contents like concat('%','반가워요','%'); ( where B.contents like '%반가워요%' 이것도 사용가능)
사는 지역이 서울 대전 전주에 사는 사람들이 쓴 글 제목을 출력하세요
select B.subject from member0803 A join board0803 B
on A.midx = B.midx
where A.memberAddr in('서울','대전','전주');
(이것도 가능 where A.memberaddr ='서울' or A.memberaddr ='전주' or A.memberaddr ='대전' )
글을 쓴 사람들의 지역을 1차 내림차순으로 그리고 이름을 2차 오름차순 정렬로 출력하세요
select * from member0803 A join board0803 B
on A.midx = B.midx
order by A.memberaddr desc, A.membername;
글번호 16번부터 28번까지의 회원들의 나이를 출력하시오
select
substr(now(),1,4) -substr(A.memberbirth,1,4) as age
from member0803 A join board0803 B
on A.midx = B.midx
where B.bidx between 16 and 28;