w3schools.com 의 ‘SQL’과정을 참고하였습니다.
SQL 집계 함수
WHERE
절에서는 사용 불가,- NULL 속성 값은 제외하고 계산
SELECT TOP
- 특정한 레코드의 숫자를 결과값으로 넘겨준다.
SELECT TOP
의 경우, 데이터가 많은 테이블에서 사용하는게 좋다. 왜냐하면 많은 레코드를 결과값으로 하는 경우, 성능에 영향을 줄 수 있다. 또 반면에 데이터가 많은 테이블에서는 성능을 향상 시킬 수 있다 .- 특정 SQL 에서만 사용가능
-- SQL sever, MS
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;
-- 예제
SELECT TOP 3 * FROM Customers;
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;
SQL MIN() / MAX()
-- MIN()
SELECT MIN(컬럼이름)
FROM 테이블 이름
WHERE 조건
-- MAX()
SELECT MAX(컬럼이름)
FROM 테이블 이름
WHERE 조건
SQL COUNT(),AVG(),SUM()
-- COUNT(): 컬럼의 갯수를 반환
SELECT COUNT(컬럼이름)
FROM 테이블 이름
WHERE 조건
-- AVG(): 평균값
SELECT AVG(컬럼이름)
FROM 테이블 이름
WHERE 조건
-- SUM() : 총합
SELECT SUM(컬럼이름)
FROM 테이블 이름
WHERE 조건
SQL LIKE
WHERE
절에서 사용된다.
SQL Wildcard
- 일정 문자열을 대체
%
는 0, 1 또는 여러 문자열들을 의미_
는 문자 하나를 의미- [charlist]
- [^charlist] = [!charlist]
-- a로 시작하는 값
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE 'a%'
-- a로 끝나는 값
WHERE columnN LIKE '%a'
-- or을 가지고 있는 값
WHERE columnN LIKE '%or%'
-- r이 두번째로 위치한 단어
WHERE columnN LIKE '_r%'
-- a로 시작하고 적어도 3글자 이상의 단어
WHERE columnN LIKE 'a_%_%'
-- 도시명이 b or s or p 로 시작하는 것
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';
-- 도시명이 b or s or p 로 시작하지 않는 것
SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';
SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';
SQL IN
WHERE
절에서 사용하여, 여러 특정 데이터를 가져 올 때 사용
-- 예제
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
WHERE Country NOT IN ('Germany', 'France', 'UK');
-- 부속 질의문에서도 사용가능
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);
SQL BETWEEN
WHERE
절에서 사용
-- Price 가 10에서 20 사이이며, CategoryID가 1,2,3이 아닌 레코드
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);
-- ProductsName이 c와 m 사이에 포함되지 않는 데이터를 ProductName으로 정렬
SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;
-- date 예제 : 날짜의 경우 #으로 감싸서 표현
SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;
SQL Aliases
- 테이블 혹은 컬럼 이름을 간단하게 별칭으로 바꿀 때 사용
- 테이블 2개를 join 하는 경우에도 사용
-- column
SELECT column_name AS alias_name
FROM table_name;
-- table
SELECT column_name(s)
FROM table_name AS alias_name;
-- CustomerName,Address,PostalCode,City,Country -> Address 로
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;
-- Mysql
SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;
-- 두개 이상 테이블 결합
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;