0
点赞
收藏
分享

微信扫一扫

4.4 数据查询

爱读书的歌者 2022-04-26 阅读 122
数据库

数据查询

4.4.1 SELECT 语句的一般格式

SELECT [ALL | DISTINCT] 选择序列
FROM 表, 表, …, 表
WHERE 条件
GROUP BY 分组列 {, 分组列} [ HAVING 分组选择条件 ]
ORDER BY 排序列 [ASC | DESC] { ,排序列 [ASC | DESC] }
SELECT语句相当于关系代数的投影运算 缺省时为ALL,ALL不删除结果的重复行,DISTINCT将删除结果的重复行
FROM 语句相当于关系代数的笛卡尔积运算
WHERE语句相当于关系代数中的选择运算

4.4.2 不带WHERE的简单查询

SELECT 列1,列2,…,列n FROM 表 这样最后出来的属性的顺序跟选择时的顺序一致
SELECT * FROM 表,如果使用 * 这种形式,最后属性的顺序跟表定义的次序一致

4.4.3 带WHERE的简单查询

见课本p82

LIKE表达式 有两种通配符 " _ " 和 " % ":
_可以和任意单个字符匹配
%可以和零个或多个任意字符匹配
如果需要用到_和%的字面意思,则使用转义字符 ESCAPE 某个转移字符 例如:
WHERE Cname LIKE ‘C_%’ ESCAPE ’ \ ';
用ESCAPE定义 \ 为转义字符,将_转义为普通字符,转移只能转移其后一个字符,所以%仍然是通配符

4.4.4 排序和分组

1. 将查询结果排序

ORDER BY 排序列 [ASC | DESC] { ,排序列 [ASC | DESC] }
排序列可以是属性名,也可以是别名
ORDER BY 可以有多个排序列,先按照第一个排序列的值排序,第一个值相同的结果元组按第二个排序列的值排序

2. 聚集函数

对一组数据进行计算,对比于单行函数
见课本p84

count函数计算指定列的个数时,是不计算NULL值的
等效于WHERE 属性 IS NOT NULL;
但是 count * 会统计NULL值
所有的函数也是有 [ ALL | DISTINCT ] 两种 如:COUNT(DISTINCT 列名)
缺省为ALL, DISTINCT先删除重复的值

3. 分组

GROUD BY 分组列 {, 分组列} [ HAVING 分组选择条件 ]
SELECT 的结果列只能是 分组属性聚集函数
分组列是属性,它所在的表出现在FROM语句中。Having 用来过滤不满足分组选择条件的分组
SELECT Sno, AVG(Grade)
FROM SC
GROUP BY Sno HAVING AVG(Grade) > 85;

4.4.5 连接查询

课本中连接查询知识设计很少,只有自然连接
FROM 表1,表2
WHERE 连接条件 && 其他条件
多表查询中有相同列时,属性名前加前缀

举报

相关推荐

DQL数据查询

mysql数据查询

SQL数据查询

Grom之数据查询

数据库-数据查询

0 条评论