껄껄껄
코딩무새입니다.
MySQL에서 테이블을 생성 해보겠습니다.
테이블 생성 ( 기본 )
기본적인 테이블 생성입니다.
아래 쿼리로 생성합니다.
CREATE TABLE {TABLE_NAME} (
COLUMN1 TYPE {OPTION},
COLUMN2 TYPE {OPTION},
COLUMN3 TYPE {OPTION},
...
);
주로 사용하는 옵션으로는 PK의 경우 AUTO_INCREMENT PRIMARY KEY가 있구요.
NULL OR NOT NULL도 자주 사용합니다.
데이터 형식의 경우 CURRENT_TIMESTAMP라는 기본 값을 지정해서 자동으로 생성 시간을 쌓아줄수도 있어요.
우선 DB를 선택해줍니다.
USE codingparrot
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 기본 키 및 자동 증가
username VARCHAR(50) NOT NULL, -- 사용자 이름, NULL 불가
email VARCHAR(100) NOT NULL UNIQUE, -- 이메일, 고유 값
password_hash VARCHAR(255) NOT NULL, -- 비밀번호 해시 저장
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 생성 시각 기본값 현재 시간
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 업데이트 시각
);
위와 같이 users 테이블을 생성해보았는데요.
id를 PK로 지정하여 자동 인덱스 증가 옵션을 적용했습니다.
username, email, password_hash의 경우 필수로 데이터를 받고싶어서 NOT NULL로 지정했어요.
그리고 email의 경우 고유한 값을 유지하기위해 UNIQUE 옵션 값을 추가해주었습니다.
생성일과 수정일의 경우 CURRENT_TIMESTAMP라는 기본값을 지정하였어요.
테이블 명세서가 보고싶으시면 아래 커멘드를 입력하세요.
DESC {TABLE};
DESC users;
+---------------+--------------+------+-----+-------------------+-----------------------------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+-------------------+-----------------------------------------------+
| id | int | NO | PRI | NULL | auto_increment |
| username | varchar(50) | NO | | NULL | |
| email | varchar(100) | NO | UNI | NULL | |
| password_hash | varchar(255) | NO | | NULL | |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
| updated_at | timestamp | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
+---------------+--------------+------+-----+-------------------+-----------------------------------------------+
6 rows in set (0.00 sec)
방금 만든 테이블의 명세서가 노출됩니다.
다른 테이블 구조 복사
특정 테이블과 동일한 구조가 필요하거나 일부 컬럼만 추가해야되는 경우 유용하게 쓰입니다.
CREATE TABLE {TABLE_NAME}
AS
SELECT {COLUMNS}
FROM {TABLE_NAME}
WHERE {CONDITIONS};
아까 만든 users 테이블에서 id와 name만 복사해서 테이블을 만들어 보겠습니다.
CREATE TABLE users_temp
AS
SELECT id, username
FROM users
WHERE 1 = 2;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
DESC users_temp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | NO | | 0 | |
| username | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
테이블이 잘 생성된 것을 확인 할 수 있습니다.
여기서 WHERE 1 = 2 는 구조만 복사해서 생성하고 싶은 테이블에 데이터가 있는 경우 사용합니다.
WHERE 조건인 참이 아닌경우 컬럼만 조회되거든요. 껄껄껄
지금까지 테이블 생성하는 방법에 대해서 알아보았습니다.
테이블 설계와 생성은 할수록 생각할거리도 많고 깊어질 수 있습니다.
즐겁게 설계를 해보아요.
'IT무새 > Database' 카테고리의 다른 글
[MySQL] 테이블 조회 | SELECT (5) | 2025.01.16 |
---|---|
[MySQL] 데이터 삽입 | INSERT INTO (1) | 2025.01.16 |
[MySQL] 테이블 삭제 | DROP TABLE (5) | 2025.01.16 |
[MySQL] DB CREATE, SELECT, DELETE (2) | 2025.01.14 |
What is SQL? (1) | 2025.01.14 |