SQL 명령어 (CRUD 기준)
2025. 5. 19. 17:57ㆍCoding Study/데이터베이스
< SQL문의 작성 순서 >
1. SELECT
2. FROM : 어느 테이블을 대상으로 할 것인지 결정
3. WHERE : 해당 테이블에서 특정 조건을 만족하는 row 선별
4. GROUP BY : grouping 기준대로 로우를 grouping
5. HAVING : grouping 작업 후 생성된 그룹 중 특정 조건을 만족한는 그룹만 선별
6. ORDER BY : 각 row를 특정 기준에 정렬
7. LIMIT : ORDER BY 기준으로 상위 일부만 보여줌
accommodation 테이블 만들기
CREATE TABLE accommodation (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address TEXT NOT NULL,
city VARCHAR(100) NOT NULL,
country VARCHAR(100) NOT NULL,
rating DECIMAL(3, 2),
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SELECT 명령어
-- 전체 조회
SELECT * FROM accommodation;
-- 일부 컬럼 조회
SELECT name, description FROM accommodation;
조건 부 검색
-- WHERE로 일부 조회
SELECT * FROM accommodation WHERE city = 'Bali';
-- WHERE + OR
SELECT * FROM accommodation WHERE city = 'Chiang Mai' OR city = 'Bali';
-- 평점 4.75점 이상
SELECT * FROM accommodation WHERE rating >= 4.75;
-- 평점 4.5점 이상 4.6 이하
SELECT * FROM accommodation WHERE rating BETWEEN 4.5 AND 4.6;
-- ID가 1, 3
SELECT * FROM accommodation WHERE id IN (1, 3);
-- ID가 1, 3이 아님
SELECT * FROM accommodation WHERE id NOT IN (1, 3);
-- 내림차순 (큰 것 부터)
SELECT * FROM accommodation ORDER BY rating DESC;
상위 3개만 조회
-- 평점 상위 3개
SELECT * FROM accommodation ORDER BY rating DESC LIMIT 3;
숙박비용 높은 기준으로
name, address, city, country , pirce_per_nidt, rating 열만 나열한다.
-- 가장 숙박비용 높은 기준으로 정렬
SELECT name, address, city, country, price_per_night, rating FROM accommodation ORDER BY price_per_night DESC LIMIT 3;
SQL 자체 함수 적용
-- 전체 로우 갯수
SELECT COUNT(*) FROM accommodation;
-- 전체 평점 평균, 최솟값, 최댓값
SELECT AVG(rating) as avg_rating FROM accommodation;
SELECT MIN(rating) as min_rating FROM accommodation;
SELECT MAX(rating) as max_rating FROM accommodation;
-- 전체 하루 숙박 가격 평균, 최솟값, 최댓값
SELECT AVG(price_per_night) as avg_price FROM accommodation;
SELECT MIN(price_per_night) as min_price FROM accommodation;
SELECT MAX(price_per_night) as max_price FROM accommodation;
UPDATAE 명령어
실행 전에 조건을 확인 하고 진행 한다.
기존 data 를 변경 하기 때문에 백업 없이 진행 시 전체 데이터가 변경될 수 도 있다.
-- UPDATE 쿼리 실행 전 WHERE 조건 확인
SELECT * FROM accommodation
WHERE id = 1;
-- UPDATE 쿼리 실행
UPDATE accommodation
SET name = 'wow'
WHERE id = 1
RETURNING *;
여러 조건 변경
-- UPDATE 쿼리 실행 전 WHERE 조건 확인
SELECT * FROM accommodation
WHERE country = 'Thailand' AND rating < 5.0;
-- WHERE 조건에 해당하는 여러 로우의 값을 변경
-- 기존 rating 값에 연산 적용 가능
UPDATE accommodation
SET rating = rating + 0.1, price_per_night = price_per_night + 1
WHERE country = 'Thailand' AND rating < 5.0
RETURNING *;
<주의! > 전체 data 가 바껴 버린다
-- WHERE를 뺴먹으면 로우 전체에 영향을 미칠 수 있다.
UPDATE accommodation
SET price_per_night = price_per_night - 1
RETURNING *;
DELETE 명령어
- 삭제는 명령어 입력 시 WHERE 조건이 맞는지 SELECT로 확인 후 실행한다.
-- id가 1인 로우 삭제
SELECT * FROM accommodation
WHERE id = 1
확인 후
아래의 삭제 명령 실행
-- id가 1인 로우 삭제
DELETE FROM accommodation
WHERE id = 1
RETURNING *;
'Coding Study > 데이터베이스' 카테고리의 다른 글
| Prisma /데이터베이스/ 3Tier의 개념 (2) | 2025.05.22 |
|---|---|
| [SQL] 기타 팁 (1) | 2025.05.21 |
| [SQL] 서브 쿼리 (0) | 2025.05.21 |
| [SQL] JOIN (0) | 2025.05.21 |
| [SQL]GROUPING (0) | 2025.05.21 |