SQL Server——表数据的插入、修改和删除

news2025/3/26 1:22:24

目录

一、引言

二、表数据的插入、修改和删除

(一)方法一:在SSMS控制台上进行操作

1.向表中添加数据

2.对表中的数据进行修改

3.对表中的数据进行删除

(二)方法二:使用 SQL 代码进行操作

1.向表中添加数据

2.对表中的数据进行修改

3.对表中的数据进行删除

三、总结


一、引言

        在数据库管理工作中,对表数据进行插入、修改和删除是极为基础且高频的操作。在 SQL Server Management Studio(SSMS)环境里,我们有两种便捷的方式来执行这些操作。

        一种是通过控制台,也就是对象资源管理器,利用图形化界面直观地进行数据的增删改。这种方式操作简单、容易上手,能够快速看到数据的变化。另一种则是运用 SQL 代码来操作,这种方式灵活性强,适用于复杂的数据处理需求,并且便于复用和批量执行。接下来,本文将详细介绍在 SSMS 中通过这两种途径进行表数据插入、修改和删除的具体操作。

二、表数据的插入、修改和删除

         为了使得相关操作易于理解,这里通过实例进行详细介绍:在 SSMS 中创建学生成绩数据库 StudentCourse,该数据库包含三个表,分别为学生情况表Student、课程表Course、学生选课表StuCourse(创建数据库、表的方法已在上一篇文章中进行了详细介绍SQL Server——SSMS中数据库、表的创建)在 SSMS 中向 StudentCourse 数据库的 3 个表中添加数据:分别向 Student、Course、StuCourse 这 3 个表中添加表1、表2、表3中的数据。

表1. Student 表数据
学号姓名专业名性别出生时间总学分备注
2023002邓小凡信息安全2005-3-866学习标兵
2023023吕建信息安全2004-9-2170
2023101傅秋石电子信息工程2005-10-968
2023071张维维电子信息工程2005-6-1870三好生
2023098黄子媛软件工程2004-11-1268
2023188孙昊翔软件工程2005-12-870三好生
2023211陆影一电气工程2005-3-270
2023083尤大灵电气工程2000-2-565挂科
表2. Course 表数据
课程号课程名开课学期学时学分
1001高等数学11646
1002高等数学22646
1003线性代数2485
1004数据结构3323
表3. StuCourse 表数据
学号课程号成绩学号课程号成绩
20230021001592023071100288
20230021002592023071100390
20230021003592023098100186
20230231001882023098100280
20230231002862023098100393
20230231003922023211100198
20231011001752023211100278
20231011002882023211100386
20231011003952023211100490
2023071100199
(一)方法一:在SSMS控制台上进行操作
1.向表中添加数据

        ①右击已经建好的表 Student,点击“编辑前200行”;

②在右侧界面中逐字段输入记录值,输入完成后关闭窗口;

2.对表中的数据进行修改

        ①右击已经建好的表 Student,点击“编辑前200行”;

        ②选择需要修改的数据,进行修改;

        ③关闭窗口,完成修改。

3.对表中的数据进行删除

        ①右击已经建好的表 Student,点击“编辑前200行”;

        ②选择需要修改的数据行,单击鼠标右键,点击删除;

        ③关闭窗口,完成删除。

(二)方法二:使用 SQL 代码进行操作

1.向表中添加数据
--方法一:单个插入数据
--Student表
USE StudentCourse
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES ('2023002', '邓小凡', '信息安全', '女', '2005-3-8', 66, '学习标兵');
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023023', '吕建', '信息安全', '男', '2004-9-21', 70, NULL)
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023101', '傅秋石', '电子信息工程', '男', '2005-10-9', 68, NULL)
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023071', '张维维', '电子信息工程', '男', '2005-6-18', 70, '三好生')
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023098', '黄子媛', '软件工程', '男', '2004-11-12', 68, NULL)
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023188', '孙昊翔', '软件工程', '男', '2005-12-8', 70, '三好生')
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023211', '陆影一', '电气工程', '女', '2005-3-2', 70, NULL)
INSERT INTO Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
	VALUES('2023083', '尤大灵', '电气工程', '女', '2000-2-5', 65, '挂科')

--Course表
INSERT INTO Course (课程号, 课程名, 开课学期, 学时, 学分)
    VALUES ('1001', '高等数学1', 1, 64, 6);
INSERT INTO Course (课程号, 课程名, 开课学期, 学时, 学分)
    VALUES ('1002', '高等数学2', 2, 64, 6);
