《SQL必知必会》简要学习笔记

我主要学习的是 SQLite 的语法,实验用的数据库文件可以从这里下载,使用的 SQL 工具是免费的 SQLStudio

基本概念

主键:一列或一组列,其值用来唯一标记表中的每一行

简单查询

SELECT

从表格中检索某些列:

使用DISTINCT 可以去除重复的结果:

取出前5个结果:

取出从第6行开始的5个结果:

ORDER BY

对检索的结果进行排序:

按照列索引号进行排序:

如果需要将结果进行降序排序,则需使用DESC 关键字:

WHERE

对检索到的数据进行筛选:

IN

用来制定条件范围:

NOT

否定后面所跟的任何条件:

Like

在搜索子句中使用通配符。

%

表示任意字符出现任意次数:

_

匹配单个字符:

GROUP BY

分组,可以将数据分为多个逻辑组,进而对每个组进行聚集计算。

HAVING

对分组进行过滤,相当于WHERE, 不过WHERE只能对行进行过滤:

计算字段

对表中元素进行运算

使用函数处理数据

文本处理

函数 作用
LENGTH() 返回字符串的长度
LOWER()/UPPER() 将字符串转成小写/大写
LTRIM()/TRIM()/RTRIM() 去除字符串左边/两边/右边的空格

数值处理

函数 作用
ABS() 返回一个数的绝对值
COS() 返回一个数的余弦值
SIN() 返回一个数的正弦值
TAN() 返回一个数的正切值
SQRT() 返回一个数的平方根值

聚集函数

函数 作用
AVG() 返回一列的平均值
COUNT() 返回一列的行数
MAX() 返回一列的最大值
MIN() 返回一列的最小值
SUM() 返回一列的和

以上五个函数都可以对所有行进行运算,或者是只对不同的值进行运算:

还可以对多个聚集函数进行组合:

子查询

子查询即嵌套在其他查询中的查询。

作为子查询的语句不能返回多个列。

子查询可以作为计算字段来使用:

联结

内联结

联结是一种机制,用来在一条SELECT语句中关联表,因此称为联结

例子中的联结称为等值联结,也被称为内联结,它基于两个表之间的相等测试。

下面的语句与上面语句的作用完全等价:

可以联结的表的数量没有限制,因此可以尽情使用WHERE或上面的形式联结多个表:

外联结

联结包含了那些在相关表中没有关联行的行,这种联结称为外联结,使用外联结时,必须用 LEFT 或者 RIGHT 来指定其包含所有行的表:

高级联结

表别名

SQL可以给表起别名,这样可以缩短SQL语句:

自联结

组合查询

可以将多个查询的结果作为一个查询结果集返回:

UNION 必须由两条或两条以上 SELECT 语句组成,且每条 SELECT 语句必须包含相同的列、表达式或聚集函数。

仍然可以使用 ORDER BY来对查询结果集进行排序,不过此时只能有一个 ORDER BY 语句,并且必须位于最后一条 SELECT 语句之后:

插入数据

更新和删除数据

创建和操纵表

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据