🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
前言
前面我们学习了数据中的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语句
的朋友也没关系,马上就回讲到啦!赶紧学起来啊!!
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以点击下方关注❤️微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