데이터베이스/데이터베이스 기초

기본적인 쿼리문

kimjy 2022. 2. 23. 00:09

DML(Data Manipulation Language)

INSERT 문: 데이터 입력시 사용

INSERT INTO table_name (col1, col2, col3) VALUES(value1, value2, value3)

SELECT 문을 사용하는 응용도 가능

INSERT INTO table2 (col1, col2)
SELECT col1, col2 FROM table1
WHERE id>5;

 

DELETE 문: 데이터 삭제시 사용. 주의하여 사용하여야 하며 트랜잭션을 사용할 것을 권장

DELETE table_name WHERE id=1;

 

UPDATE 문: 기존의 레코드를 변경할 때 사용

UPDATE table_name
SET col1=value1, col2=value2
WHERE id>5;

DQL(Data Query Language) 문

SELECT 문: 레코드를 조회할 때 사용

SELECT column_name FROM table_name

 

temp table 만들어서 조회하는 방법

SELECT * fROM
    (SELECT id, customer_name, REPLACE(customer_address, ' ', '') AS address 
     FROM customer) AS temp_table_name
WHERE address = "서울시마포구"

 

SELECT INTO를 사용하는 방법

  • mapo_customer 테이블에 결과를 저장하게 됨
SELECT *
INTO mapo_customer
FROM customer
WHERE customer_address = '서울시 마포구'

 

논리연산자

  • AND: A AND B, 우리가 논리연산에서 자주 사용하는 AND
  • BETWEEN: bETWEEN 1 AND 10, 1부터 10사이의 값인 지 확인
  • IN: 값들 중에 있는 지 있으면 True  
  • LIKE: wildcard로 문자열을 확인이 가능함. 단 성능저하의 주범!
  • NOT: 부정 연산. e.g., NOT IN, NOT BETWEEN
  • OR: 우리가 논리연산에서 자주 사용하는 OR와 비슷함
  • IS NULL: NULL 확인

 

집합연산자

  • UNION: 여러 개의 SQL문을 하나로 합침
SELECT * FROM customer WHERE address = '서울특별시 마포구'
UNION ALL
SELECT * FROM customer WHERE address = '서울특별시 영등포구'
  • UNION ALL은 중복 여부와 관계 없이 하나의 SQL문으로 합침
  • UNION은 중복을 제거하며, 이 때문에 성능이 하락할 수 있음

 

GROUP BY

  • 하나 이상의 열을 기준으로 그룹을 묶어서 결과를 반환
  • 집계 함수와 사용할 수 있음(MAX, MIN, AVG, COUNT, SUM)
  • 아래는 기본 예, 첫번째로 customer_gender로 group by를 수행하고 두번째로 address에 대해 group by를 수행할 것
SELECT customer_gender, address FROM customer
GROUP BY customer_gender, address

집계 함수와 같이 쓸경우, 아래와 같이 각 그룹들의 개수에 대한 열을 추가로 생성

SELECT customer_gender, COUNT(*) AS 인원수 FROM customer
GROUP BY customer_gender

주소까지 적용하면 아래와 같음(추가로 주소에 대한 것도 group by 및 정렬까지 할경우)

SELECT customer_gender, address, COUNT(*) AS 인원수 FROM customer
GROUP BY customer_gender, address
ORDER BY customer_gender, address

아래와 같이 GROUP BY에 활용하지 않은 값도 사용이 가능

SELECT customer_gender, max(age) AS 나이최대값 FROM customer
GROUP BY customer_gender
ORDER BY customer_gender

 

CASE

  • 일반적인 CASE 문처럼 사용할 수 있음. 아래는 CASE 문에 대한 예제임
SELECT id, 
       성별=
       CASE gender
           WHEN 0 THEN 'male'
           WHEN 1 THEN 'female'
           ELSE 'UNKNOWN'
       END
FROM customer

나이 컬럼에 대입해보면,

SELECT id
       나이=
           CASE
               WHEN age < 10 THEN '어린이'
               WHEN age >=10 AND age <20 THEN '10대'
               WHEN age >=20 AND age <30 THEN '20대'
               WHEN age >=30 AND age <40 THEN '30대'
               WHEN age >=40 AND age <50 THEN '40대'
               WHEN age >=50 AND age <60 THEN '50대'
               WEHN age IS NULL THEN '미확인'
               ELSE '어르신'
           END
FROM customer

'데이터베이스 > 데이터베이스 기초' 카테고리의 다른 글

트랜잭션  (0) 2022.03.07
서브쿼리  (0) 2022.03.07
Join  (0) 2022.03.05
개요(데이터베이스를 공부하기로 시작한 이유)  (0) 2022.02.14