[SQL] SQL DML 기초(2)
카테고리: SQL
태그: SQL
SQL DML 기초 2편
고급 SELECT
[SQL DML 기초 1편]에서 다루지 않았던 SELECT 절의 다양한 활용법을 배워본다.
Select Top
SELECT TOP절은 반환할 레코드 수를 지정하는 데 사용됩니다.- 수천 개의 레코드가 있는 대형 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있기 떄문입니다.
-- MySQL
SELECT column_name
FROM table_name
WHERE condition
LIMIT number;
-- Oracle 12⬆️
SELECT column_name
FROM table_name
ORDER BY column_name
FETCH FIRST number ROWS ONLY;
MIN(), MAX() 함수
MIN()함수는 선택한 열의 가장 작은 값을 반환합니다.MAX()함수는 선택한 열의 가장 큰 값을 반환합니다.
SELECT MIN(column_name)
FROM table_name
WHERE condition;
SELECT MAX(column_name)
FROM table_name
WHERE condition;
COUNT(), AVG(), SUM 함수
COUNT()함수는 지정된 기준과 일치하는 행 수를 반환합니다.AVG()함수는 숫자 열의 평균 값을 반환합니다.SUM()함수는 숫자 열의 총 합계를 반환합니다.
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
SELECT AVG(column_name)
FROM table_name
WHERE condition;
SELECT SUM(column_name)
FROM table_name
WHERE condition;
와일드카드
- 와일드카드 문자는 문자열에서 하나 이상의 문자를 대체하는 데 사용됩니다.
- 와일드카드 문자는
LIKE연산자와 함께 사용됩니다.LIKE연산자는 열에서 지정된 패턴을 검색하기 위해WHERE절에서 사용됩니다. - 데이터베이스 시스템에 따라 와일드카드 문자는 상이합니다. 시스템별 와일드카드 문자 목록을 참고하려면 여기를 클릭하세요.
% 와일드카드
-- "ber"로 시작하는 도시가 있는 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like 'ber%';
-- 도시에 "es" 문자가 포함된 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like '%es%';
_ 와일드카드
-- 도시가 임의의 한 문자로 시작하고 그 뒤에 "ondon"이 오는 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like '_ondon';
-- "L"로 시작하고 임의의 문자, "n", 임의의 문자, "on"이 차례로 오는 도시를 가진 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like 'L_n_on';
[Charlist] 와일드카드
-- 도시가 "b", "s", "p" 중에 한 문자로 시작하는 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like '[bsp]%';
-- 도시가 "a", "b", c" 중에 한 문자로 시작하는 모든 고객을 선택합니다.
SELECT * FROM Customers
WHERE City Like '[a-c]%';
[!Charlist] 와일드카드
-- 도시가 "b", "s", "p" 중에 한 문자로 시작하지 않는 모든 고객을 선택합니다.
-- (방법 1)
SELECT * FROM Customers
WHERE City Like '[!bsp]%';
-- (방법 2)
SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';
IN 연산자
IN연산자를 사용하면WHERE절에 여러 값을 지정할 수 있습니다.IN연산자는 여러 개의OR조건의 줄임말입니다.
-- (방법 1)
SELECT column_name
FROM table_name
WHERE column_name IN (value1, value2, ...);
-- (방법 2)
SELECT column_name
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
BETWEEN 연산자
BETWEEN연산자는 주어진 범위 내에서 값을 선택합니다. 값은 숫자, 텍스트 또는 날짜일 수 있습니다.BETWEEN연산자는 포괄적입니다: 시작 값과 끝 값을 포함합니다.- 기본 문법은 다음의 SQL문을 확인하세요.
SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
NOT BETWEEN
- 범위를 벗어난 제품을 표시하려면
NOT BETWEEN을 사용합니다.
SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN value1 AND value2
Alias
Alias는 테이블 또는 테이블의 열에 임시 이름을 지정하는 데 사용됩니다.- 별칭은 해당 쿼리 기간 동안에만 존재합니다.
- 별칭은
AS키워드로 생성됩니다.
-- 별칭 열
SELECT column_name AS alias_name
FROM table_name;
-- 별칭 테이블
SELECT column_name
FROM table_name AS alias_name;
UNION 연산자
UNION연산자는 둘 이상의SELECT명령문의 결과 집합을 결합하는 데 사용됩니다.- 각각의
SELECT명령문의 결과 집합은 같은 수의 열이 있어야 합니다. - 또한 열의 순서와 유형도 같아야 합니다.
UNION연산자는 기본적으로 고유한 값만 선택합니다. 중복 값을 허용하려면UNION ALL연산자를 사용합니다.
-- UNION
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2
-- UNION ALL
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2
GROUP BY
GROUP BY문은 동일한 값을 가진 행을 요약 행으로 그룹화합니다.GROUP BY명령문은 종종 집계 함수(COUNT(),MAX(),MIN(),SUM(),AVG())와 함께 사용되어 결과 집합을 하나 이상의 열로 그룹화합니다.
SELECT column_name
FROM table_name
WHERE condition
GROUP BY column_name
HAVING
GROUP BY문에 의해 공통적인 데이터들끼리 묶인 그룹 중, 주어진 조건에 맞는 그룹들을 추출합니다.WHERE절에서는 집계 함수 사용을 할 수 없지만,HAVING절에서는 집계 함수 사용이 가능합니다.
SELECT column_name
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY column_name
SQL 구문 해석 순서
FROMtable_nameWHEREcoditionGROUP BYcolumn_nameHAVINGconditionSELECTcolumn_nameORDER BYcolumn_name
📌 출처
W3schools-SQL 튜토리얼-SQL Select Top ~ SQL Having
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기