Day13. MySQL_2

박경희·2023년 6월 12일
0

강의 복습 및 정리

목록 보기
18/38

수업 후 바로 미니 프로젝트를 준비하느라 다소 늦었지만 오늘 다시 살펴보며 복습했다.
1. 다중으로 프라이머리키 주기

create table student1(
id int,      
name varchar(255),
age int,
major varchar(255),
birth date,
primary key(id, name)		// 이렇게 넣어주면 된다.
);
  1. 이해가 됐다가 안됐다가~
create table student1(
id int,      
name varchar(255),
age int,
major varchar(255),
birth date,
create_at datetime default now(),
primary key(id, name) 
);

insert into student1(id, name) values (1, "골드");
select * from student1;

  • default가 기본적으로 null 값으로 들어간다는 것?
  1. inner join - 교집합만 출력
select * 
from student1 as s, majors as m
where s.id = m.student_id;
select * from student1 as s
inner join majors as m
on s.id = m.student_id;
  • 둘 다 교집합을 출력하는 것이다.

  • left join을 하면 교집합 뿐만 아니라 겹치지 않는 왼쪽 부분도 출력하는 것.

  • on 뒤에 조건을 적어서 사용.

    4.foreign key- 외래키 사용할 때 쓴다. 참조해서 사용하는 키.

create table majors(
id int primary key auto_increment,
-- student_id int,      
major varchar(255)
);

//major만 들어갈 수 있게 만든것. 완전히 분리가 된거다.
//이제 이걸 어떻게 연결을 시킬것인가?

create table student_major(
student_id int,
major_id int,
id int primary key auto_increment,
primary key(student_id,major_id),
foreign key (student_id) references student1(id),
foreign key (major_id) references major(id)
);

//이렇게 연결해주는 테이블을 하나 더 만들어서 연결한다.
  • foreign key(student_id) references(참조) student1(id)
    -> 해당 테이블의 student_id를 student1의 id로 참조하겠다.
  1. 3중 조인
//1.
create table student1(
	id int ,
	name varchar(255),
    create_at datetime default now(),
    primary key(id)
//2.
create table majors(
	id int primary key auto_increment,
    major varchar(255)
);
//3. 연결해주는 테이블
create table student_major(
    student_id int,
    major_id int,
    primary key(student_id, major_id),
    foreign key(student_id) references student1(id),
    foreign key(major_id) references majors(id)
);
  1. 테이블을 직관적으로 볼 수 있는 것 ERD

0개의 댓글