본문 바로가기

학습노트/데이터베이스

[MySQL] 관계형 데이터베이스

왜 관계형 데이터베이스가 필요한가.

 

중복이 되면 개선할 것이 있다고 본다. 그래서 중복 가능이 있는 데이터를 테이블로 다시 만들어서 관리한다. 그럼 유지 보수할 때에 만들어 놓은 테이블을 바꾸면 다 바뀐다.

 

MySQL은 데이터를 분산해서 저장하고 보여줄 땐 합쳐서 보여준다.

 

우선, 만들어놨던 테이블은 이름을 바꿔준다.

RENAME TABLE 테이블명 TO 바꿀이름;

 

 

1. 테이블 분리하기

CREATE TABLE article (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`description` text,
`created` datetime NOT NULL,
`author_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);

/////////////////////////////////

INSERT INTO article VALUES (1,'MySQL','MySQL is...',NOW(),1);
INSERT INTO article VALUES (2,'Oracle','Oracle is ...',NOW(),1);
INSERT INTO article VALUES (3,'SQL Server','SQL Server is ...',NOW(),2);
INSERT INTO article VALUES (4,'PostgreSQL','PostgreSQL is ...',NOW(),3);
INSERT INTO article VALUES (5,'MongoDB','MongoDB is ...',NOW(),1);

////////////////////////////////

CREATE TABLE author (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`profile` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
);

/////////////////////////////////

INSERT INTO `author` VALUES (1,'ukcasso','developer');
INSERT INTO `author` VALUES (2,'vendit','database administrator');
INSERT INTO `author` VALUES (3,'kim','data scientist, developer');

 

2. 테이블 합쳐서 보여주기

SELECT * FROM 테이블명1 LEFT JOIN 테이블명2 ON 합칠 기준;

 

SELECT * FROM article LEFT JOIN author ON article.author_id = author.id;

 

여기서 author_id와 id값을 안나타내고 싶다면

 

SELECT article.id,title,description,created,name,profile FROM article LEFT JOIN author ON article.author_id = author.id;

 

* 대신에 호출할 표 제목들을 써준다. 그리고 표 제목들을 다른 이름으로 바꿔서 나타내고 싶다면

 

SELECT article.id AS article_id,title,description,created,name,profile FROM article LEFT JOIN author ON article.author_id = author.id;

 

이런식으로 AS 를 쓴 후 바꿔줄 이름을 넣어준다.