1. Syntax
- SELECT * FROM table_name;
- table_name에서 *(모든 데이터) 가져오기
2. Select
- SELECT column1, column2, ... FROM table_name;
- column을 택해서 그것만 가져올 수도 있음
3. Select Distinct
- SELECT column1 FROM table_name;
- table_name에서 column1의 모든data 출력
- SELECT DISTINCT column1 FROM table_name;
- table_name에서 column1의 중복되지 않는 data 출력
- SELECT COUNT(DISTINCT column1) FROM table_name;
- table_name에서 column1의 중복되지 않는 data 개수 출력
4. Where
- SELECT column1, column2, ... FROM table_name WHERE condition;
- SELECT * FROM table_name WHERE column1='name';
- table_name에서 모든 data중 column1이 name인 것들 출력
- WHERE Price BETWEEN 50 AND 60;
- Price column에서 50~60사이의 것들 출력
- WHERE City LIKE 's%';
- City column에서 s로 시작하는 것들 출력
- WHERE City IN ('Paris','London');
- City column에서 Paris, London인 것들 출력
- SELECT * FROM table_name WHERE column1_id=num;
- table_name에서 모든 data중 column1_id가 num인 것 출력
- = / > / < / >= / <= / <>(not equal)
5. And, Or, Not
- And
- SELECT * FROM table_name WHERE condition1 AND condition2 AND condition3;
- table_name에서 모든 data들 중 condition1이고, condition2이고, condition3인 data를 출력
- SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';
- Customers table에서 모든 data들 중 Country가 Germany고, City는 Berlin인 data를 출력
- Or
- SELECT * FROM table_name WHERE condition1 OR condition2 OR condition3;
- table_name에서 모든 data들 중 condition1이거나, condition2이거나, condition3인 data들을 출력
- SELECT * FROM Customers WHERE City='Berlin' OR City='München';
- Customers table에서 모든 data들 중 City가 Berlin이거나 München인 data들을 출력
- Not
- SELECT * FROM table_name WHERE NOT condition;
- table_name에서 모든 data들 중 condition이 아닌 data들을 출력
- SELECT * FROM Customers WHERE NOT Country='Mexico';
- Customers table에서 모든 data들 중 Country가 Mexico인 data들을 제외하고 출력
- Combining AND, OR and NOT 가능
- SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
- Customers table에서 모든 data들 중 Country가 Germany고, City는 Berlin이거나 München인 data들 출력
- SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
- Customers table에서 모든 data들 중 Country가 Germany이고, USA인 data들 제외하고 출력
6. Order by
- SELECT * FROM table_name ORDER BY column1 ASC(DESC);
- table에서 column1의 data를 asc(작은순서부터 큰순서) 혹은 desc(큰순서부터 작은순서)로 정렬하여 출력
- SELECT * FROM Customers ORDER BY Country;
- Customers table에서 Country의 data를 a-z순서로 정렬하여 출력
- SELECT * FROM Customers ORDER BY Country DESC;
- Customers table에서 Country의 data를 z-a순서로 정렬하여 출력
- SELECT * FROM Customers ORDER BY Country, CustomerName;
- Country의 data를 a-z순서로 정렬하고, 만약 같은 Country일 경우 그 data들만 CustomerName를 a-z순서로 정렬하여 출력
- SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;
7. Insert Into
- INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
- column1에 value1을, column2에 value2를, ....data추가하기 위한 것
- INSERT INTO table_name (column1, column3) VALUES (value1, value3);
- column1에 value1을, column3에 value3을 추가하고 나머지 column에는 null이 들어감
8. Null values
- SELECT column1, column2, column3 FROM table_name WHERE column3 IS NULL;
- table에서 column3이 null인 data들 출력
- SELECT column1, column2, column3 FROM table_name WHERE column2 IS NOT NULL;
- table에서 column2가 null이 아닌 data들 출력
9. Update
- UPDATE table_name SET column1 = 'value1', column3= 'value3' WHERE column2 = value2;
- table에서 column2가 value2인 data들의 column1과 column3을 각각 value1과 value3로 업데이트
- WHERE을 써주지 않으면 table에 모든 기록이 다 동일하게 업데이트 됨
10. Delete
- DELETE FROM table_name WHERE condition;
- DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
- CustomerName이 Alfreds Futterkiste인 data 삭제
- DELETE FROM table_name
11. Select Top
- SELECT TOP 3 * FROM table_name (WHERE condition);
- table의 제일 top에서 아래로 3개까지 출력
- (where)붙이면 table의 condition인 data들 중 제일 top에서 아래로 3개까지 출력
- SELECT TOP 50 PERCENT * FROM Customers;
- SELECT TOP 5 * FROM Customers (WHERE Country='Germany');
- Customers의 제일 top에서 아래로 5개까지 출력
- (where)붙이면 Customers의 Country가 Germany인 data들 중 제일 top에서 아래로 5개까지 출력
- SELECT * FROM table_name (WHERE condition) LIMIT 5;
- table의 제일 top에서 아래로 5개까지 출력
- (where)붙이면 table의 condition인 data들 중 제일 top에서 아래로 5개까지 출력
- SELECT * FROM Customers (WHERE Country='Germany') LIMIT 3;
- Customers의 제일 top에서 아래로 3개까지 출력
- (where)붙이면 Customers의 Country가 Germany인 data들 중 제일 top에서 아래로 3개까지 출력
12. Min and Max
- Min
- SELECT MIN(column_name) FROM table_name;
- table의 column_name중에서 minimum인 값 출력
- MIN(column_name) | minimum값
- SELECT MIN(column_name) AS change_name FROM table_name;
- table의 column_name중에서 minimum인 값을 change_name으로 출력
- change_name | minimum값
- SELECT MIN(column_name) AS change_name FROM table_name WHERE condition;
- table의 column_name중에서 condition인 minimum 값을 change_name으로 출력
- change_name | minimum값
- SELECT MIN(Price) AS SmallestPrice FROM Products WHERE CategoryID=1;
- Max
- SELECT MAX(column_name) FROM table_name;
- SELECT MAX(column_name) AS change_name FROM table_name;
- SELECT MAX(column_name) AS change_name FROM table_name WHERE condition;
- SELECT MAX(Price) AS LargestPrice FROM Products WHERE CategoryID=2;
- Min에서 MIN -> MAX, minimum -> maximum으로 바꿔주면 Min과 설명 똑같음
13. Count, Avg, Sum
- Count
- SELECT COUNT(column_name) FROM table_name WHERE condition;
- table의 rows 개수 return
- SELECT COUNT(ProductID) FROM Products;
- Avg
- SELECT AVG(column_name) FROM table_name WHERE condition;
- column_name 값의 평균값
- SELECT AVG(Price) FROM Products;
- Sum
- SELECT SUM(column_name) FROM table_name WHERE condition;
- column_name 값의 총합
- SELECT SUM(Quantity) FROM OrderDetails;
14. Like
- SELECT * FROM table_name WHERE column_name Like pattern;
- pattern
- 'a%'
- table의 column_name이 a로 시작하는 data 출력
- '%a'
- table의 column_name이 a로 끝나는 data 출력
- '%or%'
- table의 column_name 속에 or이 있는 data 출력
- (예: Store)
- '_r%'
- table의 column_name 두번째 위치해 있는 문자가 r인 data 출력
- 'a__%'
- table의 column_name이 a로 시작하고, 적어도 3문자인 data 출력
- 'a%o'
- table의 column_name이 a로 시작해서 o로 끝나는 data출력
- SELECT * FROM table_name WHERE column_name NOT LIKE pattern;
- table의 column_name이 pattern인 data 제외하고 출력
15. Wildcard
- %
- bl%
- bl이 포함된 data찾기
- bl, black, blue, blob 등등
- SELECT * FROM Customers WHERE City LIKE 'ber%';
- _
- h_t
- h와 t 사이 한 문자가 포함된 data 찾기
- hot, hat, hit 등등
- SELECT * FROM Customers WHERE City LIKE 'L_n_on';
- []
- h[oa]t
- h와 t 사이 문자가 o나 a인 data 찾기
- hot, hat
- SELECT * FROM Customers WHERE City LIKE '[bsp]%';
- City 속에 b나 s나 p로 시작하는 data 찾기
- SELECT * FROM Customers WHERE City LIKE '[a-c]%';
- City 속에 a부터 c까지 그것으로 시작하는 data찾기
- [!]
- SELECT * FROM Customers WHERE City LIKE '[!bsp]%';
- City 속에 b나 s나 p로 시작하는 data 제외한 data 찾기
- NOT LIKE '[bsp]%';
16. In
- SELECT * FROM table_name WHERE column_name IN ('value1', 'value2', ...);
- table의 column_name이 value1, value2, ...인 data 출력
- SELECT * FROM table_name WHERE column_name NOT IN ('value1', 'value2', ...);
- table의 column_name이 value1, value2, ...인 data 제외한 data 출력
17. Between
- SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
- table의 column_name에서 value1부터 value2 사이의 값인 data 출력
- SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;
- SELECT * FROM Products WHERE Price NOT BETWEEN 10 AND 20;
- 10부터 20 사이의 값인 data를 제외한 나머지 data 출력
- in에서
- SELECT * FROM Products WHERE Price BETWEEN 10 AND 20 AND NOT CategoryID IN (1,2,3);
- CategoryID가 1,2,3인 data를 제외하고 Price가 10부터 20까지인 data 출력
- text value
- SELECT * FROM Products WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni' ORDER BY ProductName;
- ProductName의 a->z순서대로 정렬 후, ProductName이 Carnarvon Tigers인 data부터 Mozzarella di Giovanni인 data까지 출력
- NOT BETWEEN
- date
- SELECT * FROM Orders WHERE OrderDate BETWEEN #01/07/1996# AND #31/07/1996#;
- 또는, BETWEEN '1996-07-01' AND '1996-07-31';
18. Aliases
- SELECT column_name1 AS change_name1, column_name2 AS change_name2 FROM table_name;
- table에서 column_name1이름을 change_name1 이름으로 바뀌고, olumn_name2이름을 change_name2 이름으로 바뀌어서 출력
- data는 변화없이 그래도 출력
- SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers;
- SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address FROM Customers;
- 출력값
- CustomerName | Address, PostalCode City, Country
- Alfreds Futterkiste | Obere Str. 57, 12209 Berlin, Germany
19. Join
- INNER JOIN
- SELECT column_name FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
참고: https://www.w3schools.com/sql/default.asp