MySQL服务与执行原理如图5.1所示。
图5.1 MySQL服务与执行原理
SELECT语句可以从一个或多个表中选取特定的行和列,结果通常是生成一个临时表。在执行过程中系统根据用户的要求从数据库中选出匹配的行和列,并将结果存放到临时的表中,SELECT语句的语法格式如下:
或
select语句的语法格式如下:
select 字段列表
[ALL | DISTINCT]
from 数据源表
[where条件表达式]
[group by 分组字段
[having条件表达式]
[order by 排序字段 [asc | desc]]
[LIMIT {[offset,] row_count}]
5.1.1 使用select语句指定字段列表
使用表5.1所示的几种方式指定字段列表。
表5.1 指定字段列表的方式
可以为字段列表中的字段名或表达式指定别名,中间使用as关键字分隔即可(as关键字可以省略)。
多表查询时,同名字段前必须添加表名前缀,中间使用“.”分隔。
1.选择指定的列
使用SELECT语句选择表中的某些列,各列名之间要以逗号分隔。
【例5.1】查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分。
USE PXSCJ
SELECT 姓名,专业,总学分
FROM XSB;
2.定义列别名
当希望查询结果中的某些列或所有列显示自己选择的列标题时,可以在列名之后使用AS子句来指定查询结果的列别名。语法格式为:
SELECT column_name [AS] column_alias
【例5.2】查询XSB表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。
SELECT 学号 AS number,姓名 AS name,总学分 AS mark
FROM XSB
WHERE 专业= '计算机';
查询结果如图5.2所示。
图5.2 查询重命名列名
5.1.2 指定查询条件
使用where子句过滤结果集。数据库中存储着海量数据,数据库用户往往需要的是满足特定条件的记录,where子句可以实现结果集的过滤筛选。
where子句的语法格式:
where 条件表达式(www.xing528.com)
使用单一的条件过滤结果集。单一的过滤条件可以使用下面的布尔表达式表示。
表达式1 比较运算符 表达式2
说明:“表达式1”和“表达式2”可以是一个字段名、常量、变量、函数甚至是子查询。
比较运算符用于比较两个表达式的值,比较的结果是一个布尔值(true或者false)。
常用的比较运算符有=(等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、<>(不等于)、!=(不等于)、!<(不小于)、!>(不大于)。
如果表达式的结果是数值,则按照数值的大小进行比较;如果表达式的结果是字符串,则需要参考字符序collation的设置进行比较。
1.比较运算
比较运算符用于比较两个表达式的值,MySQL支持的比较运算符有=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<=>(相等或都等于空)、<>(不等于)、!=(不等于)。
比较运算的语法格式为:
expression 1{ = | < | <= | > | >= | <=> | <> | != } expression 2
其中expression 1,expression 2是除TEXT和BLOB类型外的表达式。
当两个表达式值均不为空值(NULL)时,除了“<=>”运算符,其他比较运算均返回逻辑值TRUE(真)或FALSE(假)。
【例5.3】查询XSB表中总学分大于50的同学的情况。
SELECT 姓名,学号,出生时间,总学分
FROM XSB
WHERE 总学分>50;
查询结果如图5.3所示:
图5.3 使用where条件查询
2.使用逻辑运算符
where子句中可以包含多个查询条件,使用逻辑运算符可以将多个查询条件组合起来,完成更为复杂的过滤筛选。常用的逻辑运算符包括逻辑与(and)、逻辑或(or)以及逻辑非(!),其中逻辑非(!)为单目运算符。NOT表示对判定的结果取反。AND用于组合两个条件,两个条件都为TRUE时值才为TRUE。OR也用于组合两个条件,两个条件有一个条件为TRUE时值就为TRUE。
(1)逻辑非(!)。
逻辑非(!)为单目运算符,逻辑非(!)的使用方法较为简单,语法格式如下。
!布尔表达式
使用逻辑非(!)操作布尔表达式时,布尔表达式的值为true时,整个逻辑表达式的结果为false,反之亦然。
(2)逻辑与(and)。
使用and逻辑运算符连接两个布尔表达式时,只有两个布尔表达式的值都为true时,整个逻辑表达式的结果才为true。语法格式如下。
布尔表达式1 and 布尔表达式2
另外,MySQL还支持between…and…运算符,between…and…运算符用于判断一个表达式的值是否位于指定的取值范围内,between…and…的语法格式如下。
表达式 [not] between 起始值 and 终止值
(3)逻辑或(or)。
使用or逻辑运算符连接两个布尔表达式时,只有两个表达式的值都为false时,整个逻辑表达式的结果才为false。语法格式如下。
布尔表达式1 or 布尔表达式2
【例5.4】查询XSB表中专业为计算机,性别为女(0)的同学的情况。
SELECT 姓名,学号,性别,总学分
FROM XSB
WHERE 专业='计算机' AND 性别=0;
查询结果如图5.4所示。
图5.4 逻辑运算查询
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。