샘플 데이터 테이블 생성
CREATE TABLE <...> SELECT <...>
설명
CREATE TABLE emp (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
age INT NULL
);
INSERT INTO emp VALUES
(11111, 'David', 34),
(22222, 'Jiyeon', 29),
(33333, 'Roy', 31),
(44444, 'John', 23);
위와 같은 테이블을 생성한 뒤 4개의 데이터를 집어 넣었다. emp 테이블에는 아래와 같이 data들이 들어있게 된다.
만약, 이 테이블에서 name COLUMN 만 따로 가져와서 emp_names 테이블을 따로 만들고 싶다면 어떻게 해야할까? 아래와 같이 하면 된다.
[첫 번째 방법]
CREATE TABLE emp_names (
name VARCHAR(30) NOT NULL
);
우선, 새로운 테이블을 CREATE 한다. emp 테이블의 name COLUMN 만으로 이루어진 테이블을 만들 것 이므로 위와 같이 정의를 하였다. 이 새로운 테이블에 emp 테이블의 name COLUMN 만 집어넣을 땐 아래와 같이 집어넣으면 된다.
INSERT INTO emp_names
SELECT name
FROM emp;
emp 테이블의 name COLUMN data들을 emp_names 테이블에 INSERT 하게 된다. 그러면 emp_names 테이블에는 아래와 같이 data들이 삽입 되어있게 된다.
[두 번째 방법]
CREATE TABLE emp_names2 AS
SELECT name FROM emp;
만약 테이블을 CREATE 한 뒤 INSERT 를 하는게 아니라 한번에 샘플 데이터 테이블을 생성하고 싶다면, 위와 같이 `AS`를 사용하여 한번에 생성할 수 있다.
그렇다면, 만약 emp 테이블에서 두 개의 COLUMN 을 가지고 새로운 테이블을 만들고 싶다면?
# 첫 번째 방법
CREATE TABLE emp_names_ages (
name VARCHAR(30) NOT NULL,
age INT NOT NULL
);
INSERT INTO emp_names_ages
SELECT name, age
FROM emp;
# 두 번째 방법
CREATE TABLE emp_names_ages2 AS
SELECT name, age FROM emp;
위와 같이 emp 테이블로부터 원하는 COLUMN 만 더 SELECT 를 해 주면 된다.
마지막으로, 현재 테이블을 복사하고 싶다면 예상하듯 아래와 같이 하면 된다.
CREATE TABLE emp_copy AS
SELECT * FROM emp;
728x90
'Data Base > SQL' 카테고리의 다른 글
MySQL) WITH절을 이용한 비재귀적 CTE (0) | 2022.01.04 |
---|---|
MySQL) ON DUPLICATE KEY UPDATE (0) | 2022.01.04 |
MySQL) AUTO_INCREMENT (0) | 2022.01.04 |
MySQL) 층간 합계 (ROLLUP) (0) | 2021.12.28 |
SQL) 문자열 다루기_2 (LOCATE/LEFT/RIGHT/LOWER/UPPER) (0) | 2021.09.10 |
댓글