본문 바로가기

아옳옳의 코딩공부/아옳이의 데이터베이스 MySQL

2021-05-31 MySQL 데이터베이스 다대다 조인 (3테이블조인), 테이블생성

반응형

다대다 조인

이미 2개의 테이블 조인은 공부했기 때문에 다른 설명은 생략하고 들어가겠다 

그림으로 간단하게 설명하면 다음과 같다 

맨위 : item 테이블 , 중간 : review 테이블 ,마지막 : member 테이블 

 

이렇게 3개의 테이블을 reivew 테이블에 있는 각각의 id로 연결해서묶어 주는 것이다. 

이렇게 실행을 해보면 다음과 같이 나온다 .

말로 조금 설명을 하자면 처음 조인에서 LEFT OUTER JOIN으로 item테이블 기준으로 조인이 되었다. 

그리고 조인이 이루어진 테이블기준으로 member테이블을 조인을 해준 것이다. 

 

첫 기준이 item테이블이기때문에 아이템 테이블에 있는 것들은 다 출력이 되었지만 해당 간에 다른 테이블들의 정보가 없기 때문에 null로 표현 된것이다. 

 

기본적으로 이렇게 조인이 되고 INNER JOIN도 가능하다. 

이렇게 INNER조인으로 하게 되면 합집합으로 각자있는 것들만 출력하기 때문에 보시다시피 null 이 하나도 없는 것을 볼수 있다. 

 


테이블 생성과 제약조건 

테이블 생성

@데이터 베이스 제거하기

#노란부분은 해당 데이터 베이스가 존재하면 지우라는 명령어, 만약shopdb가 없는 상태에서 이 명령어를 작성 안하면 여기서 오류나면서 멈추게 된다. 

 

@데이터 베이스 생성

@테이블생성 (전에 실습해봄 복습겸 간단하게 ) 

@몇가지 옵션 설정 

NOT NULL :널값이 되면 안된다 

NULL :널값 허용 

 

@PRIMARY KEY 설정

@AUTO_INCREMENT 추가하기

@외래키 지정 ( FOREIGN KEY) 

노랑색 : 나의 정보 , 파란색 : 참조 당하는곳

@테이블에 데이터 넣기 ( 이거도 전에 해봄 복습)

AUTO_INCREMENT는 자동으로 증가하기 때문에 null 적어도되고 안적어도 된다 

 

제약조건

@기본키 제약조건 

파란부분 : 프라이머리키 이름 지정 , 노란부분: 프라이머리키 2개도 가능

#여기서 알아야할부분은 프라이머리키로 설정하면 따로 NOT NULL 안주어도 들어간다

 

프라이머리키 주는 방법은 3가지가 있는데 

처음에 바로 주는 방법 , 맨 마지막줄에 제약조건 명시후 주는 방법 , 나중에 ALTER로 추가해주는 방법 

 

@외래키(FOREIGN KEY) 제약조건

# 두 테이블 사이의 관계를 선언함으로써 데이터의 무결성을 보장하는 역활함 

#테이블 사이에 외래키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존하게 된다

#외래키를 지정하는 테이블이 외래키 테이블 , 참조가 되는 테이블이 기준 테이블 이라함 

 

위에 추가 하는 방법 있는데 이것또한 테이블 생성하면서 설정가능하고 위에 프라이머리키 처럼 ALTER TABLE로도 가능하다 .

 

@UNIQUE 제약조건

#중복되지 않는 유일한 값을 입력해야함

#기본키와 비슷하지만 null값 허용 한다. 

이렇게 2가지 방법으로 추가해줄수 있다. 

 

@DEFAULT 제약조건

#값을 입력하지 않았을 경우에 자동으로 입력되는 기본 값을 정의함 

ALTER로 추가 해주어도 된다. 

마지막으로 이렇게 설정이 되어 있다면 INSERT INTO로 값을 넣을때 해당 칸에 DEFAULT를 적어주면 자동으로 DEFAULT값 입력됨

 

반응형