SQL ServerのINSERTコマンド
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
SQLServerでのINSERTコマンドの紹介
挿入ステートメントは、SQLServerのテーブルにデータを追加するために使用されます
構文:
INSERT INTO table_name (column_list) VALUES (value_list)
説明:
- table_name:新しいデータを追加するテーブルの名前
- column_list: 「、」で区切られた列のリスト
- value_list:列に対応する値のリストであり、「、」で区切られています
- 注:列と値の値のペアは、互いに対応し、順序と数量が一致しています。正しい構文に従う必要があります
例えば:
INSERT INTO Person.PersonPhone (BusinessEntityID, PhoneNumber, PhoneNumberTypeID, ModifiedDate) VALUES (299,'699-511-0142,1','2020-10-12')
短い構文(列を定義する必要はありません。値の正しい順序を指定するだけです):
INSERT INTO Person.PersonPhone VALUES (20777,'699-511-0143',1,'2020-10-12')
対応する列の値は次のとおりです:
- BusinessEntityID:299
- 電話番号:699-511-0142
- PhoneNumberTypeID:1
- 変更日:2020-10-12
INSERT.コマンドでいくつかの状況に注意する必要があります
AdventureWorks2019でこの挿入ステートメントをテストします。
USE [AdventureWorks2019] GO INSERT INTO [Production].[Product] ([Name] ,[ProductNumber] ,[MakeFlag] ,[FinishedGoodsFlag] ,[Color] ,[SafetyStockLevel] ,[ReorderPoint] ,[StandardCost] ,[ListPrice] ,[Size] ,[SizeUnitMeasureCode] ,[WeightUnitMeasureCode] ,[Weight] ,[DaysToManufacture] ,[ProductLine] ,[Class] ,[Style] ,[ProductSubcategoryID] ,[ProductModelID] ,[SellStartDate] ,[SellEndDate] ,[DiscontinuedDate] ,[rowguid] ,[ModifiedDate]) VALUES ('Laptop Thinkpad L470' ,'SKU-001' ,0 ,0 ,null ,1000 ,750 ,0 ,0 ,null ,null ,null ,null ,0 ,null ,null ,null ,null ,null ,'2008-05-01' ,null ,null ,NEWID() ,'2022-05-01' ) GO
このコマンドはエラーを出します:
USE [AdventureWorks2019] GO INSERT INTO [Production].[Product] ( [ProductID], [Name] ,[ProductNumber] ,[MakeFlag] ,[FinishedGoodsFlag] ,[Color] ,[SafetyStockLevel] ,[ReorderPoint] ,[StandardCost] ,[ListPrice] ,[Size] ,[SizeUnitMeasureCode] ,[WeightUnitMeasureCode] ,[Weight] ,[DaysToManufacture] ,[ProductLine] ,[Class] ,[Style] ,[ProductSubcategoryID] ,[ProductModelID] ,[SellStartDate] ,[SellEndDate] ,[DiscontinuedDate] ,[rowguid] ,[ModifiedDate]) VALUES ( 1001, 'Laptop Thinkpad L470' ,'SKU-001' ,0 ,0 ,null ,1000 ,750 ,0 ,0 ,null ,null ,null ,null ,0 ,null ,null ,null ,null ,null ,'2008-05-01' ,null ,null ,NEWID() ,'2022-05-01' ) GO
理由:Productテーブルでは、列ProductIDが主キーであり、自己インクリメント属性が割り当てられています。SQLServerでは、データの整合性を確保するために自己インクリメント値を持つ列の値が割り当てられていないため、データをに挿入しません。 ProductID列、それで問題ありません。その列は、自己インクリメントメカニズムに従ってSQLServerによって自動的に生成されます。
INSERTは戻り情報を取得します
新しく挿入されたすべてのデータは挿入された変数に格納され、挿入されたデータを取得するには、 OUTPUTコマンドを使用します。より多くの列を出力する場合は、列をコンマ "、"で区切ります。
たとえば、挿入したばかりのIDを取得します
USE [AdventureWorks2019] GO INSERT INTO [Production].[Product] ([Name] ,[ProductNumber] ,[MakeFlag] ,[FinishedGoodsFlag] ,[Color] ,[SafetyStockLevel] ,[ReorderPoint] ,[StandardCost] ,[ListPrice] ,[Size] ,[SizeUnitMeasureCode] ,[WeightUnitMeasureCode] ,[Weight] ,[DaysToManufacture] ,[ProductLine] ,[Class] ,[Style] ,[ProductSubcategoryID] ,[ProductModelID] ,[SellStartDate] ,[SellEndDate] ,[DiscontinuedDate] ,[rowguid] ,[ModifiedDate]) OUTPUT inserted.ProductID, inserted.Name VALUES ('Dell Inspiron 5570' ,'SKU-002' ,0 ,0 ,null ,1000 ,750 ,0 ,0 ,null ,null ,null ,null ,0 ,null ,null ,null ,null ,null ,'2008-05-01' ,null ,null ,NEWID() ,'2022-05-01' ) GO