티스토리 뷰

WEB/기타

SQL(Structured Query Language)구문정리

silverline79 2024. 7. 12. 21:12

SQL(Structured Query Language)구문정리

 

중요한 SQL 명령

SELECT 데이터베이스에서 데이터를 추출
INSERT INTO 새로운 데이터를 데이터베이스에 삽입
UPDATE 데이터베이스의 데이터 업데이트
DELETE 데이터베이스에서 데이터 삭제
CREATE DATABASE 새로운 데이터베이스 생성
ALTER DATABASE 데이터베이스 수정
CREATE TABLE 새로운 테이블 생성
ALTER TABLE 테이블 수정
DROP TABLE 테이블 삭제
CARATE INDEX 인덱스 생성(검색 키)
DROP INDEX 인덱스를 삭제

 

1. SELECT ( TABLE 조회 )

SELECT * FROM TABLENAME; SELECT column1, column2, ...FROM table_name;
SELECT DISTINCT문은
고유한(다른) 값만 반환
SELECT DISTINCT column1, column2, ...FROM table_name;
컬럼의 고유한 값의 갯수 SELECT COUNT(DISTINCT 컬럼명) FROM 테이블명;

 

[ WHERE ] 레코드 필터링 AND / OR / NOT 사용 가능

SELECT column1, column2, ...FROM table_nameWHERE condition; SELECT * FROM CustomersWHERE Country='Mexico';

[ WHERE ] WHERE 절의 연산자

Operator
Example
=
SELECT * FROM Products
WHERE Price = 18;
>
SELECT * FROM Products
WHERE Price > 30;
<
SELECT * FROM Products
WHERE Price < 30;
>=
SELECT * FROM Products
WHERE Price >= 30;
<=
SELECT * FROM Products
WHERE Price <= 30;
<> Not equal SELECT * FROM Products
WHERE Price <> 18;
BETWEEN
SELECT * FROM Products
WHERE Price BETWEEN 50 AND 60;
LIKE
SELECT * FROM Customers
WHERE City LIKE 's%';
IN
SELECT * FROM Customers
WHERE City IN ('Paris','London');

 

[ ORDER BY ] 정렬 / default - 오름차순(ASC) / 내림차순(DESC)

SELECT column1, column2, ...FROM table_nameORDER BY column1 , column2, ... ASC|DESC;

 

[ NULL ] IS NULL / IS NOT NULL

IS NULL IS NOT NULL
SELECT column_namesFROM table_nameWHERE column_name IS NULL; SELECT column_namesFROM table_nameWHERE column_name IS NOT NULL;

 

[ TOP ] 반환할 레코드 수 지정

MySQL  오라클 12 이전 Oracle
SELECT column_name(s)FROM table_nameWHERE conditionLIMIT number; SELECT column_name(s)FROM table_nameORDER BY column_name(s)FETCH FIRST number ROWS ONLY; SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number;

 

[ MIN( ) / MAX( ) ]

MIN() MAX()
SELECT MIN(column_name)FROM table_nameWHERE condition; SELECT MAX(column_name)FROM table_nameWHERE condition;
SELECT MIN(Price) AS SmallestPriceFROM Products; SELECT MAX(Price) AS LargestPriceFROM Products;

 

