아직 실무를 하고 있지 않은 취준생이 SQL을 공부하기 위해서는
영상을 참고하거나 아니면 검색으로 데이터들을 찾아서 집어넣어야 한다.
PM의 주요 업무는 데이터베이스를 생성하고 테이블에 데이터를 넣는 것이 아닌
기능을 설계할 때 수집해야할 데이터를 이해하고
원하는 데이터를 보기 좋은 방식으로 꺼내보는 일이기때문에
이번글에서는 바로 가져다 쓸 수 있는 데이터 베이스 쿼리문을 공유하고자 한다.
테이블 생성
커머스를 운영한다고 가정하고
고객테이블, 상품테이블, 판매내역 테이블을 만들어보자.
-- 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS CompanyDB;
USE CompanyDB;
-- 고객 테이블 생성
CREATE TABLE IF NOT EXISTS Customer (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone_number VARCHAR(15),
registered_date DATE NOT NULL
);
-- 상품 테이블 생성
CREATE TABLE IF NOT EXISTS Product (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
product_price DECIMAL(10, 2) NOT NULL,
product_description TEXT,
in_stock INT NOT NULL
);
-- 판매내역 테이블 생성
CREATE TABLE IF NOT EXISTS Sales (
sales_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
product_id INT,
sales_date DATE NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES Customer(customer_id),
FOREIGN KEY (product_id) REFERENCES Product(product_id)
);
위의 쿼리문을 입력하게 되면 다음과 같은 테이블과 열이 생성된다.
- Customer:
- customer_id (PK)
- first_name
- last_name
- phone_number
- registered_date
- Product:
- product_id (PK)
- product_name
- product_price
- product_description
- in_stock
- Sales:
- sales_id (PK)
- customer_id (FK)
- product_id (FK)
- sales_date
- quantity
데이터 입력하기
각 테이블 마다 데이터가 입력되어야 하기 때문에 다음 쿼리문을 바로 실행시켜서 데이터를 넣어주자.
(1) 고객 데이터 입력
-- 고객 데이터 입력
INSERT INTO Customer (first_name, last_name, email, phone_number, registered_date) VALUES
('John', 'Doe', 'john.doe@example.com', '010-1234-5678', '2021-01-10'),
('Jane', 'Doe', 'jane.doe@example.com', '010-1234-5679', '2021-02-14'),
('Michael', 'Smith', 'michael.smith@example.com', '010-1234-5680', '2021-03-22'),
('Emily', 'Johnson', 'emily.johnson@example.com', '010-1234-5681', '2021-05-30'),
('David', 'Williams', 'david.williams@example.com', '010-1234-5682', '2021-07-01'),
('Emma', 'Brown', 'emma.brown@example.com', '010-1234-5683', '2021-08-15'),
('Daniel', 'Jones', 'daniel.jones@example.com', '010-1234-5684', '2021-09-10'),
('Sophia', 'Miller', 'sophia.miller@example.com', '010-1234-5685', '2021-10-25'),
('Lucas', 'Davis', 'lucas.davis@example.com', '010-1234-5686', '2021-11-18'),
('Olivia', 'Garcia', 'olivia.garcia@example.com', '010-1234-5687', '2021-12-28'),
('Henry', 'Rodriguez', 'henry.rodriguez@example.com', '010-1234-5688', '2022-01-05'),
('Ava', 'Martinez', 'ava.martinez@example.com', '010-1234-5689', '2022-02-10'),
('Benjamin', 'Hernandez', 'benjamin.hernandez@example.com', '010-1234-5690', '2022-03-20'),
('Mia', 'Lopez', 'mia.lopez@example.com', '010-1234-5691', '2022-04-30'),
('William', 'Gonzalez', 'william.gonzalez@example.com', '010-1234-5692', '2022-05-11'),
('Amelia', 'Wilson', 'amelia.wilson@example.com', '010-1234-5693', '2022-06-16'),
('Ethan', 'Anderson', 'ethan.anderson@example.com', '010-1234-5694', '2022-07-24'),
('Isabella', 'Thomas', 'isabella.thomas@example.com', '010-1234-5695', '2022-08-30'),
('Alexander', 'Taylor', 'alexander.taylor@example.com', '010-1234-5696', '2022-09-14'),
('Grace', 'Moore', 'grace.moore@example.com', '010-1234-5697', '2022-10-28');
(2) 상품 데이터 입력
-- 상품 데이터 입력
INSERT INTO Product (product_name, product_price, product_description, in_stock) VALUES
('Laptop A', 1200.00, 'Laptop A - 8GB RAM, 256GB SSD, Intel Core i5', 15),
('Laptop B', 1500.00, 'Laptop B - 16GB RAM, 512GB SSD, Intel Core i7', 10),
('Laptop C', 1800.00, 'Laptop C - 32GB RAM, 1TB SSD, Intel Core i9', 5),
('Smartphone A', 500.00, 'Smartphone A - 4GB RAM, 64GB Storage, 12MP Camera', 20),
('Smartphone B', 700.00, 'Smartphone B - 6GB RAM, 128GB Storage, 24MP Camera', 15),
('Smartphone C', 900.00, 'Smartphone C - 8GB RAM, 256GB Storage, 48MP Camera', 10),
('Tablet A', 300.00, 'Tablet A - 2GB RAM, 32GB Storage, 8MP Camera', 25),
('Tablet B', 450.00, 'Tablet B - 4GB RAM, 64GB Storage, 12MP Camera', 20),
('Tablet C', 600.00, 'Tablet C - 6GB RAM, 128GB Storage, 16MP Camera', 10),
('Headphones A', 50.00, 'Headphones A - Wired, Over-Ear', 100),
('Headphones B', 100.00, 'Headphones B - Wireless, Over-Ear', 50),
('Headphones C', 150.00, 'Headphones C - Wireless, Noise-Cancelling', 30),
('Monitor A', 200.00, 'Monitor A - 24 inches, 1080p', 25),
('Monitor B', 300.00, 'Monitor B - 27 inches, 1440p', 15),
('Monitor C', 400.00, 'Monitor C - 32 inches, 4K', 10),
('Keyboard A', 30.00, 'Keyboard A - Wired, Membrane', 75),
('Keyboard B', 60.00, 'Keyboard B - Wireless, Membrane', 50),
('Keyboard C', 100.00, 'Keyboard C - Wired, Mechanical', 30),
('Mouse A', 15.00, 'Mouse A - Wired, Optical', 100),
('Mouse B', 30.00, 'Mouse B - Wireless, Optical', 75);
(3) 판매 데이터 입력
-- 판매내역 데이터 입력
INSERT INTO Sales (customer_id, product_id, sales_date, quantity) VALUES
(1, 1, '2022-01-05', 1),
(1, 4, '2022-01-15', 1),
(2, 9, '2022-02-10', 1),
(2, 14, '2022-02-14', 2),
(3, 2, '2022-03-01', 1),
(3, 3, '2022-03-10', 1),
(3, 6, '2022-03-15', 1),
(4, 7, '2022-04-04', 2),
(4, 8, '2022-04-11', 1),
(5, 11, '2022-05-02', 1),
(5, 16, '2022-05-10', 1),
(6, 3, '2022-06-20', 1),
(6, 5, '2022-06-28', 1),
(7, 4, '2022-07-05', 1),
(8, 10, '2022-08-12', 1),
(8, 15, '2022-08-20', 1),
(9, 2, '2022-09-01', 1),
(9, 5, '2022-09-15', 1),
(10, 6, '2022-10-01', 1),
(10, 11, '2022-10-10', 1);
각각 20개씩 데이터를 입력했고 이제 위의 쿼리문을 DBMS에 입력한 후 다양한 조회를 해볼 수 있다.
다음 글에서는 이 데이터를 가지고 실무에서 사용할 법한 데이터를 조회해보자.
'SQL 공부일지' 카테고리의 다른 글
[SQL실습] IF, CASE (2) | 2023.04.11 |
---|---|
[SQL 실습] 매출데이터 조회하기 (0) | 2023.03.28 |
[SQL 실습] JOIN (2) (0) | 2023.03.22 |
[SQL 실습] JOIN의 기초 알아보기 (INNER JOIN, OUTER JOIN) (1) | 2023.03.15 |
[MySQL 실습] INSERT, DESC (0) | 2023.03.02 |