sqlite--SQL语句进阶

SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解 阅读详情

SQL语句进阶

函数和聚合

函数:

SQL 语句支持利用函数来处理数据, 函数一般是在数据上执行的, 它给数据的转换和处理提供了方便常用的文本处理函数:

常用的文本处理函数:

// 返回字符串的长度
length();
//将字符串转换为小写
lower();
// 将字符串转换为大写
upper();

语法:

select 函数名(列名) from 表名;
select * from cpucode;

image-20200810143450457

select id upper(name) from cpucode;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常用的聚集函数:

使用聚集函数, 用于检索数据, 以便分析和报表生成

--返回某列的平均值
avg()
--返回某列的行数
count()
-- 返回某列的最大值
max()
-- 返回某列的最小值
min()
-- 返回某列值之和
sum()

插入一列分数 score

alter table cpucode add score integer;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

修改内容

update cpucode set score=66 where name='cpu';
update cpucode set score=77 where name='code';
update cpucode set score=88 where name='test';

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

select max(score) from cpucode;

image-20200810144730589

select avg(score) from cpucode;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

select count(*) from cpucode;

image-20200810144817464

判断数据库中是否有 cpucode 这张表

sqlite_master 是数据库自带的一个表。 当用户创建一张表时, 数据库会将用户新建的表的信息存放在 sqlite_master 这张表中

select count(*) from sqlite_master where type = 'table' and name = 'cpucode';

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据分组 group by

分组数据, 以便能汇总表内容的子集, 常和聚集函数搭配使用。

select 列名 1[, 列名 2, ...] from 表名 group by 列名
alter table cpucode add class text;

update cpucode set class='class_a' where name='cpu';
update cpucode set class='class_b' where name='code';
update cpucode set class='class_b' where name='test';

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

select class, count(*) from cpucode group by class;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

select class, avg(score) from cpucode group by class;

image-20200810155236737

group by 子句必须出现在 where 子句之后

select class, avg(score) from cpucode where class='class_a' group by class;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过滤分组 having

除了能用 group by 分组数据外, 还可以包括哪些分组, 排除哪些分组。

通过 having 实现

语法:

select 函数名(列名 1) [, 列名 2, ...] from 表名 group by 列名 having 函数名 限制值
select class, avg(score) from cpucode group by class having avg(score) >=80;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

约束

管理如何插入或处理数据库数据的规则

常用约束分类 :

主键、 唯一约束、 检查约束

主键:

惟一的标识一行( 一张表中只能有一个主键 )

主键应当是对用户没有意义的( 常用于索引 )

永远不要更新主键, 否则违反对用户没有意义原则

主键不应包含动态变化的数据, 如时间戳、 创建时间列、 修改时间列等

主键应当有计算机自动生成( 保证唯一性 )

语法:

create table 表名称 (列名称1 数据类型 primary key, 列名称2 数据 类型,列名称3 数据类型, ...);

唯一约束:

用来保证一个列(或一组列) 中数据唯一, 类似于主键, 但跟主键有区别

表可包含多个唯一约束, 但只允许一个主键

唯一约束列可修改或更新

创建表时, 通过 unique 来设置

语法:

create table 表名 (列名称 1 数据类型 unique[, 列名称 2 数据类型 unique,...]);
create table test (id integer primary key, name text unique);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

insert into test values(1, 'cpu');
insert into test values(1, 'code');

image-20200810164549086

insert into test values(2, 'cpu');

image-20200810164626151

检查约束:

用来保证一个列(或一组列) 中的数据满足一组指定的条件。

指定范围, 检查最大或最小范围, 通过 check 实现

create table 表名 (列名 数据类型 check (判断语句));
create table test2 (id integer, age integer check(age > 0));

image-20200810164838299

insert into test2 values(1, 30);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

insert into cpucode values(1, -20);

image-20200810164941123

联结表(多表操作)

概念:

保存数据时往往不会将所有数据保存在一个表中, 而是在多个表中存储, 联结表就是从多个表中查询数据。

在一个表中不利于分解数据, 也容易使相同数据出现多次, 浪费存储空间; 使用联结表查看各个数据更直观,这使得在处理数据时更简单。

