SQL 명령어 (CRUD 기준)

2025. 5. 19. 17:57Coding 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