SELECT TOP
SELECT TOP 절은 리턴될 레코드의 수를 정할 수 있다.
SELECT TOP 절은 수천 개의 레코드가있는 큰 테이블에서 유용하다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있다.
SELECT TOP
SELECT TOP 절은 리턴될 레코드의 수를 정할 수 있다.
SELECT TOP 절은 수천 개의 레코드가있는 큰 테이블에서 유용하다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있다.
모든 데이터베이스 시스템이 SELECT TOP 절을 지원하는 것은 아니다. MySQL은 LIMIT 절, Oracle 은 ROWNUM 을 사용한다.
SQL Server / MS Access 문법:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
MySQL 문법:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Oracle 문법:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Customer 테이블
출처 - https://www.w3schools.com/sql/sql_top.asp
Customers 테이블에서 처음 세 개의 레코드를 선택하는 sql문을 작성을하면 아래와 같다.
SELECT TOP
SELECT TOP 3 * FROM Customers;
LIMIT
SELECT * FROM Customers
LIMIT 3;
ROWNUM
SELECT * FROM Customers
WHERE ROWNUM <= 3;
SELECT TOP 절은 원하는 레코드의 개수를 PERCENT 로도 리턴받을 수 있다.
SELECT TOP 50 PERCENT * FROM Customers;
WHERE 절을 추가해서 사용 할 수도 있다.
SELECT TOP
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';
LIMIT
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
ROWNUM
SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;
LIKE
LIKE 연산자는 WHERE 절에서 열의 지정된 패턴을 검색하는 데 사용된다. LIKE 연산자는 함께 사용되는 두 개의 와일드카드를 가지고 있다.
- % : 퍼센트(%)는 0, 1 또는 복수 문자를 나타낸다.
- _ : 언더스코어(_)는 단일 문자를 나타낸다.
퍼센트(%)와 언더스코어(_)는 같이 사용도 가능하다.
MS Access는 언더스코어(_) 대신 물음표(?)를 사용한다.
LIKE 문법:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
LIKE는 OR, AND와 같은 연산자와 같이 사용 할 수 있다.
Customer 테이블
출처 - https://www.w3schools.com/sql/sql_like.asp
CustomerName이 “a”로 시작하는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
CustomerName이 “a”로 끝나는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
CustomerName 중간에 “or”가 포함되는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
CustomerName의 두 번째 글자가 “r”인 고객들을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
CustomerName이 “a”로 시작하고 길이가 3 자 이상인 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName LIKE 'a_%_%';
ContactName이 “a”로 시작하고 “o”로 끝나는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';
CustomerName이 “a”로 시작하지 않는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';
IN
IN 연산자를 사용하여 WHERE 절에 여러 값을 지정할 수 있다.
IN 문법:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
or
SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
Customer 테이블
출처 - https://www.w3schools.com/sql/sql_like.asp
“Germany”, “France”및 “UK”에있는 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
“Germany”, “France”또는 “UK”에 있지 않은 모든 고객을 선택해보자.
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');
BETWEEN
BETWEEN 연산자는 주어진 범위 내의 값을 선택한다. 숫자, 텍스트, 날짜 일 수 있다.
BETWEEN 연산자는 시작과 끝 값이 항상 포함된다.
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Product 테이블
출처 - https://www.w3schools.com/sql/sql_between.asp
가격이 10과 20 사이인 모든 제품을 선택해보자.
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;
가격이 10과 20 사이가 아닌 모든 제품을 선택해보자.
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
IN또는 ORDER BY와 같이 BETWEEN을 사용 할 수도 있다
가격이 10과 20 사이 인 모든 제품을 선택해보자. 단, CategoryID가 1,2 또는 3 인 제품을 표시하지 않는다.
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);
ProductName BashWeEN ‘Carnarvon Tigers’및 ‘Mozzarella di Giovanni’가 포함 된 모든 제품을 선택하고 오름차순으로 정렬해보자.(ORDER BY 이용, ORDER BY의 DEFAULT값은 ASC(오름차순)이다.)
SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;
Orders 테이블
출처 - https://www.w3schools.com/sql/sql_between.asp
OrderDate BETWEEN ‘04 -July-1996 ‘및 ‘09-Junly-1996’인 모든 주문을 선택해보자.
SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;