[ COUNT( , AVG( ), SUM( ) ]

COUNT() AVG() SUM()
지정된 기준과 일치하는 행의 수를 반환 숫자 열의 평균 값을 반환 함수는 숫자 열의 합을 반환
SELECT COUNT(column_name)FROM table_nameWHERE condition; SELECT AVG(column_name)FROM table_nameWHERE condition; SELECT SUM(column_name)FROM table_nameWHERE condition;
SELECT COUNT(ProductID)FROM Products; SELECT AVG(Price)FROM Products; SELECT SUM(Quantity)FROM OrderDetails;

 

[ LIKE ]

LIKE 오퍼레이터가 사용된다 WHERE 열의 특정 패턴을 검색하는 절.


LIKE 연산자 와 함께 자주 사용되는 두 개의 와일드카드가 있습니다 .


- 퍼센트 기호(%)0, 1 또는 여러 문자를 나타냅니다.
- 밑줄 기호(_)는 하나의 단일 문자를 나타냅니다.
SELECT column1, column2, ...FROM table_nameWHERE columnN LIKE pattern; AND 또는 OR연산자를 사용하여 여러 조건을 결합할 수도 있습니다 .
--A로 시작하는 문자를 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A%'


--A로 끝나는 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A'


--A를 포함하는 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%'


--A로 시작하는 두글자 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A_'


--첫번째 문자가 'A''가 아닌 모든 문자열 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '[^A]'


--첫번째 문자가 'A'또는'B'또는'C'인 문자열 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '[ABC]'
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '[A-C]'


- "a"로 시작하고 "o"로 끝나는 ContactName을 가진 모든 고객을 선택
SELECT * FROM Customers WHERE ContactName LIKE 'a%o';


- "a"로 시작하지 않는 CustomerName을 가진 모든 고객을 선택
SELECT * FROM Customers WHERE CustomerName NOT LIKE 'a%';

[ IN ]

IN 연산자를 사용하면 여러 값을 지정할 수 있습니다 WHERE .
IN 연산자 다중 대한 속기 OR 조건.
SELECT column_name(s)FROM table_nameWHERE column_name IN (value1, value2, ...); SELECT column_name(s)FROM table_nameWHERE column_name IN (SELECT STATEMENT);
"독일", "프랑스" 또는 "영국"에 있는 모든 고객을 선택 "독일", "프랑스" 또는 "영국"에 있지 않은 모든 고객을 선택
SELECT * FROM CustomersWHERE Country IN ('Germany''France''UK'); SELECT * FROM CustomersWHERE Country NOT IN ('Germany''France''UK');
공급업체와 동일한 국가의 모든 고객을 선택
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

 

[ BETWEEN ]

BETWEEN주어진 범위 내에서 운전자가 선택 값. 값은 숫자, 텍스트 또는 날짜일 수 있습니다.
BETWEEN운영자는 포함입니다 : 시작과 끝 값이 포함되어 있습니다.
SELECT column_name(s)FROM table_nameWHERE column_name BETWEEN value1 AND value2;
가격이 10에서 20 사이인 모든 제품을 선택 Carnarvon TigersMozzarella di Giovanni 사이에 ProductName이 있는 모든 제품을 선택
SELECT * FROM ProductsWHERE Price BETWEEN 10 AND 20; SELECT * FROM ProductsWHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'ORDER BY ProductName;
OrderDate'01-July-1996''31-July-1996' 사이에 있는 모든 주문을 선택
SELECT * FROM OrdersWHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#; SELECT * FROM OrdersWHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

 

[ NOT BETWEEN ]

NOT BETWEEN SELECT * FROM ProductsWHERE Price NOT BETWEEN 10 AND 20;
가격이 10에서 20 사이인 모든 제품을 선택합니다. CategoryID1,2 또는 3인 제품을 표시하지 마십시오. Carnarvon TigersMozzarella di Giovanni 사이가 아닌 ProductName이 있는 모든 제품을 선택
SELECT * FROM ProductsWHERE Price BETWEEN 10 AND 20AND CategoryID NOT IN (1,2,3); SELECT * FROM ProductsWHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'ORDER BY ProductName;

[ Aliases ] 별칭이 생성

SQL Aliases은 테이블이나 테이블의 열에 임시 이름을 지정하는 데 사용됩니다.
Aliases은 종종 열 이름을 더 읽기 쉽게 만드는 데 사용됩니다.
Aliases은 해당 쿼리 기간 동안에만 존재합니다.
AS키워드로 별칭이 생성됩니다 .
열 구문 테이블 구문
SELECT column_name AS alias_nameFROM table_name; SELECT column_name(s)FROM table_name AS alias_name;

 

Aliases -

CustomerID 열과 CustomerName 열에 대해 하나씩 두 개의 별칭 CustomerName 열과 ContactName 열에 대해 하나씩 두 개의 별칭
참고: 별칭 이름에 공백이 포함된 경우 큰따옴표 또는 대괄호가 필요.
SELECT CustomerID AS ID, CustomerName AS CustomerFROM Customers; SELECT CustomerName AS Customer, ContactName AS [Contact Person]FROM Customers;
개의 열(Address, PostalCode, City Country)을 결합하는 "Address"라는 별칭 만듬
SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS AddressFROM Customers;

 

Aliases - 테이블

CustomerID=4(Around Horn)인 고객의 모든 주문을 선택합니다. "Customers" "Orders" 테이블을 사용하고 각각 "c" "o"의 테이블 별칭을 제공
SELECT o.OrderID, o.OrderDate, c.CustomerNameFROM Customers AS c, Orders AS oWHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;

 

[ JOIN ] 두 개 이상의 테이블에서 행을 결합

JOIN절은 그들 사이의 관련 열을 기반으로, 두 개 이상의 테이블에서 행을 결합하는 데 사용
INNER JOIN두 테이블에서 일치하는 값을 가진 레코드를 선택 하는 다음 SQL ( 포함 ) 을 만들 수 있습니다 .
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDateFROM OrdersINNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
(INNER) JOIN: 두 테이블에서 일치하는 값을 가진 레코드를 반환합니다.
LEFT (OUTER) JOIN : 왼쪽 테이블의 모든 레코드를 반환하고 오른쪽 테이블의 일치하는 레코드를 반환합니다.
RIGHT (OUTER) JOIN : 오른쪽 테이블의 모든 레코드를 반환하고 왼쪽 테이블의 일치하는 레코드를 반환합니다.
FULL (OUTER) JOIN : 왼쪽 또는 오른쪽 테이블에 일치하는 항목이 있는 경우 모든 레코드를 반환합니다.

[ INNER JOIN ] INNER JOIN두 테이블에서 일치하는 값이 키워드 선택 기록.


INNER JOIN 두 테이블에서 일치하는 값이 키워드 선택 기록.
SELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name = table2.column_name;
고객 정보가 있는 모든 주문을 선택
SELECT Orders.OrderID, Customers.CustomerNameFROM OrdersINNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
고객 및 배송업체 정보가 있는 모든 주문을 선택
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperNameFROM ((OrdersINNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

 

[ LEFT JOIN ]


LEFT JOIN 키워드 반환 왼쪽 테이블 (1)에서 모든 레코드, 오른쪽 테이블 (2)에서 일치하는 레코드. 일치하는 항목이 없는 경우 결과는 오른쪽에서 0개의 레코드입니다.
SELECT column_name(s)FROM table1LEFT JOIN table2ON table1.column_name = table2.column_name;
모든 고객과 고객이 가질 수 있는 모든 주문을 선택
SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersLEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerIDORDER BY Customers.CustomerName;
LEFT JOIN 키워드는 바로 테이블 (주문)에과 일치하는 데이터가 존재하지 않는 경우에도 왼쪽 테이블의 모든 레코드 (고객)을 반환합니다.

[ RIGHT JOIN ]


RIGHT JOIN키워드 반환 우측 표 (2)에서 모든 기록, 왼쪽 테이블 (1)에서 일치하는 레코드. 일치하는 항목이 없는 경우 결과는 왼쪽부터 0개의 레코드입니다.
SELECT column_name(s)FROM table1RIGHT JOIN table2ON table1.column_name = table2.column_name;
모든 직원과 직원이 내린 모든 주문을 반환
SELECT Orders.OrderID, Employees.LastName, Employees.FirstNameFROM OrdersRIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeIDORDER BY Orders.OrderID;
RIGHT JOIN 키워드 반환 우측 표 (직원)의 모든 기록, 왼쪽 테이블 (주문)에는 일치가없는 경우에도 오른쪽 테이블의 모든 레코드 (직원)을 반환합니다.

 

[ FULL JOIN ]


FULL OUTER JOIN키워드 반환 왼쪽 (1) 또는 오른쪽 (2) 테이블 레코드에서 일치가 모든 레코드를.
SELECT column_name(s)FROM table1FULL OUTER JOIN table2ON table1.column_name = table2.column_nameWHERE condition;
모든 고객과 모든 주문을 선택
SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersFULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerIDORDER BY Customers.CustomerName;
FULL OUTER JOIN 키워드 수익률 다른 테이블과 일치 여부 두 테이블에서 일치하는 모든 기록. 따라서 "주문"에 일치하지 않는 행이 "고객"에 있거나 "고객"에 일치하지 않는 행이 "주문"에 있는 경우 해당 행도 나열됩니다.

 

[ SELF JOIN ] 자체 조인은 일반 조인이지만 테이블은 자신과 조인

자체 조인은 일반 조인이지만 테이블은 자신과 조인 SELECT column_name(s)FROM table1 T1, table1 T2WHERE condition;
같은 도시에 있는 고객과 일치
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.CityFROM Customers A, Customers BWHERE A.CustomerID <>B.CustomerIDAND A.City = B.CityORDER BY A.City;

[ UNION ]

UNION 연산자는 두 개 이상의 결과 집합을 결합하는 데 사용되는 SELECT .


SELECT안의 모든 명령문 UNION에는 동일한 수의 열이 있어야 합니다.
열에도 유사한 데이터 유형이 있어야 합니다.
모든 SELECT문의 열도 같은 순서여야 합니다.
SELECT column_name(s) FROM table1UNIONSELECT column_name(s) FROM table2;
UNION ALL 구문
UNION조작은 기본적으로 별개의 값을 선택한다. 중복 값을 허용하려면 다음을 사용하십시오 UNION ALL.
SELECT column_name(s) FROM table1UNION ALLSELECT column_name(s) FROM table2;
UNION
"Customers" "Suppliers" 테이블 모두에서 도시(고유한 값만)를 반환
SELECT City FROM CustomersUNIONSELECT City FROM SuppliersORDER BY City;
UNION ALL
"Customers" "Suppliers" 테이블 모두에서 도시(중복 값도 포함)를 반환
SELECT City FROM CustomersUNION ALLSELECT City FROM SuppliersORDER BY City;
UNION With WHERE
"Customers" "Suppliers" 테이블 모두에서 독일 도시(고유한 값만)를 반환
SELECT City, Country FROM CustomersWHERE Country='Germany'UNIONSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;
UNION ALL With WHERE
"Customers" "Suppliers" 테이블 모두에서 독일 도시(중복 값도 포함)를 반환
SELECT City, Country FROM CustomersWHERE Country='Germany'UNION ALLSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;
Another UNION
모든 고객과 공급업체를 나열
SELECT 'Customer' AS Type, ContactName, City, CountryFROM CustomersUNIONSELECT 'Supplier', ContactName, City, CountryFROM Suppliers;

 

[ GROUP BY ]

GROUP BY같이 요약 행에 같은 값이 문 그룹 행은 "각국의 고객의 수를 찾을 수 있습니다."


GROUP BY문은 하나 이상의 열로 결과 집합을 그룹화하기 위해 집계 함수( COUNT(), MAX(), MIN(), SUM(), AVG()) 와 함께 자주 사용됩니다 .
SELECT column_name(s)FROM table_nameWHERE conditionGROUP BY column_name(s)ORDER BY column_name(s);
각 국가의 고객 수를 나열 SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY Country;
높은 순으로 정렬된 각 국가의 고객 수를 나열 SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY CountryORDER BY COUNT(CustomerID) DESC;
각 배송업체에서 보낸 주문 수를 나열 SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders FROM OrdersLEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperIDGROUP BY ShipperName;

 

[ HAVING ]

HAVING때문에 절은 SQL에 추가 된 WHERE키워드가 집계 함수와 함께 사용할 수 없습니다. SELECT column_name(s)FROM table_nameWHERE conditionGROUP BY column_name(s)HAVING conditionORDER BY column_name(s);
각 국가의 고객 수를 나열합니다. 고객이 5명 이상인 국가만 포함 SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY CountryHAVING COUNT(CustomerID) > 5;
각 국가의 고객 수를 높은 순으로 정렬하여 나열합니다(5명 이상의 고객이 있는 국가만 포함). SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY CountryHAVING COUNT(CustomerID) > 5ORDER BY COUNT(CustomerID) DESC;
10개 이상의 주문을 등록한 직원을 나열 SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrdersFROM (OrdersINNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)GROUP BY LastNameHAVING COUNT(Orders.OrderID) > 10;
직원 "Davolio" 또는 "Fuller"25개 이상의 주문을 등록했는지 여부를 나열 SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrdersFROM OrdersINNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeIDWHERE LastName = 'Davolio' OR LastName = 'Fuller'GROUP BY LastNameHAVING COUNT(Orders.OrderID) > 25;

[ EXISTS ]

EXISTS 연산자 서브 쿼리의 모든 레코드의 존재를 테스트하는 데 사용된다.
EXISTS 운영자 TRUE 반환 하위 쿼리가 하나 개 이상의 레코드를 반환합니다.
SELECT column_name(s)FROM table_nameWHERE EXISTS(SELECT column_name FROM table_name WHERE condition);
TRUE를 반환하고 제품 가격이 20 미만인 공급자를 나열 SELECT SupplierNameFROM SuppliersWHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);
TRUE를 반환하고 제품 가격이 22인 공급자를 나열 SELECT SupplierNameFROM SuppliersWHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);

[ ANY ]

ANY 연산자 :
결과로 부울 값을 반환합니다.
하위 쿼리 값 중 하나라도 조건을 충족하는 경우 TRUE를 반환합니다.
ANY 범위의 값 중 하나에 대해 작업이 참인 경우 조건이 참임을 의미합니다.
SELECT column_name(s)FROM table_nameWHERE column_name operator ANY  (SELECT column_name  FROM table_name  WHERE condition);
주의 ) 표준 비교 연산자이어야 (=, <> =,>,> =, <또는 <=!).
OrderDetails 테이블에서 Quantity10인 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 일부 값이 10이기 때문에 TRUE가 반환됨). SELECT ProductNameFROM ProductsWHERE ProductID = ANY  (SELECT ProductID  FROM OrderDetails  WHERE Quantity = 10);
OrderDetails 테이블에서 Quantity99보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 99보다 큰 값이 있기 때문에 TRUE가 반환됨). SELECT ProductNameFROM ProductsWHERE ProductID = ANY  (SELECT ProductID  FROM OrderDetails  WHERE Quantity > 99);
OrderDetails 테이블에서 Quantity1000보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 1000보다 큰 값이 없기 때문에 FALSE를 반환함). SELECT ProductNameFROM ProductsWHERE ProductID = ANY  (SELECT ProductID  FROM OrderDetails  WHERE Quantity > 1000);

 

