몬그로이

H2 본문

Organizing Docs

H2

Mon Groy 2024. 6. 26. 12:20

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;

 

 

 

 

 

 

 

 

'Organizing Docs' 카테고리의 다른 글

NoSQL, RDBMS  (0) 2024.07.18
MVP 패턴  (0) 2024.07.17
자바의 정석 7. 객체지향 프로그래밍2  (0) 2024.07.01
H2 연결 오류 해결하기  (0) 2024.06.26
TIL_029  (0) 2024.05.31