목차
5. SQL 조건문
논리연산자 | 의미 | 예시 |
AND | 그리고 | age>20 and gender=’female’ → 나이가 20세 이상이고, 여성 |
OR | 또는 | age>20 or gender=’female’ → 나이가 20세 이상이거나, 여성 |
NOT | 아닌 | not gender=’female’ → 여성이 아닌 |
* AND
- 두 조건이 모두 참일 때 사용.
SELECT *
FROM students
WHERE age > 20 AND name = 'Alice';
* OR
- 두 조건 중 하나만 참이면 사용.
SELECT *
FROM students
WHERE age > 20 OR name = 'Bob';
* NOT
- 조건이 거짓일 때 사용.
SELECT *
FROM students
WHERE NOT age > 20;
* 비교연산자
비교연산자 | 의미 | 예시 |
= | 같다 | age=21 gender=’female’ |
<> | 같지 않다 (다르다) | age<>21 gender<>’female’ |
> | 크다 | age>21 |
>= | 크거나 같다 | age>=21 |
< | 작다 | age<21 |
<= | 작거나 같다 | age<=21 |
* BETWEEN A AND B
- A와 B 사이
-- 나이가 21과 23 사이인 고객의 전체 데이터 조회
SELECT *
FROM customers
WHERE age between 21 and 23
* IN
- '포함' 하는 조건.
-- 나이가 21, 25, 27인 고객의 전체 데이터 조회
SELECT *
FROM customers
WHERE age in (21, 25, 27)
* LIKE
- 비슷한 값을 조건으로 설정.
1. 특정한 문자로 시작하는 경우
Ex) LIKE ‘시작문자%’ → name LIKE '김%'
SELECT *
FROM customers
WHERE name LIKE '김%'
2. 특정한 문자를 포함하는 경우
Ex) LIKE '%포함문자%' → restaurant_name LIKE '%next%'
SELECT *
FROM customers
WHERE restaurant_name LIKE '%next%'
3. 특정한 문자로 끝나는 경우
Ex) LIKE '%끝나는문자' → name LIKE '%임'
SELECT *
FROM customers
WHERE name LIKE '%임'
* IF문
SELECT 컬럼명,
IF(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)
FROM 테이블명
WHERE 조건
예시)
select restaurant_name,
cuisine_type "원래 음식 타입",
if(cuisine_type='Korean', '한식', '기타') "음식 타입"
from food_orders
* CASE 문
SELECT 컬럼명,
case when 조건1 then 값(수식)1
when 조건2 then 값(수식)2
else 값(수식)3
end
FROM 테이블명
WHERE 조건
- 조건에 부합하지 않는 경우가 없을 때에는 ELSE를 생략해도 됨.
예시)
SELECT CASE WHEN cuisine_type='Korean' THEN '한식'
WHEN cuisine_type IN ('Japanese', 'Chinese') THEN '아시아'
ELSE '기타' END "음식 타입",
cuisine_type
FROM food_orders
6. 문자 포맷이 다를 때 SQL로 가공하기
* REPLACE(문자 변경)
SELECT 컬럼,
REPLACE(바꿀 컬럼, 현재 값, 바꿀 값)
FROM 테이블
WHERE 조건
예시)
SELECT restaurant_name "원래 상점명",
REPLACE(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
FROM food_orders
WHERE restaurant_name LIKE '%Blue Ribbon%'
- Blue Ribbon 이라는 말이 들어간 상점명들이 모두 Pink Ribbon으로 바뀌게 된다.
* SUBSTR(문자 자르기)
SELECT 컬럼,
substr(조회 할 컬럼, 시작 위치, 글자 수)
FROM 테이블
WHERE 조건
- SUBSTRING() 이라고 써도 무방하다.
예시)
SELECT addr "원래 주소",
SUBSTR(addr, 1, 2) "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%'
* CONCAT(문자 합치기)
SELECT 컬럼,
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
FROM 테이블
WHERE 조건
예시)
SELECT restaurant_name "원래 이름",
addr "원래 주소",
CONCAT('[', SUBSTRING(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
FROM food_orders
WHERE addr LIKE '%서울%'
7. Data Type 오류 발생 시 해결 방법
-- 숫자로 변경
cast(if(rating='Not given', '1', rating) as decimal)
-- 문자로 변경
concat(restaurant_name, '-', cast(order_id as char))
- 숫자형 데이터 타입에 문자형 데이터를 입력하는 등의 이유로 데이터 타입 오류가 생길 수 있음.
8. Subquery문
- 여러 번의 연산을 수행해야 할 때
- 조건문에 연산 결과를 사용해야할 때
- 조건에 Query 결과를 사용하고 싶을 때
Subquery문은 위와 같은 경우에 주로 사용한다.
조금 더 간단하고 보기 쉽게 쿼리문을 작성할 수 있다는 장점이 있다.
select column1, special_column
from
( /* subquery */
select column1, column2 special_column
from table1
) a
- Subquery문 실행 → Mainquery 문 실행 순서로 진행된다.
* Subquery의 종류
- 중첩 서브쿼리(Nested Subquery)
- WHERE문에 나타나는 서브쿼리.
- 인라인 뷰(Inline View)
- FROM문에 나타나는 서브쿼리.
- FROM절에서 사용되는 경우 무조건 별칭을 지정해주어야함!!
- 스칼라 서브쿼리(Scalar Subquery)
- SELECT 문에 나타나는 서브쿼리.
- 다른 테이블에서 값을 가져올 때 사용됨.
(참고한 블로그)
[MYSQL] 📚 서브쿼리 개념 & 문법 💯 정리
서브쿼리(Subquery) 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라
inpa.tistory.com
예시)
SELECT price/quantity
FROM
(
SELECT price, quantity
FROM food_orders
) a
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
25.02.17 TIL - Git & Github (0) | 2025.02.17 |
---|---|
25.02.14 사전캠프 TIL - SQL JOIN문 (0) | 2025.02.14 |
25.02.13 사전캠프 TIL - SQL 기초 (0) | 2025.02.13 |
25.02.12 사전캠프 TIL - Java의 실행과정 (1) | 2025.02.12 |
25.02.11 사전캠프 TIL - Java (1) | 2025.02.11 |