[ ALL ]

ALL 연산자 :
결과로 부울 값을 반환합니다.
모든 하위 쿼리 값이 조건을 충족하면 TRUE를 반환합니다.
SELECT, WHEREHAVING문과 함께 사용됩니다 .
ALL 범위의 모든 값에 대해 작업이 true인 경우에만 조건이 true임을 의미합니다.
SELECT ALL column_name(s)FROM table_nameWHERE condition;
WHERE 또는 HAVING이 있는 ALL 구문 SELECT column_name(s)FROM table_nameWHERE column_name operator ALL  (SELECT column_name  FROM table_name  WHERE condition);
모든 제품 이름을 나열 SELECT ALL ProductNameFROM ProductsWHERE TRUE;
OrderDetails 테이블의 모든 레코드에 Quantity10인 경우 ProductName을 나열합니다. Quantity 열에 다양한 값(10의 값뿐만 아니라)이 있기 때문에 물론 FALSE를 반환 SELECT ProductNameFROM ProductsWHERE ProductID = ALL  (SELECT ProductID  FROM OrderDetails  WHERE Quantity = 10);

 

[ SELECT INTO ]

SELECT INTO새 테이블에 하나 개의 테이블에서 문 데이터를 복사합니다. SELECT *INTO newtable [IN externaldb]FROM oldtableWHERE condition;
일부 열만 새 테이블에 복사 SELECT column1column2column3, ...INTO newtable [IN externaldb]FROM oldtableWHERE condition;
고객의 백업 복사본을 생성 SELECT * INTO CustomersBackup2017FROM Customers;
IN절을 사용하여 테이블을 다른 데이터베이스의 새 테이블로 복사 SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'FROM Customers;
몇 개의 열만 새 테이블에 복사 SELECT CustomerName, ContactName INTO CustomersBackup2017FROM Customers;
독일 고객만 새 테이블에 복사 SELECT * INTO CustomersGermanyFROM CustomersWHERE Country = 'Germany'
둘 이상의 테이블에서 새 테이블로 데이터를 복사 SELECT Customers.CustomerName, Orders.OrderIDINTO CustomersOrderBackup2017FROM CustomersLEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
SELECT INTO 다른 스키마를 사용하여 비어 있는 새 테이블을 만드는 데 사용할 수도 있습니다. WHERE쿼리가 데이터를 반환하지 않도록 하는 절을 추가하기만 하면 됩니다. SELECT * INTO newtableFROM oldtableWHERE 1 = 0;

 

