본문 바로가기

SQL

MySQL 기본 문법정리

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;