MySQL 문법정리 :
1. SELECT : 데이터로부터 원하는 변수 선택 시 사용. 전체 열을 뽑고싶으면 사용
2. SELECT DISTINCT : 중복되지 않는 값을 뽑고싶을 때 사용. 중복되지 않는 값의 개수를 알고싶다면 COUNT(DISTINCT Country) 식으로 사용하면 됨.
SELECT column1, column2, ...
FROM Customers;
SELECT DISTINCT country From Customers;
3. WHERE : 특정 조건을 만족하는 개체만 뽑을 때 사용.
SELECT column1, column2, ... FROM Customers
WHERE condition;
SELECT * FROM Customers
WHERE CustomerID <= 1 AND Country = "Mexico";
사용가능한 Operator :
= | 동일 | WHERE p = 1 |
> | ~보다 크다 | WHERE p > 1 |
< | ~보다 작다 | WHERE p < 2 |
>= | 같거나 크다 | WHERE p >= 1 |
<= | 같거나 작다 | WHERE p <= 2 |
<> != | 같지 않다 | WHERE p != 2 |
BETWEEN | ~범위 안에 | WHERE p BETWEEN 50 AND 60 |
LIKE | 패턴 만족 | WHERE p LIKE '%s' |
IN | ~에 포함 | WHERE p IN (3, 6) |
4. AND, OR, NOT
SELECT * FROM Customers
WHERE NOT (Country = 'Germany' AND Country = 'USA');
# WHERE () NOT IN 도 가능
5. ORDER BY : 오름차순/내림차순으로 값 정렬 (ASC : 알파벳순, DESC : 알파벳 역순)
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;
6. IS NULL / IS NOT NULL : null 값이 어디있는지 발견 가능, = < 등의 operator로는 찾지 못함.
SELECT * FROM Customers
WHERE Address IS NULL;
# or
SELECT * FROM Customers
WHERE Address IS NOT NULL;
7. UPDATE/DELETE : 현 테이블 상의 기록 업데이트/삭제
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City = 'Frankfrut'
WHERE CustomerID = 1;
DELETE FROM Customers
WHERE CustomerName = 'Alfreds Futterkiste';
Where 조건에 해당하는 observation의 정보를 업데이트한다. Where 조건에 여러 행이 해당한다면 전부 바뀜.
8. LIMIT : 리턴할 개체 수 한계 지정
SELECT * FROM Customers
LIMIT 3;
9. MIN/MAX : 선택된 열의 최소/최대값 리턴, AS ___ 사용하면 해당 이름으로 볼 수 있음
SELECT MIN(Price) AS SmallestPrice FROM Customers;
SELECT MAX(Price) AS HighestPrice FROM Customers;
10. COUNT / AVG / SUM : 개수세기 / 평균값 / 총합
SELECT COUNT(ProductID) FROM Products;
SELECT AVG(Price) FROM Customers;
SELECT SUM(Quantity) FROM OrderDetails;
11. LIKE : WHERE문과 함께 해당 열에 특별한 패턴이 있는지 찾는 함수. AND와 OR과 함께 사용 가능
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';
WHERE Name LIKE 'a%' | 'a'로 시작하는 값 찾기 |
WHERE Name LIKE '%a' | 'a'로 끝나는 값 찾기 |
WHERE Name LIKE '%or%' | 'or'가 어디에 있든 or이 포함된 값 찾기 |
WHERE Name LIKE '_r%' | 'r'이 두번째 위치에 자리한 값 찾기 |
WHERE Name LIKE 'a_%' | 'a'로 시작하고 적어도 길이가 2 이상인 값 찾기 |
WHERE Name LIKE 'a__%' | 'a'로 시작하고 적어도 길이가 3 이상인 값 찾기 |
WHERE Name LIKE 'a%o' | 'a'로 시작하고 'o'로 끝나는 모든 값 찾기 |
12. IN : WHERE와 함께 쓰이며 여러개의 값 동시 test 가능, 괄호 조건문 안에 또다른 SELECT 쿼리 넣을 수 있음
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France');
SELECT * FROM Customers
WHERE Country IN (SELECT Country From Suppliers);
아래처럼 짜면 Suppliers 국가 데이터에 포함된 국가들만 Customers 데이터에서 뽑아낼 수 있음.
13. BETWEEN : 특정 범위 안의 값만 뽑을 수 있음. 텍스트, 숫자, 날짜 모두 사용가능
14. AS : 임시 컬럼명 붙일 수 있음. 컬럼명에 띄어쓰기가 있을 경우 반드시 ""로 감싸줄 것
SELECT CustomerName, CONCAT_WS(", ", Address, PostalCode, City, Country) AS Address
FROM Customers;
-> 그러면 CustomerName, 그리고 Adress column은 Address, PostalCode, City, Country 이렇게 합쳐서 값이 들어가있음.
- Dataset도 AS로 축약할 수 있음 :
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;
'SQL' 카테고리의 다른 글
MySQL 날짜 관련 함수 - date_format, period_add, period_diff ... (1) | 2021.09.05 |
---|---|
Programmers SQL 중성화 여부 파악하기 (0) | 2021.09.05 |
Programmers SQL 입양 시각 구하기(2) (1) | 2021.09.05 |
MySQL 문법 - Union, Group by, Having, ... (0) | 2021.08.23 |
MySQL Join 문법정리 (1) | 2021.08.23 |