티스토리 뷰
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 Tigers와 Mozzarella 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 사이인 모든 제품을 선택합니다. CategoryID가 1,2 또는 3인 제품을 표시하지 마십시오. | Carnarvon Tigers와 Mozzarella 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 테이블에서 Quantity가 10인 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 일부 값이 10이기 때문에 TRUE가 반환됨). | SELECT ProductNameFROM ProductsWHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10); |
OrderDetails 테이블에서 Quantity가 99보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 99보다 큰 값이 있기 때문에 TRUE가 반환됨). | SELECT ProductNameFROM ProductsWHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99); |
OrderDetails 테이블에서 Quantity가 1000보다 큰 레코드를 찾으면 ProductName을 나열합니다(Quantity 열에 1000보다 큰 값이 없기 때문에 FALSE를 반환함). | SELECT ProductNameFROM ProductsWHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 1000); |
[ ALL ]
ALL 연산자 : 결과로 부울 값을 반환합니다. 모든 하위 쿼리 값이 조건을 충족하면 TRUE를 반환합니다. 는 SELECT, WHERE및 HAVING문과 함께 사용됩니다 . 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 테이블의 모든 레코드에 Quantity가 10인 경우 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 column1, column2, column3, ...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 (column1, column2, column3, ...)SELECT column1, column2, column3, ...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별로 고객을 주문합니다. 그러나 City가 NULL이면 국가별로 주문 | 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'; |
'WEB > 기타' 카테고리의 다른 글
프론트 툴 - 넥사크로 (0) | 2024.07.12 |
---|---|
보고서 출력 툴 - 오즈리포트 (0) | 2024.07.12 |
SQL(Structured Query Language) DATEBASE 구문 정리 (0) | 2024.07.12 |
피그마 필수 단축키 (0) | 2024.07.12 |
정보처리기사 요약 정리 - 8장 SQL 응용 (0) | 2024.07.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바스크립트정규표현식
- ajax
- iptime와이파이증폭기 #와이파이증폭기설치
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- css미디어쿼리 #미디어쿼리 #mediaquery
- thymeleaf
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- jdk #jre
- 파비콘 #파비콘 사이트에 적용
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 와이파이증폭기추천 #와이파이설치
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 좋은책 #밥프록터 #부의원리
- 좋은책
- 자바스크립트break
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- 자바스크립트 #javascript #math
- SQL명령어 #SQL
- 와이파이신호 #와이파이 #와이파이신호세게
- echart
- 파비콘사이즈
- 와이파이약할때
- 쇼팬하우어 #좋은책
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 자바스크립트countiue
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 증폭기 #아이피타임증폭기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함