INSERT INTO Course (课程号, 课程名, 开课学期, 学时, 学分)
    VALUES ('1003', '线性代数', 2, 48, 5);
INSERT INTO Course (课程号, 课程名, 开课学期, 学时, 学分)
    VALUES ('1004', '数据结构', 3, 32, 3);

--StuCourse表
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023002', '1001', 59);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023002', '1002', 59);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023002', '1003', 59);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023023', '1001', 88);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023023', '1002', 86);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023023', '1003', 92);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023101', '1001', 75);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023101', '1002', 88);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023101', '1003', 95);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023071', '1001', 99);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023071', '1002', 88);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023071', '1003', 90);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023098', '1001', 86);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023098', '1002', 80);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023098', '1003', 93);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023211', '1001', 98);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023211', '1002', 78);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023211', '1003', 86);
INSERT INTO StuCourse (学号, 课程号, 成绩)
    VALUES ('2023211', '1004', 90);
--方法二:批量插入数据
--Student表
INSERT INTO StudentCourse.Student (学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
VALUES 
('2023002', '邓小凡', '信息安全', '女', '2005-3-8', 66, '学习标兵'),
('2023023', '吕建', '信息安全', '男', '2004-9-21', 70, NULL),
('2023101', '傅秋石', '电子信息工程', '男', '2005-10-9', 68, NULL),
('2023071', '张维维', '电子信息工程', '男', '2005-6-18', 70, '三好生'),
('2023098', '黄子媛', '软件工程', '男', '2004-11-12', 68, NULL),
('2023188', '孙昊翔', '软件工程', '男', '2005-12-8', 70, '三好生'),
('2023211', '陆影一', '电气工程', '女', '2005-3-2', 70, NULL),
('2023083', '尤大灵', '电气工程', '女', '2000-2-5', 65, '挂科');

--Course表
INSERT INTO Course (课程号, 课程名, 开课学期, 学时, 学分)
VALUES 
('1001', '高等数学1', 1, 64, 6),
('1002', '高等数学2', 2, 64, 6),
('1003', '线性代数', 2, 48, 5),
('1004', '数据结构', 3, 32, 3);

--StuCourse表
INSERT INTO StuCourse (学号, 课程号, 成绩)
VALUES 
('2023002', '1001', 59),
('2023002', '1002', 59),
('2023002', '1003', 59),
('2023023', '1001', 88),
('2023023', '1002', 86),
('2023023', '1003', 92),
('2023101', '1001', 75),
('2023101', '1002', 88),
('2023101', '1003', 95),
('2023071', '1001', 99),
('2023071', '1002', 88),
('2023071', '1003', 90),
('2023098', '1001', 86),
('2023098', '1002', 80),
('2023098', '1003', 93),
('2023211', '1001', 98),
('2023211', '1002', 78),
('2023211', '1003', 86),
('2023211', '1004', 90);

这里简单说明一下单个插入批量插入各自的适用场景:

  • 单个插入适用场景
    • 少量数据插入:当需要插入的数据量很少时,使用单个插入方式代码简洁直观,容易理解和维护。比如数据库中偶尔新增一两条测试数据。
    • 数据校验严格:在插入每条数据前,需要进行复杂的业务逻辑判断或数据有效性验证,单个插入能针对每条数据灵活处理。例如,在插入用户信息时,需要检查每个用户的身份证号码是否符合规则、邮箱格式是否正确等。
    • 精确错误处理:若对数据的准确性和完整性要求极高,希望在某条数据插入失败时能立即捕获并处理,避免影响其他数据插入,单个插入更合适。比如财务系统中记录每一笔交易,每笔交易的插入都要确保准确无误,一旦失败需及时处理。
    • 事务精细控制:可以更灵活地控制事务的提交时间,比如插入若干条记录后提交一次事务,而不是一次性提交所有记录。
  • 批量插入适用场景
    • 大数据量插入:当需要插入大量数据时,批量插入能显著提升效率。因为它减少了数据库操作和网络传输的次数,降低了磁盘 I/O 操作以及事务管理开销。例如,将一份包含大量用户信息的 Excel 表格数据导入数据库中。
    • 数据格式统一:插入的数据格式基本一致,不需要对每条数据进行特殊处理时,使用批量插入可以简化代码,逻辑更加统一。比如从其他系统同步一批格式相同的订单数据到当前数据库。
    • 网络环境不佳:在网络条件较差的情况下,批量插入可以减少网络传输的次数,从而提高整体性能。
2.对表中的数据进行修改
--实例1:将1001号课程的所有学生成绩都增加 2 分
USE StudentCourse
UPDATE StuCourse
    SET 成绩=成绩+2
    WHERE 课程号='1001'

--实例2:将学号为2023002的学生的高等数学1的成绩修改为60
UPDATE StuCourse
SET 成绩 = 60
FROM StuCourse
JOIN Course ON StuCourse.课程号 = Course.课程号
WHERE StuCourse.学号 = '2023002' AND Course.课程名 = '高等数学1';    

这里对实例2中的代码做一下详细解释:

代码详细解释

  • JOIN 关键字:在 SQL 里,JOIN 用于把两个或多个表中的行根据一定的条件进行组合。这里使用的是 JOIN,默认是 INNER JOIN,也就是内连接。内连接仅返回两个表中满足连接条件的行。

  • Course:这代表要连接的第二个表,也就是 Course 表。StuCourse 表中存储的是学生选课和成绩的信息,而 Course 表存储的是课程的详细信息,像课程名称、课程编号等。

  • ON StuCourse.课程号 = Course.课程号:这是连接条件,它规定了两个表之间的关联规则。这里表示 StuCourse 表中的 课程号 字段和 Course 表中的 课程号 字段值相等的行才会被组合在一起。也就是说,只有当两个表中的 课程号 相同时,对应的行才会被合并到结果集中。

结合完整代码的解释

        在完整的 SQL 代码中,这个连接操作是为了在更新 StuCourse 表中成绩时,能够通过 Course 表中的课程名称来定位到具体的课程。通过 JOIN 操作,将 StuCourse 表和 Course 表关联起来,然后使用 WHERE 子句筛选出学号为 2023002 且课程名称为 高等数学1 的记录,最后将这些记录的成绩更新为 60。

示例

假设 StuCourse 表有如下数据:

学号课程号成绩
2023002100159

Course 表有如下数据:

课程号课程名
1001高等数学 1

通过 JOIN Course ON StuCourse.课程号 = Course.课程号 连接后,会得到如下结果:

学号StuCourse. 课程号成绩Course. 课程号课程名
20230021001591001高等数学 1

这样就可以根据 课程名 来更新 成绩 了。

3.对表中的数据进行删除
USE StudentCourse;

-- 删除 Student 表中名字为邓小凡的学生记录
DELETE FROM Student
WHERE 姓名 = '邓小凡';    

-- 删除 Student 表中学号为 2023002 的学生记录
DELETE FROM Student
WHERE 学号 = '2023002';    

三、总结

        在 SSMS 数据台上对表数据进行操作和使用 SQL 代码操作各有优劣。

        SSMS 数据台操作的优势在于直观便捷,不需要掌握 SQL 语法,通过简单的鼠标点击、输入就能完成数据的增删改查,并且操作结果实时可见,方便数据预览与初步查看。然而,在处理大量数据时效率低下,面对复杂操作如多表关联、复杂条件筛选等功能受限,且操作过程无法保存,缺乏可重复性。

        使用 SQL 代码操作则具有强大的功能和高效性,能较为轻松地实现批量数据操作和复杂的查询、统计功能,代码可保存复用,便于维护与团队协作。但 SQL 代码有一定学习成本,初学者需掌握语法规则,且调试代码、定位错误相对困难,操作过程不如数据台直观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2320905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

deepSeek-SSE流式推送数据

1、背景 DeepSeek作为当前最火的AI大模型, 使用的时候用户在输入框输入问题,大模型进行思考回答你,然后会有一个逐步显示的过程效果,而不是一次性返回整个答案给前端页面进行展示,为了搞清楚其中的原理,我们…

【北京迅为】iTOP-RK3568开发板OpenHarmony系统南向驱动开发UART接口运作机制

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

C#实现自己的Json解析器(LALR(1)+miniDFA)

C#实现自己的Json解析器(LALR(1)miniDFA) Json是一个用处广泛、文法简单的数据格式。本文介绍如何用bitParser(拥有自己的解析器(C#实现LALR(1)语法解析器和miniDFA词法分析器的生成器)迅速实现一个简单高效的Json解析器。 读者可在&#xf…

机器学习——KNN数据均一化

在KNN(K-近邻)算法中,数据均一化(归一化)是预处理的关键步骤,用于消除不同特征量纲差异对距离计算的影响。以下是两种常用的归一化操作及其核心要点: 质押 一 、主要思想 1. 最值归一化&#…

异步编程与流水线架构:从理论到高并发

目录 一、异步编程核心机制解析 1.1 同步与异步的本质区别 1.1.1 控制流模型 1.1.2 资源利用对比 1.2 阻塞与非阻塞的技术实现 1.2.1 阻塞I/O模型 1.2.2 非阻塞I/O模型 1.3 异步编程关键技术 1.3.1 事件循环机制 1.3.2 Future/Promise模式 1.3.3 协程(Cor…

哈尔滨工业大学DeepSeek公开课人工智能:大模型原理 技术与应用-从GPT到DeepSeek|附视频下载方法

导 读INTRODUCTION 今天继续哈尔滨工业大学车万翔教授带来了一场主题为“DeepSeek 技术前沿与应用”的报告。 本报告深入探讨了大语言模型在自然语言处理(NLP)领域的核心地位及其发展历程,从基础概念出发,延伸至语言模型在机器翻…

Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框

单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的,如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…

Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯

知识点: 1、安全开发-NodeJS-开发环境&功能实现 2、安全开发-NodeJS-安全漏洞&案例分析 3、安全开发-NodeJS-特有漏洞 node.js就是专门运行javascript的一个应用程序,区别于以往用浏览器解析原生js代码,node.js本身就可以解析执行js代…

国产达梦(DM)数据库的安装(Linux系统)

目录 一、安装前的准备工作 1.1 导包 1.2 创建用户和组 1.3 修改文件打开最大数 1.4 目录规划 1.5 修改目录权限 二、安装DM8 2.1 挂载镜像 2.2 命令行安装 2.3 配置环境变量 2.4 启动图形化界面 三、配置实例 四、注册服务 五、启动 停止 查看状态 六、数据库客…

git的底层原理

git的底层原理 三段话总结git, 1. 工作原理:git管理是一个DAG有向无环图,HEAD指针指向branch或直接指向commit,branch指向commit,commit指向tree,tree指向别的tree或直接指向blob。 2. git所管理的一个目录…

MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用,之前的知识都忘掉了。需要逐步捡起来。 1 熟悉按键的使用 2熟悉灯的控制 1 电路 我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信,读取按键状态并控制 LED 灯的亮灭。 按键:连接到 Arduino 的数字引脚(例如…

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎:3.8.5 您好,我是鹤九日! 回顾 前面的几篇文章,讲述的主要是Cocos引擎对Shader使用的一些固定规则,这里汇总下: 一、Shader实现基础是OpenGL ES可编程渲染管线,开发者只需关注顶点着色器和…

vue设置自定义logo跟标题

准备 Logo 图片 将自定义的 Logo 图片(如 logo.png)放置在项目的 public文件夹下。 使用环境变量设置 Logo 和标题(可选) 创建或修改 .env 文件 在项目根目录下创建或修改 .env 文件,添加以下内容: VITE_A…

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…

VMware主机换到高配电脑,高版本系统的问题

原来主机是i3 ,windows7系统,vmware 14.0,虚机系统是ubuntu 14.04。目标新机是i7 14700KF,windows11系统。原以为安装虚拟机,将磁盘文件,虚拟机配置文件拷贝过去可以直接用。 新目标主机先安装了vmware 15,运行原理虚机&#xff0…

【Linux内核系列】:动静态库详解

🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 有些鸟儿是注定是关不住的,因为它们的每一片羽翼都沾满了自由的光辉 ★★★ 本文前置知识: 编译与链接的过程…

windows环境下NER Python项目环境配置(内含真的从头安的perl配置)

注意 本文是基于完整项目的环境配置,即本身可运行项目你拿来用 其中有一些其他问题,知道的忽略即可 导入pycharm基本包怎么下就不说了(这个都问?给你一拳o(`ω*)o) 看perl跳转第5条 1.predict报错多个设备…

IDEA批量替换项目下所有文件中的特定内容

文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录,点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏: IDEA 1. 问…

【蓝桥杯】4535勇闯魔堡(多源BFS + 二分)

思路 k有一个范围(0到怪物攻击的最大值),求满足要求的k的最小值。很明显的二分套路。 关键是check函数怎么写,我们需要找到一条从第一行到最后一行的路径,每一次可以从上下左右四个方向前进,那么我么可以用…

HTML图像标签的详细介绍

1. 常用图像格式 格式特点适用场景JPEG有损压缩,文件小,不支持透明适合照片、复杂图像PNG无损压缩,支持透明(Alpha通道)适合图标、需要透明背景的图片GIF支持动画,最多256色简单动画、低色彩图标WebP谷歌开…