SQL 공부일지

[SQL 실습] 조회 가능한 데이터베이스

PM곰돌 2023. 3. 27. 13:40

아직 실무를 하고 있지 않은 취준생이 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)
);

 위의 쿼리문을 입력하게 되면 다음과 같은 테이블과 열이 생성된다.

  1. Customer:
    • customer_id (PK)
    • first_name
    • last_name
    • email
    • phone_number
    • registered_date
  2. Product:
    • product_id (PK)
    • product_name
    • product_price
    • product_description
    • in_stock
  3. 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에 입력한 후 다양한 조회를 해볼 수 있다.

다음 글에서는 이 데이터를 가지고 실무에서 사용할 법한 데이터를 조회해보자.