스키마까지 만들었으니,
이젠 본격적으로 table을 만들겠습니다.
이제 SQL 이라는 걸 배울겁니다
SQL은 Structured Query Language입니다.
간단하게 말해서 SQL이란 데이터를 관리하기 위해 만들어진 특수 목적의 프로그래밍 언어입니다.
우리가 미국인하고 대화할땐 걔네가 한국어를 하던가, 우리가 영어를 하던가 이런 공통된 언어가 필요하듯이,
우리가 MySQL하고 대화하려면 SQL이라는 언어가필요한거 입니다.
이 언어의 특징은 일단 HTML만큼 쉽기때문에, 처음 접하기 좋습니다.
그리고 그 다음 특징은 정말 중요한 언어입니다.
가성비가 좋은거죠. 저사양 고효율 느낌?
본론으로 들어가서 table의 구조와 생성을 해보겠습니다.
뭐 table은 그냥 표 입니다.
word에서 표를 만들때 우리는 가로 몇칸, 세로 몇 칸 이렇게 만듭니다.
즉, 여기서도 가로, 세로가 필요한데, 가로는 row, 세로는 column 이라합니다.
이런 표를 만들어 보겠습니다.
일단 cmd로 세팅을 다 해줍시다.
cmd -> 경로 -> mysql -uroot -p -> 비밀번호
그리고 우리가 사용할 스키마를정해야합니다
USE 이름;
자세한 내용은 바로 전 포스팅을 참고해 주세요.
테이블을 만드는 방법은
CREATE TABLE 이름 (
c1 datatype(length)
c2 datatype(length)
)
(구글에서 가져왔습니다.)
입니다.
저는 TABLE_01로 이름을 지었습니다.
; 세미콜론을 안찍고 엔터를 누르시면 아래로 가실 수 있습니다.
(세미콜론 = 실행하겠다 입니다.)
여기서 c1은 아까 말한 콜론입니다. 즉 세로줄을 세팅하는겁니다.
그리고 데이터타입이라는건 우리가 넣을 이 데이터가 어떤 타입인지 적는겁니다.
데이터에는 숫자가 들어갈수도있고, 문자가 들어갈 수도있습니다.
우리는 일단은 제일 첫 세로줄인
number 여기를 작성할겁니다.
우리가 필요한건 1,2,3 이런 숫자들 입니다.
이런 숫자들의 공통점은 모두 정수 라는것이고 담아주는 datatype은 Int가 있습니다.
(Int는 Integer, 즉 정수의 약자 입니다.)
그리고 (length)는 숫자를 얼마만큼 넣을지 정하는게 아니라,
얼마만큼의 숫자를 노출시킬지 정하는겁니다.
보통 11을 많이 씁니다.
그 다음으로는, 우리가 number는 꼭 있어야지 번호 순서대로 보고싶은걸 보는데, 만약 이 번호가 안정해질경우,
순서대로 정렬이 힘듭니다.
그래서 이 number는 꼭 있어야하는거기 때문에, NOT NULL을 추가해줍니다.
그리고 우리가 지금은 1, 2, 3번이 다 인데, 나중에 4번 5번도 추가하고 싶습니다.
이걸 자동으로 추가해주는게 AUTO_INCREMENT 입니다.
이렇게 한게 이제 세로 한줄, 즉 1개의 column을 만든겁니다.
이제 두번째 column을 만들겠습니다.
두번째는 title이라는 카테고리에 들어있고, MySQL, MongoDB등 문자가 들어있습니다.
문자를 담는 datatype은 VARCHAR입니다. 255갯수의 글자까지 허용됩니다. 일단 100개정도만 보여주기로 하죠.
title역시 처음에 번호대로 자료를 찾고, 이 자료의 이름같은 부분이라 비어있을경우 혼란이 올겁니다.
여기서 NOT NULL을 추가해주어서 빈 칸으로 둘 수 없게 합시다.
다음은 description 입니다.
설명이라는 뜻이죠. 설명이 없어도, Oracle하면 아 데이터베이스구나 하는 감이 옵니다. 즉 설명은 빈칸이어도 우리는 이름(title)만 보고 이 셀이 뭘 의미하는지 알 수있는거죠. 그래서 이부분은 NOT NULL을 사용하지 않습니다.
datatype은 title보다는 많은 글자를 담을 수 있는 TEXT를 사용했습니다.
DataType부분은, 구글 검색엔진에 뭐 MySQL datatype 검색하시면 더 정확하게 나오니, 한번쯤은 검색 해 보시는걸 추천합니다.
다음은 date 입니다.
date는 있으면 좋기때문에 NOT NULL을 쓰겠습니다.
date를 담아주는 데이터타입으로는 DATETIME이 있습니다.
author은 간단하게 VARCHAR이랑 NULL로 만들겠습니다.
그리고 나중에 우리가 지금 만든 셀들을 보면 여떤걸 중심으로 셀들을 정리하면 좋을까요?
알파벳순으로 이름대로 정렬해도 좋고, 시간도 좋은데, 우리가 아까 만든 NUMBER 즉 번호순대로 정렬해주면 보기 좋겠죠?
그래서 이 테이블한테, 해당 가로열(row)에 대표가 되는 셀이 누구인지 알려줍시다.
PRIMARY KEY(대표가 되는게 누구인지) 입니다.
저는 number 가 대표니까, PRIMARY KEY(number) 입니다.
코딩이 끝나셨으면, ; 세미콜론을 마지막에 꼭 찍어줍시다.
그리고 중간중간에 , 콤마 깜빡하시면 안됩니다.!
이렇게 나오시면 됩니다.
뭐 1 warning이 있으니 일단 이걸 고쳐봅시다.
warning 내용이 궁금할땐,
show warnings; 라고 입력해주시면 됩니다.
저는 ; 세미콜론을 위에다 못찍어서 아래다가 찍었습니다.
warning code 1681:Integer display width is deprecated and will be removed in a future release.
입니다. 이걸 그대로 구글 검색엔진에 가져다 물어봅시다.
https://stackoverflow.com/questions/58938358/mysql-warning-1681-integer-display-width-is-deprecated
이런게 있는데
대충 해석해보면, 더이상 INT에 length를 정하는걸 지원 안한다고 합니다.
다음부터는 length를 적지말고 그냥 INT라고 쓰시면 될거같네요.
일단 이걸고쳐보자면,
이 코드를 입력해 주시면 됩니다.
결과적으론 warning도 다 잡았네요.
warning은 뭐 치명적인 오류는 아니라서 내비둬도 되는데, 찜찜하신분만 고치시면 됩니다.
다시 한번말하지만, 외우실 필요는없습니다. 저 역시 이런 warning은 검색엔진에서 찾아서 가져온겁니다.
여기까지 테이블 생성이었고, 다음에는 이제 이 만든 테이블에 입력 출력을 해보도록 하겠습니다.
추가로 테이블이 잘 만들어졌나 보려면
show tables; 입니다 :)
'Database (DB) > MySQL' 카테고리의 다른 글
[MySQL] 05. 관계형 데이터베이스가 중요한 이유 (0) | 2020.03.10 |
---|---|
[MySQL] 04. CRUD (데이터를 추가, 읽기, 수정, 삭제) (0) | 2020.03.08 |
[MySQL] 02. Schema, 스키마 (0) | 2020.03.07 |
[MySQL] 02. MySQL 구조 (0) | 2020.03.07 |
[MySQL] 01. MySQL 서버에 접속하기(00에 이어서 조금만 보충) (0) | 2020.03.07 |