이 글에서 이어집니다.
DB랑 테이블까지 무사히 만들었다면, 안에 들어갈 데이터를 만듭니다.
--주석을 넣을 땐 이렇게 INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES (데이터값1, 데이터값2, 데이터값3, ...)
저게 무슨 말이죠?
'필드이름'은 컬럼의 이름을 뜻합니다.아래 테이블을 예시로 작성해봅니다.
table name: food_category
id | nation |
---|---|
1 | korean |
2 | japanese |
3 | chinese |
4 | italian |
INSERT INTO food_category(id,nation)
--food_category테이블에 id,nation 순서대로 입력합니다.
VALUES
(1,"korean")--id=1,nation=korean
,(2,"japanese")--id=2,nation=japanese
,(3,"chinese")--id=3,nation=chinese
,(4,"italian")--id=4,nation=italian
;
완성.
그리고 저 테이블에서, korean
이라는 데이터의 id와 nation을 선택해 조회하고 싶습니다.
--1번째, id로 선택하기 SELECT id, nation FROM food_category WHERE id = 1; --2번째, nation으로 선택하기 SELECT id, nation FROM food_category WHERE nation = "korean";
여기서 "korean"
에 쌍따옴표를 붙여주는건 저 데이터 형태가 문자열이기 때문입니다.
그런데 솔직히 food_category라는 테이블 명이 너무 길어서 쓰기 귀찮습니다.
줄여 불러보자
SELECT id, nation FROM food_category food
WHERE id = 1;
테이블명 옆에다가 줄여 부르고 싶은 이름으로 한번 선언해주면 끝.
이제 한국 음식에는 어떤 게 있고, 일본 음식에는 어떤게 있는지 세부적인 데이터들이 들어가야겠죠?
일단
table name: food_category
id | nation |
---|---|
1 | korean |
2 | japanese |
3 | chinese |
4 | italian |
여기에 또다른 열을 추가해서 데이터를 넣는 방법도 있겠지만...
id | nation | food1 | food2 | food3 |
---|---|---|---|---|
1 | korean | 떡볶이 | 비빔밥 | 냉면 |
2 | japanese | 초밥 | 라멘 | 나베 |
3 | chinese | 마라탕 | 우육면 | 샤오롱바오 |
4 | italian | 피자 | 파스타 | 아란치니 |
이건 엑셀이 아니라 누가봐도 관리가 힘들어보입니다.
그래서 새 테이블을 만들어줄겁니다.
table name: foods
id food_name 1 떡볶이 2 비빔밥 3 냉면 4 초밥 .
.
그러면 food_category에 연결은 어떻게 하려고?
id | food_name | ref_category_id |
---|---|---|
1 | 떡볶이 | 1 |
2 | 비빔밥 | 1 |
3 | 냉면 | 1 |
4 | 초밥 | 2 |
이렇게 food_category의 id를 연결해주면 됩니다.
이것을 위해 mySQL는 foreign key(외래 키,이하 FK) 가 존재합니다.
그러면 다시 테이블부터 만드는 쿼리문.
CREATE TABLE `foods`( --이렇게 백틱을 이용해 스트링을 적어도 된다! `id` INT NOT NULL AUTO_INCREMENT `food_name` VARCHAR(200) NOT NULL `ref_category` INT NOT NULL --외계의 음식이 아닌 이상, 음식들은 하나의 국가 카테고리에 속해야 하기 때문에 NOT NULL을 넣었습니다. PRIMARY KEY `id` FOREIGN KEY (ref_cetegory_id) REFERENCES food_category(id) );
마지막 줄을 해석하자면
ref_cetegory_id
가 외래 키이며, 참조하는 키는food_category
의id
컬럼이라고 지정해주는 겁니다.
이렇게 되면 한 테이블의 컬럼이 어떤 테이블을 참조하는지 연결고리를 만들어줄 수 있습니다.
물론 저렇게 연결된 데이터를 보려면 또다른 방법이 필요합니다..
그건 나중에.