DB/mysql
MYSQL JOIN ?
이건욱
2020. 4. 30. 14:58
RDBS에서는 JOIN이라는 것을 제공합니다.
JOIN은 여러가지 방식으로 할수가 있는데 대표적인것은 아래와 같습니다.
-
LEFT JOIN
-
RIGHT JOIN
-
JOIN
-
FULL OUTER
[사전 조건]
CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
CREATE TABLE School (
SchoolId int NOT NULL AUTO_INCREMENT,
PersonId int NOT NULL,
SchoolName varchar(255),
PRIMARY KEY (SchoolId)
);
먼저 다음과 같은 두개의 테이블이 존재합니다.
이제 다음과 같은 데이터를 추가합니다.
INSERT INTO Persons (LastName , FirstName , Age) VALUES ("lee" , "gunwook" , 11);
INSERT INTO Persons (LastName , FirstName , Age) VALUES ("lee" , "denny" , 13);
INSERT INTO Persons (LastName , FirstName , Age) VALUES ("tae" , "hwan" , 15);
INSERT INTO Persons (LastName , FirstName , Age) VALUES ("tae" , "qhuan" , 17);
INSERT INTO School (PersonId , SchoolName) VALUES (1 , "monster");
INSERT INTO School (PersonId , SchoolName) VALUES (1 , "star");
INSERT INTO School (PersonId , SchoolName) VALUES (2 , "monster");
INSERT INTO School (PersonId , SchoolName) VALUES (2 , "star");
INSERT INTO School (PersonId , SchoolName) VALUES (3 , "monster");
INSERT INTO School (PersonId , SchoolName) VALUES (3 , "star");
INSERT INTO School (PersonId , SchoolName) VALUES (4 , "monster");
INSERT INTO School (PersonId , SchoolName) VALUES (4 , "star");
이제 테스트를 진행해 볼것입니다.
select * from persons;
SELECT sh.PersonId , p.LastName, p.FirstName FROM School AS sh
LEFT JOIN Persons AS p
ON p.Personid = sh.PersonId
LEFT JOIN
제일 먼저 LEFT JOIN은 왼쪽에 테이블에서 추가로 같이 공통적으로 포함된 내용을 출력합니다.
그럼 다음과 같이 왼쪽에 테이블에서 추가로 포함된 내용을 출력할수 있습니다.
RIGHT JOIN
RIGHT JOIN은 LEFT JOIN과는 달리 오른쪽 테이블에서 추가로 같이 공통적으로 포함된 내용을 출력합니다.
SELECT sh.PersonId , p.LastName, p.FirstName FROM School AS sh
RIGHT JOIN Persons AS p
ON p.Personid = sh.PersonId
이렇게 오른쪽 테이블에 있는 내용들이 다같이 출력되는것을 알수가 있습니다.
JOIN
SELECT sh.PersonId , p.LastName, p.FirstName FROM School AS sh
JOIN Persons AS p
ON p.Personid = sh.PersonId
JOIN은 두개의 테이블에서의 공통적으로 들어간 내용만 출력을 합니다.
FULL OUTER JOIN
FULL OUTER JOIN은 MYSQL에서는 존재하지 않습니다.
그래서 LEFT JOIN , RIGHT JOIN을 사용해여 UNION하는 방식이 있습니다.