SQL 基础
SQL基础篇
前言:
本篇博客是一些简单的sql使用方式,并没有深入,以后会出一篇SQL高级应用的。本篇博客主要是借鉴了SQL必知必会的书籍。
这里的SQL语句执行的场景都是MYSQL数据库,其他数据库会略有差异。
一、什么是SQL?
SQL是Structured Query Langusge(结构化查询语言)的缩写。SQL是一种专门用来与数据库沟通的语言。
二、检索数据
2.1、检索语句格式:SELECT 列名1,列名2,……列名n FROM 表名 WHERE 检索条件;
例1:
注:(1) SQL语句不区分大小写,关键字select、from、where等大小写是相同的语句;
(2) select 后可通过 “*” 来代表检索所有列;
(3) 搜索不需要的列通常会降低检索速度和应用程序的性能。
2.2、去重
去重的关键字是:DISTINCT,它必须放在列名前边。
DISTINCT 作用于查询出的所有列,并不只是作用于DISTINCT后边的列。
例2:
2.3、限制结构:LIMIT
LIMIT用来取多少行的数据,有三种格式:LIMIT n;LIMIT n OFFSET m;LIMIT n,m;
LIMIT n 表示取n行,从0行开始区=取;
LIMIT n OFFSET m 表示从m行开始取,取n行;
LIMIT m,n 是上一条的简写,表示从m行开始取,取n行。
例3:
2.4、排序:ORDER BY
排序的关键词是:ORDER BY,格式:ORDER BY 列名1 [ASC|DESC],列名2 [ASC|DESC], 列名n[ASC|DESC]
ASC:按正序排序,默认为ASC,可省略;
DESC:按倒叙排序。
注:ORDER BY 语句应该放在SELECT语句的最后一条,否则会出错。
例4:
注:在ORDER BY 后有多列时,先按前面的列排序,前边的列有重复的,所重复的数据在按后边的列排序。
2.5、过滤条件
where后接需要过滤的条件,多个条件用AND或OR连接,AND表示并关系,OR表示或的关系。
注:当where后同时有AND和OR时,优先处理AND。
例5:
2.6、通配符过滤
通配符是使用LIKE关键字进行模糊匹配的,并且只能用于文本字段。
常用通配符有%、_、[]。
%:匹配多个字符;_匹配单个字符;[]匹配字符集。
例6:
注:使用通配符检索比普通检索要耗费更长的处理时间。
2.7、聚合函数
聚合函数包括:
AVG():返回某列的平局值;
COUNT():返回某列的行数;
MAX():返回某列的最大值;
MIN():返回某列的最小值;
SUM():返回某列值的和;
例7:
注:使用COUNT(*)计算行数时不忽略空值,使用COUNT(列名)时,忽略空值;max、min、sum都会忽略空值。
2.8、分组
SQL通过关键字GROUP BY 对数据进行分组,使用分组有如下规定:
(1)group by 可以包含任意数量的列,进行分组嵌套;
(2)group by 子句中列出的每一列都必须是检索列或有效的表达式,但不能是聚合函数;
(3) select 语句中的每一列都必须在group by 子句中给出;
(4)group by 必须出现在where之后,order by之前。
例8:
2.9、语句顺序
三、表关联
笛卡尔积:没有关联条件的表关联,返回的结果的数量是第一个表中的行数乘以第二个表中的行数。
注:连接的表越多,性能下降的越快。
3.1、子查询
子查询是将一个查询语句的返回值作为另一个查询语句的过滤条件的筛选值,使用关键字IN。
注:作为子查询的select语句只能查询单个列。
例9:
3.2、内连接
内连接将返回两个表相等的数据,语法格式:INNER JOIN 关联的表 ON 关联条件
例10:
3.3、外连接
外连接分为左外连接、右外连接、全连接。
3.3.1、左外连接
左外连接是将左边的表的数据都查出来,以及右表的符合关联条件的数据。
左外连接:LEFT JOIN 关联的表 ON 关联条件。
3.3.2、右外连接
右外连接将右表都查出来呢,以及左边符合关联条件的数据。
右外连接:RIGHT JOIN 关联的表 ON 关联条件。
3.3.3、全外连接
全外连接查询两表的关联数据,未关联的数据也会返回。
全外连接:FULL JOIN 关联的表 ON 关联条件。
注:mysql不支持FULL JOIN
例11:
3.4、组合查询
组合查询是将多个查询合并在一起返回结果,关键字是:UNION。
规则:1>、UNION 必须由两条或两条以上的SELECT语句组成;
2>、UNION 中的每个查询必须包含相同的列;
3>、列的数据类型必须兼容。
注:UNION从查询结果中自动去除重复的行;若要返回所有的行使用 UNION ALL。
注:UNION只能使用一条ORDER BY 子句,并且必须位于最后一条SELECT语句之后。
例12:
四、更新数据
4.1、插入数据
格式:INSERT INTO 表名(字段1,字段2,……,字段n) VALUES(值1,值2,……,值n);
像一个表中插入一条数据,字段和值相对应。
例13:
注:INSERT SELECT 是特殊的插入语句,将查询结果插入到表中。
格式:INSERT INTO 表名(字段1,字段2,……,字段n) SELECT 列1,列2,……,列n FROM 表名 WHERE 条件。
例14:
注:INSERT SELECT 中字段和列是按位置对应的,与名称无关。
4.2、复制表
格式:CREATE TABLE 新表名 AS SELECT 列1,列2,……,列n FROM 表名。
通过查询来复制出一个新表,若是想复制某个表的全部列,则可以直接使用SELECT *
例15:
4.3、修改数据
格式:UPDATE 表名 SET 字段1=值1,字段2=值2,……,字段n=值n WHERE 条件
通过update语句可以修改表中某个字段的值;
例16:
注:update语句最好不要省略where子句,避免更新表中所有数据。
4.4、删除数据
格式:DELETE FROM 表名 WHERE 条件
注:delete语句最好也不要省略where条件,避免将整个表数据删除。
例17:
五、操作表
5.1、创建表
格式:CREATE TABLE 表名 (字段1 数据类型 是否为空 [默认值],字段2 数据类型 是否为空 [默认值],……,字段n 数据类型 是否为空 [默认值]);
使用create table可以创建一张新表,默认值可以不写,是否为空若是不写则默认为空。
例18:
5.2、更新表
格式:ALTER TABLE 表名 操作[ADD添加、DROP删除] 列名 数据类型 是否为空;
注:多数数据库是不建议修改表的。
例19:
5.3、删除表
格式:DROP TABLE 表名
例20:
六、视图
视图是虚拟的表,它不包含任何列或数据,包含的是一个查询。
6.1、视图的优点
1>重用SQL语句;
2>简化复杂的SQL语句;
3>使用表的一部分,而不是整张表;
4>保护数据;
5>更改数据格式和表示。
注:性能问题,若使用多个连接和过滤创建复杂的视图或嵌套了视图,性能可能下降的很厉害。
注:视图命名必须唯一,视图不能索引,多数数据库在视图查询中禁止使用ORDER BY子句
6.2、创建视图
格式:CREATE VIEW 视图名 AS 查询语句
例21:创建视图
例22:使用视图
6.3、删除视图
格式:DROP VIEW 视图名
例22:
注:视图中的where语句和视图外的where语句将自动组合。
七、索引
索引是用来排序数据以加快搜索和排序操作的数据。
注:
1>索引改善检索操作的性能,但是降低了数据插入、修改和删除的性能;
2>索引数据可能要占用大量的存储空间;
3>索引用于数据过滤和数据排序;
4>索引用CREATE INDEX 语句创建;
5>索引必须唯一命名。
__EOF__

本文链接:https://www.cnblogs.com/masy-lucifer/p/14264643.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY