SQL 명령어 - 4

ANY, ALL, SELECT INTO, INSERT INTO SELECT 를 학습합니다.

ANY and ALL Operator

  • ANY와 ALL 는 WHERE와 HAVING 구에서 사용된다.

  • ANY 는 서브쿼리 중에 조건에 맞는게 하나라도 있다면 true 를 리턴한다.

  • ALL은 서브쿼리의 모든게 조건에 맞아야지 true를 리턴함

SYNTAX

SELECT column
FROM table
WHERE column operator(=, <>, > ..) [ANY, ALL]
  (SELECT column FROM table WHERE condition);

Note: The operator must be a standard comparison operator (=, <>, !=, >, >=, <, or <=).

EXAMPLE

SELECT ProductName
FROM Products
WHERE ProductID = any (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

ProductName을 출력하는데 그 조건은 해당 판매량이 10인 상품이다. 판매량을 알기 위해서는 OrderDetails을 알아야 하기 때문에 서브쿼리를 이용했다. 만약 여기서 any가 아닌 all을 사용하게 되면 출력결과는 아무것도 존재하지 않는다. 그 이유는 ProductID 가 서브쿼리의 결과로 생기는 모든 값과 같아야 하기 때문.

SELECT INTO

SELECT INTO는 테이블의 데이터를 복사해서 새로운 테이블에 넣는다. IN의 인자로는 데이터베이스의 이름이 온다. 즉, 현재 데이터베이스에 존재하지 않는 테이블에도 데이터를 복사할 수 있다는 것.

SYNTAX

Copy all columns into a new table

SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

Copy only some columns into a new table

SELECT column1, column2, column3, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

EXAMPLE

SELECT CustomerName, ContactName INTO CustomerBackUp
FROM Customers;

INSERT INTO SELECT

INSERT INTO SELECT는 어떤 테이블에 있는 데이터를 다른 테이블로 복사한다.

  • INSERT INTO SELECT는 SOURCE 테이블과 TARGET 테이블의 data type이 같아야 한다.

  • TARGET 테이블에 이미 존재하는 column들은 영향을 받지 않는다.

    SYNTAX

    Copy all column from one table to another table

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

Copy ony some columns from one table into another table

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

EXAMPLE

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

Last updated