首页 > 数据库 >Mysql中视图的使用以及常见运算符的使用示例和优先级

Mysql中视图的使用以及常见运算符的使用示例和优先级

时间:2024-07-03 16:35:44浏览次数:19  
标签:匹配 示例 -- 视图 运算符 NULL SELECT

场景

基础知识回顾:mysql中视图的基础使用以及常见运算符的使用示例。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

Mysql中视图的使用

视图的创建

CREATE VIEW stu_view AS
SELECT * FROM bus_student;

视图查询

SELECT * FROM stu_view;

查看视图基本信息

SHOW TABLE STATUS LIKE 'stu_view';

执行结果显示,表的 Comment 的值为 VIEW 说明该表为视图,其他信息为 NULL 说明这是一个虚表。

查看视图详细信息

执行结果显示视图的名称、创建视图的语句等信息

SHOW CREATE VIEW stu_view;

修改视图

使用 CREATE OR REPLACE VIEW 语句可以修改视图。当视图存在时可以对视图进行修改,当视图不存在时可以创建视图。

CREATE OR REPLACE VIEW stu_view AS
SELECT id,name,age FROM bus_student;

除了可以使用 CREATE OR REPLACE 修改视图以外,用户还可以使 ALTER 修改

ALTER VIEW stu_view AS
SELECT id,name FROM bus_student;

更新视图

CREATE OR PLAC ALTER 主要是对视图的结构进行修改,其实在 MySQL 中还可以对视图内

容进行更新,也就是对视图进 UPDATE 操作,通过视图增加、删除、修改数据表中的数据,当然对视图

的更新操作实际上是对数据表进行操作

UPDATE stu_view SET name='公众号:霸道的程序猿' WHERE id =1;

当视图中包含以下内容时视图的更新操作不能被执行

视图中不包含基表中被定义为非空的列 

在定义视图的 SELECT 语句后的字段列表中使用了数学表达式。

在定义视图的 SELECT 语句后的字段到表中使用了聚合函数。

在定义视图的 SELECT 语句中使用了 DISTINCT UNION TOP GROUP BY HAVING 子句

注意:虽然修改视图的方法有很多,但不建议对视图频繁修改,一般将视图作为虚拟表未完成查询操作

删除视图

DROP VIEW IF EXISTS stu_view;

Mysql 常用的运算符

算数运算符

CREATE TABLE test1(a INT);
INSERT INTO test1 VALUES(10);
SELECT a,a+10,a-1+2,a+10.5,a*2,a/2,a/3,a%3,a/0 FROM test1;

运行结果

10 20 11 20.5 20 5.0000 3.3333 1 NULL

比较运算符=

SELECT5=6,'8'=8,'0.02'=0,'badao'='badao',(1+6)=(2+5),NULL=NULL;

运行结果

0 1 0 1 1 

-- 在进行数值比较时有以下规则
-- 若有一个或两个操作数为 NULL,则比较运算的结果为 NULL
-- 若同一个比较运算中的两个操作数都是字符串,则按照字符串进行比较。
-- 若两个操作数均为整数,则按照整数进行比较
-- 若一个字符串和一个数字进行相等判断,则 MySQL可以自动将字符串转换为数字。

安全等于运算符<=>

具有=运算符的所有功能,不同的是<=>可以用来判断 NULL 值。当两个操作数均为

NULL 其返回值为1,而不为 NULL; 当其中一个操作数为 NULL 时,其返回值为0,而不为 NULL

SELECT5<=>6,'8'<=>8,'0.02'<=>0,'badao'<=>'badao',(1+6)<=>(2+5),NULL<=>NULL;

运行结果

0 1 0 1 1 1

不等于运算符<> 或者!=

用来判断左边的操作数是否小于等于右边的操作数,如果小于或等于,返回值为1 ,否则返回值0

注意<=不能用于判断空值

SELECT'badao'<='badao',5<=6,8<=8,8.8<=8,(1+2)<=(1+3),NULL<= NULL;

运行结果

1 1 1 0 1 NULL

小于运算符< 

