首页 > 数据库 >SQL基础速成篇

SQL基础速成篇

时间:2024-10-26 17:19:11浏览次数:7  
标签:语句 栏位 表格 使用 基础 速成 SQL 数据

image

SQL基础速成篇

对应教程SQL 14 分钟速成班

练习网站sqliteviz

练习文件

https://tinyurl.com/2azrrbcb

share.weiyun.com/t8GrkeZy

简介

SQL​ 是一门用来操作数据库的程序语言。像是从数据库中新增、查询、删除或是更新数据等功能。

SQL​ 主要运行在所谓的【数据库管理系统】上。如下所示:

image

我们将使用 sqliteviz 这个在线网站来练习 SQL​ 的语法。

开始之前,我们需要将练习文件拖到 sqliteviz 中,它会以该文件内容自动建立一个同名的表格,然后我们就只需要点击 import 导入。

image

也可以在左侧部分点击该按钮手动选择本地文件添加。

image

在开始学习 SQL 语法之前,需要特别注意一点,SQL 语句中的所有标点符号都需要使用英文字符。

检索数据

*

导入成功后,可以看到界面中会有 SELECT * FROM "stduents"​ 这段语句。大意如下:

image

点击右侧的执行按钮或者是快捷键 Ctrl + Enter​,即可看到语句对应的结果。

image

在该语句中,是否使用 ""​,是取决于您所使用的数据库。对于 MySQL ​来说,"" ​是可以省略的。

当然,在这里,建议给每一条 SQL ​语句都添加上 ; ​作为语句的结尾;虽然有些数据库允许省略,但是使用 ; ​来表示语句的结尾不失为一种良好的编写习惯。

image

如上所示,执行该语句后,即可看到对应表格中的所有信息了。

检索对应列

有时候我们检索表格数据时,并不希望显示表格中的所有列,这是我们可以使用想要显示的列名来替换 *​。

image

这样,SQL ​就会回传对应列的数据了。

限制查询结果的条数

对于实际应用中的数据,每次都让 SQL ​返回上百万甚至上亿条数据数据显然并不高效且合理。这时候我们会考虑使用 LIMIT ​来限制查询结果的条数。如下,仅展示前 5 条数据:

image

如果你想继续查看接下来的数据,SQL ​中也提供了 OFFSET ​来实现。

image

显然,此时显示的数据是 6-10​ 的数据内容。

可读性

虽然这样写可以执行,但为了可读性,我们通常将每个关键字做分行。

image

设定筛选条件

通常,我们需要通过特定条件来显示对应的数据。在 SQL ​中,我们使用 WHERE ​来实现。

image

image

在图中,我们不难看出,表格中并没有将同班的人放在一起。对此,我们可以直接使用 ORDER BY ​来**排序**。

image

我们可以在班级的基础上继续按照成绩排序。

image

这样,表格中的数据就会先按照班级来排序,再这个基础上将各班的分数按照升序来显示。

如果你希望分数的排序是降序的话,在语句的后面添加 DESC ​即可。

image

image

WHERE​ 也可以做数字大小的判断,通常我们会配合 AND​ 来筛选同时符合多个条件的数据。

image

我们也可以使用 BETWEEN ​关键字来简写。

image

如果我们想要获取 1 年 1 班成绩在 80~90 ​的同学,可以如下所示:

image

更甚至,如果我们想要 1 年 1 班或者 1 年 2 班这两个班级在 80~90 ​的同学,我们可以如下操作:

image

要注意的是,这里的必须加括号,因为在 SQL 语句中,AND 的优先级高于 OR 的优先级,如果不加括号,SQL 语句会先执行前半部分的语句,造成结果不符合我们预期。

同样的,这段语法也有比较简洁的表达方式:

image

就是改用 IN ​关键字来简化多个 OR ​条件的使用。

通配符

所谓通配符,也就是使用某些特定的字符来表示不确定不具体的字符。

image

这里,我们需要使用 LIKE ​来替换等于号,表示相似的意思。而 % ​代表的是【零个或多个】任意字符的意思。

我们也可以使用 _ ​来来匹配,它代表的是一个字符。

image

函数

SQL​和Excel​有很多相似的地方,都可以用一些函数来针对数据进行汇总和计算。

汇总函数

AVG计算平均数,SUM计算总和,MAX求最大值,MIN求最小值,COUNT计算数量。

image

如果你决定返回的数据栏位不够直观,还可以为栏位设定【别称】。

image

当前成绩平均包含了好多位小数,如果想要把数值四舍五入,可以使用ROUND​函数。

image

或者四舍五入为整数:

image

我们经常将这些汇总函数和GROUP BY​(分组)的语法配合使用。

例如:获取各个班级的成绩平均:

image

这里,我在使用刚才学过的ORDER BY​语法来给各个班成绩排个序。

image

分组后的筛选条件

对于分组后的筛选,我们则是需要使用HAVING​关键字来筛选条件。

image

我们可以发现,这时的SQL​语句报了错误警告。

原因时SQL的关键字之间有一个特定的顺序:

image

这个顺序会影响到SQL​语句是否能正确执行。

因为数据必须完成筛选后才能限制返回的条数,而 GROUP BY​ 必须排在HAVING​之前。因为HAVING​是用来筛选GROUP BY​分组之后的结果。所以正确结果是:

image

汇总函数详解

COUNT​也可以用来统计表格的总行数。

image

我们也可以计算某个栏位的总行数。

image

我们会发现这里社团的总行数小于表格的总行数数,这是因为:

image

COUNT​在针对单一栏位进行计数时,会自动忽略空白的数据位。

此外,COUNT​关键字常常用来和DISTINCT​搭配使用。DISTINCT​可以用来排除表格中重复的数据。

image

代表这个表格中总共有四个不同的社团。如果想知道是那些社团,去掉COUNT​关键字:

image

DISTINCT​关键字并不会排除NULL​值,我们可以使用WHERE​关键字来筛选掉NULL​关键字即可。

image

创建或删除表格

目前的表格只有社团的编号,但是没有社团的名称,所以我们可以自己创建一个表格,对于每个表格来说,我们都需要在表格内指定一个栏位为【主键】,主键的功能是用来识别每一条数据,因此主键不能有重复的数据,也不能是NULL值——就像我们的身份证号。

image

如果你在侧边栏意外创建了多余的表格,可以使用DROP​关键字来删除。

image

表格中的数据操作

  • 使用INSERT INTO​来往表格中插入数据:

image

  • 使用UPDATE​来更新表格中的数据:

image

要注意的是,使用UPDATE来更新表格中的数据时,应该记得使用WHERE来筛选条件,否则会导致表格中对应栏位的数据都被修改。

  • 使用DELETE​来删除表格中的数据:

这里就不再赘述,使用方法同上面UPDATE​一样;同样要记得的是,应该记得使用WHERE​来筛选条件,否则会导致表格中对应栏位的数据都被删除。

使用SQL进行跨表格查询

由于不同表格可能会有相同名称的栏位,所以下面查询我们需要在不同栏位之前标注好表格的名称。

当然,在结合两个表格的时候,我们必须说明两个表格是如何进行连接的。

image

image

系统会列出左侧表格的所有数据记录,也就是1年1班全部的同学,尽管有点同学没有报名社团,或者社团编号找不到对应的名称。

如果你想把没有对应上的记录隐藏起来,可以把LEFT​方式改成INNER​(内部联结),这样就只有成功对应社团名称的同学被列举出来哦。

image

标签:语句,栏位,表格,使用,基础,速成,SQL,数据
From: https://blog.csdn.net/m0_74038905/article/details/143254361

相关文章