상위 목록: 하위 목록: 작성 날짜: 읽는 데 40 분 소요

테이블(Table)

테이블(Table)행(Row)열(Column)의 형태를 갖는 모델을 이용하여 정렬된 데이터 집합의 모임입니다.

사용자 데이터의 입력, 수정, 삭제, 추출, 병합등 다양한 기능을 제공합니다.

테이블의 형태는 다음과 같은 형태로 구성됩니다.


  location date variant
1 Angola 2020-12-21 B.1.160
2 Angola 2020-12-21 B.1.620
3 Argentina 2020-12-21 B.1.258

행(Row)가로 방향의 데이터 집합을 의미하며, 열(Column)세로 방향의 데이터 집합을 의미합니다.

첫 번째 행의 데이터를 추출한다면, 1, Angola, 2020-12-21, B.1.160이 추출됩니다.

location 열의 데이터를 추출한다면, Angola, Angola, Argentina, ...이 추출됩니다.

테이블은 데이터를 저장하여 관리하고 활용하기 위한 용도로 사용됩니다.



테이블 생성

CREATE TABLE `covid`.`variants`
( 
    `location` VARCHAR(26),
    `date` DATE,
    `variant` VARCHAR(26),
    `num_sequences` INT,
    `perc_sequences` FLOAT,
    `num_sequences_total` INT
);

테이블을 생성하는 방법은 CREATE TABLE `{데이터베이스의 이름}`.`{테이블의 이름}`({열의 종류});의 구조로 명령어를 실행합니다.

테이블에는 행(Row)열(Column)이 존재합니다.

행(Row)은 실제 활용되는 데이터이며, 열(Column) 해당하는 데이터들의 속성을 의미합니다.

데이터가 하나도 존재하지 않을 수는 있지만, 해당하는 데이터들의 속성은 존재하기 때문에 열(Column)의 속성을 미리 정의합니다.


CREATE TABLE `covid`.`variants`
( 
    {열의 이름} {열의 데이터 속성},
    {열의 이름} {열의 데이터 속성},
    {열의 이름} {열의 데이터 속성},
    ...
);

열의 속성은 열의 이름열의 데이터 속성을 정의합니다.

이때 정의한 속성에 해당하는 데이터만 입력 및 저장이 가능합니다.


이름 명시 방법

CREATE TABLE covid.variants
CREATE TABLE `covid`.variants
CREATE TABLE covid.`variants`

데이터베이스의 이름, 테이블의 이름, 열의 이름 등은 다양한 방식으로 정의할 수 있습니다.

이름을 설정할 때, `를 포함하지 않아도 동일하게 테이블을 생성할 수 있습니다.

하지만 `를 사용하지 않고 데이터베이스, 테이블, 열 등의 이름을 정의한다면 특수한 경우에서 오류가 발생할 수 있습니다.

이런 경우에는 SQL의 예약어(reserved word)로 된 이름으로 정의했기 때문입니다.

이미 문법적으로 사용되고 있는 단어를 사용한다면 충돌이 발생합니다. 그러므로 가급적 `를 붙여 작성합니다.

  • Tip : 실행되는 환경이나 프로그램에 따라 `가 아닌 "로도 적용할 수 있습니다.


데이터 속성


숫자형 데이터 형식

데이터 형식 정의 범위 UNSIGNED 사용 유/무
BIGINT(n) 정수형 데이터 형식(LONG) -2^63 ~ 2^63 -1 O
INT(n) 정수형 데이터 형식 -2^31 ~ 2^31 - 1 O
MEDIUMINT(n) 정수형 데이터 형식 -2^23 ~ 2^23 - 1 O
SMALLINT(n) 정수형 데이터 형식 -2^15 ~ 2^15 - 1 O
TINYINT(n) 정수형 데이터 형식 -128 ~ 127 O
DECIMAL(m, d) 고정 소수형 데이터 형식 M의 최댓값을 따라감 X
FLOAT(n) 부동 소수점 데이터 형식 -1.79E+308 ~ 1.79E+308 X
DOUBLE(n) 부동 소수점 데이터 형식 -1.7976931348623157E+308 ~ -2.2250738585072014E-308 X
REAL 부동 소수점 데이터 형식 -1.7976931348623157E+308 ~ -2.2250738585072014E-308 X
  • n : 길이
  • m : 정밀도
  • d : 소수점 단위


문자형 데이터 형식

