테이블 생성 및 데이터 삽입
USE sqldb;
CREATE TABLE stdtbl
( stdName VARCHAR(10) NOT NULL PRIMARY KEY,
addr CHAR(4) NOT NULL
);
CREATE TABLE clubtbl
( clubName VARCHAR(10) NOT NULL PRIMARY KEY,
roomNo CHAR(4) NOT NULL
);
CREATE TABLE stdclubtbl
( num int AUTO_INCREMENT NOT NULL PRIMARY KEY,
stdName VARCHAR(10) NOT NULL,
clubName VARCHAR(10) NOT NULL,
FOREIGN KEY(stdName) REFERENCES stdtbl(stdName),
FOREIGN KEY(clubName) REFERENCES clubtbl(clubName)
);
INSERT INTO stdtbl VALUES ('김범수','경남'), ('성시경','서울'), ('조용필','경기'), ('은지원','경북'),('바비킴','서울');
INSERT INTO clubtbl VALUES ('수영','101호'), ('바둑','102호'), ('축구','103호'), ('봉사','104호');
INSERT INTO stdclubtbl VALUES (NULL, '김범수','바둑'), (NULL,'김범수','축구'), (NULL,'조용필','축구'), (NULL,'은지원','축구'), (NULL,'은지원','봉사'), (NULL,'바비킴','봉사');
문제 풀이 코드
use sqldb;
show tables;
# --> clubtbl, stdclubtbl, stdtbl
# 선생님!!!
# 클럽관련테이블, 누가-어느 클럽 신청 ,학생들테이블
select * from clubtbl;
select * from stdtbl;
select * from stdclubtbl;
### 필요한 정보가 3개에 흩어져 있을 때... ###
# Q) 3개 테이블을 활용해서,,
# 학생 이름, 학생 사는 지역, 가입한 동아리 + 동아리 방 번호,,,
# ==> 단, 동아리 신청한 학생들에 대해서만!!!
select * from stdtbl;
#
select * from stdtbl S
inner join stdclubtbl SC on S.stdName = SC.stdName;
#
select * from stdtbl S
inner join stdclubtbl SC on S.stdName = SC.stdName
inner join clubtbl C on C.clubName = SC.clubName;
#
select S.stdName, S.addr, C.clubName, C.roomNo
from stdtbl S
inner join stdclubtbl SC on S.stdName = SC.stdName
inner join clubtbl C on C.clubName = SC.clubName;
# Q) 모든 학생들에 대해서, 혹시 가입한 동아리가 있다면, 동아리 이름/방번호 출력#
# --> 가입하지 않은 학생이 있다면,,그 학생 정보만 같이 출력! ( 모든 학생 대상!!)
# --> 이름, 클럽명, 방번호
select * from stdtbl;
#
select * from stdtbl S
left join stdclubtbl SC on S.stdName = SC.stdName;
#
select * from stdtbl S
left join stdclubtbl SC on S.stdName = SC.stdName
left join clubtbl C on SC.clubName = C.clubName;
#
select S.stdName, C.clubName, C.roomNo
from stdtbl S
left join stdclubtbl SC on S.stdName = SC.stdName
left join clubtbl C on SC.clubName = C.clubName;
# *** 출처가 1개 테이블,,, 2개 테이블,,,3개 이상 테이블~~~
# ===> from + join( 기준을 중심으로 +1개씩 붙이는 개념!!! )
# : 여러개면 여러 번 붙여야 함!!!
# : 기준과 붙일 룰!!!! + 소속과 연결 고리에 대한 체크!!!