[ INSERT INTO SELECT ]

INSERT INTO SELECT다른 테이블에 문을 복사 한 테이블에서 데이터 삽입을.


INSERT INTO SELECT문은 소스 및 목표 테이블의 경기에서 그 데이터 유형을 필요로한다.


참고: 대상 테이블의 기존 레코드는 영향을 받지 않습니다.대상 테이블의 기존 레코드는 영향을 받지 않습니다.
INSERT INTO table2SELECT * FROM table1WHERE condition;
한 테이블의 일부 열만 다른 테이블로 복사 INSERT INTO table2 (column1column2column3, ...)SELECT column1column2column3, ...FROM table1WHERE condition;
"공급자""고객"으로 복사합니다(데이터로 채워지지 않은 열에는 NULL이 포함됨). INSERT INTO Customers (CustomerName, City, Country)SELECT SupplierName, City, Country FROM Suppliers;
"공급자""고객"으로 복사합니다(모든 열 채우기). INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
독일 공급자만 "고객"으로 복사 INSERT INTO Customers (CustomerName, City, Country)SELECT SupplierName, City, Country FROM SuppliersWHERE Country='Germany';

 

[ CASE ]

CASE문은 조건을 통과하고 첫 번째 조건은 (if-then-else 명령문 등)을 충족하는 값을 반환합니다. 따라서 조건이 true이면 읽기를 중지하고 결과를 반환합니다. 조건이 참이 아니면 ELSE절의 값을 반환합니다 .
거기에 더없는 경우 ELSE부분에는 조건에 해당하지 않습니다, 그것은 NULL을 반환합니다.
CASE    WHEN condition1 THEN result1    WHEN condition2 THEN result2    WHEN conditionN THEN resultN    ELSE resultEND;
조건을 통과하고 첫 번째 조건이 충족될 때 값을 반환 SELECT OrderID, Quantity,CASE    WHEN Quantity > 30 THEN 'The quantity is greater than 30'    WHEN Quantity = 30 THEN 'The quantity is 30'    ELSE 'The quantity is under 30'END AS QuantityTextFROM OrderDetails;
City별로 고객을 주문합니다. 그러나 CityNULL이면 국가별로 주문 SELECT CustomerName, City, CountryFROM CustomersORDER BY(CASE    WHEN City IS NULL THEN Country    ELSE CityEND);

 

2. INSERT INTO ( TABLE에 새로운 레코드 삽입 )

일부 값만 추가시 / 삽입할 열 이름 값 지정 모든 열에 추가시
INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...); INSERT INTO table_nameVALUES (value1, value2, value3, ...);

3. UPDATE ( 수정 )

UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition; ★★ 주의 ★★
WHERE 을 생략하면 테이블의 모든 레코드가 업데이트
UPDATE CustomersSET ContactName = 'Alfred Schmidt', City= 'Frankfurt'WHERE CustomerID = 1;

 

4. DELETE ( 삭제 )

DELETE FROM table_name WHERE condition; ★★ 주의 ★★
WHERE 을 생략하면 테이블의 모든 레코드가 삭제
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함