MySQL에서 테이블을 생성하는 SQL 문법은 무엇인가요?
_____A1: 기본 문법은 다음과 같습니다.
```sql
CREATE TABLE 테이블명 (
컬럼1 데이터타입 [제약조건],
컬럼2 데이터타입 [제약조건],
...
[테이블 제약조건]
);
```
---
Q2: 컬럼의 데이터 타입에는 어떤 것들이 있나요?
A2: 자주 사용하는 데이터 타입 예시는 다음과 같습니다.
- 정수형: INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT
- 문자열: VARCHAR(길이), CHAR(길이), TEXT
- 날짜/시간: DATE, DATETIME, TIMESTAMP, TIME, YEAR
- 기타: DECIMAL(정밀도), FLOAT, DOUBLE, BLOB 등
---
Q3: 컬럼 제약조건에는 어떤 것들이 사용되나요?
A3: 대표적인 제약조건은 다음과 같습니다.
- `NOT NULL`: NULL 값 허용 안 함
- `AUTO_INCREMENT`: 자동 증가 (주로 기본키와 함께 사용)
- `PRIMARY KEY`: 기본키 지정
- `UNIQUE`: 유일한 값만 허용
- `DEFAULT 값`: 기본값 설정
- `CHECK`: 값 제한 조건 (MySQL 8.0 이상에서 지원)
---
Q4: 예시로 간단한 테이블 생성 코드를 보여주세요.
A4: 예시 코드입니다.
```sql
CREATE TABLE members (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
reg_date DATETIME DEFAULT CURRENT_TIMESTAMP
);
```
---
Q5: 테이블 생성 시 문자 인코딩이나 저장 엔진을 지정할 수 있나요?
A5: 네, 가능합니다. 예를 들어 UTF-8 인코딩과 InnoDB 엔진을 지정하는 방법은 다음과 같습니다.
```sql
CREATE TABLE example (
col1 INT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
---
Q6: 테이블 생성 후 컬럼을 추가하거나 변경하는 방법은?
A6: 기존 테이블은 `ALTER TABLE` 문으로 수정합니다.
- 컬럼 추가:
```sql
ALTER TABLE 테이블명 ADD COLUMN 새컬럼명 데이터타입 [제약조건];
```
- 컬럼 변경:
```sql
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 새로운데이터타입 [제약조건];
```
---
Q7: 테이블 생성 시 외래키 제약조건을 걸려면 어떻게 하나요?
A7: 외래키는 다음과 같이 지정합니다.
```sql
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
```
---
요약
- `CREATE TABLE` 뒤에 테이블명과 괄호 안에 컬럼 정의 및 제약조건을 작성
- 컬럼명, 데이터타입, NOT NULL, PRIMARY KEY, AUTO_INCREMENT 등을 조합하여 정의
- 필요시 테이블 옵션으로 저장 엔진, 문자셋 설정 가능
- 외래키, UNIQUE 등 다양한 제약조건을 함께 설정할 수 있음
이 명령어는 데이터베이스 내에 새로운 테이블을 생성하는 데 사용되며, 테이블의 이름, 열(컬럼)의 이름, 데이터 타입, 제약 조건 등을 정의할 수 있습니다.
아래에서는 MySQL에서 테이블을 생성하는 기본적인 문법과 예제를 설명하겠습니다.
기본 문법 ```sql CREATE TABLE 테이블명 ( 열1 데이터타입 제약조건, 열2 데이터타입 제약조건, ... 열N 데이터타입 제약조건 ); ``` - 테이블명 : 생성할 테이블의 이름을 지정합니다.
테이블 이름은 데이터베이스 내에서 고유해야 합니다.
- 열 : 테이블에 포함될 각 열의 이름과 데이터 타입을 정의합니다.
각 열은 데이터 타입과 선택적으로 제약 조건을 가질 수 있습니다.
- 데이터타입 : 각 열에 저장될 데이터의 유형을 정의합니다.
MySQL에서 지원하는 데이터 타입에는 `INT`, `VARCHAR`, `DATE`, `FLOAT`, `BOOLEAN` 등이 있습니다.
- 제약조건 : 열에 대한 제약 조건을 정의하여 데이터의 무결성을 유지합니다.
예를 들어, `NOT NULL`, `UNIQUE`, `PRIMARY KEY`, `FOREIGN KEY` 등이 있습니다.
예제 다음은 간단한 사용자 정보를 저장하는 `users` 테이블을 생성하는 예제입니다.
```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password VARCHAR(25
5) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 설명: - `id`: 사용자 ID를 저장하는 열로, `INT` 타입이며 자동 증가(`AUTO_INCREMENT`) 속성을 가집니다.
이 열은 기본 키(`PRIMARY KEY`)로 설정되어 있어 각 레코드를 고유하게 식별합니다.
- `username`: 사용자 이름을 저장하는 열로, 최대 50자의 문자열(`VARCHAR(50)`)을 저장합니다.
이 열은 `NOT NULL` 제약 조건이 있어 반드시 값이 있어야 하며, `UNIQUE` 제약 조건이 있어 중복된 사용자 이름을 허용하지 않습니다.
- `email`: 사용자 이메일을 저장하는 열로, 최대 100자의 문자열(`VARCHAR(100)`)을 저장합니다.
이 열도 `NOT NULL` 및 `UNIQUE` 제약 조건이 있습니다.
- `password`: 사용자 비밀번호를 저장하는 열로, 최대 255자의 문자열(`VARCHAR(25
5)`)을 저장합니다.
이 열은 `NOT NULL` 제약 조건이 있습니다.
- `created_at`: 사용자가 생성된 날짜와 시간을 저장하는 열로, `TIMESTAMP` 타입입니다.
기본값으로 현재 시간을 자동으로 설정합니다.
추가적인 옵션 MySQL에서는 테이블 생성 시 다양한 추가 옵션을 사용할 수 있습니다.
예를 들어: - ENGINE : 테이블의 스토리지 엔진을 지정합니다.
예를 들어, `InnoDB`, `MyISAM` 등이 있습니다.
- CHARSET : 테이블의 문자 집합을 지정합니다.
예를 들어, `utf8mb4`를 사용하여 다양한 언어의 문자를 지원할 수 있습니다.
예를 들어, 다음과 같이 테이블을 생성할 수 있습니다.
```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL UNIQUE, password VARCHAR(25
5) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 결론 MySQL에서 테이블을 생성하는 것은 데이터베이스 설계의 중요한 부분입니다.
`CREATE TABLE` 문법을 통해 필요한 데이터 구조를 정의하고, 데이터의 무결성을 유지하기 위한 제약 조건을 설정할 수 있습니다.
다양한 데이터 타입과 제약 조건을 적절히 활용하여 효율적이고 안전한 데이터베이스를 구축하는 것이 중요합니다.
작성자:
정재민 [비회원]
| 작성일자: 1년 전
2024-09-20 08:05:20
조회수: 170 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 170 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.