데이터 생성
CREATE TABLE tCar
(
car VARCHAR(30) NOT NULL, -- 이름
capacity INT NOT NULL, -- 배기량
price INT NOT NULL, -- 가격
maker VARCHAR(30) NOT NULL -- 제조사
);
INSERT INTO tCar (car, capacity, price, maker) VALUES ('소나타', 2000, 2500, '현대');
INSERT INTO tCar (car, capacity, price, maker) VALUES ('티볼리', 1600, 2300, '쌍용');
INSERT INTO tCar (car, capacity, price, maker) VALUES ('A8', 3000, 4800, 'Audi');
INSERT INTO tCar (car, capacity, price, maker) VALUES ('SM5', 2000, 2600, '삼성');
CREATE TABLE tMaker
(
maker VARCHAR(30) NOT NULL, -- 회사
factory CHAR(10) NOT NULL, -- 공장
domestic CHAR(1) NOT NULL -- 국산 여부. Y/N
);
INSERT INTO tMaker (maker, factory, domestic) VALUES ('현대', '부산', 'y');
INSERT INTO tMaker (maker, factory, domestic) VALUES ('쌍용', '청주', 'y');
INSERT INTO tMaker (maker, factory, domestic) VALUES ('Audi', '독일', 'n');
INSERT INTO tMaker (maker, factory, domestic) VALUES ('기아', '서울', 'y');
연습문제
-- 1) 두 테이블에 대한 cross join을 실시하라
select * from tCar cross join tMaker;
-- 2) 위의 결과에서 tCar의 회사명과 tMaker의 회사명이 일치하는 것만 표시하라.
select * from tCar cross join tMaker
where tCar.maker = tMaker.maker;
-- 3) 위의 결과에서 차 이름, 가격, 제조사, 공장만 표시하라.
select C.car, C.price, C.maker, M.factory from tCar C cross join tMaker M
where C.maker = M.maker;
-- 4) 2)의 결과에서 자동차 테이블의 모든 결과를 출력하고, 회사 정보는 공장 위치만 출력하라.
select C.*, M.factory from tCar C cross join tMaker M
where C.maker = M.maker;
-- 5) inner join을 활용해서 양쪽 테이블에 모두 있는 정보를 출력하라.
select * from tCar C inner join tMaker M
on C.maker = M.maker;
-- 6) 모든 자동차의 정보를 출력하고 제조사 정보가 있다면 덧붙여라.
select * from tCar C left join tMaker M
on C.maker = M.maker;
-- 6) 모든 제조사의 정보를 출력하고 자동차 정보가 있다면 덧붙여라.
select * from tCar C right join tMaker M
on C.maker = M.maker;
JOIN을 통해 데이터를 조회하고자 하는 경우 어떤 테이블을 기준으로 할 지,
해당 컬럼은 어느 테이블에서 가져온 것인지 소속을 명확히 해주어야 한다.
'SQL' 카테고리의 다른 글
11. [SQL] 연습문제 - EDA(2) (0) | 2024.04.09 |
---|---|
10. [SQL] 연습문제 - EDA(1) (0) | 2024.04.09 |
08. [SQL] 연습문제 - SELECT ... FROM (0) | 2024.04.08 |
07. [SQL] CASE WHEN ... END (0) | 2024.04.08 |
06. [SQL] 조인 (0) | 2024.04.08 |