例如: 学生每年的考试成绩, 学生个人信息基本固定(包括学号、 姓名、 地址等); 把所有信息放在同一个表中必然会造成学生的学号等基本信息重复。

对比:

学生信息和成绩在一个表中

单表缺点:

  • 每年记录的成绩都需要添加重复的学生信息, 如: name, addr
  • lucy 的地址(addr)修改, 整个表所有的关于 lucy 的 addr 都需更改, 处理复杂。

学生信息和成绩在不同的表中

学生信息(persons):

学生成绩(grade):

每个人的信息只需保存一份, 没有重复, 成绩 id 与学生信息 id 相同, 作为关联, 用于查找相应学生的成绩

lucy 的地址(addr)修改, 只需修改 persons 表中的 addr

分表优点:

将学生信息和成绩分开存储, 节省空间, 处理简单, 效率更高, 在处理大量数据时尤为明显。

使用关系型数据库存储数据, 各个表的设计是非常重要的, 良好的表设计, 能够简化数据的处理, 提高效率, 提高数据库的健壮性。

使用联结:

通过 select 语句将要联结的所有表以及它们如何关联

select 列名 1,列名 2,.. from 表 1,表 2,.. where 判断语句;
select name , addr, score, year from cpucode, grade where cpucode.id = grade.id;

在联结两个表时, 实际上是将第一个表中的每一行与第二个表中每一行配对, where 子句作为过滤条件,只有满足条件的才显示出来

匹配语句: persons.id = grade.id

完全限定列名, 用一个点(.)分隔表名和列名

终端输入(输出指定学生的信息和分数):

select name, addr, score, year from cpucode, grade where cpucode.id = greade.id and name='cpu';

select 语句中可以联结的表的数目没有限制

当前面指定列名二义性时, 需要通过完全限定名引用

视图(虚拟的表)

重用 SQL 语句

简化复杂的 SQL 操作(如:多表查询)

使用视图, 将整个查询包装成一个名为 PersonsGrade 的虚拟表, 简化了查询的 SQL 语句:

创建视图:

触发器

查询优化-索引

第三十四篇:Python 入门-Python 与数据库交互-SQLite 进阶 更新数据操作 阅读详情

相关推荐

SQLite3命令行界面工具实践指南 - sqlite-shell-win32-x86

SQLite是一个嵌入式SQL数据库引擎,它不需要单独的服务器进程运行,可以被直接集成到应用程序中。其最大的特点之一是轻量级和零配置,不需要进行安装或者系统管理员权限就可以使用。这种便携性使得SQLite在小型项目和移动设备上十分流行。SQLite支持标准的SQL语言,提供事务功能,保证了数据的原子性、一致性、隔离性和持久性(ACID属性)。SQLite作为轻量级的数据库,为Windows用户提供了一个简单而强大的方式来管理数据库,而不需要安装任何复杂的服务器软件。

weixin_42524864的博客 683

数据库操作命令大全

https://www.cnblogs.com/liuqifeng/p/9148831.html

qq_35642849的博客 1036

SQLite数据库操作与实战语句详解

SQLite 是一种轻量级的嵌入式关系型数据库管理系统,因其无需独立服务器进程、零配置、易部署和高效稳定的特性,广泛应用于移动应用、嵌入式系统、原型开发及本地小型项目中。它将整个数据库存储在一个单一的磁盘文件中,便于管理与移植。与传统的客户端-服务器数据库(如 MySQL、PostgreSQL)相比,SQLite 更加轻便,适合资源受限的环境。其事务处理遵循 ACID 原则,支持多数 SQL 标准语法,适合中低并发、读多写少的应用场景。

weixin_36078669的博客 670

SQLite 常用 SQL 语句整理

数据定义语言是用于定义数据库结构的 SQL 语句,包括创建、修改和删除表及其他数据库对象。SQLite 是一个功能强大的嵌入式数据库,能够满足许多应用场景中的数据存储需求。熟练掌握常用 SQL 语句,对于开发者进行数据管理、操作和查询至关重要。本文整理了 SQLite 的常用 SQL 语句,包括数据定义、数据操作和数据查询等方面,帮助读者在实际项目中快速上手。希望通过本文的介绍,读者能够更好地理解 SQLite 的使用,提升数据库操作的效率和灵活性。

