浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改)

2023-10-31


前言

   我们在上一篇博文《浅显易懂 SQLite3 笔记(03)— SQL数据查询(超级详细)》,学习了如何使用SQL语句进行数据查询。本篇,我们将继续学习如何使用SQL语句进行数据更新(增加、删除、修改)。


一、插入数据

【例1】将一条新的学生记录(学号:2005;姓名:王东;性别:男;所在系:数学;年龄:20岁)插入到student表中。

在这里插入图片描述

	INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES('2005','王东',18,'男','数学系');

注意:表名后面可以不跟字段名。此时,values中字段值的顺序必须与建立表时的字段顺序一致。

  • 若如果插入多条记录,则使用如下语句
	INSERT INTO Student(sno,sname,sage,ssex,sdept)VALUES
		('2006','小南',18,'男','数学系'),('2007','小西',19,'男','数学系');

【例2】对于每一个系,求学生的平均年龄,并把结果存入数据库中。

在这里插入图片描述

	//方法一:
	CREATE TABLE Dept_age1(sdept VARCHAR(20) PRIMARY KEY,avg_age TINYINT not null);
	INSERT INTO Dept_age1(sdept,avg_age) SELECT sdept,avg(sage) FROM student GROUP BY sdept;
	//方法二:
	SELECT sdept, avg(sage) AS avg_age INTO Dept_age FROM student GROUP BY sdept;

注意:方法二可以用于SQL serve数据库,不能用于SQLite3数据库。

二、修改数据

【例1】将所有学生的年龄增加1。

在这里插入图片描述在这里插入图片描述

	UPDATE Student SET sage = sage + 1 ;

【例2】将“计算机系”学生的年龄增加1岁。

在这里插入图片描述
在这里插入图片描述

	UPDATE student SET sage = sage + 1 WHERE sdept = '计算机系';

【例3】将“王东”的姓名改为“王西”,年龄改为20。

在这里插入图片描述
在这里插入图片描述

	UPDATA student SET sname = '王西',sage = 20 WHERE sname = '王东';

【例4】当课程号为C004的成绩低于该门课程的平均成绩时,将成绩提高5%。

	UPDATE sc SET grade = grade * 1.05 WHERE cno= 'C004' and 
		     grade < (SELECT AVG(grade) FROM sc WHERE cno = 'C004');

【例5】将“陈晨”的成绩提高2分。

	//方法一:
	UPDATE sc SET grade = grade + 2 WHERE sno IN (SELECT sno FROM student WHERE sname = '刘晨');
	//方法二:
	UPDATE sc SET grade = grade + 2 FROM student s INNER JOIN sc ON s.sno = sc.sno AND s.sname = '刘晨';
	//方法三:
	UPDATE sc SET grade = grade + 2 WHERE '刘晨'= (SELECT sname FROM student WHERE sno = sc.sno);

三、删除数据

【例1】删除所有学生的基本信息。

	DELETE FROM student;

【例2】删除“计算机系”学生的基本信息。

	DELETE FROM student WHERE sdept = '计算机系';

【例3】删除计算机系所有学生的选课记录。

	//方法一:
	DELETE FROM sc WHERE sno IN (SELECT sno FROM student WHERE sdept = '计算机系');
	//方法二:
	DELETE FROM sc WHERE '计算机系'= (SELECT sdept FROM student WHERE sno = sc.sno);
	//方法三:
	DELETE sc FROM sc,student s WHERE sc.sno = s.sno and s.sdept = '计算机系';

伪删除:为了能恢复被删除的记录,则需实现“伪删除”,方法如下:

(1)在表中增加字段: is_deleted (bit类型)

(2)设置is_deleted字段的默认值为0

(3)一旦删除记录,则设置该记录的is_deleted字段的值为1

  • 例如:删除学号为“990001”的记录
	UPDATE student SET is_deleted=1 WHERE sno='990001' and is_deleted=0;

(4)选择记录的时候,加上限制条件is_deleted =0

  • 例如,浏览student表中的全部记录
	SELECT * FROM student WHERE is_deleted = 0;

