AI SCHOOL/SQL

[SQL] WHERE / 비교연산자 / 논리연산 / BETWEEN / IN / LIKE / IS NULL

moru_xz 2023. 1. 13. 16:17

WHERE

- 데이터에 조건을 부여해서 원하는 데이터만 필터링 

- 여러 연산자 결합 가능

- 결합 가능 연산자의 종류 : 비교연산자(=, <, >, !=, >=, <=), SQL연산자(BETWEEN), 논리 연산자(AND, OR) 등

SELECT *
FROM `thelook_ecommerce.users` 
WHERE first_name = 'Michael';

 

비교 연산자

- 레코드를 검색할때 값을 비교하여 조건에 맞는 데이터만 표현연산자 종류

SELECT *
FROM `thelook_ecommerce.users` 
WHERE traffic_source != 'Search';

 

논리 연산

우선순위는 NOT, AND, OR입니다. and는 곱으로, or는 덧셈으로 이해하면 계산이 쉬움

select * from `thelook_ecommerce.users`
where id < 10000
and first_name = 'David'
select * from `thelook_ecommerce.users`
where NOT(country = 'United States' or country = 'Brasil');

 

BETWEEN 연산

A와 B를 포함한사이의 값

select * 
from `thelook_ecommerce.users`
where age between 20 and 30


select * 
from `thelook_ecommerce.users`
where age>=20 and age<=30

 

IN 연산

A안에 값과 일치하는 값 조회

select * 
from `thelook_ecommerce.products`
where brand in ('Onia', 'Hurley', 'Matix');

 

LIKE 연산

LIKE'비교문자'

- 비교문자와 형태가 일치(%(모든문자), _(한글자) 사용)

- 대소문자 안 가림

- % 는 와일드 카드 

 

product의 name안에 Young이 포함된 레코드를 조회

select * 
from `thelook_ecommerce.products`
where name like '%Young%';

product의 name이 Hurley 로 시작되는 레코드를 조회

select * 
from `thelook_ecommerce.products`
where name like 'Hurley%';

product의 name이 T-shirt 로 끝나는 레코드를 조회

select * 
from `thelook_ecommerce.products`
where name like '%T-shirt';

언더바는 한개의 글자를 포함

언더바의 갯수가 3개이므로 Da로 시작하고 뒤에 3글자가 붙어서 총 5글자인 user 레코드를 조회

select distinct first_name
from `thelook_ecommerce.users`
where first_name like 'Da___'

IS NULL

NULL 값을 갖는 값(0은 값이 있는 것임)

select * 
from `thelook_ecommerce.order_items`
where shipped_at IS NULL;

 


SQL 연습문제 3-1

상품정보(products) 테이블에서 카테고리(category)가 ‘Swim’ 인 레코드의 모든 항목를 조회

select * 
from `thelook_ecommerce.products` 
where category = 'Swim'

SQL 연습문제 3-2

상품정보(products) 테이블에서 브랜드(brand)가 ‘2EROS’인 레코드의 id, 비용(cost), 브랜드(brand)를 조회하세요.

select id, cost, brand
from `thelook_ecommerce.products` 
where brand = '2EROS'

SQL 연습문제 3-3

상품정보(products) 테이블에서 비용(cost)이 30이하이고 성별(department)이 ‘Men’인 모든 레코드를 10개를 조회

select *
from `thelook_ecommerce.products` 
where cost <= 30 and department = 'Men'
limit 10

SQL 연습문제 3-4

상품정보(products) 테이블에서 판매가격(retail_price)이 40이상인 레코드들의 카테고리(category) 속성값을 중복제거(distinct)하여 조회

select distinct category
from `thelook_ecommerce.products` 
where retail_price >= 40

SQL 연습문제 3-5

상품정보(products) 테이블에서 비용(cost)이 50이상 70이하인 모든 레코드들 조회하세요.

select *
from `thelook_ecommerce.products` 
where cost between 50 and 70

 

SQL 연습문제 3-6

상품정보(products) 테이블에서 상품명(name)에 ‘Men’과 ‘Sport’ 두 단어가 들어간 모든 레코드들 조회하세요.

select *
from `thelook_ecommerce.products` 
where name like '%Men%'
and name like '%Sport%'

SQL 연습문제 3-7

상품정보(products) 테이블에서 브랜드(brand)가 ‘TYR’가 아니고 이름(name)에 ‘Suit’가 포함되고 할인율이 50이상인 모든 레코드와 할인율을 조회합니다.

할인율 : (비용/판매비용)*100

할인율의 컬럼 이름은 sale_price로 표현합니다.

select *, (cost / retail_price) * 100 as sale_price
from `thelook_ecommerce.products` 
where brand != 'TYR' and 
name like '%Suit%' and
(cost / retail_price) * 100 >= 50

프로그래머스 문제 3-1 (level 1)

https://school.programmers.co.kr/learn/courses/30/lessons/131528

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

-- 코드를 입력하세요
SELECT 
COUNT(USER_ID) AS USERS
from user_info
where age IS NULL

 

프로그래머스 문제 3-2 (level 2)

https://school.programmers.co.kr/learn/courses/30/lessons/59046

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

SELECT  ANIMAL_ID, 
	NAME,
	SEX_UPON_INTAKE
FROM  ANIMAL_INS 
WHERE NAME in ('Lucy', 'Ella', 'Pickle','Rogan','Sabrina', 'Mitty')
ORDER BY ANIMAL_ID