SQL SELECT문의 필터링
[1] ORDER BY [ 데이터 정렬 ]
특정 컬럼을 기준으로 1개 이상의 조건으로 내림차순 또는 오름차순으로 정렬하여 조회하는 것이 가능하다.
ASC[오름차순] , DESE[내림차순]으로 명시하며 Default value 는 ASE[오름차순]이다.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC
고객 데이터를 아이디 순으로 내림차순 정렬 |
SELECT * FROM customers ORDER BY cust_id DESC |
주문아이템을 데이터를 1차 주문 번호로 오름차순, 2차 수량으로 내림차순 (조건 2개) |
SELECT * FROM orderItems ORDER BY order_num ASC, quantity DESC; |
[2] 데이터 정렬과 필터링
- 조건을 명시하여 조회한 결과를 정렬하는 것이 가능하다.
- WHERE 절과 ORDER BY 절을 결합하여 정렬&필터링하여 데이터를 조회하는 것이 가능하다.
- ORDER BY는 Select문에 존재하는 column이 아니더라도 정렬하여 조회하는 것이 가능하다.
SELECT column1, column2, ...
FROM table_name
WHERE conditions
ORDER BY column1, column2, ...
[3] LIMIT , OFFSET 명령어를 통한 조회 데이터 제한
- LIMIT : 조회된 결과 값의 갯수를 제한 하는데 사용된다.
- OFFSET : LIMIT와 함꼐 사용되며 페이지 처리를 하는데 사용된다.
LIMIT는 주로 ORDER BY 절과 같이 사용되어서 , 정렬 후 상위 N개의 결과만을 확인할 수 있다.
SELECT column1, column2, ...
FROM table_name
LIMIT n (OFFSET n);
가격이 가장 비싼 제품 상위 3개를 조회 |
SELECT * FROM Products ORDER BY prod_price DESC LIMIT 3; |
가격이 가장 비싼 제품 상위 4,5번째 제품 조회 |
SELECT * FROM Products ORDER BY prod_price DESC LIMIT 2 OFFSET 3; |
고객 명이 'Fun4All'인 고객 증 데이터 1건 조회 |
SELECT * FROM Customers WHERE prod_id='Fun4All' LIMIT 1; |
[4] IN 연산자
- 다중 OR 연산자의 축약 버전
SELECT column1, column2, ...
FROM table_name
WHERE column_name = value1
OR column_name = value2
OR .... ;
# IN 연산자를 통해 간단하게 축약가능
# ================================== #
SELECT column1, column2, ...
FROM table_name
WHERE column_nmae IN (value1, value2, ..);
# ================================== #
'MI'주에 거주하거나 'OH'주에 거주히는 고객 조회 |
SELECT * FROM Customers WHERE cust_state IN ('MI', 'OH'); |
USA, FRANCE에 거주하는 벤더 조회 |
SELECT * FROM Vendors WHERE vend_country IN ('USA', 'France'); |
[5] BETWEEN 연산자
- 주어진 범위에 대한 조건에 해당하는 데이터 조회
- 숫자, 날짜, 문자형 데이터 모두 사용 가능하고 주어진 범위까지 포함한다 !
SELECT column1, column2, ...
FROM talbe_name
WHERE column_name BETWEEN value1 AND value2;
'주문번호'가 20006 ~ 20008인 주문 데이터 조회 |
SELECT * FROM Orders WHERE order_num BETWEEN 20006 AND 20008; |
'수량'이 50 ~ 300인 주문항목 조회 |
SELECT * From OrderItems WHERE quantity BETWEEN 50 AND 300; |
'고객 아이디가 '1000000001' ~ '1000000004'인 고객 조회 |
SELECT * FROM basic.Orders WHERE cust_id BETWEEN '1000000001' and '1000000004'; |
[6] LIKE 연산자
- 문자열 안에서 특정 패턴을 검색하기 위해 사용된다
- "="연산자가 문자열이 완전 일치였다면, LIKE는 문자열의 부분 일치를 위한 조건식이다.
SELECT column_names(s)
FROM tabel_name
WHERE column_name LIKE pattern;
'이름'이 B로 시작하는 벤더 조회 |
SELECT * FROM Vendors WHERE vend_name LIKE 'B%' |
'이름'에 'teddy'가 포함 된 제품 조회 |
SELECT * FROM basic.Products WHERE prod_name LIKE '%teddy%'; |
'이름'이 Bird로 시작하고 toy로 끝나는 제품 조회 |
SELECT * FROM basic.Products WHERE prod_name LIKE 'Bird%toy'; |
'제품 설명'에 inch와 bear가 포함된 제품 조회 |
SELECT * FROM basic.Products WHERE prod_desc LIKE '%inch%' AND prod_desc LIKE '%bear%'; |
※ Wild-Card ※
와일드카드는 패턴 정의로, 문자열의 검색 패턴을 위해 % 기호를 사용한다.
1) 'a%' → a로 시작하는 문자열 검색
2) '%a' → a로 끝나는 문자열 검색
3) '%a%' → a가 들어있는 문자열 검색
4) 'a%o' → a로 시작해서 o로 끝나는 문자열 검색
[7] DISTINCT
- 특정 컬럼의 unique한 값들을 조회함
- 엑셀의 '중복 값 제거' 기능 실행 후 결과와 동일
- 다수의 컬럼에 대해서 명시할 수 있지만 자주 사용하지는 않음
SELECT DISTINCT column1
FROM table_name;
'unique한 국가 목록'을 조회 (벤더) |
SELECT DISTINCT vend_country FROM Vendors; |
'주문항목 중 어떤 제품이 포함되어 있는지 unique한 제품 id 조회' |
SELECT DISTINCT order_item FROM basic.OrderItems; |
'주문항목 중 항목 가격의 unique한 목록 조회 |
SELECT DISTINCT item_price FROM basic.OrderItems; |
[8] NULL VALUE처리
- IS NULL, IS NOT NULL 연산자로 null 인지 아닌지 데이터를 조회
SELECT column_names
FROM table_name
WHERE column_name IS NULL / IS NOT NULL;
'고객 데이터 중 국가정보'가 null인 고객 조회 |
SELECT * FROM Customers WHERE cust_country IS NULL |
'고객 데이터'중 주소 정보는 NULL이고, 국가 정보는 NULL이 아닌 고객 조회 |
SELECT * FROM Customers WHERE cust_address IS NULL AND cust_country IS NOT NULL; |
'고객 데이터'중 도시 정보와 주 정보가 모두 NuLL인 고객 조회 |
SELECT * FROM Customers WHERE cust_address IS NULL AND cust_country IS NOT NULL; |
[9] AS 별칭
- AS(Alias)로 별칭을 의미하고, 컬럼 또는 테이블에 별칭을 부여하여 조회한다.
- 컬럼 명을 이해하기 쉽게 만들고 테이블 명을 짧게 만들기 위해 사용한다.
SELECT tn.columns_name AS aliasColumnName From table_name AS tn;
고객 테이블의 cust_name 컬럼에 customerName으로 별칭을 부여하여 고객 이름 정보를 조회 [컬럼 별칭] |
SELECT cust_name AS customerName FROM Customers |
'고객 테이블에 cst로 별칭을 부여하고, 고객의 이름이 'the toy store'인 데이터 조회 [테이블 별칭] |
SELECT cst.* FROM Customers AS cst WHERE cst.cust_name = 'The Toy Store'; |
cust_zip을 ZipCodeOFCustomer로 변경하여 고객이 zip code 정보 조회 |
Select cust_zip AS ZipCodeOFCustomer From Customers; |
vend_city, vend_state를 각각 VendorCity, VendorState로 변경하여 벤더의 도시 정보와 주 정보 조회 |
SELECT vend_city AS VenderCity , vend_state AS VendorState FROM Vendors; |
ORDER BY | LIMIT, OFFSET | iN |
BETWEEN | LIKE | DISTINCT |
IS NOOL/ IS NOT NULL | AS (alias) |
- 코드프레소 Java 웹 개발 체험단 활동 중
- 코드프레소 웹개발 트랙의 "처음 시작하는 SQL 프로그래밍" 내용입니다.
- 코드프레소 URL: https://www.codepresso.kr/
'EXTERNAL ACTIVITY > Code Presso -웹개발 트랙 체험단-' 카테고리의 다른 글
<코드 프레소 웹 개발 트랙> 처음 시작하는 SQL 프로그래밍 [3] (0) | 2022.02.22 |
---|---|
<코드 프레소 웹 개발 트랙> 처음 시작하는 SQL 프로그래밍 [1] (0) | 2022.01.31 |
. (0) | 2022.01.23 |
<코드 프레소 웹개발 트랙> SW 유지보수성 향상을 위한 Clean Code [2] (0) | 2022.01.22 |
<코드 프레소 웹개발 트랙> SW 유지보수성 향상을 위한 Clean Code (0) | 2022.01.22 |