学习使用INSERT语句向数据表中插入数据,包括插入单条记录和多条记录的不同方法,以及如何处理默认值和自增长列。

本文章为 SQL Server 的详细学习大纲 里面的一个子章节的详细介绍,如果了解相关的其他内容,可以从这里面查看,或者查看SQL Server专栏,里面有些文章可能并不在 SQL Server 的详细学习大纲 里面,是一些补充内容。

一、INSERT语句插入单条记录

1. 基本语法

  • 最基本的INSERT语句用于向表中插入单条记录,语法如下:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...);
  • 其中table_name是要插入数据的表的名称。column1, column2, column3,...是表中要插入数据的列名,列名的顺序可以根据需要指定。value1, value2, value3,...是要插入到对应列中的值,值的顺序和类型必须与列名相对应。

2. 示例

  • 假设有一个名为Students的表,包含StudentID(整数类型)、StudentName(字符类型)和Age(整数类型)三列。要插入一条学生记录,可以这样写:
INSERT INTO Students (StudentID, StudentName, Age)
VALUES (1, 'John Doe', 20);
  • 注意,如果表中的列有非空约束(NOT NULL),那么在INSERT语句中必须为这些列提供值,否则会出现错误。

二、插入多条记录

1. 使用多个INSERT语句

  • 一种简单的方法是多次使用INSERT语句来插入多条记录。例如,继续以Students表为例,要插入两条记录:
INSERT INTO Students (StudentID, StudentName, Age)
VALUES (2, 'Jane Smith', 21);
INSERT INTO Students (StudentID, StudentName, Age)
VALUES (3, 'Bob Johnson', 19);

或者

INSERT INTO Students (StudentID, StudentName, Age)
VALUES 
(2, 'Jane Smith', 21),
(3, 'Bob Johnson', 19);
  • 这种方法适用于插入记录数量较少的情况,但如果要插入大量记录,会比较繁琐。

2. 使用INSERT…SELECT语句

  • 语法:
INSERT INTO target_table (column1, column2, column3,...)
SELECT value1, value2, value3,...
FROM source_table;
  • 示例:假设还有一个临时表TempStudents,它的结构和Students表相同,现在要将TempStudents表中的所有记录插入到Students表中。
INSERT INTO Students (StudentID, StudentName, Age)
SELECT StudentID, StudentName, Age
FROM TempStudents;
  • 注意事项:
    • SELECT语句返回的列数和类型必须与INSERT语句中指定的列数和类型相匹配。
    • 如果SELECT语句返回的结果集包含了INSERT语句中未指定的列,这些列将被忽略。

三、处理默认值

1. 定义默认值

  • 在创建表时,可以为列定义默认值。例如,创建一个Products表,其中ProductPrice列有一个默认值:
CREATE TABLE Products (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(100),
    ProductPrice DECIMAL(10, 2) DEFAULT 0.00
);
  • 这里ProductPrice列的默认值被定义为0.00

2. 在INSERT语句中使用默认值

  • 如果要插入一条记录,并且希望使用默认值来填充某些列,可以在INSERT语句中省略这些列。例如:
INSERT INTO Products (ProductID, ProductName)
VALUES (1, 'Widget');
  • 在这个例子中,由于没有为ProductPrice列提供值,SQL Server会自动使用默认值0.00来填充该列。

四、处理自增长列

1. 创建自增长列

  • 在SQL Server中,可以使用IDENTITY属性来创建自增长列。例如,创建一个Orders表,其中OrderID是自增长列:
CREATE TABLE Orders (
    OrderID INT IDENTITY(1,1) PRIMARY KEY,
    CustomerID INT,
    OrderDate DATETIME
);
  • 这里IDENTITY(1,1)表示自增长列的起始值为1,每次增长的值为1

2. 在INSERT语句中处理自增长列

  • 当插入记录时,通常不需要为自增长列提供值。例如:
INSERT INTO Orders (CustomerID, OrderDate)
VALUES (1, '2024-01-01');
  • SQL Server会自动为OrderID列生成一个唯一的值。如果试图为IDENTITY列提供值,可能会出现错误,除非使用SET IDENTITY_INSERT命令来显式地指定要插入的值,但这种情况通常很少使用,并且需要谨慎操作,因为可能会破坏自增长列的完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生命不息-学无止境

你的每一份支持都是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值