본문 바로가기
데이터베이스/MySQL

[생활코딩] 4. SQL과 테이블 구조 / 테이블 생성

by 닉우 2020. 7. 27.

SQL : 어떤 컴퓨터언어보다 쉽고 중요하다.

압도적으로 많은 데이터베이스 시스템이 SQL을 통해서 동작하고, 우리가 알게 모르게

수많은 정보 서비스를 접하고 있다.

 

표를 table이라고 부르고 표의 수평을 row, record, 행이라고 부른다.

수직은 column, 열이라고 부른다.

 

 


테이블을 만들어 볼것인데 테이블을 수정하는 일은 많지만 아래처럼 생성하는 일은 많지않다.

 

cheat sheet를 보고 테이블을 작성해보자. (검색해서 다른 자료를 찾아도 좋다.)

 

먼저 어떤 데이터베이스, 스키마를 쓸지를 지정을 해준다.

글들을 topic이라는 이름의 표에 저장을 해보겠다.

id라는 이름의 열을 만들거고 정수 자료형을 지정해주겠다.

INT(11)에서 11은 검색을 했을 때 숫자를 얼마나 노출할 것인지 정하는 것이다.

ex) id값은 숫자만 입력, created 부분은 스트링으로 입력

 

제목 없이 글을 쓰는건 이상 하므로 행을 입력할 때 반드시 제목을 입력하도록 만들 수 있다. (NOT NULL)

id값이 없으면 수정, 삭제를 못하므로 이것도 필수(NOT NULL)로 지정해둔다. (학번이나 주민번호와 같다.)

하지만 본문은 나중에 작성할 수도 있는거니까 값이 없어도 되는것을 허용할 수 있다.

저런것들을 스프레드시트는 못하지만 MySQL은 할 수가 있다.

 

우리가 세 번째 행을 삭제한다고 누군가한테 이야기할때 어떤 방식이 효율적일까?

'SQL Server' 라는 값을 가진것을 삭제하라고 하면 다른 행,열에도 그 값을 가지고 있을수도 있으므로 낭패다.

그걸 회피하기 위해서는 id값이 3인 행을 삭제하라고 하는것이 좋다.

 

그리고 위 스프레드시트처럼 생성시 id 값이 1,2,3... 순으로 증가하길 원한다면 AUTO_INCREMENT 를 사용한다.

이렇게 하면 하나의 열을 지정한 것이다.

 

 

이제 두 번째 열(TITLE)을 만들어보자.

데이터 형식은 스트링이고, 제목이니까 문자 길이가 짧아야 된다. (100글자로 제한해보겠다.)

VARCHAR(100) 을 치면 된다. (VARCHAR는 255개의 문자까지 허용이 된다.)

TEXT는 65,535개의 문자가 허용되고, LONGTEXT는 4GB나 된다.

 

본문에는 TEXT를 사용하겠다. NULL 을 사용할건데,  값이 없는 것을 허용한다는 뜻이다.

created에는 생성한 시간을 나타낼건데, DATATIME을 사용하면 날짜와 시간을 모두 사용할 수 있다. 

 

author는 30글자쯤에서 자르면 될듯하다. (익명이 사용될 수 있으니 NULL을 주자.)

profile은 소개부분인데, 길 필요가 없으니 VARCHAR(100)를 써준다.

 

PRIMARY KEY(id) 는 데이터베이스에게 우리가 생성하는 topic table에 id열이 main key라고 알려주는 것이다.

(성능적인 측면과 중복을 방지하는 두 가지 측면이 있다.)

 

이 메시지가 보이면 테이블 생성에 성공한거다.

 

 

※ 생성했을때 패스워드 관련 에러가 발생하면 아래 명령어를 입력해준다.

SET PASSWORD = PASSWORD('비밀번호입력');

 

 

 

 

 

 

 

 

 

 

※ 본 포스팅은 개인 공부 기록을 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다.

댓글