조인(Join)은 데이터베이스에서 두 개 이상의 테이블 간에 연결을 만드는 데 사용되는 기능이다. 이를 통해 여러 테이블에 있는 정보들을 결합하여 원하는 결과를 얻을 수 있다.
조인은 일반적으로 두 테이블 사이에 연결되는 공통된 열(또는 열의 조합)을 명시하여 사용된다. 이를 통해 두 테이블 간의 관계를 정의할 수 있다.
학생 이름과 id 번호가 적힌 데이터이다
책이름과 점수 학생 id가 적힌 데이터이다
이 데이터는 students 테이블에선 id , papers 테이블에선 sudent_id를 기준으로 합쳐야한다.
papers 테이블의 student_id는 students 테이블의 id 가 UN 타입이기 때문에 똑같이 UN 으로 맞춰준다.
하단의 foreignkeys 에 들어가 referenced table은 연결할 테이블 column은 papers 테이블의 연결할 컬럼 우측엔 students 테이블에 연결할 컬럼으로 선택하고 apply 한다.
select*
from students as s
join papers as p
on p.student_id = s.id;
- FROM students AS s: 이 부분은 데이터를 가져올 테이블을 지정하는 부분이다. 'students' 테이블을 s라는 별칭으로 지정한다. 이 별칭은 이후의 쿼리에서 테이블을 참조할 때 사용된다.
- JOIN papers AS p: 이 부분은 조인할 테이블을 지정하는 부분이다. 'papers' 테이블을 p라는 별칭으로 지정한다. 이 별칭은 이후의 쿼리에서 테이블을 참조할 때 사용된다.
- ON p.student_id = s.id: 이 부분은 조인 조건을 지정하는 부분이다. 'papers' 테이블의 'student_id' 열과 'students' 테이블의 'id' 열을 비교하여 조인한다. 이는 두 테이블 간의 관계를 정의하는 것이다. 만약 'papers' 테이블의 'student_id' 열과 'students' 테이블의 'id' 열이 서로 일치하는 경우에만 결과 집합에 포함된다.
결과적으로, 이 쿼리는 'students' 테이블과 'papers' 테이블을 조인하여, 각 학생과 그 학생이 제출한 모든 논문의 정보를 함께 가져온다.
여기서 id 컬럼이 2개로 중복되는데 이 컬럼을 선택할떄 앞에 테이블 명을 써주면 된다 여기선 students 는 s 로 바꿔줬기때문에 s.id 를 입력하면 students 테이블의 id 컬럼만 선택 할 수 있다.
left right
- 왼쪽 또는 오른쪽 테이블의 모든 행을 기준으로 조인을 수행한다.
- 조인 시 양쪽 테이블에서 일치하는 행이 없는 경우에도, 한쪽 테이블의 모든 행을 결과 집합에 포함시킨다.
- 만약 한쪽 테이블에서 일치하는 행이 없는 경우, 해당 열은 NULL 값으로 채워진다.
select *
from students as s
left join papers as p
on p.student_id = s.id;
'DATABASE > MySql 실습' 카테고리의 다른 글
[sql] error code 1062.Deuplicate entry, unique 설정, 중복데이터 방지 (0) | 2024.05.20 |
---|---|
[sql]시간 dafault now(), 업데이트시 시간 바꾸는법 , 시간 추가, 빼기, 년,월,일,시,분,초 조회 (0) | 2024.05.16 |
[sql] group by 에서 where 사용법 having , case if문,ifnull 작성법 (0) | 2024.05.14 |
[sql] 문법 sum(), avg(), and, or, not , !=, 사이 , between 활용법 (0) | 2024.05.14 |
[sql] 문법 count(), max(), min(), group by(), sub query() 사용법 (0) | 2024.05.14 |