본문 바로가기
DB

DB - MySQL 기본 문법 정리

by 개발자 포비 2024. 12. 2.

MySQL 기본 문법 예시

데이터베이스 및 테이블 관리

데이터베이스 생성 및 선택

-- 데이터베이스 생성
CREATE DATABASE my_database;

-- 데이터베이스 선택
USE my_database;

테이블 생성

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

데이터 조작 (CRUD)

INSERT (데이터 추가)

-- 단일 행 삽입
INSERT INTO users (username, email, age) 
VALUES ('johndoe', 'john@example.com', 25);

-- 다중 행 삽입
INSERT INTO users (username, email, age) 
VALUES 
    ('alice', 'alice@example.com', 30),
    ('bob', 'bob@example.com', 35);

SELECT (데이터 조회)

-- 모든 컬럼 조회
SELECT * FROM users;

-- 특정 컬럼 조회
SELECT username, email FROM users;

-- 조건 검색
SELECT * FROM users WHERE age > 25;

-- 정렬
SELECT * FROM users ORDER BY age DESC;

-- 제한된 결과
SELECT * FROM users LIMIT 5;

-- 복합 조건
SELECT * FROM users 
WHERE age > 25 AND username LIKE 'j%';

UPDATE (데이터 수정)

-- 특정 행 업데이트
UPDATE users 
SET email = 'newemail@example.com' 
WHERE id = 1;

-- 다중 컬럼 업데이트
UPDATE users 
SET age = age + 1, username = CONCAT(username, '_updated') 
WHERE id = 2;

DELETE (데이터 삭제)

-- 특정 행 삭제
DELETE FROM users WHERE id = 3;

-- 조건부 삭제
DELETE FROM users WHERE age < 18;

고급 쿼리

JOIN

-- INNER JOIN
SELECT users.username, orders.product 
FROM users 
INNER JOIN orders ON users.id = orders.user_id;

-- LEFT JOIN
SELECT users.username, orders.product 
FROM users 
LEFT JOIN orders ON users.id = orders.user_id;

집계 함수

-- 평균, 합계, 최대/최소값
SELECT 
    AVG(age) AS average_age,
    SUM(age) AS total_age,
    MAX(age) AS max_age,
    MIN(age) AS min_age 
FROM users;

-- 그룹화
SELECT age, COUNT(*) AS user_count 
FROM users 
GROUP BY age 
HAVING user_count > 1;

서브쿼리

-- 서브쿼리 예시
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users);

테이블 수정

테이블 구조 변경

-- 컬럼 추가
ALTER TABLE users 
ADD COLUMN phone VARCHAR(20);

-- 컬럼 수정
ALTER TABLE users 
MODIFY COLUMN username VARCHAR(100);

-- 컬럼 삭제
ALTER TABLE users 
DROP COLUMN phone;

인덱스 및 제약조건

인덱스 생성

-- 단일 컬럼 인덱스
CREATE INDEX idx_username ON users(username);

-- 복합 인덱스
CREATE INDEX idx_name_email ON users(username, email);

외래키 제약조건

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    product VARCHAR(100),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

이 문서는 MySQL의 기본적인 문법과 주요 쿼리 유형을 covers하고 있습니다. 실제 사용 시에는 데이터베이스의 특성과 요구사항에 맞게 적절히 수정하고 조정해야 합니다.

'DB' 카테고리의 다른 글

DB N-N관계 풀어내기 예제  (0) 2024.12.06
DB - 인덱스  (0) 2024.12.03
DB - 정규화  (0) 2024.11.28
DB - 관계형 데이터 모델링 (3)  (1) 2024.11.28
관계형 데이터베이스 모델링 (2)  (1) 2024.11.26

댓글