正在连载中……
MYSQL系列文章目录
3.2 学生-课程数据库
3.3.1 模式的定义(创建)与删除
3.3.2 基本表的定义(创建)、删除与修改
3.3.3 索引的建立与删除
数据查询-目录
select * from <表名>;
select * from student;
select * /*列*/
from student;/*表*/
/*行*/
3.4.1 单表查询
单表查询是指仅涉及一个表的查询。
1. 选择表中的若干列
选择表中的全部或部分列即关系代数的投影运算。
1.1 查询指定列
在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通过在select子句
的<目标列表达式>中指定要查询的属性列。
[例 3.16] 查询全体学生的学号与姓名。
SELECT Sno,Sname
FROM Student;
该语句的执行过程:
从Student表中取出一个元组,取出该元组在属性Sno和Sname上的值,形成一个新的元组作为输出。对Student表中所有元组做相同的处理,最后形成一个结果关系作为输出。
[例 3.17] 查询全体学生的姓名、学号、所在系。
SELECT Sname,Sno,Sdept
FROM Student;
<目标列表达式>中各个列的先后顺序可以与表中的顺序不一致。用户可以根据应用的需要改变列的显示顺序。先列出姓名,在列出学号和所在系。
1.2 查询全部列
将表中的所有属性列都选出来有两种方法:
1.在select关键字后列出所有列名;
2.如果列的显示顺序与其在基表中的顺序相同,也可以简单地将<目标列表达式>指定为*
。
SELECT Sno,Sname,Ssex.Sage,Sdept
FROM Student;
//等价于
SELECT *
FROM Student;
1.3 查询经过计算的值(连载到这里……)
2. 选择表中的若干元组
2.1 消除表中的若干元组
2.2 查询满足条件的元组
2.2.1 比较大小
2.2.2 确定范围
2.2.3 确定集合
2.2.4 字符匹配
2.2.5 涉及空值的查询
2.2.6 多重条件的查询
3. order by 子句
4. 聚集函数
函数 | 意义 | |
---|---|---|
———————————— | ———————————————————————————— | |
count(*) | 统计元组个数 | 对元组进行计数,某个元组的一个或部分列取空值不影响count 的统计结果。 |
count( [all | distinct] <列名>) | 统计一列中值的个数 | 跳过空值而只处理非空值 |
sum( [all | distinct] <列名>) | 计算一列值的总和(此列必须是数值型) | 跳过空值而只处理非空值 |
avg( [all | distinct] <列名>) | 计算一列值的平均值(此列必须是数值型 | 跳过空值而只处理非空值 |
max( [all | distinct] <列名>) | 求一列值中的最大值 | 跳过空值而只处理非空值 |
min( [all | distinct] <列名>) | 求一列值中的最小值 | 跳过空值而只处理非空值 |
如果指定distinct
短语,则表示在计算时要取消指定列中的重复值。如果不指定distinct
短语或指定all
短语(all
为默认值),则表示不取消重复值。
注意:where
子句是不能用聚集函数作为条件表达式的,聚集函数只能用于select子句
和group by
中的having子句
。
5. group by 子句
3.4.2 连接查询
1. 等值与非等值连接查询
2. 自身连接
3. 外连接
4. 多表连接
3.4.3 嵌套查询
1. 带有 in 谓词的子查询
2. 带有比较运算符的子查询
3. 带有any(some)或all谓词的子查询
4. 带有exists谓词的子查询
3.4.4 集合查询
3.4.5 基于派生表的查询
3.4.6 select语句的一般格式
1. 目标列表达式的可选格式
1.1 *
1.2 <表名>.*
1.3 count([all | distinct] *)
1.4 [<表名>.] <属性列名表达式> [,[<表名>.] <属性列名表达式>] …
<属性列名表达式>可以是由属性列、作用与属性列的聚集函数和常量的任意算术运算(+、-、*、/)组成的运算公式。