4.2 数据表的查询
数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选,以及确定数据以什么样的格式显示。MySQL提供了功能强大、灵活的语句来实现这些操作。
MySQL从数据表中查询数据的基本语句为select语句。select语句可以实现对表的选择、投影及连接操作。即select语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,结果通常是生成一个临时表。select语句是SQL的核心。
提示:数据表的查询都是基于本项目后的附录中的empMIS数据库、stuMIS数据库展开的。
select语句的基本语法格式是:
或
其中,各部分子句的含义如下:
[all|distinct]:“all”这个关键字代表查询所有记录,为默认选项;“distinct”这个关键字来过滤掉多余的重复记录,只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值。
{*|<字段列表>|<输出列表达式>}:“*”代表查询返回所有字段;“字段列表”代表查询返回的字段名列表;“输出列表达式”要输出对应表达式的值。
from<表名1>[,<表名2>…]:“表名1,表名2…”表示查询数据的来源,可以是单个或多个。
[where<条件表达式>]:where子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
[group by{字段名|表达式|列编号}[asc|desc],…[with rollup]]:该子句告诉MySQL如何显示查询出来的数据,并按照指定的一个字段(列)、一个表达式或一个正整数分组。“[asc|desc]”可对查询结果进行asc(升序)或desc(降序)。
[having<分组条件表达式>]:“分组条件表达式”和where子句中的条件类似,不过having子句中的条件可以包含聚合函数,而where子句中则不可以。
[order by{字段名|表达式|列编号}[asc|desc],…]:order by子句后可以是一个字段(列)、一个表达式或一个正整数。“[asc|desc]”可对查询结果进行asc(升序)或desc(降序)。
[limit{[偏移量,]行数|行数offset偏移量}]:偏移量和行数都必须是非负的整数常数。“偏移量”指返回的第一行的偏移量。“行数”指返回的行数。