본문 바로가기

코딩공부/DATABASE2 - MySQL

[6] 테이블 분리, JOIN

테이블 분리하기

 Before 표

관계가 없는 표

After 표

관계형 표

※ 기존 topic 테이블 백업

RENAME TABLE topic TO topic_backup;

--
-- Table structure for table `author`
--
 
 
CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `profile` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
 
--
-- Dumping data for table `author`
--
 
INSERT INTO `author` VALUES (1,'egoing','developer');
INSERT INTO `author` VALUES (2,'duru','database administrator');
INSERT INTO `author` VALUES (3,'taeho','data scientist, developer');
 
--
-- Table structure for table `topic`
--
 
CREATE TABLE `topic` (
  `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`)
);
 
--
-- Dumping data for table `topic`
--
 
INSERT INTO `topic` VALUES (1,'MySQL','MySQL is...','2018-01-01 12:10:11',1);
INSERT INTO `topic` VALUES (2,'Oracle','Oracle is ...','2018-01-03 13:01:10',1);
INSERT INTO `topic` VALUES (3,'SQL Server','SQL Server is ...','2018-01-20 11:01:10',2);
INSERT INTO `topic` VALUES (4,'PostgreSQL','PostgreSQL is ...','2018-01-23 01:03:03',3);
INSERT INTO `topic` VALUES (5,'MongoDB','MongoDB is ...','2018-01-30 12:31:03',1);

 

JOIN

별도의 테이블에 저장된 데이터를 하나의 테이블로 조합하여 확인

 

두 테이블의 결합 고리

topic -> 'author_id'

author -> 'id'

 

LEFT JOIN ... ON

 

author_id 와 id 부분은 생략하고 조회하고 싶으면, 조회하고자 하는 컬럼명만 지정해서 SELECT 하면 된다. "PROJECTION"

JOIN 하려는 테이블에 동일한 컬럼명이 있으면, 명확하게 알려줘야 한다.

topic.id -> 'topic'테이블의 id

 

출력되는 id 컬럼이 어느 테이블의 id인지 표시하기 위해 AS로 다른 이름으로 출력