MySQL 문법
MySQL 문법
데이터베이스
생성
1
2
CREATE
DATABASE my_database
삭제
1
2
DROP
DATABASE my_database
사용
1
2
USE
my_database
조회
1
2
SHOW
my_database
DDL
테이블 생성
1
2
3
4
5
6
7
8
9
CREATE TABLE customers
(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
join_date DATETIME DEFAULT CURRENT_TIMESTAMP
);
1
2
3
4
5
6
7
8
9
10
CREATE TABLE orders
(
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
quantity INT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(20) NOT NULL DEFAULT '주문접수',
CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id)
REFERENCES customers (customer_id),
);
날짜와 기본 값 설정 옵션
1
2
3
4
5
CREATE TABLE test
(
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
AUTO_INCREMENT
- 데이터 입력 시, 자동으로 1씩 값이 증가한 데이터가 삽입 됩니다.
외래 키 제약 조건
1
2
3
4
CONSTRAINT [제약조건_이름]
FOREIGN KEY ([자식_테이블의_컬럼명])
REFERENCES [부모_테이블명]([부모_테이블의_컬럼명])
-- [ON DELETE 옵션] [ON UPDATE 옵션]
테이블 변경
Column 추가
1
2
ALTER TABLE customers
ADD COLUMN point INT NOT NULL DEFAULT 0;
Column 데이터 타입 변경
1
2
ALTER TABLE customers
MODIFY COLUMN address VARCHAR (500) NOT NULL;
Column 삭제
1
2
3
ALTER TABLE customers
DROP
COLUMN point;
테이블 삭제
1
DROP TABLE table
DROP TABLE vs TRUNCATE TABLE
DROP TABLE: 테이블 존재 자체를 삭제TRUNCATE TABLE: 내부 데이터만 모두 삭제
DML
등록
1
2
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
수정
1
2
3
4
UPDATE table_name
SET column1 = value1,
column2 = value2, ...
WHERE condition;
삭제
1
2
3
DELETE
FROM table_name
WHERE condition;
조회
💡 SQL 작동 순서
FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY->LIMIT
1
2
3
4
5
6
7
8
SELECT customer_name,
SUM(price * quantity) AS total_purchase -- 5단계
FROM order_stat -- 1단계
WHERE order_date < '2025-05-14' -- 2단계
GROUP BY customer_name -- 3단계
HAVING COUNT(*) >= 2 -- 4단계
ORDER BY total_purchase DESC -- 6단계
LIMIT 1; -- 7단계
SELECT: 조회 할 열 선택.*은 전체FROM: 조회할 테이블 선택WHERE: 검색 조건GROUP BY: 그룹핑HAVING: 그룹 필터링ORDER BY: 정렬ASC: 오름차순DESC: 내림차순
LIMIT: 조회할 레코드 개수
집계 함수
AVG: 평균 값COUNT(*): 전체 행 수COUNT(열이름): NULL이 아닌 행 수MAX: 최대 값MIN: 최소 값SUM: 합계
💡 GROUP BY 서용 시 주의사항
SELECT 절에는 GROUP BY 컬럼이나, 집계함수만 올 수 있음
DISTINCT 중복 제거
1
2
SELECT DISTINCT 컬럼명
FROM 테이블명;
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.