My_wife_QBL的博客 1594

Centos7.6下安装Zabbix6

一、

Overmaster博客 1907

STM32 AFIO时钟开启时机与复用功能解析

在嵌入式系统开发中,GPIO复用是微控制器外设配置的核心技术之一。通过复用功能,单个物理引脚可以动态切换不同功能模式,如USART通信或普通IO。其实现原理依赖于芯片内部的时钟树架构和寄存器配置机制。AFIO(Alternate Function I/O)模块作为STM32的特色设计,专门处理引脚重映射、外部中断配置等高级功能。正确理解复用功能与AFIO时钟的关系,能显著提升嵌入式开发效率,避免资源浪费。本文以STM32为例,结合引脚重映射和USART配置等典型场景,详解AFIO时钟的实际应用规范与优化实践

weixin_42389113的博客 579

SQLite3中的SQL基本语句和高级语句

一、SQL基本语句 1. 创建表: 至少需要包含一个表名和一个字段名, 创建基本表: CREATE TABLE stu (id int, name text, score real); 基本表会在数据库中永久存在。 创建临时表: CREATE TEMP TABLE stu (id int, name text, score real); 临时表是暂时存活,一旦连接断开就会自动销毁。 字段解析: stu:表名 id/name/score:字段名 int/text/real:类型 SQLite有五种

qq_34934140的博客 6564

2021-03-08 使用SPDK部署NVMe over TCP

NVMe-oF Target入门指南 SPDK NVMe over Fabrics Target是一个用户空间应用程序,通过以太网,Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。 本文将在已经编译好SPDK的基础上演示如何使用SPDK搭建NVMe over TCP,前提是您已经将一块NVMe硬盘挂载到linux系统中。 如果您想获取有关SPDK更详细的信息,请参考 官方文档。 演示过程的Host主机的ip地址是192.168.0.21,Target主机的ip地址是19

Pancras的博客 2844

数据库—sqlite3与SQL命令

数据库—sqlite3与SQL命令

m0_72814368的博客 1435

Endnote 导入参考文献的时候,格式错误太多了。et.al错误,国标GBT7714在endnote中的详细配置教程,适用于本科,硕士论文文献插入的模板

