계속 추가할 예정입니다!
CREATE TABLE 테이블명 (
column명 datatype,
column명 datatype,
...
);
// 예제
CREATE TABLE customers (
customer_id int NOT NULL,
customer_name char(50) NOT NULL,
address char(50),
city char(50),
state char(25),
zip_code char(10),
CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);
CREATE TABLE 생성할 테이블명 AS SELECT * FROM 기존 테이블명;
// 예제
CREATE TABLE tmp_customers AS SELECT * FROM Customers;
ALTER TABLE 테이블명 RENAME COLUMN 예전 이름 TO 바꿀 이름;
// 예제
ALTER TABLE tmp_customers RENAME COLUMN CustomerName TO Name;
DROP TABLE 테이블명;
// 예제
DROP TABLE tmp_customers;
SELECT
column명 AS 별칭,
column명,
...
FROM
테이블명
WHERE
조건식
// 예제
SELECT
CustomerName AS 이름,
Address
FROM
Customers
WHERE
City = 'Berlin';
WHERE 절에 사용 가능
LIKE '%hello'; // 앞 내용이 무엇이든 끝이 hello인 모든 요소
LIKE 'hello%'; // 앞은 무조건 hello로 시작하고 끝은 상관 없는 모든 요소
LIKE '%hello%'; // 앞과 뒤는 상관없으나 중간에 무조건 hello가 포함되어 있는 모든 요소
// 예제
SELECT
*
FROM
table
WHERE
text LIKE 'SQL%';
LIKE의 반대인 NOT LIKE도 존재한다.
// 예제
SELECT
Country,
City,
Address,
PostalCode
FROM
Suppliers
WHERE
Address NOT LIKE '%.%'; // Address에 .이 포함되지 않은 모든 요소
a와 b를 포함한 모든 사이값들
// 예제
SELECT
*
FROM
Products
WHERE
CategoryId BETWEEN '1996-07-01' AND '1996-07-05';
괄호안의 list 값 중 하나라도 일치하는 모든 요소.
// 예제
SELECT
*
FROM
Orders
WHERE
OrderDate IN(5, 6); // OrderDate가 5나 6인 모든 요소
문자열 합치기
// 예제
SELECT
CONCAT(LastName, ' ', FirstName) AS FullName
FROM
Employees;
문자열 자르기
// 예제
SELECT
SUBSTRING(BirthDate, 1, 4) // 1부터 4개 자르기
FROM
Employees;
SELECT
COUNT(*)
FROM
Employees;
SELECT
COUNT(DISTINCT Country)
FROM
Customers;
데이터를 그룹화하여 집계함수에 넘겨줄 때 사용. 지정한 Column 이외의 Column은 반드시 집계함수를 사용해야함. 사용하지 않으면 SELECT DISTINCT와 같은 효과를 보임.
SELECT
Country,
COUNT(*) AS CountByCountry
FROM
Customers
GROUP BY
Country;
// Customers 에서
// Country 별로 그룹화 한 후
// Country와 각 Country 수를 가져옴
GROUP BY 로 그룹화 한 이후에는 WHERE 절로 조건을 걸 수 없다. 이 경우 HAVING을 사용한다.(집계함수는 WHERE절에서 사용 불가)
SELECT
Country,
COUNT(Country) AS CountByCountry
FROM
Customers
WHERE
Country <> 'Germany'
GROUP BY
Country
HAVING
COUNT(Country) = 1;
// Customers 에서
// Contry가 Germany가 아닌 요소들을
// Country 별로 그룹화 한 후
// Country 수가 1인 요소들의
// Country와 각 Country 수를 가져옴
sql문에 그냥 JOIN으로 사용할 때 적용되는 JOIN. 집합의 교집합이다. ON 명령어와 함께 사용한다.
// 예제
SELECT
Products.ProductId AS `상품아이디`,
Products.ProductName AS `상품이름`,
SUM(OrderDetails.Quantity) AS `총수량`
FROM
Products
JOIN OrderDetails
ON Products.ProductID = OrderDetails.ProductId
GROUP BY
`상품아이디`
HAVING
`총수량` >= 200
ORDER BY `총수량` DESC;
왼쪽 집합에만 있는 것과, 집합의 교집합을 합친것. RIGHT JOIN과 반대
// 예제
SELECT
Customers.CustomerID AS `고객아이디`,
Customers.CustomerName AS `고객이름`,
SUM(OrderDetails.Quantity) AS `주문량`
FROM
Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
LEFT JOIN OrderDetails
ON Orders.OrderID = OrderDetails.OrderID
GROUP BY
Customers.CustomerID
ORDER BY `주문량` DESC;
오른쪽 집합에만 있는 것과, 집합의 교집합을 합친것. LEFT JOIN과 반대
// 예제
SELECT
Customers.CustomerID AS `고객아이디`,
Customers.CustomerName AS `고객이름`,
SUM(OrderDetails.Quantity) AS `주문량`
FROM
OrderDetails
RIGHT JOIN Orders
ON OrderDetails.OrderID = Orders.OrderID
RIGHT JOIN Customers
ON Orders.CustomerID = Customers.CustomerID
GROUP BY
Customers.CustomerID
ORDER BY `주문량` DESC;