news 2026/5/14 16:45:15

SQL 十四分钟速成班!没错不要怀疑,资料库语法比中午决定吃什么还要简单!个人学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 十四分钟速成班!没错不要怀疑,资料库语法比中午决定吃什么还要简单!个人学习笔记

写在前面:
本篇文章为学习笔记总结,原视频教程为:b站up PAPAYA电脑教室 的 SQL 十四分钟速成班!没错不要怀疑,资料库语法比中午决定吃什么还要简单!
原视频讲得很好,欢迎查看原作者的视频,此文为视频教程的文字版。
在此致谢!


目录

  • 学习网站与资料
  • SQL语法笔记
  • 写在最后

学习网站与资料

原作者提供了一个学习 SQL 的网站:sqliteviz
该网站可以直接在浏览器上操作数据库,不用安装任何软件,对初学者非常友好(但是需要特殊网络环境)
此外,作者在视频简介提供了相关资料分享:

练习档下载 载点一 https://tinyurl.com/2azrrbcb 载点二 https://share.weiyun.com/t8GrkeZy SQL 语法笔记 https://tinyurl.com/26dgqg7x

“载点一” 和 “SQL语法笔记” 需要特殊网络环境(原视频作者居住在tw),建议使用 “载点二” ,第三个 “SQL 语法笔记” 我更新到了另一篇博客,也提供了文档下载,在此再次感谢原作者,建议大家优先使用原作者链接
文章:SQL 範例語法 —— PAPAYA电脑教室
下载:PAPAYA电脑教室 的 SQL 範例語法 搬运 已设置0积分下载


SQL语法笔记

使用/* */--写注释

/* 这是多行注释 多行注释 */-- 这是单行注释

使用SELETE导入数据,*通配符表示全部,FROM students表示从students表中导入
语句末尾建议加;

SELECT*FROMstudents;

也可以指定导入部分栏位

SELECT姓名,班级,成绩FROMstudents;

访问大量数据会影响系统性能,可以使用LIMIT加以限制

SELECT姓名,班级,成绩FROMstudentsLIMIT5;

这样数据库只会返回最先检索到的5个数据
如果需要查看接下来的5条,使用OFFSET语法(类比C++中的偏移量)

SELECT姓名,班级,成绩FROMstudentsLIMIT5OFFSET5;

虽然代码可以写在同一行,但是建议按关键字进行分行,这样会让代码的可读性更高

SELECT姓名,班级,成绩FROMstudentsLIMIT5OFFSET5;

使用WHERE设置查询时的筛选条件
选择2班的同学

SELECT姓名,班级,成绩FROMstudentsWHERE班级='1 年 2 班';

选择不是2班的同学

SELECT姓名,班级,成绩FROMstudentsWHERE班级<>'1 年 2 班';

使用ORDER BY进行排序

SELECT姓名,班级,成绩FROMstudentsWHERE班级<>'1 年 2 班'ORDERBY班级;

此时会先显示1班,再显示3班

SELECT姓名,班级,成绩FROMstudentsWHERE班级<>'1 年 2 班'ORDERBY班级,成绩;

此时会在班级排序的基础上,按照成绩由小到大排序
如果希望改为降序,使用DESC即可

SELECT姓名,班级,成绩FROMstudentsWHERE班级<>'1 年 2 班'ORDERBY班级,成绩DESC;

搜索指定条目:

SELECT姓名,班级,成绩FROMstudentsWHERE姓名='林小玉';

如果忘记了具体名字,可以使用万用字
%表示0个或多个任意字元
_表示一个字元
前面的=要变成LIKE(符合)

SELECT姓名,班级,成绩FROMstudentsWHERE姓名LIKE'林%';

此时会列出所有名字首字为"林"的条目

SELECT姓名,班级,成绩FROMstudentsWHERE姓名LIKE'林_';

此时会列出所有名字首字为"林"且名字只有两个字的条目


WHERE也可用于数字大小的判断
查询分数大于等于80的学生

SELECT姓名,班级,成绩FROMstudentsWHERE成绩>=80;

查询分数在80至90之间的学生

SELECT姓名,班级,成绩FROMstudentsWHERE成绩>=80AND成绩<90;

查询数值之间可以使用BETWEENAND来查询

SELECT姓名,班级,成绩FROMstudentsWHERE成绩BETWEEN80AND90;

可以加入更多的条件进行筛选
AND表示

SELECT姓名,班级,成绩FROMstudentsWHERE成绩BETWEEN80AND90AND班级='1 年 1 班';

OR表示

SELECT姓名,班级,成绩FROMstudentsWHERE成绩BETWEEN80AND90AND(班级='1 年 1 班'OR班级='1 年 2 班');

此处要加括号,因为AND的语法优先级比OR更高

使用IN进行更快捷的条件查询

SELECT姓名,班级,成绩FROMstudentsWHERE成绩BETWEEN80AND90AND(班级IN('1 年 1 班','1 年 2 班'));

SQL有和Excel类似的功能,利用函数完成运算
AVG计算平均值
SUM计算总和
MAX计算最大值
MIN计算最小值
COUNT计算数量

