테이블 생성하기

Hevton·2020년 9월 2일
0
post-custom-banner

이번 글에서는 SQL 쿼리를 이용해 테이블을 생성하는 방법을 담아보겠습니다. 테이블을 생성하는 명령어는 CREATE TABLE 테이블이름( 컬럼 정보들 ...); 이렇다고 볼 수 있습니다. 백문이 불어일견 먼저 제가 입력한 부분을 보시고 설명해드리겠습니다.

mysql> CREATE TABLE student(
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(100) NOT NULL,
    -> profile VARCHAR(100) NULL,
    -> PRIMARY KEY(id));

아주 자세하게 설명해드릴 테니 따라오시면 됩니다. 우선 CREATE TABLE을 입력하시고 그 뒤에 생성할 테이블 명을 넣어주세요.
저같은 경우는 student라는 이름을 지어줬습니다. 그리고 괄호를 여시면 되는데, 화살표는 입력해 주시는 게 아닙니다. 말씀드렸다시피 SQL문의 명령어 단위는 세미콜론으로 끝나는 기준이기 때문에 엔터를 치신다고 해도 명령어가 실행되지 않습니다. 단지 가독성을 높이기 위해서 엔터를 칠 수 있는 것이죠. 저는 괄호를 열고 엔터를 입력했습니다. 그러면 저렇게 화살표가 따라오게 됩니다. 거기에 이어서 코드를 입력해 주시면 됩니다.
괄호를 열고 데이터 타입들, 즉 컬럼이 다룰 정보들을 차례로 입력해 주시면 되는데 우선 컬럼명 자료형 순으로 입력하시는게 기본 틀이 되겠습니다. 그리고는 선택 옵션들을 붙여도 되는 것이구요. 저는 학생 정보에 대한 테이블을 만들 것이기에 첫번째 컬럼으로는 id로 지정했습니다. 이는 INT형으로 지정할 것이며, 괄호 안에 있는 11을 Mysql에서 자릿수라고 생각하실 수 있는데 그게 아니라 INT 안의 괄호는 나중에 쓰일 ZEROFILL 속성을 위한 것인데 지금 자세히 다룰 필요는 없고, 일단 보통 11로 지정하는게 좋습니다. 자릿수가 아니기 때문에 INT(1) 이나 INT(11)이나 데이터를 담을 수 있는 크기는 그냥 동일합니다. 그리고 뒤에 NOT NULL이라고 입력해준 것은, 해당 데이터의 입력이 없으면 안된다는 뜻입니다. 즉 데이터가 공백으로 생성되어서는 안되는 데이터라고 지정해준겁니다. 그리고 뒤에 AUTO_INCREMENT는 제가 id 값을 데이터에 따라 차례로 0에서 1씩 증가하여 겹치치 않도록 지정해 줄 예정이어서 Mysql에게 데이터가 추가될 때 마다 알아서 1씩 증가해서 넣어달라고 부탁했다고 보시면 됩니다. 그리고 둘째 셋째줄에 VARCHAR이 등장하게 되는데, CHAR과 VARCHAR의 차이점은 불변이나 가변이냐의 차이입니다. 그리고 이때의 괄호는 아까 INT형과는 다르게 데이터 크기를 말해줍니다. 이는 자료형에 종류 따라 괄호의 의미가 조금 다른 부분이 있기 때문인데 해당 부분에 대해 더 알아보시고 싶거나 데이터 타입에 대해서도 더 알아보시고 싶으시면 아래 사이트를 참고하시기 바랍니다.

www.techonthenet.com/mysql/datatypes.php

다시 돌아와서 VARCHAR과 CHAR에 대해 설명드리겠습니다.
VARCHAR(20)과 CHAR(20)가 있을때 데이터의 입력을 받는다고 가정해보겠습니다. 사용자가 2바이트를 입력할 경우에
VARCHAR는 똑똑하게도 입력 크기 2바이트만큼만을 차지하게 되는데 CHAR일 경우 부족한 부분 만큼 공백으로 채우면서 항상 20바이트의 크기를 무조건 채운다는 것입니다. (물론 데이터를 읽어들일 때에는 공백을 자동으로 제거합니다. 하지만 불필요한 데이터 공간이 낭비되는 것입니다.) 입력한 데이터가 최대크기보다 작을 때에는 두 자료형이 다르게 작용하지만, 입력한 데이터가 최대 크기일 경우에는 두 자료형 다 동일하게 오버된 부분만큼은 자르게 됩니다.

그리고 맨 마지막에 PRIMARY KEY(id) 라고 지정해 준 코드가 있는데, PRIMARY KEY는 자료를 대표하는, 겹치지 않는, 또는 자료들 끼리 구분할 수 있는 식별자의 역할을 말합니다. 많은 레코드(=행) 들이 있을 때, 이 데이터들을 구분하기 위해서 사용되는 만큼 레코드들 끼리 정보가 겹쳐서는 안됩니다. 제가 id 값을 아까 데이터마다 0부터 차례로 1씩 증가하라고 지정해놨으니 이 값은 자료들마다 겹치지 않는 고유의 값이 되게 됩니다. 따라서 이 값을 PRIMARY KEY로 지정해 줬습니다.

입력을 완료하시고 문제가 없다면 Query OK 라는 문구가 나오게 됩니다.

profile
놀만큼 놀았다.
post-custom-banner

0개의 댓글