SELECT 'badao'<'badao',5<6,8<8,8.8<8,(1+2)<(1+3),NULL<NULL;

运行结果

0 1 0 0 1 NULL

大于或等于运算符>=

SELECT'badao'>='badao',5>=6,8>=8,8.8>=8,(1+2)>=(1+3),NULL>=NULL;

运行结果

1 0 1 1 0 NULL

大于运算符>

SELECT 'badao'>'badao',5>6,8>8,8.8>8,(1+2)>(1+3),NULL>NULL;

运行结果

0 0 0 1 0 NULL

IS NULL 、IS NOT NULL 运算符

SELECT NULL IS NULL,ISNULL(NULL),ISNULL(2),6 IS NOT NULL,NULL IS NOT NULL;

运行结果

1 1 0 1 0

BETWEEN AND 运算符

SELECT 6 BETWEEN 1 AND 10,10 BETWEEN 1 AND 5;

运行结果

1 0

LEAST运算符

返回最小值 假如任意一个自变量为 NULL ,返回值为 NULL。

SELECT LEAST(1,2,3),LEAST('a','b','c'),LEAST(100,NULL);

运行结果

1 a  NULL

GREATEST 运算符

返回最大值,假如任意1个变量为NULL,返回值为 NULL

SELECT GREATEST(1,2,3),GREATEST('a','b','c'),GREATEST(100,NULL);

运行结果

3  c  NULL

IN NOT IN 运算符

IN 运算符用来判断操作数是否为 IN 列表中的-个值,如果是,返回值为 1,否则返回值为0

NOT IN 运算符用来判断操作数是否为 IN 列表中的一个值,如果不是,返回值为1 否则返回值为0

SELECT 2 IN (2,4,'AA'),'A' IN (3,'DD');
-- 1  0
SELECT 2 NOT IN (2,4,'AA'),'A' NOT IN (3,'DD');
-- 0 1

LIKE 运算符

LIKE 运算符用来匹配字符串, 其语法格式为 expr LIKE 匹配条件 。如果 expr 足匹配条件,

返回值 TRUE 如果不匹配 返回 FALSE。若 expr 或匹配条件中 的任何一个为 NULL ,则为NULL

%配任何字符, 甚至包括零字符。

_只能匹配一个字符。

SELECT 'BADAO' LIKE 'BADAO','BADAO' LIKE 'BADA_','BADAO' LIKE '%O','BADAO' LIKE 'B____','B' LIKE NULL;
-- 1 1 1 1 NULL

REGEEXP 运算符

-- REGEXP 算符用来匹配字符串,其语法格式为“expr REGEXP 匹配条件”。如果 expr 满足匹配条件,
-- 返回1:如果不满足, 返回0。若 expr 或匹配条件中的任意个为 NULl 结果为 NULL
-- REGEXP 算符在进行匹配时常用下面几种通配符。
-- (1)^:匹配以该字符后面的字符开头的字符串
-- (2)$:匹配以该字符前面的字符结尾的字符串
-- (3).:匹配任何一个单字符
-- (4)[...]:匹配方括号内的任何字符 例如[abc]匹配a、b、c。 为了指定字符的范围,使用[-]例如
-- [a-z]匹配任意字母,而[0-9]匹配任意数字
-- (5)*:匹配零个或多个在它前面的字符 例如,"x*"匹配任意数量'x'字符,"[0-9]*"匹配任意数量
-- 的数字,而".*"匹配任意数量的任意字符

SELECT 'BADAO' REGEXP '^B','BADAO' REGEXP 'O$','BADAO' REGEXP '.DAO','BADAO' REGEXP '[AB]'
-- 1 1 1 1

逻辑运算符

逻辑非运算符NOT 或者 !

逻辑非运算符 NOT 或者 ! 当操作数为0时返回值为1, 当操作数为1时返回值为0,当操作数NULL 时返回值为 NULL

SELECT NOT 6,NOT(6-6),NOT -6,NOT NULL,NOT 6+6;
-- 0 1 0 NULL 0
SELECT !6,!(6-6),!-6,!NULL,!6+6;
-- 0 1 0 NULL 6

