Just Do It

join

by 핫도구
반응형

join의 기능

 - column을 이용해서 다른 table을 참조

 - foreign key를 설정해야만 가능한 것이 아님

 

장점

 - 다수의 table을 한번에 조회할 때 가능

 

alias 적용 : as 생략이 가능하다.

 

형식

select column_name from table_name1 join table_name2 on table1_조건 = table2_조건

 

간단하게  하기전에 추가하고 사용해보겠음

INSERT INTO student values(22, '김갈비', 23, 6, '김갈비입니다', 19);
INSERT INTO team values(7, '준희네', 24, '주주주주', '주주보옵ㅇ');
SELECT studentno, name, age, s.teamno captain FROM student s JOIN team t ON s.teamno = t.teamno;

 

혹은 팀장을 뽑는 것 또한 가능하다.

SELECT name, age, t.teamno, teamname, captain, project, slogan FROM student s JOIN team t ON t.captain = s.studentno;

 

 

self-join을 살펴보면 하나의 테이블 내에서 join을 하는 것이다.

CREATE TABLE student2 AS SELECT * FROM student;

ALTER TABLE student2 ADD friendno int(3) DEFAULT 10; 
ALTER TABLE student2 DROP COLUMN friendno;
UPDATE student2 SET friendno = 13 WHERE studentno = 5;
UPDATE student2 SET friendno = 10 WHERE studentno = 10;
UPDATE student2 SET friendno = 3 WHERE studentno = 6;
UPDATE student2 SET friendno = 4 WHERE studentno = 8;
UPDATE student2 SET friendno = 15 WHERE studentno = 3;
UPDATE student2 SET friendno = 7 WHERE studentno = 2;
UPDATE student2 SET friendno = 1 WHERE teamno = 2;
ALTER TABLE student2 ADD friendname varchar(10);

이렇게 새로운 테이블을 만들어주고 frinendno를 추가해 주고 자기 자신의 친구에 대한 데이터를 뽑을 수 있다.

또한 left outer join을 사용해서 join 왼쪽에 있는 table을 기준으로 값을 추출할 수 있다.

SELECT s21.studentno, s21.name, s21.age, s21.friendno, s22.name friendname
FROM student2 s21 LEFT OUTER JOIN student2 s22
ON s21.friendno = s22.studentno;

 

또한 2중 join을 사용해 원하는 정보를 추출할 수 있다.

SELECT s21.studentno, s21.name, s21.teamno, t.teamname, t.captain, s22.name
FROM student2 s21 LEFT OUTER JOIN team t
ON s21.teamno = t.teamno
LEFT OUTER JOIN student2 s22
ON t.captain = s22.studentno;

반응형

'Mysql > Basic' 카테고리의 다른 글

View & index  (0) 2024.08.05
subquery & groupfunction  (0) 2024.08.05
제약조건  (0) 2024.07.31
Create & drop Table, insert & delete & select & update & truncate  (0) 2024.07.31
SQL 구문 종류  (0) 2024.07.31

블로그의 정보

AquaMan

핫도구

활동하기