관계형 데이터 베이스 #3

Michael-Oh·2021년 8월 13일
0

데이터베이스

목록 보기
3/4

관계형 데이터 베이스

왜 관계형 데이터 베이스를 배워야 하는가?

스프레드 시트와 비교 (데이터가 중복된다면 중복을 제거하여 사용가능)

참조 : 생활코딩 데이터베이스

저자들의 정보를 따로 뺌.

topic정보 author_id를 부여하여 중복이 사라짐.

author_id로 식별가능해진다.

장점이 생겼지만, 단점이 생긴 부분

하나의 테이블은 한눈에 직관적으로 판단가능. 하지만 중복을 제거 못함.

테이블을 두개로 쪼갰을 때, 비교해서 표를 확인해야하는 문제가 생김.

별도의 테이블로 보관하여 중복이 없으면서도, 하나의 표로 확인하고 싶어진다.

에러노트 : AUTO_INCREMENT를 사용한 columns은


## 에러 발생 코드
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));

AUTO_ICREMENT를 설정한 columns은 PRIMARY KEY로 설정해야한다.

에러노트 : 작은 따옴표 하지 않았을 때

## 에러 발생 코드
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

JOIN

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

에러노트3

중복된 걸 없애주고 보이도록 한다.

에러 발생: 애매 모호 하다ㅏ. 왜냐하면 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을 통해 관계 가능.

comment 테이블 만들기

create table comment (
    -> id int(11) not null auto_increment,
    -> description varchar(130) null,
    -> author_id int(11) null,
    -> primary key (id)
    -> );

comment를 쓴 사람이 누구인지 보고싶다.

## 코멘트 확인
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;

profile
초보 개발자의 테니스 과학적 분석 Dev-Log

0개의 댓글