内容正文:
第9章 运算符
1
本章概述
运算符是用来连接表达式中各个操作数的符号,用于对操作数所进行的运算。MySQL数据库支持使用运算符,通过运算符可以更加灵活地使用表中的数据。MySQL运算符包括4类,分别是算术运算符、比较运算符、逻辑运算符和位运算符。本章主要讲解运算符及其优先级。
2
本章学习目标
掌握算术运算符、比较运算符、逻辑运算符和位运算符在数据库查询中的使用;
了解各运算符的优先级。
3
目录
01
02
03
04
比较运算符
算术运算符
逻辑运算符
运算符概述
05
位运算符
06
运算符的优先级
07
运算符综合示例
本章小结
08
4
运算符概述
MySQL支持的运算符包括:算术运算符、比较运算符、逻辑运算符和位运算符。
(1)算术运算符:包括加、减、乘、除和求余运算符,主要用于数值计算,其中,求余运算也称为模运算。
(2)比较运算符:包括大于、小于、等于、不等于和空运算符,主要用于数值的比较、字符串的匹配等。另外,LIKE、IN、BETWEEN AND和IS NULL、NULL等都是比较运算符,以及用于使用正则表达式的REGEXP也是比较运算符。
(3)逻辑运算符:包括与、或、非和异或运算符。这种运算的结果只返回真值(1或true)和假值(0或false)。
(4)位运算符:包括按位与、按位或、按位异或、按位左移和按位右移运算符。这些运算都必须先把数值转换成二进制,然后在二进制数上进行操作。
5
算术运算符
符号 表达式的形式 作用
+ x1+x2+...+xn 加法运算
- x1-x2-…-xn 减法运算
* x1*x2*…*xn 乘法运算
/ x1/x2 除法运算,返回x1除以x2的商
DIV x1 DIV x2 除法运算,返回商,同“/”
% x1%x2 求余运算,返回x1除以x2的余数
MOD MOD(x1,x2) 求余运算,返回余数,同“%”
6
算术运算符
算术运算符最常用的一类运算符。算术运算符包括加、减、乘、除、除余。各算术运算符的符号、表达式的形式。
符号 表达式的形式 作用
+ x1+x2+...+xn 加法运算
- x1-x2-…-xn 减法运算
* x1*x2*…*xn 乘法运算
/ x1/x2 除法运算,返回x1除以x2的商
DIV x1 DIV x2 除法运算,返回商,同“/”
% x1%x2 求余运算,返回x1除以x2的余数
MOD MOD(x1,x2) 求余运算,返回余数,同“%”
7
比较运算符
SELECT语句中的条件语句经常要用到比较运算符。通过比较运算符可以判断表中的哪些记录是符合条件的。
符号 表达式的形式 作用
= x1=x2 判断x1是否等于x2
<>或!= x1<>x2或x1!=x2 判断x2是否不等于x2
<=> x1<=>x2 判断x2是否等于x2
> x1>x2 判断x1是否大于x2
>= x1>=x2 判断x1是否大于等于x2
< x1<x2 判断x1是否小于x2
<= x1<=x2 判断x1是否小于等于x2
IS NULL x1 is NULL 判断x1是否等于NULL
IS NOT NULL x1 is NOT NULL 判断x1是否不等于NULL
BETWEEN AND x1 BETWEEN m AND n 判断x1的取值是否落在m和n之间
IN x1 IN(值1,值2,…,值n) 判断x1的取值是不是值1到值n中的一个
LIKE x1 LIKE 表达式 判断x1是否与表达式匹配
REGEXP x1 REGEXP 正则表达式 判断x1是否与正则表达式匹配
8
逻辑运算符
逻辑运算符用来判断表达式的真假,返回结果只有1和0。如果表达式是真,结果就返回1;如果表达式是假,结果就就返回0。逻辑运算符又称为布尔运算符。MySQL支持4种逻辑运算符,分为是与、或、非和异或。
符号 表达式形式 描述
AND(&&) x1 AND x2 与
OR(||) x1 OR x2 或
NOT(!) NOT x2 非
XOR x1 XOR x2 异或
9
位运算符
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制,再进行位运算,最后将计算结果从二进制数变回十进制数。在MySQL中支持6种位运算符,分别是按位与、按位或、按位取反、按位异或、按位左移和按位右移。
10
运算符的优先级
优先级 运算符
1 !
2 ~
3 ^
4 *、/、DIV、%、MOD
5 +、-
6 >>、<<
7 &
8 |
9 =、<=>、<、<=、>、>=、!=、<>、IN、IS NULL、LIKE、REGEXP
10 BETWEEN AND、CASE、WHEN、THEN、ELSE
11 NOT
12 &&、AND
13 ||、OR、XOR
14 :=
11
运算符综合示例
(1)创建tb_test表
(2)使用INSERT向表中插入一条记录
(3)从tb_test表中取出num值进行加法、减法、乘法、除法和求余运算
(4)使用比较运算符将num值与其他数据进行比较
(5)判断num是否落在30~49之间,并且判断num的值是否在(10,20,30,40,50)这个集合中
(6)判断tb_test表的info字段的值是否为空,用LIKE来判断是否以“five”这两个字母开头,用REGEXP来判断第一个字母是否是f,最后一个字母是s
(7)逻辑运算包括与、或、非和异或4种,分别将任意数字和NULL中的任意两个进行逻辑运算,进行与和或运算
(8)将数字6和10进行按位与、按位或运算,并将11按位取反
(9)将数字16左移两位、数字15右移两位
12
本章小结
本章介绍了MySQL中的运算符。在MySQL中包括4类运算符,分别是算术运算符、比较运算符、逻辑运算符和位运算符。前3种运算符在实际操作中使用比较频繁,也是本章重点讲述的内容。因此,读者需要认真学习这部分的内容。位运算符是本章的难点。因为位运算符需要将操作数转换为二进制数,然后进行位运算。这要求读者掌握二进制运算的相关知识。位运算符在实际操作中使用的频率比较低。
13
第10章 视图
14
本章概述
数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据来自于由定义视图查询所引用的表,并且在引用视图时动态生成。本章将结合实例来介绍视图的含义、视图的作用、创建视图、查看视图、修改视图、更新视图和删除视图等内容。
15
本章学习目标
了解视图的含义和作用;
掌握创建视图的方法,包括在单表上创建视图和在多表上创建视图;
熟悉如何查看视图,包括通过DESCRIBE和通过SHOW TABLE STATUS查看视图基本信息,通过SHOW CREATE VIEW和在views表中查看视图的详细信息;
掌握修改视图的方法,包括通过CREATE OR RELPLACE VIEW、ALTER语句修改视图;
掌握更新视图的方法,包括INSERT、UPDATE和DELETE三种更新方式;
掌握删除视图的方法,主要通过DROP VIEW语句实现;
掌握综合案例中视图应用的方法和技巧。
16
目录
01
02
03
04
查看视图
创建视图
修改视图
视图概述
05
更新视图
06
删除视图
07
视图应用
本章小结
08
17
视图概述
视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中,用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE语句修改记录。从MySQL 5.0开始可以使用视图,视图可以使用户操作方便,而且可以保障数据库系统的安全。
与直接从数据表中读取相比,视图有以下优点:简单化 安全性 逻辑数据独立性。
18
创建视图
视图中包含SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据表,视图可以建立在一张表上,也可以建立在多张表上。
创建视图使用CREATE VIEW语句,基本语法格式如下:
CREATE [OR REPLACE] [ALGORITHM = (UNDEFINED | MERGE | TEMPTABLE) ]
VIEW view_name [(column_list]
AS SELECT statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;ALGORITHM表示视图选择的算法;view_name为视图的名称,column_list为属性列;SELECT_statement表示SELECT语句;WITH [CASCADED | LOCAL] CHECK OPTION参数表示视图在更新时保证在视图的权限范围之内。
19
创建视图
MySQL可以在单个数据表上创建视图。
【例10-1】在Z表上创建一个名为view_Z的视图,代码如下:
(1)首先创建基本表并插入数据,语句如下:
CREATE TABLE Z(quantity INT,price FLOAT);
INSERT INTO Z VALUES(3,50);
运行结果如图所示。
20
创建视图
MySQL可以在单个数据表上创建视图。
【例10-1】在Z表上创建一个名为view_Z的视图,代码如下:
(1)首先创建基本表并插入数据,语句如下:
CREATE TABLE Z(quantity INT,price FLOAT);
INSERT INTO Z VALUES(3,50);
运行结果如图1所示。
(2)创建视图,然后查询视图,语句如下:
CREATE VIEW view_Z AS SELECT quantity, price, quantity *price FROM Z;
SELECT * FROM view_Z;
执行结果如图2所示。
图2
图1
21
创建视图
MySQL中也可以在两个或者两个以上的表上创建视图,可以使用CREATE VIEW语句实现。
【例10-3】在表tb_student和表tb_student_info上创建视图stu_glass。
创建视图student_view,语句如下:
CREATE VIEW student_view(s_id,s_name,glass) AS SELECT tb_student.s_id,tb_student.s_name,tb_student_info.glass FROM tb_student,tb_student_info WHERE tb_student.s_id=tb_student_info.s_id;
SELECT * FROM student_view;
22
查看视图
查看视图是查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIEW的权限,MySQL数据库下的user表中保存着这个信息。查看视图的方法包括:DESCRIBE、SHOW TABLE STATUS和SHOW CREATE VIEW。
DESCRIBE 视图名;
SHOW TABLE STATUS LIKE '视图名';
SHOW CREATE VIEW 视图名;
SELECT * FROM information_schema.views \G;
23
修改视图
使用CREATE OR REPLACE VIEW语句修改视图:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}
VIEW view_name [(column_List)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
ALTER语句是MySQL提供的另一种修改视图的方法,语法如下:
ALTER [ALGORITHM =(UNDEFINED | MERGE | TEMPTABLE)]
VIEW view_name[(column list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
24
更新视图
针对视图对象进行更新、插入、删除,可以更新视图内容:
UPDATE view_Z SET quantity=5;
INSERT INTO t VALUES(2,4);
DELETE FROM view_Z2 WHERE price=8;
25
删除视图
当视图不再需要时,可以将其删除,删除一个或多个视图可以使用DROP VIEW语句,语法格式如下:DROP VIEW [IF EXISTS] view_name [,view_name]… [RESTRICT | CASCADE]其中,view_name是要删除的视图名称,可以添加多个需要删除的视图名称,各个名称之间使用逗号分隔开。删除视图必须拥有DROP权限。
【例10-13】删除student_view视图,代码如下:DROP VIEW IF EXISTS student_view; 执行结果如图所示。
26
视图应用
本节通过示例来综合练习视图的创建、查询、更新和删除操作。基于图书信息系统,建立关于系统管理员、图书信息、借阅记录和归还记录的视图。
27
本章小结
数据库中的视图是一个虚拟表,也包含了一系列带有名称的行和列数据。行和列数据均来自于由视图所引用的表,并且在引用视图时动态抽取数据表中的数据。
本章通过理论与实例相结合,介绍了视图的含义、视图的作用、创建视图、查看视图、修改视图、更新视图和删除视图等内容。在建立视图时,可以基于单个数据表创建视图,也可以基于多数据表创建视图;可以通过DESCRIBE和通过SHOW TABLE STATUS查看视图基本信息,通过SHOW CREATE VIEW和在views表中查看视图的详细信息;通过CREATE OR RELPLACE VIEW、ALTER语句可以修改视图;更新视图的方法有INSERT、UPDATE和DELETE三种方式;当不再需要视图时,可以通过DROP VIEW语句删除视图。
28
谢谢观看
汇报人:秒出PPT
29
$$