如何将数据插入 SQL 中的一行?
How do I insert data into a row in SQL?
我正在学习教程并从一本书中学习 MVC,书中告诉我使用此脚本创建 table,我照做了。但是现在我想为我的宠物添加一整行table,但我做不到。
用于创建我所有 table 的脚本。
CREATE TABLE [dbo].[Setting] (
[Id] INT NOT NULL IDENTITY(1, 1)
,[Key] VARCHAR(50) NOT NULL
,[Value] VARCHAR(500) NULL
,CONSTRAINT [PK_Setting] PRIMARY KEY ([Id])
);
CREATE TABLE [dbo].[PetType] (
[PetTypeID] INT NOT NULL IDENTITY(1, 1)
,[PetTypeDescription] VARCHAR(50) NULL
,CONSTRAINT [PK_PetType] PRIMARY KEY ([PetTypeID])
);
CREATE TABLE [dbo].[Status] (
[StatusID] INT NOT NULL IDENTITY(1, 1)
,[Description] VARCHAR(50) NOT NULL
,CONSTRAINT [PK_Status] PRIMARY KEY ([StatusID])
);
CREATE TABLE [dbo].[Pet] (
[PetID] INT NOT NULL IDENTITY(1, 1)
,[PetName] VARCHAR(100) NOT NULL
,[PetAgeYears] INT NULL
,[PetAgeMonths] INT NULL
,[StatusID] INT NOT NULL
,[LastSeenOn] DATE NULL
,[LastSeenWhere] VARCHAR(500) NULL
,[Notes] VARCHAR(1500) NULL
,[UserId] INT NOT NULL
,CONSTRAINT [PK_Pet] PRIMARY KEY ([PetID])
,CONSTRAINT [FK_Pet_Status] FOREIGN KEY ([StatusID]) REFERENCES [Status]([StatusID])
,CONSTRAINT [FK_Pet_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId])
);
CREATE TABLE [dbo].[PetPhoto] (
[PhotoID] INT NOT NULL IDENTITY(1, 1)
,[PetID] INT NOT NULL
,[Photo] VARCHAR(500) NOT NULL CONSTRAINT [DF_PhotoFile] DEFAULT '/content/pets/no-image.png'
,[Notes] VARCHAR(500) NULL
,CONSTRAINT [PK_PetPhoto] PRIMARY KEY ([PhotoID])
,CONSTRAINT [FK_PetPhoto_Pet] FOREIGN KEY ([PetID]) REFERENCES [Pet]([PetID])
);
CREATE TABLE [dbo].[Message] (
[MessageID] INT NOT NULL
,[UserId] INT NOT NULL
,[MessageDate] DATETIME NOT NULL
,[From] VARCHAR(150) NOT NULL
,[Email] VARCHAR(150) NOT NULL
,[Subject] VARCHAR(150) NULL
,[Message] VARCHAR(1500) NOT NULL
,CONSTRAINT [PK_Message] PRIMARY KEY ([MessageID])
,CONSTRAINT [FK_Message_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId])
);
我想在我的宠物 table 的第一行中添加一些随机值(用于测试)。
这是宠物 table 的第一行图片,为进一步清晰起见。
我尝试使用此脚本为我的 table 添加值。
INSERT INTO Pet VALUES ('1', 'Fido', '12', '4', '1', '12/07/2004', 'New York', 'nothing', '1')
但是我收到一条错误消息
An explicit value for the identity column in table 'Pet' can only be specified when a column list is used and IDENTITY_INSERT is ON.
现在我是 SQL 的新手,我无法理解这一点。我查看了其他 SO 答案,其中人们说了一些关于 SET IDENTITY_INSERT
的内容,但这对我也不起作用。我相信我误解了其他 SO 答案,因为我对数据库语言还很陌生。所以需要你的帮助。
谢谢
PetID 被定义为 IDENTITY,因此您不能指定要在该列中插入的值,除非您将 "IDENTITY_INSERT" 选项设置为 ON。
您有两个选择:
- 不要指定 column/value,让 SQL 为您生成。
- 在您的 INSERT 操作之前将 IDENTITY_INSERT 设置为 ON。
在SQL服务器identity用于autoincrement。 identity(1,1) 表示该列的起始值为 1 并将递增 1。您可以将其更改为所需值,例如 identity(5,2) 的起始值为 5 并递增 2。您没有需要为设置此列指定一个显式值,它将自动分配一个唯一值。
在mysql中你可以使用AUTO_INCREMENT
有关详细信息,请参阅 w3schools 页面 sql autoincrement
添加 rows/edit table(包括编辑删除行)的另一种非常酷的方法是使用 Microsoft SQL Management Studio Express。直到我学习 SQL 多年后,我才知道这一点。基本上向左展开树结构,右键单击 table 并选择编辑 Table。当您开始使用 SQL 更多内容时,您可以在此处编辑存储过程以及几乎任何您能想到的 SQL 其他内容。
我模糊了实际的数据库名称,但这给了你它的要点:-
我正在学习教程并从一本书中学习 MVC,书中告诉我使用此脚本创建 table,我照做了。但是现在我想为我的宠物添加一整行table,但我做不到。
用于创建我所有 table 的脚本。
CREATE TABLE [dbo].[Setting] (
[Id] INT NOT NULL IDENTITY(1, 1)
,[Key] VARCHAR(50) NOT NULL
,[Value] VARCHAR(500) NULL
,CONSTRAINT [PK_Setting] PRIMARY KEY ([Id])
);
CREATE TABLE [dbo].[PetType] (
[PetTypeID] INT NOT NULL IDENTITY(1, 1)
,[PetTypeDescription] VARCHAR(50) NULL
,CONSTRAINT [PK_PetType] PRIMARY KEY ([PetTypeID])
);
CREATE TABLE [dbo].[Status] (
[StatusID] INT NOT NULL IDENTITY(1, 1)
,[Description] VARCHAR(50) NOT NULL
,CONSTRAINT [PK_Status] PRIMARY KEY ([StatusID])
);
CREATE TABLE [dbo].[Pet] (
[PetID] INT NOT NULL IDENTITY(1, 1)
,[PetName] VARCHAR(100) NOT NULL
,[PetAgeYears] INT NULL
,[PetAgeMonths] INT NULL
,[StatusID] INT NOT NULL
,[LastSeenOn] DATE NULL
,[LastSeenWhere] VARCHAR(500) NULL
,[Notes] VARCHAR(1500) NULL
,[UserId] INT NOT NULL
,CONSTRAINT [PK_Pet] PRIMARY KEY ([PetID])
,CONSTRAINT [FK_Pet_Status] FOREIGN KEY ([StatusID]) REFERENCES [Status]([StatusID])
,CONSTRAINT [FK_Pet_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId])
);
CREATE TABLE [dbo].[PetPhoto] (
[PhotoID] INT NOT NULL IDENTITY(1, 1)
,[PetID] INT NOT NULL
,[Photo] VARCHAR(500) NOT NULL CONSTRAINT [DF_PhotoFile] DEFAULT '/content/pets/no-image.png'
,[Notes] VARCHAR(500) NULL
,CONSTRAINT [PK_PetPhoto] PRIMARY KEY ([PhotoID])
,CONSTRAINT [FK_PetPhoto_Pet] FOREIGN KEY ([PetID]) REFERENCES [Pet]([PetID])
);
CREATE TABLE [dbo].[Message] (
[MessageID] INT NOT NULL
,[UserId] INT NOT NULL
,[MessageDate] DATETIME NOT NULL
,[From] VARCHAR(150) NOT NULL
,[Email] VARCHAR(150) NOT NULL
,[Subject] VARCHAR(150) NULL
,[Message] VARCHAR(1500) NOT NULL
,CONSTRAINT [PK_Message] PRIMARY KEY ([MessageID])
,CONSTRAINT [FK_Message_User] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId])
);
我想在我的宠物 table 的第一行中添加一些随机值(用于测试)。 这是宠物 table 的第一行图片,为进一步清晰起见。
我尝试使用此脚本为我的 table 添加值。
INSERT INTO Pet VALUES ('1', 'Fido', '12', '4', '1', '12/07/2004', 'New York', 'nothing', '1')
但是我收到一条错误消息
An explicit value for the identity column in table 'Pet' can only be specified when a column list is used and IDENTITY_INSERT is ON.
现在我是 SQL 的新手,我无法理解这一点。我查看了其他 SO 答案,其中人们说了一些关于 SET IDENTITY_INSERT
的内容,但这对我也不起作用。我相信我误解了其他 SO 答案,因为我对数据库语言还很陌生。所以需要你的帮助。
谢谢
PetID 被定义为 IDENTITY,因此您不能指定要在该列中插入的值,除非您将 "IDENTITY_INSERT" 选项设置为 ON。
您有两个选择:
- 不要指定 column/value,让 SQL 为您生成。
- 在您的 INSERT 操作之前将 IDENTITY_INSERT 设置为 ON。
在SQL服务器identity用于autoincrement。 identity(1,1) 表示该列的起始值为 1 并将递增 1。您可以将其更改为所需值,例如 identity(5,2) 的起始值为 5 并递增 2。您没有需要为设置此列指定一个显式值,它将自动分配一个唯一值。
在mysql中你可以使用AUTO_INCREMENT
有关详细信息,请参阅 w3schools 页面 sql autoincrement
添加 rows/edit table(包括编辑删除行)的另一种非常酷的方法是使用 Microsoft SQL Management Studio Express。直到我学习 SQL 多年后,我才知道这一点。基本上向左展开树结构,右键单击 table 并选择编辑 Table。当您开始使用 SQL 更多内容时,您可以在此处编辑存储过程以及几乎任何您能想到的 SQL 其他内容。
我模糊了实际的数据库名称,但这给了你它的要点:-