1. IIF (Immediate If)
조건식의 참/거짓 여부에 따라 다른 값을 반환하는 함수입니다.
SQL 표준은 아니지만, SQLite에서 간편하게 조건부 로직을 구현할 때 유용합니다.
구문: IIF(조건식, 참일_때_값, 거짓일_때_값)
-- products 테이블에서 price가 100보다 크면 'High', 아니면 'Low'를 반환하여 price_category 열로 표시
SELECT product_name, price, IIF(price > 100, 'High', 'Low') AS price_category
FROM products;
2. AS (Alias)
테이블 또는 열에 임시 이름을 부여합니다. 쿼리를 더 읽기 쉽게 만들거나,
복잡한 계산 결과에 의미 있는 이름을 붙일 때 사용합니다.
구문:
열 별칭: SELECT column_name AS alias_name FROM table_name;
테이블 별칭: SELECT t.column_name FROM table_name AS t;
-- products 테이블에서 product_name을 name으로, price를 unit_price로 별칭 지정
SELECT product_name AS name, price AS unit_price
FROM products;
--products p 라고 테이블 명을 변경.
SELECT p.product_name
FROM products p;
3. BETWEEN
값이 지정된 범위 내에 있는지 확인합니다. 범위의 양 끝 값(경계값)을 포함합니다.
구문: value BETWEEN low_value AND high_value
-- products 테이블에서 price가 50에서 100 사이인 상품을 조회
SELECT product_name, price
FROM products
WHERE price BETWEEN 50 AND 100;
4. DISTINCT
조회된 결과에서 중복된 행을 제거하고 고유한 값만 반환합니다.
구문: SELECT DISTINCT column_name FROM table_name;
-- orders 테이블에서 주문한 고객의 ID를 중복 없이 조회 (고유한 고객 ID 목록)
SELECT DISTINCT customer_id
FROM orders;
5. WHERE / AND / OR
WHERE: 쿼리에서 특정 조건을 만족하는 행만 선택하는 데 사용됩니다.
AND: 여러 조건을 모두 만족하는 행을 선택합니다.
OR: 여러 조건 중 하나 이상을 만족하는 행을 선택합니다.
SELECT column_name(s)
FROM table_name
WHERE condition1 AND condition2;
SELECT column_name(s)
FROM table_name
WHERE condition1 OR condition2;
-- customers 테이블에서 city가 'Seoul'이고 age가 30 이상인 고객을 조회
SELECT customer_name, city, age
FROM customers
WHERE city = 'Seoul' AND age >= 30;
-- customers 테이블에서 city가 'Seoul'이거나 country가 'Korea'인 고객을 조회
SELECT customer_name, city, country
FROM customers
WHERE city = 'Seoul' OR country = 'Korea';
6. COUNT(*)
특정 테이블 또는 그룹의 행 수를 계산합니다. *를 사용하면 NULL 값을 포함한 모든 행을 카운트합니다.
구문:
SELECT COUNT(*) FROM table_name; (전체 행 수)
SELECT COUNT(*) FROM table_name WHERE condition; (조건을 만족하는 행 수)
SELECT column1, COUNT(*) FROM table_name GROUP BY column1; (그룹별 행 수)
-- orders 테이블의 전체 주문 건수를 조회
SELECT COUNT(*) AS total_orders
FROM orders;
-- orders 테이블에서 product_id가 'P123'인 주문 건수를 조회
SELECT COUNT(*) AS p123_orders
FROM orders
WHERE product_id = 'P123';
7. IN
값이 지정된 목록에 포함되는지 확인합니다. 여러 값을 OR 조건으로
연결하는 것보다 간결하게 표현할 수 있습니다.
구문: value IN (value1, value2, ...)
-- products 테이블에서 product_id가 'P1', 'P3', 'P5' 중 하나인 상품을 조회
SELECT product_name, product_id
FROM products
WHERE product_id IN ('P1', 'P3', 'P5');
8. LIKE (와일드카드: %, _)
LIKE: 문자열 패턴을 사용하여 데이터를 검색합니다.
% (퍼센트): 0개 이상의 임의의 문자열을 나타냅니다.
_ (언더스코어): 임의의 단일 문자를 나타냅니다.
구문: value LIKE pattern
-- customers 테이블에서 customer_name이 '김'으로 시작하는 고객을 조회
SELECT customer_name
FROM customers
WHERE customer_name LIKE '김%';
-- customers 테이블에서 email 주소에 '.com'이 포함된 고객을 조회
SELECT customer_name, email
FROM customers
WHERE email LIKE '%.com%';
-- employees 테이블에서 phone_number가 010-XXXX-1234 형식인 직원 조회 (XXXX는 임의의 4자리 숫자)
SELECT employee_name, phone_number
FROM employees
WHERE phone_number LIKE '010-____-1234';
-- products 테이블에서 product_name 이 5글자인 상품을 조회.
SELECT product_name
FROM products
WHERE product_name LIKE '_____';
출처 :
'UI > BE : DB, Node' 카테고리의 다른 글
[ node ] 기초 CRUD (Feat.폴더구조 이해) (1) | 2025.02.07 |
---|---|
[ BE / DB ] SQLlite:기본 1편 (1) | 2025.02.05 |
[ BE / DB ] SQLite을 활용하여 local에 데이터 저장하기(Feat. 공홈) (0) | 2024.11.23 |
[ BE / DB ] Supabase 일치하는 column 중복(?) 선택 하기(feat.eq or ilikes) (2) | 2024.07.24 |