5.3、逻辑运算符
逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。
运算符 | 描述 | 实例 |
NOT 或 ! | 逻辑非 | select not 1; 结果为0 |
AND | 逻辑与 | select 2 and 0; 结果为0 |
OR | 逻辑或 | select 2 or 0; 结果为1 |
XOR | 逻辑异或 | select null or 1; 结果为1 |
5.4、位运算符
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
运算符 | 描述 | 实例 |
& | 按位与 | select 3&5; 结果为1 |
I | 按位或 | select 3I5; 结果为7 |
^ | 按位异或 | select 3I5; 结果为7 |
^ | 按位异或 | select 3^5; 结果为6 |
~ | 按位取反 | select ~18446744073709551612; 结果为3 |
>> | 按位右移 | select 3>>1; 结果为1 |
<< | 按位左移 | select 3<<1; 结果为6 |
5.5、运算符优先级
优先级(从高到底) | 运算符 |
1 | ! |
2 | -(负号),~(按位取反) |
3 | ^(按位异或) |
4 | *,/(DIV),%(MOD) |
5 | +,- |
6 | >>,<< |
7 | & |
8 | I |
9 | =(比较运算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP |
10 | BETWEEN AND,CASE,WHEN,THEN,ELSE |
11 | NOT |
12 | &&,AND |
13 | XOR |
14 | II,OR |
15 | =(赋值运算),:= |
说明:在无法确定优先级的情况下,可以使用圆括号()
来改变优先级,并且这样会使计算过程更加清晰。
六、视图
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
6.1、创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
参数说明:
- OR REPLACE:表示替换已有视图
- ALGORITHM:表示视图选择算法,默认算法是UNDEFINED(未定义的):MySQL自动选择要使用的算法 ;merge合并;temptable临时表
- select_statement:表示select语句
- [WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内
- cascade:是默认值,表示更新视图的时候,要满足视图和表的相关条件
- local:表示更新视图的时候,要满足该视图定义的一个条件即可
基本格式:
create view <视图名称>[(column_list)] as select语句 with check option;
创建视图示例:
create view v_user(用户名,年龄) as select user_name,age from t_user with check option;
6.2、查看视图
- 使用show create view语句查看视图信息
show create view v_user;
- 视图一旦创建完毕,就可以像一个普通表那样使用,视图主要用来查询
select * from v_user;
6.3、删除视图
删除视图是指删除数据库中已存在的视图,删除视图时,只能删除视图的定义,不会删除数据,也就是说不动基表:
DROP VIEW [IF EXISTS] view_name [, view_name] ...
删除示例:
drop view IF EXISTS v_user;
七、函数
7.1、常用函数列表
函数 | 描述 | 实例 |
char_length(s) | 返回字符串 s 的字符长度 | select char_length("hello") as content; |
concat(s1,s2...sn) | 字符串 s1,s2 等多个字符串合并为一个字符串 | select concat("hello ", "world") as content; |
format(x,n) | 将数字 x 进行格式化,到小数点后 n 位,最后一位四舍五入 | select format(500.5634, 2) as content; |
lower(s) | 将所有字母变成小写字母 | select lower('HELLO'); |
current_timestamp() | 返回当前日期和时间 | select current_timestamp(); |
DATE_FORMAT(date,format) | 格式化时间或者日期 | select DATE_FORMAT(current_timestamp(),"%Y-%m-%d %H:%i:%s"); |
IFNULL(v1,v2) | 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2 | select IFNULL(null,'hello word'); |
7.2、自定义函数语法介绍
7.2.1、创建函数
CREATE FUNCTION fn_name(func_parameter[,...]) RETURNS type [characteristic...] routine_body
参数说明:
- fn_name:自定义函数名称
- func_parameter: param_name type
- type: 任何mysql支持的类型
- characteristic: LANGUAGE SQL
- routine_body: 函数体
7.2.2、编辑函数
ALTER FUNCTION fn_name [characteristic...]
参数说明:
- fn_name:自定义函数名称
- func_parameter: param_name type
- characteristic: LANGUAGE SQL
7.2.3、删除函数
DROP FUNCTION [IF EXISTS] fn_name;
参数说明:
- fn_name:自定义函数名称
- func_parameter: param_name type
7.2.4、查看函数语法
SHOW FUNCTION STATUS [LIKE 'pattern']
参数说明:
- pattern:函数名称
示例:
SHOW FUNCTION STATUS LIKE 'user_function';
7.2.5、查看函数的定义语法
SHOW CREATE FUNCTION fn_name;
参数说明:
- fn_name:自定义函数名称