- 아는 것도 있지만, 살짝 아리까리한것도 있어서 한 번에 정리
* INSERT VALUES (& 향상된 VALUES)
- 대부분이 많이 아는 (기초적인) 구문일듯.
INSERT INTO dbo.Orders(orderid, empid, custid) VALUES(10002, 5, 'B');
INSERT INTO dbo.Orders (orderid, orderdate, empid, custid)
VALUES
(10003, '20090213', 4, 'B') ,
(10004, '20090214', 1, 'A') ,
(10005, '20090213', 1, 'C') ,
(10006, '20090215', 3, 'C'); -- 여러 행을 쉼표로 구분해서 넣을수도
사실은 이 구문보단 아래의 사항을 복습하려는게 목적이었다.
- 파생이나 임시 테이블을 만들때, 테이블 생성자로 사용할 수도 있다
SELECT * FROM (
VALUES
(101, '20110101', 1),
(102, '20120201', 2),
(103, '20130101', 3)
) AS TMP (orderid, orderdate, empid);
* INSERT SELECT
SELECT 쿼리로부터 반환되는 행 집합을 대상 테이블에 저장하고자 할 때 사용된다.
VALUES 절 대신 SELECT 쿼리를 사용한다는 점에서 차이가 있다.
INSERT INTO dbo.Orders (orderid, orderdate, empid, custid)
SELECT orderid, orderdate, empid, custid
FROM Sales.Orders
WHERE shipcountry = 'UK';
* INSERT EXEC
저장 프로시저나 동적 SQL 배치 작업으로부터 반환되는 결과집합을 대상 테이블로 저장할 때 사용된다.
SELECT 구문대신 EXEC 구문을 사용한다는 점만 다르다.
ex) 아래 같은 프로시저를 존재한다면,
IF OBJECT_ID('Sales.USP_GetOrders','P') IS NOT NULL
DROP PROC Sales.USP_GetOrders;
GO
CREATE PROC Sales.USP_GetOrders @country AS NVARCHAR(40) AS
SELECT orderid, orderdate, empid, custid
FROM Sales.Orders
WHERE shipcountry = @country;
GO
INSERT INTO dbo.Orders (orderid, orderdate, empid, custid)
EXEC Sales.USP_GetOrders @country = 'France';
* SELECT INTO
대상 테이블을 생성한 후, 쿼리의 결과 집합을 생성한 테이블에 저장. (비표준 T-SQL 구문)
조회 쿼리의 SELECT 절에 있는 FROM 앞에 INTO <대상 테이블> 추가하면 된다.
IF OBJECT_ID('dbo.Orders','U') IS NOT NULL DROP TABLE dbo.Orders;
SELECT orderid, orderdate, empid, custid
INTO dbo.Orders
FROM Sales.Orders;
* BULK INSERT
파일에 있는 데이터를 기존 테이블에 저장할 때 사용된다.
대상 테이블, 원본 파일 그리고 옵션을 설정한다
BULK INSERT dbo.Orders FROM 'c:\order.txt'
WITH (
DATAFILETYPE = 'char' ,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
'프로그래밍&IT > SQL Server (MS-SQL)' 카테고리의 다른 글
SQL Server - GO에 대해서 (BATCH) (0) | 2024.03.02 |
---|---|
트랜젝션.Transaction - 원자성, 일관성, 격리성, 영속성 (ACID) (0) | 2024.02.19 |
그룹핑 집합 (GROUPING SETS, CUBE, ROLLUP, GROUPING, GROUPING_ID) (0) | 2024.01.31 |
데이터 피벗, 언피벗 (Pivot, Unpivot) (1) | 2024.01.27 |
윈도우 함수 : 순위, 오프셋, 집계 (1) | 2024.01.25 |