• 07 MySQL 从入门到精通——运算符、流程控制语句


    示例库:

    DROP TABLE IF EXISTS `tb_book`;
    CREATE TABLE `tb_book` (
      `id` int(11) NOT NULL AUTO_INCREMENT, 
      `books` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `category` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `user` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `sale` int(11) DEFAULT '0',
      `sort` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    
    -- ----------------------------
    -- Records of tb_bookca
    -- ----------------------------
    INSERT INTO `tb_book` VALUES ('1', 'PHP开发典型模块大全', 'PHP', 'mr', '12', '模块类');
    INSERT INTO `tb_book` VALUES ('2', 'Java项目开发全程实录', 'Java', 'mrsoft', '95', '项目类');
    INSERT INTO `tb_book` VALUES ('27', 'Java Web从入门到精通', 'Java Web', 'lx', '4', '基础类');
    INSERT INTO `tb_book` VALUES ('41', 'Java范例完全自学手册', 'Java', 'mr', '0', '范例类');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    运算符
    	算数运算符
    		除了DIV与MOD只有两个参数外,其余可以同时运算多个操作数,在取余和除法运算时,如果x2参数是0,则结果为空(NULL)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    		算数运算符示例:
    			select id,books,sale,sale+sale,sale*sale,sale/sale from tb_book;
    
    	比较运算符:最常用的一类运算
    		注意:
    			在运用运算符“=”时是通过ASCII码进行判断的;
    			“=、<>、!=、>、<、>=、<=”都不能用来判断空值。否则将返回NULL;
    			NULL与'NULL'是不同的,前者表示为控制,后者为字符串						
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    		比较运算符示例:	
    			select id,books,id=1 from tb_book;
    			select id,books,id>=1 from tb_book;
    			select id,books,id between 1 and 15 from tb_book;
    			select id,books,books like '%java%' from tb_book;
    			select id,books,books regexp '^P',user regexp 'r$' from tb_book;
    
    	逻辑运算符
    		注释:异或:两个结果都为真或都不为真则结果为假,如果一个为真一个为假则结果为真
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    		逻辑运算符示例:(在数据库中非零为真否则为假)
    			select id,books,sale,sale && 0,sale && 1 ,sale && 100  from tb_book;
    			select id,books,sale,sale || 0,sale || 1 ,sale || 100  from tb_book;
    			select id,books,sale,sale xor 0,sale xor 1 ,sale xor 100  from tb_book;
    
    	位运算符
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    		位运算符示例:
    			select 4&6,4|6,~4;
    
    	运算符的优先级
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    流程控制语句
    
    
    	IF语句:
    		Usage:
    			IF condition THEN
    					…
    			[ELSE condition THEN]
    			…
    			[ELSE]
    			…
    			ENDIF
    		示例:
    			delimiter //		#设置结束符为//。默认结束符为;,因为语句中会用到;,所以一般需要重新设定结束符 
    			create procedure example_if(in x int)		#创建一个命名为example_if的存储过程,并接收一个 int 类型的位置参数x
    			begin		#表示开始编写SQL语句
    			if x = 1 then
    			select 1;
    			elseif x = 2 then
    			select 2;
    			else
    			select 3;
    			end if;
    			end		#结束SQL语句
    			//
    			
    			call example_if(5)//		#调用此存储过程进行验证
    
    	CASE语句:
    		Usage:
    			CASE value
    					WHEN value THEN …
    					[WHEN valueTHEN…]
    					[ELSE…]
    			END CASE	
    		示例:
    			create procedure example_case(in x int)
    			begin
    			case x
    			when 1 then select 1;
    			when 2 then select 2;
    			else select 3;
    			end case;
    			end
    			//	
    			call example_case(5)//		#调用此存储过程进行验证
    			
    	WHILE循环语句
    		Usage:
    			while condition do
    			…
    			end while;
    		示例:
    			delimiter //
    			create procedure example_while(out sum int)
    			begin
    			declare i int default 1;
    			declare s int default 0;
    			while i <=100 do
    			set s = s+i;
    			set i = i+1;
    			end while;
    			set sum = s;
    			end
    			//				
    			call example_while(@s)//	#调用
    			select @s //	#显示			
    
    	LOOP循环语句 需要给定停止执行判断,否则一直执行
    		Usage:
    			loop
    			…
    			end loop	
    		示例:
    			delimiter //
    			create procedure example_loop3(out sum int)			
    			begin
    			declare i int default 1;
    			declare s int default 0;
    			loop_label: loop	#开始循环loop_label循环体		
    			set s = s+i;
    			set i = i+1;
    			if i > 100 then
    			leave loop_label;		#结束循环体loop_label	
    			end if ;
    			end loop;
    			set sum = s;
    			end		
    			//		
    			call example_while(@s)//	#调用
    			select @s //	#显示					
    
    	REPEAT循环语句:先执行一次循环,执行为真则退出,否则继续执行
    		Usage:
    			REPEAT
    			…
    			UNTIL condition 
    			END REPEAT			
    		示例:			
    			delimiter //
    			create procedure example_repeat(out sum int)			
    			begin
    			declare i int default 1;
    			declare s int default 0;
    			repeat	
    			set s = s+i;
    			set i = i+1;
    			until i > 100 
    			end repeat;
    			set sum = s;
    			end
    			//								
    			call example_while(@s)//	#调用
    			select @s //	#显示	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
  • 相关阅读:
    java华夏球迷俱乐部网站设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    上传文件夹里面的文件后,按树结构的table表格展示
    kubernetes部署和运行维护中的错误汇总(不定时更新)
    emqx broker安装
    树莓派4B部署及测试llamafile
    Vc - Qt - “扩张“的窗口
    Linux知识点 -- 网络基础 -- 网络层
    Vulnhub | DC: 9 |【实战】
    XD6500S— LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 应用温湿度传感器 资产跟踪等
    rabbitMQ学习-发布和确认
  • 原文地址:https://blog.csdn.net/weixin_43812198/article/details/127652088