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 语句:

创建视图:

触发器

查询优化-索引

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

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

相关文章

LeetCode42:接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 代码 单调栈 class Solution { public:int trap(vector<int>& height) {stack<int> stk;int result 0;stk.push(0);for (int …

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

如何在window是安装mysql数据库(从零开始)

mysql简介&#xff1a; MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是目前世界上最流行的数据库之一。MySQL最初由瑞典的MySQL AB公司开发&#xff0c;后来被Sun Microsystems收购&#xff0c;而后Sun Microsystems又被Oracle收购。My…

WPF 依赖属性原理、 附加属性

依赖属性如何节约内存 MSDN中给出了下面几种应用依赖属性的场景&#xff1a; 希望可在样式中设置属性。 希望属性支持数据绑定。 希望可使用动态资源引用设置属性。 希望从元素树中的父元素自动继承属性值。 希望属性可进行动画处理。 希望属性系统在属性系统、环境或用户…

离线数仓之MaxCompute

官方文档 简介 MaxCompute&#xff08;原名ODPS&#xff0c;Open Data Processing Service&#xff09;是一种典型的离线数仓解决方案。它是由阿里巴巴集团自主研发的大数据计算和存储平台&#xff0c;旨在支持大规模数据处理和分析。对于实时数据处理&#xff0c;MaxCompute…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.3,4 SPI驱动实验-I.MX6U SPI 寄存器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

【小白专用 已验证24.5.30】ThinkPHP6 视图

ThinkPHP6 视图 模板引擎支持普通标签和XML标签方式两种标签定义&#xff0c;分别用于不同的目的 标签类型描述普通标签主要用于输出变量、函数过滤和做一些基本的运算操作XML标签也称为标签库标签&#xff0c;主要完成一些逻辑判断、控制和循环输出&#xff0c;并且可扩展 c…

Vue:现代前端开发的首选框架-【基础篇】

引言 在众多前端框架中&#xff0c;Vue.js 以其独特的优势脱颖而出&#xff0c;成为现代前端开发的首选框架之一。本文将首先介绍 Vue.js 的优势&#xff0c;随后详细讲解如何搭建 Vue.js 开发环境&#xff0c;并深入探讨 Vue.js 的核心概念。 Vue.js 的优势 选择 Vue.js 作…

SpringBoot整合Shiro流程

1.pom.xml导入shiro相关jar包 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.0</version> </dependency> <dependency><groupId>org.apache.shiro</gr…

注意力可视化代码

读取网络层输出的特征到txt文件&#xff0c;arr为文件名 def hot(self, feature, arr):# 在第二维&#xff08;通道维&#xff09;上相加summed_tensor torch.sum(feature, dim1, keepdimTrue) # 结果形状为 [1, 1, 64, 64]selected_matrix summed_tensor.squeeze(1) # 移除…

牛客小白月赛95

c相助 题目描述 此题为E题的easy版&#xff0c;只有aia_iai​的数据范围不同。 给你一个 nnn 个正整数组成的数组 a &#xff0c;你每次操作可以选择一对 (i,j)( i, j )(i,j)&#xff0c;满足 1≤i<j≤n1 \leq i < j \leq n1≤i<j≤n&#xff0c;且 aiaja_{i} a_{…

三丰云免费服务器

三丰云网址&#xff1a; https://www.sanfengyun.com 可申请免费云服务器&#xff0c;1核/1G内存/5M宽带/有公网IP/10G SSD硬盘/免备案。 收费云服务器&#xff0c;买2年送1年&#xff0c;有很多优惠

Lombok一文通

1、Lombok简介 作为java的忠实粉丝&#xff0c;但也不得不承认&#xff0c;java是一门比较啰嗦的语言&#xff0c;很多代码的编写远不如其他静态语言方便&#xff0c;更别说跟脚本语言比较了。 因此&#xff0c;lombok应运而生。 Lombok是一种工具库&#xff0c;它提供了一组…

msf攻击windows实例

环境&#xff1a;攻击机kali&#xff08;192.168.129.139&#xff09;&#xff0c;目标机windows10&#xff08;192.168.129.132&#xff09; 方法一&#xff1a;通过web站点&#xff0c;使用无文件的方式攻击利用执行&#xff08;命令执行漏洞&#xff09; 方法二&#xff1…

迪文 51单片机,全局变量、静态变量初始化失败,修正

1. 问题 51单片机全局变量常量的初始化&#xff0c;static code const函数内部静态变量初始化也失败&#xff0c;例如 void fun() {static int a 5;printf("a %d\n", a); //输入的不一定是5&#xff0c;是之前这个地址的值&#xff08;随机值&#xff09; }2. 解决…

Lua两个点号连接字符串

在Lua中&#xff0c;两个点号 .. 代表字符串连接操作符。当你想要将两个或多个字符串拼接在一起时&#xff0c;可以使用这个操作符。 以下是使用 .. 操作符的一些示例&#xff1a; local str1 "Hello, " local str2 "World!" local result str1 .. str2…

提示工程(Prompt Engineering)和代码生成

文心一言 提示工程&#xff08;Prompt Engineering&#xff09;和代码生成之间的关系主要体现在如何通过精心设计的提示来指导或优化代码生成的过程。以下是关于提示工程和代码生成的详细解释&#xff1a; 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程…

路径操作函数

System.SysUtils.AnsiCompareFileName 根据当前语言环境比较文件名。 在 Windows 下不区分大小写&#xff0c;在 MAC OS 下区分大小写。 在不使用多字节字符集 (MBCS) 的 Windows 区域设置下&#xff0c;AnsiCompareFileName 与 AnsiCompareText 相同。在 MAC OS 和 Linux 下&…

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024&#xff1a;深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上&#xff0c;我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑&#xff0c;并在Google Workspace中采用了KMP。紧接着&#xff0c;KotlinConf 2…

【设计模式深度剖析】【7】【结构型】【享元模式】| 以高脚杯重复使用、GUI中的按钮为例说明,并对比Java类库设计加深理解

&#x1f448;️上一篇:外观模式 | 下一篇:结构型设计模式对比&#x1f449;️ 设计模式-专栏&#x1f448;️ 目录 享元模式定义英文原话直译如何理解&#xff1f;字面理解例子&#xff1a;高脚杯的重复使用例子&#xff1a;GUI中的按钮传统方式使用享元模式 4个角色1. …