NOT 和 !的优先级不同,NOT的优先级低于+,!的优先级高于+

逻辑与运算符AND 或者 &&

SELECT 6 AND -6,6 AND 0,6 AND NULL,0 AND NULL;
-- 1 0 NULL 0
SELECT 6 && -6,6 && 0,6 && NULL,0 && NULL;
-- 1 0 NULL 0

逻辑或运算符OR 或者 ||

SELECT 6 OR -6,6 OR 0,6 OR NULL,0 OR NULL;
-- 1 1 1 NULL
SELECT 6 || -6,6 || 0,6 || NULL,0 || NULL;
-- 1 1 1 NULL

XOR 逻辑异或运算符

当任意一个操作符为NULL 时返回值为NULL;对于非NULL的操作数,如果两个操作数都是非零值或者都是零值,则返回0

如果一个为零值,一个为非零值,则返回1

SELECT 6 XOR 6,0 XOR 0,6 XOR 0,6 XOR NULL,6 XOR 6 XOR 6;
-- 0 0 1 NULL 1

位运算符

按位或运算符 |

按位或运算符实际是将参与运算的两个数据接对应的二进制数进行逻辑或运算,对应的二进制位有一个或两个为1 ,

则该位的运算结果为1 ,否则为0

SELECT 8|12,6|4|1;

-- 12 7
-- 10 的二进制数为 1000, 12 二进制数为 1100 在接位或之后结果为 1100 ,即整数 12;
-- 6的二进制数0110, 4的二进制数为 0100, 1的二进制数为 0001 ,在按位或之后结果为 0111 ,即整数7

按位与运算 &

按位与运算符实际是将参与运算的两个操作数接对应的二进制数逐位进行逻辑与运算 对应的二进制

位都为1,则该位的运算结果为1,否则为0

SELECT 8&12,6&4&1;
-- 8 0

按位异或运算符^

接位异或运算符实际是将两个数据按对应的二进制数逐位进行逻辑异或运算,

当对应的二进制数不同时对应位的结果才为1, 如果两个对应位数都为0或都为l,则对应位的运算结果为0

SELECT 8^12,6^4^1;
-- 4 3

按位左移运算符<<

按位左移运算符<<的功能是让指定二进制数的所有位都左移指定的位数。在左移指定位数之后 左边

高位的数值将被移出并丢弃,右边低位空出的位置用0补齐

语法格式为a<<n,这里的n指定值a移动的位置。

SELECT 6<<2,8<<1;
-- 24 16
-- 6的二进制数为 00000110 ,左移两位之后变成 00011000 ,即十进制数24; 8的二进制数为 00001000,
-- 左移一位之后变成 00010000 ,即十进制16

按位右移运算符>>

按位右移运算符>>的功能是让指定二进制数的所有位都右移指定的位数。

在右移指定位数之后,右边低位的数值将被移出并丢弃,左边高位空出的位置用0补齐。

其语法格式为a>>n,这里的n指定值a要移动的位置。

SELECT 6>>2,8>>2;
-- 1 2
-- 6的二进制数为 00000110 ,右移一位之后变成 00000011 ,即十进制数3;8的二进制数为 00001000,
-- 右移两位之后变成 00000010 即十进制数2

按位取反运算符~

按位取反运算符实际是将参与运算的数据接对应的二进制数逐位反转, 1取反后变为0, 0取反后变1

SELECT 6&~2;
-- 4
-- 对于逻辑运算 由于按位取反运算符“~”的级别高于接位运算符“&”, 因此先对2进行取
-- 反操作,取反的结果为 1101;然后再与十进制数6进行运算,结果为 0100 即整数4

Mysql中运算符的优先级

按照优先级从低到高

-- 1、== :=
-- 2、|| OR
-- 3、XOR
-- 4、&&、AND
-- 5、NOT
-- 6、BETWEEN  CASE  WHEN THEN ELSE
-- 7、= <=> >= > <= < <> != IS LIKE REGEXP IN
-- 8、|
-- 9、&
-- 10、<< >>
-- 11、- +
-- 12、* / %
-- 13、^
-- 14、-(负号) ~
-- 15、!

 