总结

   以上就是浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改)的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改) 的相关文章

  • 将 SQL 变量传递给 ASP

    这里只是有点语法问题 我正在使用 SQL 和 ASP 并且到目前为止有以下代码 set rs Server CreateObject ADODB recordset rs Open Select from Questions conn sq
  • 本地 SQLite 与远程 MongoDB

    我正在设计一个新的 Web 项目 在研究了一些旨在可扩展性的选项后 我提出了两个数据库解决方案 为可扩展方式精心设计的本地 SQLite 文件 每个 X 用户一个新的数据库文件 因为写入将取决于用户内容 不存在跨用户数据依赖性 远程 Mon
  • 如何返回调用不同数据库中的存储过程的远程数据库名称?

    我在一个 SQL Server 2008 R2 上有许多不同的数据库 为了便于论证 我们将它们称为 DB A DB B 和 DB C 我被要求开发一个将存在于 DB A 上的存储过程 该存储过程将用于删除和创建索引 并在 DB A 的表中存
  • 如何选择前一行值? [复制]

    这个问题在这里已经有答案了 如何从 SELECT 语句的上一个结果行获取值 例如 如果我们有一个名为 cardevent 的表 并且有行 ID int Value Money 并且其中有一些行 ID Value 1 70 1 90 2 10
  • SELECT * FROM 员工 WHERE NULL IS NULL; SELECT * FROM 员工 WHERE NULL = NULL;

    最近开始学习oracle和sql 在学习的过程中 我遇到了我的朋友在面试时被问到的几个问题 SELECT FROM Employees WHERE NULL IS NULL 此查询生成Employees 表中的所有行 至于我所理解的Orac
  • SQLite 数据库安全

    我正在构建一个使用 Sqlite DB 的应用程序 用户可以将他们的信息输入数据库并检索它们 但是 我希望他们能够备份 sqlite 数据库 我所做的是将 sqlite 数据库放入文档文件夹中 以便他们可以使用 iTunes 将其检索出来
  • SQL Server中根据条件进行计数

    有谁知道如何在 SQL Server 中根据条件进行计数 Example 如何对表中名称为 system 的记录以及 CaseID 记录总数进行列计数 顾客表 UserID CaseID Name 1 100 alan 1 101 alan
  • Rails Resque 作业无法访问数据库,I/O 错误

    我遇到错误 无法找到任何相关信息 这是一个 Ruby on Rails 堆栈 Ruby 1 9 Rails 3 2 并使用 sqlite3 数据库进行开发 Resque 和 Redis 用于后台作业 Rails Web 应用程序启动正常 可
  • PostgreSQL:用以前的值填充时间序列查询中的 NULL 值

    我有一个包含时间相关信息的数据库 我想要一个包含每分钟值的列表 像这样 12 00 00 3 12 01 00 4 12 02 00 5 12 03 00 5 12 04 00 5 12 05 00 3 但是 当几分钟内没有数据时 我得到如
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • 限制相同的数据条目

    我是 SQL 新手 我有两张桌子 一张放冰箱 一张放食物 一台冰箱只能存放 5 种食物 所以我想知道是否有办法限制食物表中只有 5 个相同的冰箱 ID 条目 没有直接的方法来强制执行这样的约束 我能想到的最好的是 有一个 冗余 列food
  • postgresql to_json() 函数转义所有双引号字符

    我编写了一个 plpgsql 脚本 它在字符串中生成一个 json 对象数组 但是在我使用 to json 方法将带有该字符串的变量传递给它之后 它返回一个带双引号的结果 并且每个双引号字符都被转义 但我需要原样的字符串 jsonResul
  • 如何将子表的删除级联到父表?

    我准备了a fiddle这说明了问题 http sqlfiddle com 15 e25c5 2 CREATE TABLE parent parent id integer primary key CREATE TABLE child ch
  • 当您有两种类型的记录时,该表的最佳数据库设计是什么

    我正在跟踪练习 我有一个workout表与 id 练习ID 外键进入练习表 现在 一些练习 例如重量训练 将包含以下字段 重量 次数 我刚刚举起 10 次 100 磅 跑步等其他练习将包含以下字段 时间 距离 我刚刚跑了5英里 花了1个小时
  • SQL:从多个表中获取 USER 表中用户记录的计数。最好的方法是什么?

    我有4个SQL Server 2008版本 表 1 USER to store user information Fields UserId UserName 2 FILES to store files uploaded by user
  • 在 SQLite 数据库的特定位置插入一行

    我正在 SQLite Manager 中创建数据库 并且错误地忘记提及一行 现在 我想在中间手动添加一行 在其下方 其余的自动增量键应自动增加 1 我希望我的问题很清楚 Thanks 您不应该关心键值 只需在末尾附加行即可 如果您确实需要这
  • 是否可以将普通表与临时表进行左外连接?

    我创建 SQL Server 查询并有一个包含记录的普通表 另一方面有一个包含记录的临时表 该表不为空 并且所有字段都没有任何冲突 加入 可以连接这两个不同类型的表吗 SELECT NormalTable Entityname FROM N
  • 表中主键的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在设计表时 我养成了一种习惯 即有一列是唯一的 并且我将其作为主键 根据要求 可以通过三种方式实现 自动递增的标识整数列 唯一标识符 GUID
  • PHP/MySQL - 在数据库中存储数组

    我正在开发一个 PHP 应用程序 它需要将各种设置存储在数据库中 客户经常询问是否可以添加或更改 删除某些内容 这导致了表格设计出现问题 基本上 我有很多布尔字段 它们只是指示是否为特定记录启用了各种设置 为了避免再弄乱表格 我正在考虑将数
  • 我是否需要 SQL Server 数据库项目中链接服务器的数据库引用?

    在我的数据库项目中 我添加了对链接服务器的引用 当我在视图中使用此链接服务器并尝试构建数据库项目时 SSDT 报告错误 因为它无法理解对链接服务器上引用的任何架构的引用 LinkedServer DB1 dbo Table1 上面的代码会返

