[SQL] SELECT 정리

6720·2023년 3월 21일
0

이거 모르겠어요

목록 보기
10/38
post-custom-banner
  • 이 게시글은 프로그래머스 SQL Kit - SELECT를 기준으로 문제에 쓰였던 표현을 정리하며, 그 외의 다른 이론이나 공식을 정리함.
  • MySQL을 기준으로 정리함.

SELECT

데이터베이스에서 데이터를 선택하는 데 사용됨.
반환된 데이터는 result-set(결과 집합)이라는 결과 테이블(result table)에 저장됨.

SELECT [ALL | DISTINCT] column1 AS column
FROM table_name;

ALL: 중복되는 데이터가 있더라도 모두 조회(Default)
DISTINCT: 중복되는 데이터가 있으면 중복을 제거하여 1건만 조회하는 기능
AS: 컬럼의 별명(ALIAS)을 변경할 수 있음. (AS을 생략하여 별명 변경 가능)
EX) SELECT column1 column


+) select 절에서 escape 사용 가능.

escape: 특수문자를 실제 문자로 인식하도록 함.
select 절에서 문자열을 사용하기 위해 홑 따옴표(’)를 사용하므로, 문자열 안에 홑 따옴표(')를 포함하고자 하는 경우에는 escape를 해야함.

select 'He''s going' from dual;

다음과 같이 를 문자열로 사용하고 싶을 때, '를 두 번 입력하면 문자 취급됨.
혹은 ESCAPE를 사용해서 특수문자를 실제 문자로 인식할 수 있음.
EX) 문자열에서 _가 포함된 데이터 조회하기

SELECT * FROM table_name
WHERE column1 LIKE '%\_%' ESCAPE '\';

\를 문자취급 함으로써 \_이 만들어지고 _를 특수문자 취급하게 함.

SELECT 문법

특정 컬럼 조회하기

SELECT column1, column2, ...
FROM table_name;

column1, column2, …: 데이터를 선택하려는 테이블의 필드 이름

모든 데이터 조회하기

SELECT * FROM table_name;

테이블에서 사용 가능한 모든 필드를 선택할 때 사용함.
여기서 *를 WildCard라고 함.

특정 조건에 만족하는 데이터 조회하기

SELECT *
FROM table_name
WHERE search_condition;
  • column1의 값이 12인 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 = 12;
  • column1의 값이 12 이상인 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 >= 12;
  • column1의 값이 12가 아닌 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 != 12;

NULL

  • column1이 null이 아닌 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 IS NOT NULL 12;

AND

  • column1의 값이 12이면서 column2의 값이 23인 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 = 12 AND column2 = 23;

OR, IN LIST

  • column1의 값이 12 또는 23인 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 = 12 or column1 = 23;

or

SELECT *
FROM table_name
WHERE column1 IN (12, 23);

BETWEEN A AND B

  • column1의 값이 12 이상 23 이하인 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 BETWEEN 12 AND 23;

LIKE

  • column1의 값에 12가 포함된 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 LIKE "%12%";
  • column1의 값에 1로 시작하면서 2로 끝나는 4글자 데이터 조회하기
SELECT *
FROM table_name
WHERE column1 LIKE "1__2";

SELECT with Func

  • 전체 데이터의 개수 조회하기
SELECT count(*)
FROM table_name;
  • column1의 합 조회하기
SELECT sum(column1)
FROM table_name;
  • column1의 평균 조회하기 (이때 평균은 첫째 자리에서 반올림하도록 함,)
SELECT round(avg(column1), 0)
FROM table_name;

UNION

union을 합집합이며, 중복 데이터는 하나로 간주함. (중복 허용: union all)

SELECT column1, column2
FROM table_name

UNION

SELECT column1, column2
FROM table_name;

다음과 같은 형식으로 사용하며, 이때 합집합에 사용되는 두 테이블은 컬럼의 종류와 타입이 같아야 함.

IFNULL

만약 해당 항목의 데이터가 null이면 대체할 데이터를 설정할 수 있음.

  • table_name의 column1과 column2를 조회하는데, column2의 데이터가 null이면 “None”이 조회되도록 설정하기
SELECT column1, IFNULL(column2, "None")
FROM table_name;

DATE_FORMAT

  • column1(날짜 데이터)를 “YYYY-MM-DD” 형식으로 변경하기
SELECT DATE_FORMAT(column1, '%Y-%m-%d')
FROM table_name;

SELECT 외의 표현

+) 오름차순, 내림차순 정렬하기

SELECT *
FROM table_name
ORDER BY column1 [ASC | DESC];

column1의 값을 기준으로 정렬할 때 사용함.

ASC: 오름차순(default 값이라서 생략 가능함)
DESC: 내림차순

++) 상위 n개 데이터 조회하기

SELECT *
FROM table_name
LIMIT n;

모든 SQL문을 작성한 후 맨 마지막에 LIMIT n을 사용하여 상위 n개 데이터를 조회할 수 있음.

+++) 날짜 형식에서 데이터 받기
EX) 2023년 3월 날짜 값을 가진 데이터 조회하기

SELECT *
FROM table_name
WHERE year(column1) = 2023 and month(column1) = 3;

참고 자료

profile
뭐라도 하자
post-custom-banner

0개의 댓글