본문 바로가기

IT/SQL

[SQL] 테이블 만들기-create table

SQL 테이블 생성

테이블을 생성하는 방법 역시 간단하다.

CREATE TABLE 테이블 이름 (
    컬럼1 데이터타입,
    컬럼2 데이터타입,
    컬럼3 데이터타입,
    ...
);

CREATE TABLE이라고 말하고 그 뒤에 만들 테이블의 이름을 넣어준다.
괄호를 열고 테이블에 들어갈 컬럼과 그 컬럼의 타입을 기록한다. 컬럼 타입에는 int, varchar, date 등이 있다.

예시로 members라는 이름을 가진 테이블을 만들어 보도록 하자.

> CREATE TABLE members (
    memberID int,
    name varchar(255),
    address varchar(255),
    phone varchar(20)
);
Query OK, 0 rows affected (0.075 sec)
>
> desc members;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| memberID | int(11)      | YES  |     | NULL    |       |
| name     | varchar(255) | YES  |     | NULL    |       |
| address  | varchar(255) | YES  |     | NULL    |       |
| phone    | varchar(20)  | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.045 sec)

select * from members;
Empty set (0.120 sec)

CREATE TABLE을 했을 때, Query OK 라는 성공했다는 메시지를 볼 수 있다.
만들어진 테이블 정보를 확인하고 싶다면, desc members라고 입력해서 테이블 정보를 확인하면 된다.

memberID는 int 타입으로 숫자형식이고, name, address, phone은 varchar 타입으로 문자형식이다.
select문을 통해서 members 테이블 안의 데이터는 현재 없고 비어있는 것을 확인할 수 있다.

 


다른 테이블을 이용해서 새로운 테이블 만들기

기존에 존재하는 테이블을 가지고 새로운 테이블을 만들 수도 있는데, 이때 새 테이블은 기존 테이블에 있는 컬럼 정의를 그대로 가지고 온다. 기존 테이블에 있는 모든 컬럼을 가지고 와서 새 테이블을 만들 수도 있고, 기존 테이블의 일부 컬럼만 가지고 와서 새 테이블을 만들 수도 있다.

CREATE TABLE 새 테이블 이름 AS
    SELECT column1, column2,...
    FROM 기존 테이블 이름
    WHERE ....;

CREATE TABLE 뒤에 새로 만들 테이블 이름을 넣어주고, AS 뒤에 복사할 기존 테이블의 컬럼정보를 select문으로 가지고 오면 된다.

 

이번에는 위에서 만들었던 members 테이블의 이름과 주소 컬럼만 가지고 와서 새로운 테이블 member_home을 만들어 보도록 하자.

> create table member_home as
    -> select name, address
    -> from members;
Query OK, 0 rows affected (0.090 sec)
Records: 0  Duplicates: 0  Warnings: 0

desc member_home;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| name    | varchar(255) | YES  |     | NULL    |       |
| address | varchar(255) | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+
2 rows in set (0.058 sec)

member_home이라는 테이블이 만들어졌고, 컬럼은 기존의 members 테이블에 있던 name과 address 컬럼 정보가 그대로 복사된 것을 확인할 수 있다.

만약 members 테이블의 모든 컬럼을 그대로 member_home 테이블에 복사하고 싶다면, select * from을 넣어서 모든 컬럼을 지정해주면 된다.
  
** 기존 테이블을 가지고 새 테이블의 만들 경우, 기존 테이블의 데이터도 함께 가지고 옴을 확인할 수 있다.