JOIN 기본 사용법(FK 설정 포함)_연습2

JooKit 주킷 2021. 3. 24. 00:45
목차 접기
728x90
반응형

😲 내가 만든 문제

User 테이블 존재하다면 삭제

DROP TABLE IF EXISTS `User`;

User 테이블 생성

CREATE TABLE `User`(
    user_id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `name` CHAR(100) NOT NULL,
    age INT(10) UNSIGNED NOT NULL,
    city CHAR(100) NOT NULL
);

학교 테이블 존재하다면 삭제

DROP TABLE IF EXISTS School;

FK(외래키) 설정하는 학교 테이블 생성

CREATE TABLE School(
    user_id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    school_name CHAR(100) NOT NULL,
    `description` TEXT NOT NULL,
    FOREIGN KEY (user_id) REFERENCES `User` (user_id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

🔶 주의사항

  • 외래키로 참조되어 있는 부모 테이블은 자식 테이블이 존재하다면 삭제할 수 없다.
  • 자식 테이블을 먼저 삭제해야 부모 테이블을 삭제할 수 있다.

User 생성

INSERT INTO `User`
SET `name` = '홍길동',
age = 20,
city = '서울';

INSERT INTO `User`
SET `name` = '제시',
age = 30,
city = '인천';

INSERT INTO `User`
SET `name` = '유재석',
age = 40,
city = '대구';

INSERT INTO `User`
SET `name` = '공유',
age = 30,
city = '구리';

INSERT INTO `User`
SET `name` = '신혜선',
age = 34,
city = '대전';

INSERT INTO `User`
SET `name` = '조정석',
age = 38,
city = '전주';

INSERT INTO `User`
SET `name` = '거미',
age = 33,
city = '논산';

DESC School;

학교 데이터 생성

INSERT INTO School
SET school_name = '서울대',
`description` = '한국에서 최고 대학';

INSERT INTO School
SET school_name = '카이스트',
`description` = '카이스트가 더 좋은 대학인가?';

INSERT INTO School
SET school_name = '이화여대',
`description` = '김혜수 나온 대학???';

INSERT INTO School
SET school_name = '대전대',
`description` = '대전에 있는 대학교';

INSERT INTO School
SET school_name = '하버드',
`description` = '나도 하버드 가고 싶다.';

INSERT INTO School
SET school_name = '고려대',
`description` = '고려........';

INSERT INTO School
SET school_name = '경희대',
`description` = '배고프다, 경희대입니다.';

join 데이터베이스의 모든 테이블 검색

SHOW TABLES;

테이블 구조 확인하기

DESC `User`;
DESC School;

테이블 데이터 조회하기

SELECT * FROM `User`;
SELECT * FROM School;

문제 1 : user_id : 2번이 다니는 학교가 알고 싶다.

SELECT S.*
FROM School S
JOIN `User` U ON U.user_id = S.user_id
WHERE U.user_id = 2;

문제 1 _ 쿼리 결과

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7938b6be-e754-4e8c-91ee-769bc3863376/Untitled.png

문제 2 : 카이스트를 다니는 학생의 정보를 알고 싶다.

SELECT U.*
FROM `User` U
JOIN School S ON S.user_id = U.user_id 
WHERE school_name = '카이스트';

문제 2 _ 쿼리 결과

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d125677d-012e-470e-aa89-334b1621516f/Untitled.png

문제 3 : 나이가 30살인 사람들이 다니는 학교를 알고 싶다.

SELECT S.*
FROM School S
JOIN `User` U ON U.user_id = S.user_id
WHERE U.age = 30;

문제 3 _ 쿼리 결과

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8e6c013f-5658-45c8-9f5e-bebc0fc3b179/Untitled.png

728x90
반응형
LIST