실습용 테이블 구조 생성
DATABASE 생성
CREATE DATABASE practicemysql;
테이블 생성
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
signup_date DATE,
gendera ENUM('M', 'F'),
age INT
);

CREATE TABLE ordere (
order_id INT PRIMARY KEY,
customer_id INT,
product_name VARCHAR(100),
quantity INT,
total_price DECIMAL(10,2),
order_date DATE,
status ENUM('comleted', 'cancelled', 'pending'),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

샘플 데이터 삽입
INSERT INTO customers VALUES
(1, 'Alice', 'alice@example.com', '2023-01-10', 'F', 27),
(2, 'Bob', 'bob@example.com', '2023-02-15', 'M', 35),
(3, 'Charlie', 'charlie@example.com', '2023-03-20', 'M', 42),
(4, 'Diana', 'diana@example.com', '2023-01-25', 'F', 29)
;

INSERT INTO orders VALUES
(1001, 1, 'Protein Bar', 3, 15.00, '2023-04-01', 'completed'),
(1002, 2, 'Oatmeal Cookie', 2, 10.00, '2023-04-02', 'completed'),
(1003, 1, 'Vegan Snack', 5, 25.00, '2023-04-05', 'cancelled'),
(1004, 3, 'Granola Pack', 1, 8.00, '2023-04-06', 'completed'),
(1005, 4, 'Protein Bar', 2, 10.00, '2023-04-07', 'pending')
;

조건 필터링
<여성 고객만 조회>
SELECT * FROM customers WHERE gender = 'F';

<가격이 10 이상인 주문만 조회>
SELECT * FROM orders WHERE total_price >= 10;

정렬과 제한
<가격이 높은 순으로 주문 정렬>
SELECT * FROM orders ORDER BY total_price DESC;

<가장 최근 주문 2건만 조회>
SELECT * FROM orders ORDER BY order_date DESC LIMIT 2;

문자열/숫자 처리
<고객 이름과 이메일을 합쳐서 보여주기>
SELECT name, CONCAT(name, ' <', email, '>') AS contact_info FROM customers;

<이메일 주소에서 도메인만 추출>
SELECT email, SUBSTRING_INDEX(email, '@', -1) AS domain FROM customers;

조건 분기 처리
<주문 상태별로 메시지 표시>
SELECT order_id, status,
CASE
WHEN status = 'completed' THEN '배송 완료'
WHEN status = 'cancelled' THEN '취소됨'
ELSE '처리 중'
END AS status_message
FROM orders;
