[SQL] SQL 기본 문법

Wintering·2022년 5월 25일
0

SQL

목록 보기
1/3

SELECT

SELECT column1, colunm2, ...
FROM table_name;
  • 예시
SELECT Country FROM Customers;
//Customers 테이블에서 Country만 출력

SELECT DISTINCT Country FROM Customers;
//Customers 테이블에서 Country만 출력(중복된 것은 지우고 출력)

SELECT COUNT(DISTINCT Country) FROM Customers;
//Customers 테이블의 Country값에서 중복된 것은 지운뒤에 갯수 출력

WHERE

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • 예시
SELECT * FROM Customers WHERE Country='Mexico';
// Country 값이 Mexico 인 것들의 모든 값을 출력
SELECT * FROM Customers WHERE CustomerID=1;
// CustomerID가 1인 것들의 모든 값을 출력

AND, OR nad NOT

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
  • 예시
SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';
//Customers 테이블에서 Country값이 Germany고 City값이 Berlin인 것들 출력

SELECT * FROM Customers
WHERE Country='Germany' OR City='Berlin';
//Customers 테이블에서 Country값이 Germany이거나 City값이 Berlin인 것들 출력

SELECT * FROM Customers
WHERE NOT Country='Germany';
//Customers 테이블에서 Country값이 Germany이 아닌 것들 출력

SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');
Country가 Germany이고 City가 Berlin이거나 Munchen인 것 출력

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
Country가 Germany도 아니고 USA도 아닌 것 출력

IN

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
  • 예시
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
// 'Germany', 'France', 'UK' 중 하나가 Country인 것들 찾기

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);
//Suppliers 테이블에 있는 Country 중 하나가 Country인 값 찾기

BETWEEN

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
  • 예시
SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;
//Price가 10과 20의 사이인 값 찾기 

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND NOT CategoryID IN (1,2,3);

SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

//이런식으로 여러개 연결 가능

SELECT * FROM Orders
WHERE OrderDate BETWEEN #01/07/1996# AND #31/07/1996#;

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';
//이 두 날짜 사이인 값 찾기

ORDER BY

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • 예시
SELECT * FROM Customers ORDER BY Country;
//Country를 기준으로 A~Z순으로 정렬해서 출력

SELECT * FROM Customers ORDER BY Country DESC;
//Country를 기준으로 Z~A순으로 정렬해서 출력

SELECT * FROM Customers
ORDER BY Country, CustomerName;
//Country를 기준으로  A~Z순으로 정렬하고 Country가 같은 경우 
//CustomerName을 기준으로  A~Z순으로 정렬해서 출력

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;
//Country를 기준으로  A~Z순으로 정렬하고 Country가 같은 경우 
//CustomerName을 기준으로  Z~A순으로 정렬해서 출력

GROUP BY

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
  • 예시
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
// Country로 묶어서 Country에 속한 CustomerID의 수를 세서 출력

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

HAVING

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
  • 예시
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
//5명 이상의 수만 출력

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;


NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

INSERT INTO

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
//전체가 아닌 몇개만 값을 지정하고 테이블에 추가하고 싶을때 사용

INSERT INTO table_name
VALUES (value1, value2, value3, ...);
//전체 값을 지정하고 테이블에 추가하고 싶을때 사용

UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • 예시
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
//CustomerID가 1인 것을 ContactName는 'Alfred Schmidt', City는 'Frankfurt'으로 바꾸기

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';
//Country가 Mexico인 모든 것의 ContactName을 'Juan'으로 바꾸기

UPDATE Customers
SET ContactName='Juan';
//전체의 ContactName을 Juan으로 바꾸기

DELETE

DELETE FROM table_name WHERE condition;
  • 예시
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
//CustomerName이 'Alfreds Futterkiste'인 것만 삭제

DELETE FROM Customers;
//전체 기록 삭제

SELECT TOP

  • 많은 데이터들 가운데 특정 개수의 데이터만 출력하고 싶은 경우
    (MySQL은 LIMIT절, ORACLE은 ROWNUM 사용)
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
//SQL Server/MS Access

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
//Mysql

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
//Oracle
  • 예시
SELECT TOP 3 * FROM Customers;
SELECT * FROM Customers LIMIT 3;				//MySQL
SELECT * FROM Customers WHERE ROWNUM <= 3;		//Oracle
//테이블 중에 위에서 부터 3개만 출력(전체 값 출력)

SELECT TOP 3 * FROM Customers WHERE Country='Germany';
Country가 Germany인 것 중 위에서 부터 3개만 출력(전체 값 출력)

0개의 댓글