반응형
MySQL은 데이터베이스 관리에 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)입니다. CREATE 명령어는 데이터베이스, 테이블, 뷰, 인덱스 등을 생성할 때 사용하는 SQL 문입니다.
CREATE DATABASE: 데이터베이스 생성
CREATE DATABASE 명령어는 새로운 데이터베이스를 생성할 때 사용됩니다. 데이터베이스는 데이터를 저장할 테이블과 기타 객체를 포함하는 논리적인 컨테이너입니다.
문법
CREATE DATABASE 데이터베이스명;
옵션 설명
- IF NOT EXISTS: 동일한 이름의 데이터베이스가 이미 존재하는 경우 에러를 방지합니다.
- CHARACTER SET: 데이터베이스의 문자 집합을 지정합니다.
- COLLATE: 데이터 정렬 방식을 설정합니다.
예제
-- 기본 데이터베이스 생성
CREATE DATABASE my_database;
-- 동일한 이름의 데이터베이스가 있을 경우 생성을 무시
CREATE DATABASE IF NOT EXISTS my_database;
-- 문자 집합과 정렬 방식 지정
CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
CREATE TABLE: 테이블 생성
CREATE TABLE 명령어는 데이터를 저장할 테이블을 생성합니다. 테이블은 **행(Row)**과 **열(Column)**로 구성되며, 각 열은 데이터 유형과 속성을 가집니다.
문법
CREATE TABLE 테이블명 (
열1 데이터타입 [속성],
열2 데이터타입 [속성],
...
);
옵션 설명
- PRIMARY KEY: 테이블에서 각 행을 고유하게 식별할 수 있는 열을 지정합니다.
- AUTO_INCREMENT: 숫자 데이터가 자동으로 증가하도록 설정합니다.
- DEFAULT: 열에 기본값을 지정합니다.
- NOT NULL: 특정 열에 NULL 값을 허용하지 않습니다.
예제
-- 기본 테이블 생성
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 복합 PRIMARY KEY 설정
CREATE TABLE orders (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
반응형
CREATE INDEX: 인덱스 생성
인덱스는 테이블 검색 속도를 향상시키기 위해 사용됩니다. 인덱스를 생성하면 특정 열에 대한 데이터를 빠르게 검색할 수 있습니다.
문법
CREATE INDEX 인덱스명 ON 테이블명(열명);
예제
-- 단일 열에 인덱스 생성
CREATE INDEX idx_username ON users(username);
-- 여러 열에 인덱스 생성
CREATE INDEX idx_order_product ON orders(order_id, product_id);
CREATE VIEW: 뷰 생성
뷰(View)는 하나 이상의 테이블에서 데이터를 조회하기 위한 가상 테이블입니다. 실제 데이터를 저장하지 않으며, 쿼리를 단순화하고 재사용성을 높입니다.
문법
CREATE VIEW 뷰명 AS
SELECT 열1, 열2
FROM 테이블명
WHERE 조건;
예제
-- 전체 사용자 데이터를 조회하는 뷰 생성
CREATE VIEW all_users AS
SELECT id, username, email
FROM users;
-- 특정 조건을 가진 데이터를 조회하는 뷰
CREATE VIEW recent_orders AS
SELECT order_id, product_id, quantity
FROM orders
WHERE created_at > NOW() - INTERVAL 30 DAY;
복잡한 예제: 사용자와 주문 테이블
다음은 데이터베이스와 여러 테이블을 생성하고 관계를 설정하는 종합 예제입니다.
-- 데이터베이스 생성
CREATE DATABASE ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
-- 데이터베이스 사용
USE ecommerce;
-- 사용자 테이블 생성
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(15),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 제품 테이블 생성
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 주문 테이블 생성
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(10, 2),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- 주문 상세 테이블 생성
CREATE TABLE order_details (
order_detail_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
실제로 CREATE를 실행하는 방법
- MySQL Workbench 사용: GUI 환경에서 SQL 명령어를 실행할 수 있습니다.
- Command Line Interface(CLI): MySQL CLI에서 SQL 명령어를 직접 실행할 수 있습니다.
- PHPMyAdmin: 웹 기반의 MySQL 관리 도구를 활용해 쉽게 실행 가능합니다.
참고
MySQL 공식 문서: https://dev.mysql.com/doc/refman/8.0/en/
반응형
'DB' 카테고리의 다른 글
[MySQL] RENAME 완벽 가이드 사용법(테이블명 변경) (0) | 2024.12.23 |
---|---|
[MySQL] TRUNCATE 완벽 가이드 사용법(테이블의 모든 데이터 삭제) (0) | 2024.12.23 |
[MySQL] DROP 완벽 가이드 사용법(데이터베이스와 객체 삭제) (0) | 2024.12.22 |
[MySQL] ALTER 완벽 가이드 사용법(테이블 수정) (0) | 2024.12.19 |
SQL LIKE 연산자 (0) | 2024.11.26 |
ORDER BY 특정 값으로 정렬 (0) | 2017.04.27 |
오라클 SYNONYM(별칭) 설정 (0) | 2016.05.27 |
오라클 타 계정에 권한 부여 (0) | 2016.05.27 |