内容正文:
(中职)MySQL 8.0数据库管理与应用第3章教学课件(工信版)
第3章 数据查询
2
3.1.1 SELECT语句的基本组成
SELECT 输出项[, 输出项 ...]
[FROM 源表
[WHERE 搜索条件]
[GROUP BY {列名 | 表达式|列位置}, ...]
[HAVING 搜索条件]
[ORDER BY {列名|表达式 | 列位置}[ASC | DESC], ...]
[LIMIT {[偏移,]行数|行数 OFFSET 偏移}]
[INTO OUTFILE '文件名' | INTO DUMPFILE '文件名' | INTO 变量名[, 变量名]]]
3.1 SELECT语句概述
3.1.2 常用查询工具
1. mysql命令行工具
使用mysql命令行工具可以通过交互方式输入SQL语句或从文件以批处理模式执行SQL语句,从而完成在MySQL服务器上创建数据库、查询和操作数据的任务。
2. MySQL Workbench
MySQL Workbench是一种可视化的数据库设计和管理工具,可以用于管理MySQL服务器,也可以用于创建和管理数据库和各种数据库对象。MySQLWorkbench提供了一个内置的SQL编辑器,可以用来在数据库连接上执行各种SQL语句,还可以将编写的SQL语句或查询结果保存到文件中。
3. Navicat for MySQL
Navicat for MySQL是由PremiumSoft公司出品的用于管理MySQL数据库的桌面应用程序,它为MySQL数据库管理、开发和维护提供了一款直观而强大的图形界面。
3.1 SELECT语句概述
3.2.1 选择所有列
如果要查看表中所有列的信息,可在SELECT输出项列表中使用星号(*)来选择源表或视图中的所有列。如果使用表或视图名称进行限定,则星号将被解析为对指定表或视图中的所有列的引用。
当使用星号选择所有列时,查询结果中的列顺序与创建表或视图时所指定的列顺序相同。由于SELECT * 将查找表中当前存在的所有列,因此每次执行SELECT * 语句时,表结构的更改(通过添加、删除或重命名列)都会自动反映出来。
3.2.2 选择部分列
如果要从表中选择一部分列作为SELECT查询的输出项,则应当在输出项列表中明确地列出每个列名,列名之间用逗号分隔。假如创建表时在表名或列名中使用了空格(不符合标识符命名规则),则编写SELECT语句时需要使用反引号“`”将表名或列名括起来,例如SELECT `student id`, `student name` FROM `student table`,否则会出现错误信息。
如果在FROM子句中指定了多个表,而这些表中又有同名的列,则在使用这些列时需要在列名前面冠以表名,以指明该列属于哪个表。例如,在student和score表都有一个名称为stuid的列。若要引用student表中的stuid列,应在输出项列表中写上student.stuid;若要引用score表中的stuid列,则应在输出项列表中写上score.stuid。
3.2 选择查询输出项
3.2.3 设置列别名
在SELECT语句中,可以使用AS子句来更改结果集中的列名或为派生列分配名称:
列名 [AS] 别名
3.2.4 增加派生列
在输出项列表中,有些列不是指定为对列的简单引用,而是通过表中的其他列值计算而生成,例如表中有单价和数量列,可以在输出项列表中增加一个用于计算总额的表达式,其值等于单价乘以数量,此即派生列。派生列本无名称,通常应使用AS子句为其指定别名。
在派生列中,可以对数值列或常量使用算术运算符或函数进行计算,也可以进行数据类型转换。MySQL支持下列算术运算符:+(加)、-(减)、*(乘)、/(除)、%(模,即取余数),可以使用算术运算符可以对数值数据进行加、减、乘、除运算。此外,也可以使用日期函数或常规加或减算术运算符对日期时间类型的列进行算术运算。
3.2 选择查询输出项
3.2.5 消除重复行
在输出项列表中可以使用ALL和DISTINCT修饰符,用于指定是否应返回重复的行。
ALL是默认值,指定应返回所有匹配的行,包括重复行在内。
DISTINCT指定从结果集中删除重复的行。DISTINCTROW是DISTINCT的同义词。
3.2.6 没有表列的SELECT语句
在SELECT语句中,只要SELECT子句是必选的,其他子句一律都是可选项。如果SELECT选择列表中仅包含常量、变量、函数和其他表达式,而不包含从任何表或视图中选择的列,则没有必要使用FROM子句。
3.2 选择查询输出项
3.3.1 单表查询
当从单个数据库表中查询数据时,需要在FROM子句中指定要引用的该表的名称,这种查