SQL基础速成篇
对应教程:SQL 14 分钟速成班
练习网站:sqliteviz
练习文件:
简介
SQL
是一门用来操作数据库的程序语言。像是从数据库中新增、查询、删除或是更新数据等功能。
SQL
主要运行在所谓的【数据库管理系统】上。如下所示:
我们将使用 sqliteviz 这个在线网站来练习 SQL
的语法。
开始之前,我们需要将练习文件拖到 sqliteviz 中,它会以该文件内容自动建立一个同名的表格,然后我们就只需要点击 import 导入。
也可以在左侧部分点击该按钮手动选择本地文件添加。
在开始学习 SQL 语法之前,需要特别注意一点,SQL 语句中的所有标点符号都需要使用英文字符。
检索数据
*
导入成功后,可以看到界面中会有 SELECT * FROM "stduents"
这段语句。大意如下:
点击右侧的执行按钮或者是快捷键 Ctrl + Enter
,即可看到语句对应的结果。
在该语句中,是否使用 ""
,是取决于您所使用的数据库。对于 MySQL
来说,""
是可以省略的。
当然,在这里,建议给每一条 SQL
语句都添加上 ;
作为语句的结尾;虽然有些数据库允许省略,但是使用 ;
来表示语句的结尾不失为一种良好的编写习惯。
如上所示,执行该语句后,即可看到对应表格中的所有信息了。
检索对应列
有时候我们检索表格数据时,并不希望显示表格中的所有列,这是我们可以使用想要显示的列名来替换 *
。
这样,SQL
就会回传对应列的数据了。
限制查询结果的条数
对于实际应用中的数据,每次都让 SQL
返回上百万甚至上亿条数据数据显然并不高效且合理。这时候我们会考虑使用 LIMIT
来限制查询结果的条数。如下,仅展示前 5 条数据:
如果你想继续查看接下来的数据,SQL
中也提供了 OFFSET
来实现。
显然,此时显示的数据是 6-10
的数据内容。
可读性
虽然这样写可以执行,但为了可读性,我们通常将每个关键字做分行。
设定筛选条件
通常,我们需要通过特定条件来显示对应的数据。在 SQL
中,我们使用 WHERE
来实现。
在图中,我们不难看出,表格中并没有将同班的人放在一起。对此,我们可以直接使用 ORDER BY
来**排序**。
我们可以在班级的基础上继续按照成绩排序。
这样,表格中的数据就会先按照班级来排序,再这个基础上将各班的分数按照升序来显示。
如果你希望分数的排序是降序的话,在语句的后面添加 DESC
即可。
WHERE
也可以做数字大小的判断,通常我们会配合 AND
来筛选同时符合多个条件的数据。
我们也可以使用 BETWEEN
关键字来简写。
如果我们想要获取 1 年 1 班成绩在 80~90
的同学,可以如下所示:
更甚至,如果我们想要 1 年 1 班或者 1 年 2 班这两个班级在 80~90
的同学,我们可以如下操作:
要注意的是,这里的必须加括号,因为在 SQL 语句中,AND 的优先级高于 OR 的优先级,如果不加括号,SQL 语句会先执行前半部分的语句,造成结果不符合我们预期。
同样的,这段语法也有比较简洁的表达方式:
就是改用 IN
关键字来简化多个 OR
条件的使用。
通配符
所谓通配符,也就是使用某些特定的字符来表示不确定,不具体的字符。
这里,我们需要使用 LIKE
来替换等于号,表示相似的意思。而 %
代表的是【零个或多个】任意字符的意思。
我们也可以使用 _
来来匹配,它代表的是一个字符。
函数
SQL
和Excel
有很多相似的地方,都可以用一些函数来针对数据进行汇总和计算。
汇总函数
AVG计算平均数,SUM计算总和,MAX求最大值,MIN求最小值,COUNT计算数量。
如果你决定返回的数据栏位不够直观,还可以为栏位设定【别称】。
当前成绩平均包含了好多位小数,如果想要把数值四舍五入,可以使用ROUND
函数。
或者四舍五入为整数:
我们经常将这些汇总函数和GROUP BY
(分组)的语法配合使用。
例如:获取各个班级的成绩平均:
这里,我在使用刚才学过的ORDER BY
语法来给各个班成绩排个序。
分组后的筛选条件
对于分组后的筛选,我们则是需要使用HAVING
关键字来筛选条件。
我们可以发现,这时的SQL
语句报了错误警告。
原因时SQL的关键字之间有一个特定的顺序:
这个顺序会影响到SQL
语句是否能正确执行。
因为数据必须完成筛选后才能限制返回的条数,而 GROUP BY
必须排在HAVING
之前。因为HAVING
是用来筛选GROUP BY
分组之后的结果。所以正确结果是:
汇总函数详解
COUNT
也可以用来统计表格的总行数。
我们也可以计算某个栏位的总行数。
我们会发现这里社团的总行数小于表格的总行数数,这是因为:
COUNT
在针对单一栏位进行计数时,会自动忽略空白的数据位。
此外,COUNT
关键字常常用来和DISTINCT
搭配使用。DISTINCT
可以用来排除表格中重复的数据。
代表这个表格中总共有四个不同的社团。如果想知道是那些社团,去掉COUNT
关键字:
DISTINCT
关键字并不会排除NULL
值,我们可以使用WHERE
关键字来筛选掉NULL
关键字即可。
创建或删除表格
目前的表格只有社团的编号,但是没有社团的名称,所以我们可以自己创建一个表格,对于每个表格来说,我们都需要在表格内指定一个栏位为【主键】,主键的功能是用来识别每一条数据,因此主键不能有重复的数据,也不能是NULL
值——就像我们的身份证号。
如果你在侧边栏意外创建了多余的表格,可以使用DROP
关键字来删除。
表格中的数据操作
- 使用
INSERT INTO
来往表格中插入数据:
- 使用
UPDATE
来更新表格中的数据:
要注意的是,使用UPDATE来更新表格中的数据时,应该记得使用WHERE来筛选条件,否则会导致表格中对应栏位的数据都被修改。
- 使用
DELETE
来删除表格中的数据:
这里就不再赘述,使用方法同上面
UPDATE
一样;同样要记得的是,应该记得使用WHERE
来筛选条件,否则会导致表格中对应栏位的数据都被删除。
使用SQL进行跨表格查询
由于不同表格可能会有相同名称的栏位,所以下面查询我们需要在不同栏位之前标注好表格的名称。
当然,在结合两个表格的时候,我们必须说明两个表格是如何进行连接的。
系统会列出左侧表格的所有数据记录,也就是1年1班全部的同学,尽管有点同学没有报名社团,或者社团编号找不到对应的名称。
如果你想把没有对应上的记录隐藏起来,可以把LEFT
方式改成INNER
(内部联结),这样就只有成功对应社团名称的同学被列举出来哦。
标签:语句,栏位,表格,使用,基础,速成,SQL,数据 From: https://blog.csdn.net/m0_74038905/article/details/143254361