반응형
AND, OR
-- suppliers의 country가 'sweden'이거나 'italy'만 조회
SELECT * FROM suppliers WHERE Country = 'sweden' OR Country ='Italy';
-- employees의 birthDate가 1963-08-01 ~ 1963-08-31 사이만 조회
SELECT * FROM employees WHERE BirthDate >= '1963-08-01' AND BirthDate <= '1963-08-31';
-- products의 price가 100.0~200.0 사이 조회
SELECT * FROM products WHERE Price >= 100.0 AND Price <= 200.0;
-- 여러 연산자 조합시 () 사용해서 우선순위 결정
-- 예) 10달러 미만, 100달러 이상 그리고 카테고리 id가 1인 것 조회
SELECT * FROM products WHERE (Price < 10 OR Price >= 100) AND (CategoryID = 1);
BETWEEN
-- price 30~40 사이 조회
SELECT * FROM products WHERE Price BETWEEN 30 AND 40;
-- birthdate '1958-09-01'~'1958-09-31'조회
SELECT * FROM employees WHERE BirthDate BETWEEN '1958-09-01' AND '1958-09-31';
-- 값을 직접 입력할 수 있음
SELECT * FROM products WHERE Price BETWEEN ? AND ?;
IN : IN 파라미터 안에 값이 하나라도 같으면 반환
-- OR 연산을 사용
SELECT * FROM customers WHERE Country = 'UK' OR Country = 'spain' OR Country = 'Italy';
-- IN으로 묶어서 사용 위와 같은 결과
SELECT * FROM customers WHERE Country IN('UK','spain','Italy');
-- 예) 카테고리 3, 4에 속한 상품들
SELECT * FROM products WHERE CategoryID IN(3,4);
-- 예) 1996년 7월 4일,5일에 주문한 주문들
SELECT * FROM orders WHERE OrderDate IN('1996-07-04','1996-07-05');
-- 예) london이나 madrid, sevilla에 있는 고객들
SELECT * FROM customers WHERE City IN('madrid', 'sevilla');
CONCAT 문자열 결합, 날짜 연산(ADDDATE(증감), DATE_SUB(가감))
-- CONCAT: 문자열 결합, Firtname과 LastName을 결합하여 반환
SELECT EmployeeID, CONCAT(FirstName, ' ', LastName) FROM employees;
-- ADDDATE: 날짜 더하기 연산, 파라미터 첫 번째에는 피연산 할 날짜 지정, 두 번째에는 연산 조건 지정
-- DATE_SUB: 날짜 빼기 연산, 파라미터 첫 번째에는 피연산 할 날짜 지정, 두 번째에는 연산 조건 지정
SELECT BirthDate, -- 1968년
ADDDATE(BirthDate, INTERVAL +10 YEAR ), -- 1978년 10 증감
DATE_SUB(BirthDate, INTERVAL +10 YEAR ) -- 1958년 10 가감
FROM employees WHERE EmployeeID =1;
AS : 별칭 (테이블명 또는 컬럼명 사용자 지정 변경)
-- 컬럼명에 alias 추가
SELECT EmployeeID, CONCAT(FirstName, ' ',LastName) AS fullname FROM employees;
-- 테이블명에 Alias 추가
SELECT p.ProductName FROM products p;
-- JOIN 예제
SELECT p.ProductName, c.CategoryID
FROM products AS p JOIN categories AS c ON p.CategoryID = c.CategoryID;
ORDER BY (DESC, ASC) - 레코드 정렬
-- 오름차순 (기본 값) 생략가능
SELECT * FROM products ORDER BY CategoryID ASC;
-- 내림차순 DESC
SELECT * FROM products ORDER BY CategoryID DESC;
LIMIT - 조회 레코드의(행, row)를 제한 (페이징 기법으로 많이 사용됨.)
-- 내림차순 정렬 후 행의 갯수 10개로 제한하여 반환
SELECT * FROM products
ORDER BY Price DESC
LIMIT 10;
-- 0번 부터 3개
SELECT ProductName, Price
FROM products
order by Price
LIMIT 0, 3;
-- 1번 부터 3개
SELECT ProductName, Price
FROM products
order by Price
LIMIT 1, 3;
-- 2번 부터 3개
SELECT ProductName, Price
FROM products
order by Price
LIMIT 2, 3;
LIKE - 특정 조건의 레코드를 검색
- %, _ 기호와 함께 사용 됨
% 기호 - 특정 문자 조건
-- % 기호
SELECT * FROM customers
WHERE CustomerName LIKE 'ch%'; -- ch로 시작하는 0개이상 문자
SELECT * FROM customers
WHERE CustomerName LIKE '%ch'; -- ch로 끝나는 0개이상 문자
SELECT * FROM customers
WHERE CustomerName LIKE '%er'; -- er로 끝나는 0개이상 문자
SELECT * FROM customers
WHERE CustomerName LIKE '%er%'; -- 중간에 er이 있는 0개이상 문자
_ 기호 - 문자 개수 조건
_ 기호
SELECT * FROM employees
WHERE FirstName LIKE '_____'; -- _: 언더스코어 갯수만큼의 글자 (여기서 5개)
SELECT * FROM employees
WHERE LastName LIKE '____'; -- _: 4개의 문자 아무거나
SELECT * FROM employees
WHERE LastName LIKE '_e%'; -- 두 번째 글자가 e인 문자열(여기서는 아무글자 뒤에 2번째가 e만 붙으면됨.(두글자 x))
반응형
'Database > SQL' 카테고리의 다른 글
정규화 Normalization (제 1~3 정규화) (0) | 2023.10.13 |
---|---|
서브 쿼리 - MariaDB/SQL (0) | 2023.10.13 |
상관쿼리와 비상관쿼리 - MariaDB/SQL (2) | 2023.10.13 |