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
핫도구