참조 : 생활코딩 데이터베이스
하나의 테이블은 한눈에 직관적으로 판단가능. 하지만 중복을 제거 못함.
테이블을 두개로 쪼갰을 때, 비교해서 표를 확인해야하는 문제가 생김.
## 에러 발생 코드
CREATE TABLE author(
id INT NOT NULL AUTO_ICREMENT,
name VARCHAR(100) NOT NULL,
profile TEXT NULL);
## AUTO_ICREMENT를 설정한 columns은 PRIMARY KEY로 설정해야한다.
## 해결코드
CREATE TABLE author(
id INT NOT NULL AUTO_ICREMENT,
name VARCHAR(100) NOT NULL,
profile TEXT NULL,
PRIMARY KEY(id));
## 에러 발생 코드
INSERT INTO author (name, profile) VALUES(michael, data sciendtist);
## 따옴표 추가
INSERT INTO author (name, profile) VALUES('michael', 'data sciendtist');
ALTER TABLE topic ADD author_id INT;
UPDATE topic SET author_id=2 WHERE id=3;
## topic과 author 테이블을 합치는데, 기준은 topic의 author_id와 author의 id로 합친다.
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id
## 새로운 이름 하기!
RENAME TABLES topic TO topic_backup
topic 테이블의 author_id의 값과 author 테이블의 id값을 붙여봐
# topic 테이블 확인
SELECT * FROM topic;
#author 테이블 확인
SELECT * FROM author;
# topic 테이블의 author_id와 author 테이블의 id를 기준으로 테이블을 합쳐서 보여줘
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id
에러 발생: 애매 모호 하다ㅏ. 왜냐하면 topic id와 author id가 중복되기 때문이다.
## 에러 발생코드
SELECT id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
## 에러 해결 코드
SELECT topic.id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
## id의 값을 topic_id라는 값으로 변환하여 보여주기
SELECT topic.id AS topic_id,title,description,created,name,profile FROM topic LEFT JOIN author ON topic.author_id = author.id;
위에 테이블처럼 짜놓으면, 다 바꾸어야 함.
그런데 아래 테이블 처럼 분리한다면 유기적으로 연결되기 때문에, 자동으로 변화될 것이다.
Join을 통해 관계 가능.
create table comment (
-> id int(11) not null auto_increment,
-> description varchar(130) null,
-> author_id int(11) null,
-> primary key (id)
-> );
## 코멘트 확인
SELECT * FROM comment'
## author 확인
SELECT * FROM author;
## comment와 author를 결합하여 확인
SELECT * FROM comment LEFT JOIN author ON comment.author_id = author.id;
## 정렬하여 확인
SELECT comment.id AS comment_id, description, name, profile FROM comment LEFT JOIN author ON comment.author_id = author.id;