목차
1.1 비교연산자 (<, >, =)
1.2 논리연산자(AND, OR, NOT)
1.3 LIKE, BETWEEN, NOT BETWEEN
SQL Code
이 문법 순서가 바뀌면 안된다.(select ,from, where 순)select 컬럼 From 테이블 where 조건 ;
SELECT *
FROM orderdetails
WHERE orderlinenumber = 1
;
모두 가져올 거다, orderdetails 테이블에서, orderlinenumber=1 인 것만.
데이터를 살짝 살펴보면, 주문 번호(orderNumber)는 같은데 제품 코드(productCode)는 같을 수 있다.
예) 제품을 장바구니에 담아서 한번에 결제할 수 있음.
SELECT *
FROM orderdetails
WHERE productcode = 's24_3969'
;
SELECT *
FROM orderdetails
WHERE quantityoredered >= 70
;
❔ 문제 1 : customers 테이블에서 creditLimit이 10000보다 큰 고객들의 이름(customerName)을 조회하라.
SELECT customerName
FROM customers
WHERE creditLimit > 10000
;
SELECT *
FROM orderdetails
WHERE quantityordered = 46
AND
productcode = 's24_3969'
;
SELECT *
FROM orderdetails
WHERE quantityordered =46 OR
productcode = 's24_3969'
;
SELECT *
FROM orderdetails
WHERE priceEach = 35.29 AND
productcode = 's24_3969'
OR
quantityordered = 46 ;
# AND, OR
SELECT *
FROM orderdetails
WHERE priceEach = 35.29
AND
(productcode = 's24_3969'
OR
quantityordered = 46) ;
❔ 문제 2 : orders 테이블에서 status가 'Shipped'이거나 'InProcess'인 주문의 orderNumber를 조회하라.
SELECT orderNumber
FROM orders
WHERE status = 'Shipped'
OR
status = 'InProcess' ;
❔ 문제 3 : products 테이블에서 재고(quantityInStock)가 100개 미만이거나 500개 초과인 제품의 productName을 조회하라.
SELECT productName
FROM products
WHERE quantityInStock <100
OR
quantityInStock > 500;
LIKE 함수는 문자열에서 원하는 문자가 포함되어 있는지를 검색
SELECT * FROM table WHERE LIKE '%CARS' #CARS로 끝나는 데이터 검색 WHERE LIKE 'CARS%' #CARS로 시작하는 데이터 검색 WHERE LIKE '%CARS%' #CARS를 포함하는 데이터 검색, 가장 많이 사용
SELECT *
FROM products
WHERE productline = 'vintage cars' OR productline ='classic cars';
SELECT *
FROM products
WHERE productline LIKE '%cars';
❔ 문제 4 : employees 테이블에서 jobTitle에 'Sales'라는 단어가 포함된 직원의 firstName과 lastName을 조회하라.
SELECT firstName, lastName
FROM employees
WHERE jobTitle LIKE '%Sales%' ;
BETWEEN 함수는 A이상 B이하의 데이터를 출력
경계값을 포함한다.
비교, 논리연산자로도 가능하지만 좀 더 짧게 표현가능한 함수SELECT * FROM table WHERE column1 BETWEEN 10 AND 30; # column1이 10이상 30이하인 모든 데이터 출력하라
SELECT *
FROM orders
WHERE orderdate
BETWEEN '2003-01-01' AND '2003-01-31' ;
SELECT *
FROM orders
WHERE orderdate >= '2003-01-01' AND orderdate <= '2003-01-31';
❔ 문제 5 : orderdetails 테이블에서 주문 수량(quantityOrdered)이 10개 이상 50개 이하인 주문의 orderNumber를 조회하라.
SELECT orderNumber
FROM orderdetails
WHERE quantityOrdered
BETWEEN 10 AND 50;
NOT BETWEEN 함수는 A이상 B이하를 제외한 데이터를 출력
여집합이라고 생각.
경계선을 포함하지 않음.SELECT * FROM table WHERE column1 NOT BETWEEN 10 AND 30; # column1이 10이상 30이하 제외 모든 데이터 출력
SELECT *
FROM orders
WHERE orderdate
NOT BETWEEN '2003-01-01' AND '2003-01-31';
SELECT *
FROM orders
WHERE orderdate < '2003-01-01' OR orderdate > '2003-01-31';
# AND가 들어가면 안되고 OR이 들어가야함!