«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Recent Posts
Today
Total
관리 메뉴

짜리몽땅 매거진

[SQL] LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN, INNER JOIN 본문

Data/SQL

[SQL] LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN, INNER JOIN

쿡국 2023. 8. 21. 15:53
DROP DATABASE IF EXISTS pokemon
;

CREATE DATABASE pokemon
;

USE pokemon
;

CREATE TABLE mypokemon
(

number INT,
name VARCHAR(20),
type VARCHAR(10)
);
INSERT INTO mypokemon (number, name, type)
VALUES (10, 'caterpie', 'bug'),
(25, 'pikachu', 'electric'),
(26, 'raichu', 'electric'),
(133, 'eevee', 'normal'),
(152, 'chikoirita', 'grass');


CREATE TABLE ability (
number INT,
height FLOAT,
weight FLOAT,
attack INT,
defense INT,
speed int
);
INSERT INTO ability (number, height, weight, attack, defense, speed)
VALUES (10, 0.3, 2.9, 30, 35, 45),
(25, 0.4, 6, 55, 40, 90),
(125, 1.1, 30, 83, 57, 105),
(133, 0.3, 6.5, 55, 50, 55),
(137, 0.8, 36.5, 60, 70, 40),
(152, 0.9, 6.4, 49, 65, 45),
(153, 1.2, 15.8, 62, 80, 60),
(172, 0.3, 2, 40, 15, 60),
(470, 1, 25.5, 110, 130, 95);

select * from mypokemon;
select * from ability;

select name, attack, defense
from mypokemon
left join ability
on mypokemon.number=ability.number ;

select ability.number, name
from ability
left join mypokemon
on mypokemon.number=ability.number ;

select type, avg(height)
from mypokemon
left join ability
on mypokemon.number=ability.number 
group by type;

select type, avg(weight)
from mypokemon
left join ability
on mypokemon.number=ability.number 
group by type;

select type, avg(height), avg(weight)
from mypokemon
left join ability
on mypokemon.number=ability.number 
group by type;

select mypokemon.number, name, attack, defense
from mypokemon
left join ability
on mypokemon.number=ability.number 
where mypokemon.number>=100 ;

select name
from mypokemon
left join ability
on mypokemon.number=ability.number 
order by attack+defense desc;

select *
from mypokemon
left join ability
on mypokemon.number=ability.number ;

INSERT INTO ability (number, height, weight, attack, defense, speed)
VALUES (26, 0.4, 6, 55, 40, 90);

select name
from mypokemon
left join ability
on mypokemon.number=ability.number 
order by attack+defense desc;

select name
from mypokemon
left join ability
on mypokemon.number=ability.number 
order by speed desc
limit 1 ;