데이터 형식 정의 범위 비고
CHAR(n) 고정 길이 데이터 형식 0 ~ 255 바이트 지정된 길이보다 짧은 데이터를 입력한다면, 나머지 공간은 공백으로 채워짐
VACHAR(n) 가변 길이 데이터 형식 0 ~ 65,535 바이트 지정된 길이보다 짧은 데이터를 입력한다면, 나머지 공간은 공백으로 채워지지 않음
TINYTEXT(n) 문자열 데이터 형식 0 ~ 255 바이트  
TEXT(n) 문자열 데이터 형식 0 ~ 65,535 바이트  
MEDIUMTEXT(n) 문자열 데이터 형식 0 ~ 16,777,215 바이트  
LONGTEXT(n) 문자열 데이터 형식 0 ~ 4,294,967,295 바이트  
ENUM(val1, val2, val3, …) 열거형 데이터 형식   사용자 정의
정의된 데이터 중 1개의 값만 가짐
SET(val1, val2, val3, …) 목록형 데이터 형식   사용자 정의
정의된 데이터 중 0개 이상의 값을 가짐


이진 데이터 형식

데이터 형식 정의 범위 비고
BINARY(n) or BYTE(n) CHAR 형식의 이진 데이터 형식 0 ~ 255 바이트  
VARBINARY(n) VACHAR 형식의 이진 데이터 형식 0 ~ 65,535 바이트  
TINYBLOB(n) 이진 데이터 형식 0 ~ 255 바이트  
BLOB(n) 이진 데이터 형식 0 ~ 65,535 바이트  
MEDIUMBLOB(n) 이진 데이터 형식 0 ~ 16,777,215 바이트  
LONGBLOB(n) 이진 데이터 형식 0 ~ 4,294,967,295 바이트  


날짜 데이터 형식

데이터 형식 정의 표현 방법 비고
DATE 날짜 데이터 형식 YYYY-MM-DD  
TIME 시간 데이터 형식 hh:mm:ss  
DATETIME 날짜 및 시간 데이터 형식 YYYY-MM-DD hh:mm:ss  
TIMESTAMP 날짜와 시간 형태의 기간 표현 데이터 형식 YYYY-MM-DD hh:mm:ss 시스템 변경 시 자동으로 그 날짜와 시간이 저장
YEAR(n) 년도 데이터 형식 YYYY 2자리 또는 4자리 표현



테이블 조회

DESC `covid`.`variants`;

테이블 조회는 DESC `{데이터베이스의 이름}`.`{테이블의 이름}`;의 구조로 명령어를 실행합니다.

테이블을 조회하면 열의 이름, 열의 데이터 속성, Null 유/무, Key 유/무, 기본값, 설정 등을 확인할 수 있습니다.



테이블 수정

ALTER TABLE `covid`.`variants` RENAME `covid`.`country_variants`;

테이블을 수정하는 경우에는 ALTER TABLE을 통해 변경할 수 있습니다.

테이블의 이름 변경은 ALTER TABLE `{데이터베이스의 이름}`.`{기존 테이블의 이름}` RENAME `{데이터베이스의 이름}`.`{새로운 테이블의 이름}`;의 구조로 명령어를 실행합니다.


ALTER TABLE `covid`.`variants` COMMENT="국가별 감염자 수";

이외에도 테이블의 코멘트를 추가할 수 있습니다.

코멘트는 테이블에 설정하는 주석이며, 해당 테이블의 역할이나 특이사항 등을 작성합니다.

테이블에 코멘트를 추가하는 방법은 ALTER TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` COMMENT="{코멘트 내용}";의 구조로 명령어를 실행합니다.

이외에도 테이블의 스토리지 엔진을 수정하는 등의 테이블 수정 방법이 있습니다.

다음으로는 테이블의 열에 대한 내용을 확인해봅니다.


열 추가

ALTER TABLE `covid`.`variants` ADD `id` INT;

테이블에 열을 추가하는 방법은 ALTER TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` ADD `{열 이름}` `{열 속성}`;의 구조로 명령어를 실행합니다.

해당 구문을 실행하면 테이블의 가장 끝 열에 열이 추가됩니다.


ALTER TABLE `covid`.`variants`
ADD `id2` INT,
ADD `id3` INT;

쉼표(,)를 활용하여 한 번에 여러 개의 열을 추가할 수 있습니다.

또한, 열을 추가할 때 옵션을 설정할 수 있는데, 열의 옵션을 추가하려면 열 속성 뒷 부분에 다양한 설정을 작성합니다.

열의 옵션을 추가하는 방법은 다음과 같습니다.


