H2 사용하는 강의를 듣는데
나에겐 TODO 테이블이 없어서 대충 만들어주는 것을 시작으로 query 문을 다루기 시작했다
Table 생성
CREATE TABLE TODO
(
NAME VARCHAR(255)
);
그 다음 강의를 따라서 몇 가지 COLUMN 을 생성해 주었다
ALTER TABLE TODO ADD COLUMN USER_ID INT;
ALTER TABLE TODO ADD COLUMN TITLE VARCHAR(255);
User Table에도 배운 것들을 사용해 보았다
순서대로 row values 집어넣기/ 값 수하기/ 지우기
INSERT INTO USERS ( ID , NAME ) VALUES (3,'Taeyang Kim');
UPDATE USERS SET NAME = 'Teayang Kim' WHERE ID = 3;
DELETE FROM USERS WHERE ID = 5;
* 큰 따옴표(")가 아니라 작은따옴표(')를 사용한다는 것을 잊지 말 것
TABLE 생성하기/지우기
CREATE TABLE users (id SERIAL, name VARCHAR(255));
DROP TABLE users;
*serial 은 자동생성 되는 value
COMMIT
ROLLBACK
테이블에 value 넣기 - 1개
CREATE TABLE orders (
id SERIAL,
user_id BIGINT,
product_id BIGINT,
quantity INT,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
테이블에 value 넣기 -여러 개
INSERT INTO users (name, email , status) VALUES
('Alice', 'alice@example.com', 'active'),
('Bob', 'bob@example.com', 'inactive'),
('Charlie', 'charlie@example.com', 'active');
사용자와 주문 내역을 함께 조회
SELECT users.name, orders.id AS order_id, products.name AS product_name, orders.quantity, orders.order_date
FROM orders
JOIN users ON orders.user_id = users.id
JOIN products ON orders.product_id = products.id;
사용자별 주문 개수 집계
SELECT users.name, COUNT(orders.id) AS total_orders
FROM orders
JOIN users ON orders.user_id = users.id
GROUP BY users.name;
사용자 이름으로 정렬하여 조회
SELECT * FROM users
ORDER BY name;
주문 내역을 주문 날짜 순으로 내림차순 정렬하여 조회
SELECT users.name, products.name AS product_name, orders.quantity, orders.order_date
FROM orders
JOIN users ON orders.user_id = users.id
JOIN products ON orders.product_id = products.id
ORDER BY orders.order_date DESC;
데이터 초기화를 원할 경우, 다음 쿼리로 테이블 내용을 지울 수 있습니다.
TRUNCATE TABLE orders;
TRUNCATE TABLE products;
TRUNCATE TABLE users;
특정 날짜 이후에 생성된 계정을 가진 사용자 조회
SELECT * FROM users
WHERE created_at > '2023-01-01';
각 사용자별 총 주문 금액 조회
SELECT users.name, SUM(products.price * orders.quantity) AS total_spent
FROM orders
JOIN users ON orders.user_id = users.id
JOIN products ON orders.product_id = products.id
GROUP BY users.name;