SELECTAVG(成绩),SUM(成绩),MAX(成绩),MIN(成绩),COUNT(成绩)FROMstudents;

在使用函数计算后,如果感觉栏位名称不够直观,可以使用AS设置别名

SELECTAVG(成绩)AS成绩平均值FROMstudents;

使用ROUND设置保留几位小数
保留一位小数:

SELECTROUND(AVG(成绩),1)AS成绩平均值FROMstudents;

保留至整数位:

SELECTROUND(AVG(成绩))AS成绩平均值FROMstudents;

使用GROUP BY进行资料分组

SELECT班级,ROUND(AVG(成绩),1)AS成绩平均值FROMstudentsGROUPBY班级ORDERBY成绩平均值DESC;

按班级计算平均分,并且降序显示


对于GROUP BY分组后的数据,使用HAVING关键字进行筛选

SELECT班级,ROUND(AVG(成绩),1)AS成绩平均值FROMstudentsGROUPBY班级HAVING成绩平均值>=80ORDERBY成绩平均值DESC;

SQL语法优先级

  1. SELECT 选取
  2. FROM 来源
  3. WHERE 条件
  4. GROUP BY 分组
  5. HAVING 条件
  6. ORDER BY 顺序
  7. LIMIT 个数限制

计算总行数

SELECTCOUNT(*)FROMstudents;

计算社团行数

SELECTCOUNT(社团)FROMstudents;

如果该行不存在该栏目值,COUNT不会计算入行数内

使用DISTINCT排除重复的行

SELECTCOUNT(DISTINCT社团)FROMstudents;

去掉COUNT函数即可显示是哪些,包括空行的NULL

SELECTDISTINCT社团FROMstudents;

想要去除NULL,使用WHERE加上IS NOT过滤

SELECTDISTINCT社团FROMstudentsWHERE社团ISNOTNULL

使用CREATE TABLE建立新资料表,后接表格名称
使用()表示表格含有哪些栏位,栏位之间使用,分隔
栏位名称后接数值类型(注意字符类型关键字是VARCHAR
主键的栏目后面使用PRIMARY KEY设置主键

CREATETABLEclubs(社团编号INTPRIMARYKEY,社团名称VARCHAR(15));

使用DROP TABLE删库跑路
这下看懂了!

DROPTABLEtest;

使用INSERT INTOVALUES插入数据

INSERTINTOclubs(社团编号,社团名称)VALUES(101,'吉他社'),(102,'篮球社'),(103,'美术社'),(104,NULL);

使用UPDATE语法更新表格资料

UPDATEclubsSET社团名称='舞蹈社'WHERE社团编号='104';

使用SET时,后面一定要跟WHERE,否则所有"社团名称"都会被修改为"舞蹈社"


使用DELETE删除数据

DELETEFROMclubsWHERE社团编号='104';

同理,也要接WHERE,否则会删除全部数据
这下又看懂了!


跨表格查询:
使用LEFT的方式JOIN接入第二个表格
使用ON设置两个表格之间如何连接

SELECTstudents.姓名,students.社团,clubs.社团名称FROMstudentsLEFTJOINclubsONstudents.社团=clubs.社团编号WHERE班级='1 年 1 班';

此时会显示"1 年 1 班"的所有人的姓名,社团,社团名称
虽然有些人没有社团,但也会显示

如果想要只输出两边都有的数据,可以将LEFT的方式改为INNER
图中的最后两个就会不显示

SELECTstudents.姓名,students.社团,clubs.社团名称FROMstudentsINNERJOINclubsONstudents.社团=clubs.社团编号WHERE班级='1 年 1 班';

写在最后

本文纯人工总结笔记,如果有错误,欢迎评论区指出!
最后再次向原视频作者致谢!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 16:43:22

3分钟快速上手:用DistroAV实现跨设备高清直播的完整方案

3分钟快速上手&#xff1a;用DistroAV实现跨设备高清直播的完整方案 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi DistroAV&#xff08;原OBS-NDI&#xff09;是OBS St…

作者头像 李华
网站建设 2026/5/14 16:42:25

NASA开源CFL3D在WSL2上的保姆级编译指南(含Intel编译器踩坑实录)

NASA开源CFL3D在WSL2上的全流程编译实战指南 对于计算流体力学&#xff08;CFD&#xff09;领域的工程师和学生来说&#xff0c;NASA开源的CFL3D软件包是一个不可多得的宝贵资源。然而&#xff0c;由于其原生设计主要针对Linux环境&#xff0c;Windows用户往往面临诸多挑战。本…

作者头像 李华
网站建设 2026/5/14 16:39:02

Vibe Coding时代:程序员的价值重构与工程思维沉淀

前言自前OpenAI创始成员Andrej Karpathy提出“Vibe Coding”概念以来&#xff0c;该理念在过去一年迅速风靡软件工程领域。依托Claude code、Gemini 3.1 Pro、Cursor、codex等高性能AI编程工具&#xff0c;开发者无需逐行编写繁琐语法&#xff0c;仅通过自然语言明确开发意图&a…

作者头像 李华