Skip to main content
mysql

9주차-2 세개의 테이블 조인하기, Having 구문 연습

By 10월 31st, 2024No Comments

세계의 테이블 조인하기

다대다 관계

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,'바비킴','봉사');

 

SELECT * from clubtbl;
select * from stdtbl;
SELECT * from stdclubtbl;

 

-- 2개 조인
SELECT S.stdName, S.addr, SC.clubName
   FROM stdtbl S 
      INNER JOIN stdclubtbl SC
           ON S.stdName = SC.stdName
   ORDER BY S.stdName;



-- 3개 조인

SELECT S.stdName, S.addr, SC.clubName, C.roomNo
   FROM stdtbl S 
      INNER JOIN stdclubtbl SC
           ON S.stdName = SC.stdName
      INNER JOIN clubtbl C
           ON SC.clubName = C.clubName 
   ORDER BY S.stdName;

 

 

3개 조인 최종 예제

SELECT S.stdName, S.addr, SC.clubName, C.roomNo
   FROM stdtbl S 
      INNER JOIN stdclubtbl SC
           ON S.stdName = SC.stdName
      INNER JOIN clubtbl C
           ON SC.clubName = C.clubName 
   ORDER BY S.stdName;
  
SELECT C.clubName, C.roomNo, S.stdName, S.addr
   FROM  stdtbl S
      INNER JOIN stdclubtbl SC
         ON SC.stdName = S.stdName
      INNER JOIN clubtbl C
          ON SC.clubName = C.clubName
    ORDER BY C.clubName;

 

HAVING 구문 살펴보기

신규 데이터 베이스 만들기

sql파일다운받기

bestproducts 데이터베이스 생성하기

2개의 sql 구문을 실행해서 데이터를 모두 입력


having 절은 group by 절과 함께 사용한다.

having 절은 집계함수를 가지고 조건 비교를 할 때 사용한다.

 

gmarket  화면과 테이블 구조 살펴보기

sum, avg , count 등의 group by와 집계함수는 wherer와 함께 사용하지 못한다.

 

SELECT provider FROM items GROUP BY provider HAVING count(*) >= 100;

업체 100개 를 정리해서 보여줘 구문

-- sum, avg , count 등의 group by와 집계함수는 wherer와 함께 사용하지 못한다. 
-- 아래 코드를 한번씩 실습해서 결과를 체크한다.

SELECT provider, count(*) from items;
SELECT provider FROM items WHERE count(*) >= 100;
SELECT provider, count(*) FROM items GROUP BY provider HAVING count(*) >= 100;

 

아래 코드 실습하기

SELECT provider, count(*) from items;
SELECT provider FROM items WHERE count(*) >= 100;
SELECT provider, count(*) FROM items GROUP BY provider HAVING count(*) >= 100;

 

Leave a Reply