Ова наредба служи за додавање редова у табелу. У следећим примјерима ћу демонстрират ову наредбу.
Примјер:
USE AdventureWorks
GO
--убацивање нових редова у табелу
INSERT Production.Location (Name, CostRate, Availability)
VALUES ('Jelen pivo ali hladno', 10.30, 60.00)
GO
SELECT Name,CostRate, Availability
FROM Production.Location
Убацивање редова коришћењем подразумјеване вриједности
У наредном примјеру ћу показати како се убацује нови ред у табелу употребом кључне ријечи DEFAULT. Када колона има подразумјеване вриједности наведене у табели, можете да користите кључну ријеч DEFAULT како би активирали те подразумјеванје вриједности.
Примјер:
INSERT Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Wheel Storage 3', 11.25, 80.00, DEFAULT
Експлицитно убацивање вриједности у колону IDENTITY
Када покушам да убацим експлицитну вриједност у табелу без предхотног коришћења
IDENTITY_INSERT добијам поруку о грешци.
Примјер:
INSERT HumanResources.Department (DepartmentID, Name, GroupName)
VALUES (17, 'Database Services', 'Information Technology')
да би то могао да изведем потребно је да дефинисем
SET IDENTITY_INSERT HumanResources.Department ON тј.укључим ову опцију
Примјер:
SET IDENTITY_INSERT HumanResources.Department ON
INSERT HumanResources.Department (DepartmentID, Name, GroupName)
VALUES (17, 'Database Services', 'Information Technology')
Убацивање редова у табелу са (uniqueidentifier) колоном
Uniqueidentifier је 16-бајтни глобално јединствени идентификатор (GUID) који се користи да би обезбједио једиственост података у табели. У следећем примјеру ћу показти како се користи овај идентификатор.
Примјер:
--системска функција NEWID() генерише GUID.
INSERT Purchasing.ShipMethod (Name, ShipBase, ShipRate, rowguid)
VALUES('MIDDLETON CARGO TS1', 8.99, 1.22, NEWID())
Убацивање редова у табелу употребом INSERT...SELECT израза
Када желим да убацим више редова у табелу тада користим овај израз. У наредном примјеру ћу то и показати.
Примјер:
--прво направим нову табелу
CREATE TABLE [dbo]. [Shift_Archive]
(
[ShiftID] [tinyint] NOT NULL,
[Name] [dbo]. [Name] NOT NULL,
[StartTime] [datetime] NOT NULL,
[EndTime] [datetime] NOT NULL,
[ModifiedDate] [datetime] NOT NULL DEFAULT (getdate()),
CONSTRAINT [PK_Shift_ShiftID] PRIMARY KEY CLUSTERED
([ShiftID] ASC)
)
GO
--затим убацујем редове преко INSERT...SELECT израза
INSERT dbo.Shift_Archive (ShiftID, Name, StartTime, EndTime, ModifiedDate)
SELECT ShiftID, Name, StartTime, EndTime, ModifiedDate
FROM HumanResources.Shift
ORDER BY ShiftID
Убацивање података позивом УСКЛАДИШТЕНИХ ПРОЦЕДУРА
Ускладистена процедура је објекат који се састоји из више T-SQL израза груписани у једну логичку јединицу. У наредном примјеру показати ћу како се убацују подаци позивом ускладиштене процедуре.
Примјер:
--прво направим процедуру
CREATE PROCEDURE dbo.usp_SEL_Production_TransactionHistory
@ModifiedStartDT datetime,
@ModifiedEndDT datetime
AS
SELECT TransactionID, ProductID, ReferenceOrderID, ReferenceOrderLineID,
TransactionDate, TransactionType, Quantity, ActualCost, ModifiedDate
FROM Production.TransactionHistory
WHERE ModifiedDate BETWEEN @ModifiedStartDT AND @ModifiedEndDT AND
TransactionID NOT IN (SELECT TransactionID FROM Production.TransactionHistoryArchive)
GO
--затим позовем процедуру на извршенје са кључном ријечи EXEC и просљедим два улазна параметра тј.датума, сви редови између тих датума ће бити унешени у табелу
EXEC dbo.usp_SEL_Production_TransactionHistory '6/2/04', '6/3/04'
Убацивање више редова са вриједностима
СКЛ Сервер 2008 уводи могућност да унесете више редова помоћу једног INSERT израза. У следећем примјеру ћу то показати.
Примјер:
--правим табелу
CREATE TABLE HumanResources.Degree
(DegreeID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
DegreeNM varchar(30) NOT NULL,
DegreeCD varchar(5) NOT NULL,
ModifiedDate datetime NOT NULL)
GO
--затим убацује податке, преко једног INSERT израѕа
INSERT HumanResources.Degree
(DegreeNM, DegreeCD, ModifiedDate)
VALUES
('Bachelor of Arts', 'B.A.', GETDATE()),
('Bachelor of Science', 'B.S.', GETDATE()),
('Master of Arts', 'M.A.', GETDATE()),
('Master of Science', 'M.S.', GETDATE()),
('Associate''s Degree', 'A.A.', GETDATE())
GO
Коришћење вриједности из извора података односно FROM клаузуле
Можете користит FROM клаузулу SELECT израза као извор података, за нову табелу.
Примјер:
SELECT DegreeNM, DegreeCD, ModifiedDT
FROM
--убацујем вриједности
(VALUES
('Bachelor of Arts', 'B.A.', GETDATE()),
('Bachelor of Science', 'B.S.', GETDATE()),
('Master of Arts', 'M.A.', GETDATE()),
('Master of Science', 'M.S.', GETDATE()),
('Associate''s Degree', 'A.A.', GETDATE()))
--извор података FROM клаузуле
Degree (DegreeNM, DegreeCD, ModifiedDT)