데이터베이스에서 데이터를 선택하는 데 사용됨.
반환된 데이터는 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 column1, column2, ...
FROM table_name;
column1, column2, …: 데이터를 선택하려는 테이블의 필드 이름
SELECT * FROM table_name;
테이블에서 사용 가능한 모든 필드를 선택할 때 사용함.
여기서 *를 WildCard
라고 함.
SELECT *
FROM table_name
WHERE search_condition;
SELECT *
FROM table_name
WHERE column1 = 12;
SELECT *
FROM table_name
WHERE column1 >= 12;
SELECT *
FROM table_name
WHERE column1 != 12;
SELECT *
FROM table_name
WHERE column1 IS NOT NULL 12;
SELECT *
FROM table_name
WHERE column1 = 12 AND column2 = 23;
SELECT *
FROM table_name
WHERE column1 = 12 or column1 = 23;
or
SELECT *
FROM table_name
WHERE column1 IN (12, 23);
SELECT *
FROM table_name
WHERE column1 BETWEEN 12 AND 23;
SELECT *
FROM table_name
WHERE column1 LIKE "%12%";
SELECT *
FROM table_name
WHERE column1 LIKE "1__2";
SELECT count(*)
FROM table_name;
SELECT sum(column1)
FROM table_name;
SELECT round(avg(column1), 0)
FROM table_name;
union
을 합집합이며, 중복 데이터는 하나로 간주함. (중복 허용: union all
)
SELECT column1, column2
FROM table_name
UNION
SELECT column1, column2
FROM table_name;
다음과 같은 형식으로 사용하며, 이때 합집합에 사용되는 두 테이블은 컬럼의 종류와 타입이 같아야 함.
만약 해당 항목의 데이터가 null이면 대체할 데이터를 설정할 수 있음.
SELECT column1, IFNULL(column2, "None")
FROM table_name;
SELECT DATE_FORMAT(column1, '%Y-%m-%d')
FROM table_name;
+) 오름차순, 내림차순 정렬하기
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;