EndNote插入文献常遇到以下错误主要如下: 等、et al不分; 英文作者全名大写; 期刊名字使用了缩写(图片里没有体现;卷号、期号缺失时出现乱码,多了半个括号;页码范围略去了相同部分;没有悬挂缩进,本文全部解决,全网最细

sakura的博客 3万+

解决 Clawdbot 对接 Minimax 出现 401 (Token is unusable) 的问题排查与修复

即便确认 API Key 有效且余额充足,该问题仍可能在 Clawdbot 中持续出现,而在其他工具(如 curl 或 Postman)中测试正常。

hampeter的博客 3076

SQL进阶(一):SQL基础速览,以SQLite为例

本文是在原本sql闯关的基础上总结得来,加入了自己的理解以及疑问解答(by GPT4)

qq_33489955的博客 1306

硬件手册——PT100精密测温电路

PT100精密测温电路 一、需求分析 根据题目要求为:测温范围为0-100℃、测温精度要求为±1℃。由于铂电阻具有精度高、性能可靠、稳定性好的特点,且铂电阻的电阻相对变化率与温度的关系曲线线性度最好,故选择铂电阻作为敏感元件。而在国标中,铂电阻有几种不同的标准,如PT100、PT1000。分别对应着0摄氏度下铂电阻的阻值为100R和1000R,由于需要考虑铂电阻的自发热问题,所以尽量选择阻值小的铂电阻,故选择PT100为最终型号。 二、电路设计 2.1 热电阻接法 热电阻测温电路有多种接法,其中三线制会导致

weixin_41655430的博客 5万+

Android进阶#(5/12)独特高效的数据存储——SQLite数据库_SQLite中的SQL语句

(5/12)独特高效的数据存储——SQLite数据库_SQLite中的SQL语句

王基。 336

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1207

火灾图像检测识别:cnn卷积神经网络 Adaboost 支持向量机 随机森林 决策树 完整代码数据

火灾图像检测识别:cnn卷积神经网络 Adaboost 支持向量机 随机森林 决策树 完整代码数据

864

SQL练习50题

一、相关说明 1、使用工具: SQLite Expert Professional 2、参考书籍: (1)《SQL基础教程(第2版)》 (2)《SQL进阶教程》 3、参考网址: https://blog.youkuaiyun.com/fashion2014/article/details/78826299 注1: 自己写的[答题]的SQL语句大部分通用,少部分仅适用于SQLite。 注2:[参考答案]来源于参...

eorui 460

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SQL查询——大厂面试真题

本文总结了SQLite数据库的核心操作要点:1. 基础语法:SQL语句不区分大小写,多语句需用分号分隔,支持多种注释方式2. 表操作:包括创建表(定义主键、非空约束等)、插入/更新/删除数据、添加/修改/删除列3. 查询进阶:JOIN连接的四种方式(内/左/右/全连接)、UNION组合查询、子查询嵌套4. 性能优化:索引的创建与管理,视图的创建与应用5. 高级功能:分组排序(GROUP BY)、条件筛选(HAVING)、开窗函数等6. 实战示例:包含第N高数据查询、连续出现N次记录查询等典型场景解决方案

weixin_56581108的博客 1512

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【数据库】适用于SQLite的SQL语句(二)

九、视图VIEW 视图是基于真实数据上创建的虚拟表,在查询语句SELECT中可以当表来使用。 1、创建视图 CREATE VIEW "VIEW_NAME" AS "SQL 语句"; 2、删除视图 DROP VIEW "VIEW_NAME"; 十、虚拟表 虚拟表和普通表类似,但是并不实际存储数据。 1、创建虚拟表 CREATE VIRTUAL TABLE 2、删除虚拟表 使用删除普通表的语法:...

郭老二 591

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

如何在 Jupyter Notebook 执行和学习 SQL 语句(上)—— 基本原理详解和相关库安装篇

SQLite 是一个轻量级的数据库系统,适合本地小型项目。SQLAlchemy 是一个强大的数据库连接工具,可以在Jupyter中方便地运行SQL查询。帮助有jupyter的人懒得装SQL的人学习SQL一大利器!

qq_44117805的博客 2529

python的sqlite3说明_python之sqlite3使用详解

Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它使用一个文件存储整个数据库,操 作十分方便。它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有些差距。但是性能表现上,SQLITE并不逊色。麻雀虽小,五脏俱全, sqlite 实现了多数 sql-92 的标准,比如说 transaction 、 trigger ...

weixin_30691643的博客 3818

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

  Sqlite3 的确非常好用。小巧、速度快。近期研究它,有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。               导入SQLLite library并引入头文件.                libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib。也就是说在这里你加入libsqlite3.dylib和加入libs...

jacklin_01的博客 1149

sqlite expert 教程

SQLite Database SQLite is an embedded relational database engine. Its developers call it a self-contained, serverless, zero-configuration and transactional SQL database engine. 其实只需要记住SQLite不需要数据库服务器,不需要额外配置,其数据库本身就是一个文件的一个小型数据库。通常情况下在Android中创建数据库,系统会.

Gordennizaicunzai的博客 6040

php 5开始不再默认支持mysql_而是默认支持sqlite_轻型数据库SQLite结合PHP的开发

codeinsert SQL insert statements for TABLEline One value per linelist Values delimited by .separator stringtabs Tab-separated valuestcl TCL list elements.nullvalue STRING Print...

weixin_39918084的博客 247

【亲测免费】 SQL实战教程:使用SQLite和Jupyter Notebook进行SQL语法练习

SQL实战教程:使用SQLite和Jupyter Notebook进行SQL语法练习 1. 项目基础介绍及主要编程语言 本项目是一个开源的SQL语法实践教程,使用Jupyter Notebook编写,主要教授如何使用SQLite进行数据库操作。SQLite是一种轻量级的数据库,非常适合初学者进行学习和实践。项目通过一系列实践教程,帮助用户掌握SQL的基础语法和常用技巧。主要编程语言为Jupyter...

gitblog_00089的博客 613

SQLite3 Tutorial

http://www.iphonesdkarticles.com/2008/10/sqlite-tutorial-selecting-data.html

199
上一篇: sqliteSQL基础
下一篇: sqlite--SQLite的C编程
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

onnx

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值