Mysql 첫걸음-데이터 다루기

LSA·2022년 3월 26일
0

Mysql

목록 보기
2/2
post-thumbnail

데이터를 다뤄보자

이 글에서 이어집니다.
DB랑 테이블까지 무사히 만들었다면, 안에 들어갈 데이터를 만듭니다.

데이터 생성

INSERT INTO

--주석을 넣을 땐 이렇게
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
   VALUES (데이터값1, 데이터값2, 데이터값3, ...)

저게 무슨 말이죠?
'필드이름'은 컬럼의 이름을 뜻합니다.아래 테이블을 예시로 작성해봅니다.
table name: food_category

idnation
1korean
2japanese
3chinese
4italian
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
   ;

완성.

특정한 데이터 선택

WHERE

그리고 저 테이블에서, 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;

테이블명 옆에다가 줄여 부르고 싶은 이름으로 한번 선언해주면 끝.

외래 키로 연결하기

FOREIGN KEY/REFERENCES

이제 한국 음식에는 어떤 게 있고, 일본 음식에는 어떤게 있는지 세부적인 데이터들이 들어가야겠죠?
일단
table name: food_category

idnation
1korean
2japanese
3chinese
4italian

여기에 또다른 열을 추가해서 데이터를 넣는 방법도 있겠지만...

idnationfood1food2food3
1korean떡볶이비빔밥냉면
2japanese초밥라멘나베
3chinese마라탕우육면샤오롱바오
4italian피자파스타아란치니

이건 엑셀이 아니라 누가봐도 관리가 힘들어보입니다.
그래서 새 테이블을 만들어줄겁니다.

table name: foods

idfood_name
1떡볶이
2비빔밥
3냉면
4초밥

.
.

그러면 food_category에 연결은 어떻게 하려고?

idfood_nameref_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_categoryid컬럼이라고 지정해주는 겁니다.

이렇게 되면 한 테이블의 컬럼이 어떤 테이블을 참조하는지 연결고리를 만들어줄 수 있습니다.
물론 저렇게 연결된 데이터를 보려면 또다른 방법이 필요합니다..
그건 나중에.

profile
진짜 간단하게 작성한 TIL 블로그

0개의 댓글