ALTER TABLE `covid`.`variants` ADD `id` INT FIRST;
ALTER TABLE `covid`.`variants` ADD `id` INT AFTER `date`;
ALTER TABLE `covid`.`variants` ADD `id` INT NULL;
ALTER TABLE `covid`.`variants` ADD `id` INT NOT NULL;
ALTER TABLE `covid`.`variants` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE `covid`.`variants` ADD `description` VARCHAR(26) DEFAULT "-Description-";

FIRST 옵션은 테이블의 가장 앞 쪽에 열이 생성됩니다.

AFTER `{열 이름}`은 열 이름 뒷 쪽에 열이 생성됩니다.

NULL 옵션은 Null 값을 갖는 데이터를 추가할 수 있게됩니다.

NOT NULL 옵션은 Null 값을 갖는 데이터는 추가할 수 없습니다.

AUTO_INCREMENT 옵션은 해당 열에 데이터를 입력하지 않아도 값이 자동으로 증가하여 할당됩니다.

PRIMARY KEY 옵션은 해당 키를 기본 키로 설정합니다. 기본 키는 식별자로 주로 활용합니다.

DEFAULT "{값}" 옵션은 데이터가 추가될 때 갖게되는 기본값을 의미합니다.


식별자

식별자는 크게 기본 키(PRIMARY KEY)외래 키(Foreign key)가 있습니다.

기본 키는 특정 데이터를 구분할 수 있는 필드를 의미하며, 외래 키는 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키를 의미합니다.

가능한 모든 테이블에는 기본 키나 외래 키가 존재해야 하며, 만약 존재하지 않는다면 특정 데이터를 구분하기 어려울 수 있습니다.


열 수정

ALTER TABLE `covid`.`variants` CHANGE `description` `desc` VARCHAR(30);

테이블에 열을 수정하는 방법은 ALTER TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` CHANGE `{열 이름}` `{열의 새로운 이름} `{열의 새로운 속성}`;의 구조로 명령어를 실행합니다.

열을 수정하게 되면 열의 이름과 속성이 변경됩니다.

이름만 변경하거나 속성만 변경하려는 경우에는 기존 열의 이름 또는 형식과 동일한 값을 작성합니다.

열을 수정할 때, 데이터(행)가 존재하는 상태라면 데이터 변경이나 누락 등을 주의합니다.


ALTER TABLE `covid`.`variants` MODIFY `description` VARCHAR(25);

이번에는 CHANGE가 아닌 MODIFY를 통해 열을 수정합니다.

CHANGE열의 이름열의 속성까지 변경하지만, MODIFY열의 속성만 변경할 수 있습니다.

테이블에 열을 수정하는 방법은 ALTER TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` MODIFY `{열 이름}` `{열의 새로운 속성}`;의 구조로 명령어를 실행합니다.


ALTER TABLE `covid`.`variants`
MODIFY `description` VARCHAR(26),
MODIFY `num_sequences` DOUBLE;

쉼표(,)를 활용하여 한 번에 여러 개의 열을 수정할 수 있습니다.

열을 추가하는 방법과 비슷한 방식으로 여러 개의 열을 수정합니다.


ALTER TABLE `covid`.`variants` MODIFY COLUMN `id` INT FIRST;
ALTER TABLE `covid`.`variants` MODIFY COLUMN `id` INT NOT NULL;
ALTER TABLE `covid`.`variants` ALTER COLUMN `description` SET DEFAULT "WOW";

열을 추가할 때 옵션을 설정한 방법과 비슷하게 추가된 열에도 옵션을 부여할 수 있습니다.

단, 기본값을 할당할 때에는 ALTER COLUMN을 활용하여 기본값을 설정합니다.


열 삭제

ALTER TABLE `covid`.`variants` DROP COLUMN `id`;

테이블에 열을 삭제하는 방법은 ALTER TABLE `{데이터베이스의 이름}`.`{테이블의 이름}` DROP COLUMN `{열 이름}`;의 구조로 명령어를 실행합니다.

열을 삭제하는 경우 해당 열의 모든 데이터 또한 삭제됩니다.



테이블 삭제

DROP TABLE `covid`.`variants`;

테이블을 삭제하는 경우에는 DROP TABLE을 통해 삭제할 수 있습니다.

테이블의 이름 변경은 DROP TABLE `{데이터베이스의 이름}`.`{테이블의 이름}`;의 구조로 명령어를 실행합니다.

해당 테이블의 모든 데이터가 삭제되므로, 주의해서 사용합니다.

댓글 남기기