본문 바로가기
EXTERNAL ACTIVITY/Code Presso -웹개발 트랙 체험단-

<코드 프레소 웹 개발 트랙> 처음 시작하는 SQL 프로그래밍 [2]

by jaeaemin 2022. 2. 22.

 

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;

 

SQL 워크 벤치에서의 예제 실행&amp;amp;amp;amp;nbsp;

 

 

 

[2] 데이터 정렬과 필터링 

- 조건을 명시하여 조회한 결과를 정렬하는 것이 가능하다.

- WHERE 절과 ORDER BY 절을 결합하여 정렬&필터링하여 데이터를 조회하는 것이 가능하다.

- ORDER BY는 Select문에 존재하는 column이 아니더라도 정렬하여 조회하는 것이 가능하다.

 

SELECT column1, column2, ...
FROM table_name
WHERE conditions
ORDER BY column1, column2, ...

워크벤치에서의 WHERE &amp;amp;amp;amp;amp; ORDERBY 예제

 

 

 

 

[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; 

 

워크벤치에서 LIMIT, OFFSET 실습

 

 

 

 

[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/

반응형