随机推荐

  • 黑马Python教程实战项目--美多商城(一)

    一 项目介绍 这是跟着Python教程做的一个实战项目 美多商城 这个项目主要包括首页广告 注册 登陆 QQ登陆 个人中心 收货地址 我的订单 修改密码 商品列表 商品搜索 商品详情 购物车 结算订单 提交订单 支付宝支付 支付结果处理 订
  • 【ChatGLM】记录一次Windows部署ChatGLM-6B流程及遇到的问题

    文章目录 部署环境 文件下载 项目文件 模型配置文件 模型文件 运行demo 遇到的问题 部署环境 系统版本 Windows 10 企业版 版本号 20H2 系统类型 64 位操作系统 基于 x64 的处理器 处理器 Intel Core
  • Ubuntu安装Anaconda详细步骤(Ubuntu21.10,Anaconda3-5.3.1)

    1 下载anaconda3 在清华源镜像下载Linux版本的anaconda3 下载地址 Index of anaconda archive 清华大学开源软件镜像站 Tsinghua Open Source MirrorIndex of a
  • 使用mybatis example 和 java 8的特性来实现多表关联且带有查询条件的查询

    Mybatis Example的好处 使用了面向对象的思想 其关联数据库的单表查询都能自动生成 减少了劳动量 同时将复杂查询拆分成单表查询 加快了查询速度 让其复杂的关联在service层中使用代码进行拼装 这样处理速度会比一个大查询快得多
  • 【AdGuard Home】轻松实现全屋去广告与追踪,AdGuard Home助力更安全浏览体验

    序言 在当今越来越数字化的社会中 广告和追踪器成为了许多用户最不喜欢的东西之一 用户访问网站或使用应用程序时 经常会被恼人的广告和追踪器所干扰 甚至可能泄露个人隐私 这就是为什么广告拦截 反追踪插件变得越发受欢迎的原因 这些插件利用拦截规则
  • WordCount案例及MapReduce运行的三种方式

    目录 一 MapReduce案例准备 二 运行方式一 本地执行 三 运行方式二 打jar包 集群执行 四 运行方式三 以idea为入口 集群执行 一 MapReduce案例准备 在Idea中创建一个MapReduce工程 对指定目录下文件的
  • OpenCV学习记录之摄像头调用

    关于opencv调用摄像头的问题主要是因为摄像头的打开有延时 在显示图像前 要用if语句判断图像是否存在 否则会报错 具体的 教程里的源程序 将if条件句里 break去掉 并增加else语句 include
  • 本地新项目上传到SVN服务器

    1 在一个已有检出的项目文件夹中 在空白处 右键 gt TortoiseSVN gt Repo browser 这样就到了svn服务器的目录了 在这里插入图片描述 https img blog csdnimg cn a91b52172ab3
  • 业内人员告诉你银行测试到底做什么,怎么进银行测试.....

    前言 从一家工作了五年的软件公司的测试管理者跳槽到银行做软件测试 短短两个月 对银行测试有了初步认识 总结和记录下来 加深个人的理解 同时也共享给各位 银行作为大家的理财顾问 对金钱非常敏感 频繁甚至偶尔出现的软件故障都会打击顾客的信心 如
  • Reconstruction by inpainting for visual anomaly detection阅读笔记

    Reconstruction by inpainting for visual anomaly detection阅读笔记 Abstract 视觉异常检测 解决图像中偏离正常外观的区域分类和定位问题 一种流行的方法是在无异常图像上训练自动编
  • CentOS7.3安装elasticsearch6.8.6

    CentOS7 3安装elasticsearch6 8 6 一 环境 二 下载elasticsearch 6 8 6 tar gz 三 创建用户 四 修改配置文件 1 vim elasticsearch 6 8 6 conf jvm opt
  • 分组密码的加密模式(CFB,OFB)

    1 j 比特密码反馈CFB模式 Cipher feedback 1 1CFB模式特点 若待加密消息必须按字符 如电传电报 或按比特处理时 可采用CFB模式 CFB实际上是将加密算法DES作为一个密钥流产生器 CFB与CBC的区别是反馈的密文
  • OpenCV-Python图像击中击不中变换理解的关键知识点及自定义实现

    前往老猿Python博客 https blog csdn net LaoYuanPython 声明 本文为老猿自我体悟和总结 相关内容无公开资料 禁止转载和抄袭 博文传送门 老猿关于HTM变换的博文目录请见 https blog csdn
  • 数据指标应用场景说明

    科技飞速发展的时代 企业信息化建设会越来越完善 越来越体系化 当今数据时代背景下更加强调 重视数据的价值 以数据说话 通过数据为企业提升渠道转化率 改善企业产品 实现精准运营 为企业打造自助模式的数据分析成果 以数据驱动决策 数据指标体系是
  • uniapp掉完接口后刷新当前页面方法

    uniapp掉完接口后刷新当前页面方法 掉完接口 里面加下面这个方法uni redirectTo setTimeout gt uni redirectTo 当前页面路由 url pages property mutualrotation m
  • python3 pyinstaller打包exe运行无限创建进程问题 multiprocessing windows

    mulitprocessing模块在window环境下使用有诸多限制 需要注意 其中之一就是在main py下使用multiprocessing启动子进程问题 该问题在pycharm中没有 pycharm环境下运行调试都是正常的 当使用py
  • 插入排序算法笔记

    插入排序 1 最简单的排序算法 2 在增量排序中有很高的效率 比如已经存在成绩排序 要插入一个新的成绩并且排序 3 不需要额外的存储空间 属于内部排序 4 时间复杂度为O n 2 首先 定义数组的形式为 num MAX 1 MAX是已经定义
  • 【计算机组成原理笔记】1.1计算机系统简介

    1 1计算机系统简介 计算机系统由硬件 软件两部分组成 硬件是看得到摸得到的实体 如硬盘 显卡 主板等 软件程序通常寄寓于各种媒体 如RAM ROM 磁带 光盘等 RAM 随机存取存储器 英语 Random Access Memory 缩写
  • 【信号与系统】1、初步认识信号与系统

    文章目录 1 信号的概念 1 1 信号的定义 1 2 因果 逆因果信号的概念 1 2 1 因果信号 1 2 2 逆因果信号 1 2 3 时限信号 1 2 4 右边信号 1 2 5 左边信号 1 2 6 双边信号 2 信号的分类 2 1 确定
  • 浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改)

    文章目录 前言 一 插入数据 二 修改数据 三 删除数据 总结 前言 我们在上一篇博文 浅显易懂 SQLite3 笔记 03 SQL数据查询 超级详细 学习了如何使用SQL语句进行数据查询 本篇 我们将继续学习如何使用SQL语句进行数据更新