생활코딩

Coding Everybody

코스 전체목록

닫기

테이블 분리하기

--
-- 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. 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;
  2. Lucas Trowman
    완료!
  3. OneJae EE
    20.04.24 금 / 37세 비전공자 / 완료
  4. 한강
    굿모닝~~!!!^^ 200422
  5. 감사합니다!
  6. bigman
    감사합니다.
  7. wombat
    03/23/20 학습완료!
  8. 희진
    감사합니다
  9. Goreng
    감사합니다.
  10. crazylion
    감사합니다.
  11. 매리미
    헉... 테이블을 분리하는 걸 일일이 수작업으로..
  12. 반달곰
    감사합니다.^^
  13. 감사합니다!
  14. 마가레또
    20191203 완료
  15. 완료
  16. Ram Lee
    완료
  17. 20191008 Ted 완료!
  18. 굼벵이
    완료
  19. Ray Kim
    제가 직접 만들어 보고 싶었지만... 방학이 거의 다 끝나가서 ㅠㅠ
  20. 고잉고잉
    테이블을 만들 때 DEFAULT 옵션으로 NULL 을 주셨는데, 특별한 이유가 있을까요?
    DEFAULT NULL 옵션을 주지 않아도 NOT NULL을 주지 않았기 때문에 NULL 값이 허용되는 것 아닌가요?
  21. 윤현
    감사합니다!
  22. 위준우
    완료
  23. 허공
    190508 감사합니다.
  24. incursio
    감사합니다
  25. supernet
    감사합니다.
  26. 라또마니
    감사합니다.
  27. 지미츄
    감사합니다
  28. johnAhn
    감사합니다.
  29. 게케게케
    감사합니닷
  30. JuicyFresh
    감사합니다.
  31. seoulee
    테이블을 분리한다는 개념
    완료,
  32. sdalbsoo
    감사합니다. 2018.12.28.
  33. 닐반
    2018. 12. 22.
  34. Aaron Soon Woo Kwon
    완료
  35. Gihoon Pomme Ryu
    완료. 고맙습니다.
  36. 오고잉
    수업하다가 들어보는건데 재밌네요
  37. 삼고잉
    분리된 두 테이블을 생성하고 각 테이블에 정보를 삽입해서 조인을 하기위한 준비가 완성되었네요
  38. 외래키이이이
    외래키에 대한 설명은 없을까요 혹시,,,,,,,, 외래키가 너무 이해가 안되어서..........
  39. 두군
    영상에서는 topic, id 등을 그냥 입력하셨는데 예시에는 'topic', 'id' 이렇게 표시하셨는데 어떤 차이가 있는 거고 이유가 무엇인가요?
  40. 반자동
    그렇군요
  41. 유닉스가이
    감사합니다.
  42. nekisse
    다른 cdm창에서 mysql접속후 use 데이터베이스명; 을 다시 지정해주셔야해요
    대화보기
    • moon
      감사합니다.
    • egoing
      use를 하셨나요?
      대화보기
      • 코딩 입문자
        안녕하세요. 실습을 따라 가던 중 막히는 부분이 있어 이렇게 질문 드립니다.
        먼저 topic_backup에 대한 표를 생성해 놓은 후, 또 다른 CMD창을 켜서 이고잉 님과 똑같이
        작업을 했는데 계속해서 " No database selected" 라는 문구가 뜹니다.
        이러한 상황에서는 어떻게 해야 되는지요?
      • 백현성
        테이블 생성 후
        INSERT INTO author (name, profile) SELECT DISTINCT author, profile FROM topic_backup;
        INSERT INTO topic SELECT topic_backup.id, title, descripton, created, author.id FROM topic_backup JOIN author ON author.name = topic_backup.author;
      • 생활눈코입딩
        프라이머리 마지막에 세미콜론이 빠져있습니다!
      • hwan
        답변이 늦었는데 터미널 에서 접속하시면 됩니다. 윈도우의 경우 CMD 창에서 mysql -uroot -p 입력하시면 됩니다.
        대화보기
        • 바람과 나무
          감사합니다.
        • Seung Ji Lim
          안녕하세요. 좋은 영상 올려주셔서 정말 감사합니다. 영상을 보다 궁금한 점이 있어서 질문 남깁니다. 영상에서는 table을 분리할때 여러개의 터미널을 켜서 1. 테이블 표시용 2. 테이블 수정용 등으로 터미널을 사용하셨습니다. 이때 특정 에디터를 사용하신건가요?? mysql의 경우 여러 터미널 (cmd창)으로 접속해도 괜찮은 것인가요?? mysql editor를 검색할 경우 workbench만 나옵니다. 감사합니다.
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기