标签:匹配,示例,--,视图,运算符,NULL,SELECT
From: https://www.cnblogs.com/badaoliumangqizhi/p/18282043

相关文章

  • 第4节 运算符与表达式
    第4节运算符与表达式1.常用的运算符►求解问题的基本操作是运算。►通过C++语言丰富的运算符及其表达式构成实现算法的基本步骤,在不同程序结构的控制下有机地组织在一起形成程序。►1.运算对象的数目 ►单目运算符、双目运算符、三目运算符►2.运算符的优先级 ......
  • Vue3全局配置Axios并解决跨域请求问题示例详解
    背景对于前后端分离项目,前端和后端端口不能重复,否则会导致前端或者后端服务起不来。例如前端访问地址为: http://localhost:8080/ ,后端访问地址为 http://localhost:8081/ 。后端写好Controller,当用Axios访问该接口时,将会报错:AccesstoXMLHttpRequestat'http://localh......
  • SQL的存储过程,语法示例
    存储过程类型含义IN作为输入,调用时需要传入值OUT作为输出,该参数作为返回值INOUT既可以输入参数,也可以输出参数 语法:创建createprocedure存储过程名称(in参数名称1参数数据类型,out参数名称2参数数据类型,i......
  • 聊聊C++20的三向比较运算符 `<=>`
    C++20标准引入了许多新特性,其中之一是三向比较运算符<=>,也被称为太空船运算符。这个新运算符为C++程序员提供了一种全新的比较对象的方式,它能有效简化比较逻辑,避免编写多个比较运算符重载的情况。为什么需要三向比较运算符?在C++20之前,如果要完整地定义一个类型的比较行为......
  • 邮件通知提醒邮箱设置教程及API代码示例!
    邮件通知的警告功能如何配置?详细教程与API代码示例!无论是业务提醒、账户活动警告,还是个人事务,邮件通知已经成为一种重要的沟通工具。AokSend将详细介绍如何设置邮件通知提醒邮箱,并提供相应的API代码示例,帮助你更高效地管理信息流。邮件通知:选择务提供商常见的有Gmail、Outl......
  • CH03_JS运算符
    第3章:JavaScript运算符本章目标掌握赋值运算符掌握算术运算符掌握比较运算符掌握逻辑运算符掌握复合运算符课程回顾什么是变量?变量的使用步骤?声明变量用什么关键字?变量名命名规则是什么?JavaScript中的数据类型有那些?讲解内容1.赋值运算符概念:向变量赋值,将右边的值......
  • C/C++ sizeof 运算符注意事项
    sizeof 运算符在C/C++中用于获取变量或类型所占的内存大小(以字节为单位)。尽管 sizeof 是一个相对简单直接的运算符,但在使用时还是需要注意一些细节和特殊情况,以避免误解或错误。以下是一些使用 sizeof 运算符时需要注意的事项:数据类型大小:sizeof 返回的是变量或类型在......
  • Python 语法 - 海象运算符:=
    前言海象运算符的英文原名叫AssignmentExpresions,即赋值表达式。是Python3.8新增的语法:=,在PEP572中提出。海象运算符之所以叫这个名字是因为这个符号就像是一个海象逆时针90°倒过来一样,符号为一个冒号接着一个等号,是:=这样的。用于条件表达式海象运算符由一个:......
  • c语言函数指针和指针函数的区别及代码示例
    c语言函数指针和指针函数的区别及代码示例在C或C++中,函数指针和指针函数是两个容易混淆但本质不同的概念。理解它们的区别对于深入掌握C/C++的指针和函数特性至关重要。1.函数指针定义:函数指针是指向函数的指针。它存储了函数的地址,通过它可以调用该函数。语法:返回类型(*指......
  • Linux—— 逻辑运算符,压缩和解压缩
     --a:and逻辑与  --o:or逻辑或  --not:not逻辑非  -优先级:与>或>非```shell[root@server~]#find / -size +10k -a -size -50k[root@server~]#find /etc  -name "e*" -o -name "f*"[root@server~]#find /etc  -nam......