DATABASE 2 - MySQL

테이블 분리하기

--
-- 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);

댓글

댓글 본문
  1. 콜라
    20201018 완료
  2. 9/22 수강완료
  3. 유동균
    화이팅!
  4. jiyeong
    2020.08.29.
  5. Jonghwo Lee
    완료
  6. 은하파파
    완료. 2020-08-26
  7. クレヨンしんちゃん
    ㅇㄹㅇㄹ
  8. 김준태
    ERROR 1062 (23000): Duplicate entry '1' for key 'author.PRIMARY'

    아이디값 부여 할때 이렇게 뜨는데 왜그러는지..
  9. 완료!!
  10. 흰색두부김치
    완료
  11. Amousk
    좋은 강의 감사합니다.
  12. 쑤우
    완료. 감사합니다~
  13. 개발개발개발
    감사합니다 ㅎㅎ
    대화보기
    • 테이블 분리하기

      RENAME TABLE topic TO topic_backup; //테이블 이름 변경
    • jaehyunlee
      05/30 고3 완료
    • CrashOverride
      한 줄 한 줄 정갈하게 INSERT 하기 귀찮으신 분들을 위해 ㅎㅎ..

      이번 수업 초입의 rename topic to topic_backup 쿼리를 수행하여 이전 수업들을 통해 만드셨던 기존의 topic 테이블의 이름을 topic_backup으로 바꾸셨고

      새로운 author와 topic 테이블까지 만들어 두셨다는 가정 하에

      아래 두 개의 쿼리를 각각 실행해보시면 필요한 데이터들이 한방에 짜잔 하고 만들어지는 것을 보실 수 있을 겁니다.

      원래 INSERT 문에서 사용하던 VALUES를 포함한 이후 나오는 구문 대신 SELECT 문을 사용하여
      B 테이블의 데이터를 조회하여 A 테이블에 INSERT하는 SELECT~INSERT 기법을 사용한 방법이고

      아래 첫번째 쿼리에서 DISTINCT 라는 키워드는 중복된 row를 제거한 데이터를 보기 위해 사용하는 구문인데
      이런 부분이야 뭐 항상 이고잉님 께서 말씀하시는 바와 같이 나중에 저런 구문을 능숙하게 다루어야 할 때가 오면
      그 때 따로 수련을 쌓으시는 것을 추천해드리고 지금은 그냥 따라해 보세요.

      그리고 두번째 쿼리의 JOIN이야 뭐 바로 다음 수업에서 배울 거니까 이것도 그냥 따라해 보시고요. ㅎㅎ


      INSERT INTO author (name, profile) SELECT DISTINCT author, profile FROM topic_backup;

      INSERT INTO topic (title, description, created, author_id) SELECT t.title, t.description, t.created, a.id FROM topic_backup AS t JOIN author AS a ON t.author = a.name;
    • Lucas Trowman
      완료!
    • OneJae EE
      20.04.24 금 / 37세 비전공자 / 완료
    • 한강
      굿모닝~~!!!^^ 200422
    • 감사합니다!
    • bigman
      감사합니다.
    • wombat
      03/23/20 학습완료!
    • 희진
      감사합니다
    • Goreng
      감사합니다.
    • crazylion
      감사합니다.
    • 매리미
      헉... 테이블을 분리하는 걸 일일이 수작업으로..
    • 반달곰
      감사합니다.^^
    • 감사합니다!
    • 마가레또
      20191203 완료
    • 완료
    • Ram Lee
      완료
    • 20191008 Ted 완료!
    • 굼벵이
      완료
    • Ray Kim
      제가 직접 만들어 보고 싶었지만... 방학이 거의 다 끝나가서 ㅠㅠ
    • 고잉고잉
      테이블을 만들 때 DEFAULT 옵션으로 NULL 을 주셨는데, 특별한 이유가 있을까요?
      DEFAULT NULL 옵션을 주지 않아도 NOT NULL을 주지 않았기 때문에 NULL 값이 허용되는 것 아닌가요?
    • 윤현
      감사합니다!
    • 위준우
      완료
    • 허공
      190508 감사합니다.
    • incursio
      감사합니다
    • supernet
      감사합니다.
    • 라또마니
      감사합니다.
    • 지미츄
      감사합니다
    • johnAhn
      감사합니다.
    • 게케게케
      감사합니닷
    • JuicyFresh
      감사합니다.
    • seoulee
      테이블을 분리한다는 개념
      완료,
    • sdalbsoo
      감사합니다. 2018.12.28.
    • 닐반
      2018. 12. 22.
    • Aaron Soon Woo Kwon
      완료
    • Gihoon Pomme Ryu
      완료. 고맙습니다.
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기