🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

前言
前面我们学习了数据中的DDL操作, 有了能够建立数据库和表的基本知识之后,就可以来了解一下DML操作了!
在SQL Server 2000中,insert(添加)、update(修改)、delete(删除)和select(查询)是数据操纵语言DML的核心操作,它们分别用于数据的增、改、删、查操作, 而我们开发web其实不管你学到多深的程度,最终也离不开这四大操作!
在我们前面的教程中,也有相应的演示, 那么今天我就先给大家浅谈一下, insert(添加)、update(修改)、delete(删除)的使用方法!
insert…into…语法规则与操作
insert语句用于向数据库的表中添加新的数据记录!
语法规则
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
举个栗子
我们向Employees表中插入3条数据记录
INSERT INTO Employees (EmployeeName, Department) VALUES ('张三', '销售部');
INSERT INTO Employees (EmployeeName, Department) VALUES ('李四', '市场部');
INSERT INTO Employees (EmployeeName, Department) VALUES ('王五', '技术部');
如图

在企业管理器中,我们查看一下结果
如图

注意事项
这里需要注意一下, 我们指定了要插入的字段中,并没有插入EmployeeID字段的值, 这是因为我们EmployeeID字段是自动递增的,所以可以忽略不写, 另外就是LastUpdated字段的数据类型是timestamp是一个二进制的时间戳,会随操作自动生成和修改,所以也可以忽略不写
剩下的就是指定所要插入数据的字段了,另外还需要注意的是在我们指定的字段中,插入的值必须要和字段个数挨个对应,并且数据类型也要匹配,如果插入的时候,数据类型不一样,可能会报错
比如
INSERT INTO Employees (UserName, isLook) VALUES ('张三', '锁定');
注意: isLook字段是一个bit类型
如图

所以当我们插入数据失败的时候,一定要留意一下系统给我们反馈的错误提示 是什么, 方便我们判断问题!
INSERT 插入语句还有一种语法规则如下:
INSERT INTO 表名称 VALUES (值1, 值2,....)
这种方式就是 当INSERT INTO后面不带字段的时候, 表示向表中所有字段插入对应的数据, 那么这里插入值的个数一定也要对应表中的字段个数,以及数据类型,
比如说我们这里故意给Users表添加一个不存在的字段值
如图

我个人是不推荐这种写法的, 大家可以去尝试一下!
但是为了达到兼容性更好,我的建议是最好把想插入数据的字段都给写上,字段数据类型与个数必须与值列表挨个对应!
巧用 insert…into…语句实现数据复制
在我们SQL Server数据库中 insert..into..语句还可以实现数据复制的操作, 不过这里要结合一下select语句才行!
简单的说也就是 insert..into.. + select语句可以实现一非常实用的数据插入方式,让我们可以将一个表中的数据复制到另一个表!
语法规则
INSERT INTO 目标表名 (字段1, 字段2, ..., 字段N)
SELECT 字段A, 字段B, ..., 字段M
FROM 源表名
WHERE 条件;
我们来简单的解释一下语法:
目标表名:你想要插入数据的表(字段1, 字段2, ..., 字段N):目标表中你希望插入数据的字段, 注意,这些字段的顺序和数量要与select 语句中返回的字段相匹配SELECT 字段A, 字段B, ..., 字段M:从源表中选择的字段, 这些字段的数据将被插入到目标表中!FROM 源表名:也就是指定了数据来自哪个表!WHERE 条件(可选):用于过滤源表中的行,只有满足条件的数据行才会被复制到目标表中!
大致清楚了之后,我们就来试试看效果, 看看到底行不行!
举个栗子
比如说我们现在有两个表:students_backup(学生备份表)和 students(学生表)
其中students_backup 表是 students 表的一个备份,这个能理解吧!
但现在我们想要将 students 表中所有新入学的学生复制到 students_backup 表中
你也可以再加一个条件, 比如新入学的学生的入学年份在2023年
两个表的结构如下:
-- 学生表
CREATE TABLE students (
student_id INT PRIMARY KEY IDENTITY,
student_name VARCHAR(50),
enrollment_year INT
);
--学生备份表
CREATE TABLE students_backup (
backup_id INT PRIMARY KEY IDENTITY,
name VARCHAR(50),
year_joined INT
);
我们先在查询分析器中执行一下,
如图

然后我们先给students 表插入一些测试数据!
如下
INSERT INTO students(student_name,enrollment_year) VALUES('张三',1990);
INSERT INTO students(student_name,enrollment_year) VALUES('李四',1990);
INSERT INTO students(student_name,enrollment_year) VALUES('王五',2000);
INSERT INTO students(student_name,enrollment_year) VALUES('小陈',2001);
INSERT INTO students(student_name,enrollment_year) VALUES('王柏',2023);
INSERT INTO students(student_name,enrollment_year) VALUES('康田',2023);
如图

此时此刻,现在有这样一个需求,我们需要把这个students表中入学时间在2023年的学生记录 复制到students_backup 表中
那么具体SQL应该这么写呢、 大家可以想一下!
如下
INSERT INTO students_backup (name,year_joined)
SELECT student_name,enrollment_year FROM students WHERE enrollment_year=2023
我们来执行一下看看效果!~
如图

那么此时我们看看students_backup表中是不是有了我们根据条件筛选出来的数据记录了!~
如图

不懂SELECT语句的朋友也没关系,马上就回讲到啦!赶紧学起来啊!!


"👍点赞" "✍️评论" "收藏❤️"欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇


1004

被折叠的 条评论
为什么被折叠?



