MySQL 005: 运算符

算术运算符

在这里插入图片描述

简单示例

SELECT 5+6 加法操作,12-6 减法操作,9/3 除法操作,8 DIV 4 除法操作,15%6 求模操作,13 MOD 5 求模操作;

在这里插入图片描述

示例,在表中

建立表
CREATE TABLE t_student(
    id INT(11) PRIMARY KEY,
    name VARCHAR(20),
    age INT(4),
    gender INT(8)
    );

CREATE TABLE t_score(
    stuid INT(11),
    Chinese INT(4),
    English INT(4),
    Math INT(4),
    Chemistry INT(4),
    Physics INT(4),
    CONSTRAINT fk_stuid FOREIGN KEY(stuid) REFERENCES t_student(id)
    );

DESC T_STUDENT;
DESC T_SCORE;

ALTER TABLE T_STUDENT MODIFY gender VARCHAR(8);
DESC T_STUDENT;

在这里插入图片描述
在这里插入图片描述

插入数据
INSERT INTO T_STUDENT VALUES(1,'Rebecca',16,'Female'),
    (2,'Justin',17,'Male'),
    (3,'Jim',16,'Male');
    
INSERT INTO T_SCORE VALUES(1,87,94,99,89,91),
    (2,76,78,89,80,90),
    (3,92,98,99,93,80);

在这里插入图片描述

查询表格
 SELECT stu.name,sco.Chinese,sco.English,
 sco.Math,sco.Chemistry,sco.Physics,
 sco.Chinese+sco.English+sco.Math+sco.Chemistry+sco.Physics total_score
 FROM t_student stu,t_score sco 
 WHERE stu.id=sco.stuid;

在这里插入图片描述

非法运算操作,返回NULL

在这里插入图片描述

比较运算符

在这里插入图片描述

SELECT 3=3 数值比较,'sky'='heaven' 字符串比,3*4=2*6 表达式比,1<=>1 数值比,
'dragon'<=>'dragon' 字符串比较,2+7<=>6+3 表达式比;

在这里插入图片描述

“=”和“<=>”在比较字符串是否相等的时候,依据字符的ASCII 码来进行判断。“=”不能操作空值(NULL),而“<=>”可以操作空值(NULL)

“=”不能操作NULL所以结果为NULL,“<=>”可以操作空值所以,结果为1或0

SELECT NULL<=>NULL '<=>符号效果',NULL=NULL '=符号效果'; 

在这里插入图片描述

SELECT 2<>2 数值比较,'mouse'<>'keyboard' 字符串比较, 2+5<>3+4 数值比较,
6!=6 数值比较,'year'!='year' 字符串比较,7+8!=2+9 数值比较;

在这里插入图片描述

“<>”和“!=”都不能操作空值(NULL)所以结果都是NULL

SELECT NULL!=NULL '!=符号效果', NULL<>NULL '<>符号效果';  

在这里插入图片描述

SELECT 4>=4 数值比较,'abcde'>='abcde' 字符串比较,5+8>4+5 数值比较,
3>3 数值比较,'abc'<='bcd' as '<=符号使用',2+7<5+9 as '<符号使用';

在这里插入图片描述

特殊运算符
IS NULL && IS NOT NULL && LIKE

like运算符,判断某个字符串中是否含有另一个字符串,如果含有,返回1,否则返回0

%ice% :ice前后都有别的字符

ice% : ice后面有别的字符,ice开头,ice前面没有别的字符

%ice : ice前面有别的字符,ice结尾,ice后面没有别得字符

SELECT 8 IS NULL, NULL IS NULL;
SELECT 8 IS NOT NULL, NULL IS NOT NULL;

SELECT 'songofice&fire' like 'ice%',
'songofice&fire' like '%ice%',
'songofice&fire' like '%eci%';

在这里插入图片描述

BETWEEN AND && IN && REGEXP

BETWEEN AND : 判断是否在在某个范围内

IN : 判断是否在某个列表中

REGEXP : 正则表达式去模式匹配一类字符串

SELECT 27 BETWEEN 18 AND 30,9 BETWEEN 5 AND 10;

SELECT 4 in (3,4,5), 
'a' in('a','b','c','d'), 
10 in (7,8,9);

SELECT 'onelittlefinger' REGEXP '^o',
'onelittlefinger' REGEXP '^one';

在这里插入图片描述

逻辑运算符

在这里插入图片描述

SELECT 5 AND 6,0 AND 7,0 AND NULL,3 AND NULL,
       9 && 2,0 && 12,0 && NULL,14 && NULL;

SELECT 5 OR 6, 0 OR 7,0 OR 0,3 OR NULL,
       9 || 2,0 || 12,0 || NULL,14 || NULL;

SELECT NOT 5,NOT 0,NOT NULL,!3,!0,!NULL;

SELECT 5 XOR 6,0 XOR 0,NULL XOR NULL,
       0 XOR 7,0 XOR NULL,3 XOR NULL;

在这里插入图片描述

位运算符

在这里插入图片描述

SELECT 3&6, BIN(3&6) 二进制数,3&6&7, BIN(3&6&7) 二进制数;
SELECT 3|6, BIN(3|6) 二进制数,3|6|7, BIN(3|6|7) 二进制数;
SELECT ~6, BIN(~6) 二进制数;
SELECT 6^7, BIN(6^7) 二进制数;
SELECT BIN(7) 二进制数,7<<4,BIN(7<<4) 二进制数,7>>2,BIN(7>>2) 二进制数;

在这里插入图片描述

运算符优先级

在这里插入图片描述

综合示例

CREATE table test(NUM INT(4),INFO VARCHAR(100));
INSERT INTO test VALUES(50,"YouthIsNotATimeOfLife");
SELECT num,num+10,num-12,num*2,num DIV 5,num%3 FROM test;
SELECT num,num=20,num<>45,num>35,num>=30,num<10,num<=40,num<=>60 FROM test;
SELECT num,num BETWEEN 34 AND 49,num IN(2,4,50,65,78) FROM test;
SELECT info,info is NULL,info LIKE "Yo%",info REGEXP "^X",info REGEXP 'e$' FROM test;
SELECT 3&&0,4&&NULL,0 AND NULL,4||0,5||NULL,0 OR NULL;
SELECT !3,!0,NOT NULL,4 XOR 0,2 XOR NULL,0 XOR NULL;
SELECT 8&12,8|12,~13;
SELECT 14<<3,155>>2;
mysql> CREATE table test(NUM INT(4),INFO VARCHAR(100));INSERT INTO test VALUES(50,"YouthIsNotATimeOfLife");SELECT num,num+10,num-12,num*2,num DIV 5,num%3 FROM test;SELECT num,num=20,num<>45,num>35,num>=30,num<10,num<=40,num<=>60 FROM test;SELECT num,num BETWEEN 34 AND 49,num IN(2,4,50,65,78) FROM test;SELECT info,info is NULL,info LIKE "Yo%",info REGEXP "^X",info REGEXP 'e$' FROM test;SELECT 3&&0,4&&NULL,0 AND NULL,4||0,5||NULL,0 OR NULL;SELECT !3,!0,NOT NULL,4 XOR 0,2 XOR NULL,0 XOR NULL;SELECT 8&12,8|12,~13;SELECT 14<<3,155>>2;
Query OK, 0 rows affected, 1 warning (0.05 sec)

Query OK, 1 row affected (0.01 sec)

+------+--------+--------+-------+-----------+-------+
| num  | num+10 | num-12 | num*2 | num DIV 5 | num%3 |
+------+--------+--------+-------+-----------+-------+
|   50 |     60 |     38 |   100 |        10 |     2 |
+------+--------+--------+-------+-----------+-------+
1 row in set (0.00 sec)

+------+--------+---------+--------+---------+--------+---------+----------+
| num  | num=20 | num<>45 | num>35 | num>=30 | num<10 | num<=40 | num<=>60 |
+------+--------+---------+--------+---------+--------+---------+----------+
|   50 |      0 |       1 |      1 |       1 |      0 |       0 |        0 |
+------+--------+---------+--------+---------+--------+---------+----------+
1 row in set (0.00 sec)

+------+-----------------------+----------------------+
| num  | num BETWEEN 34 AND 49 | num IN(2,4,50,65,78) |
+------+-----------------------+----------------------+
|   50 |                     0 |                    1 |
+------+-----------------------+----------------------+
1 row in set (0.00 sec)

+-----------------------+--------------+-----------------+------------------+------------------+
| info                  | info is NULL | info LIKE "Yo%" | info REGEXP "^X" | info REGEXP 'e$' |
+-----------------------+--------------+-----------------+------------------+------------------+
| YouthIsNotATimeOfLife |            0 |               1 |                0 |                1 |
+-----------------------+--------------+-----------------+------------------+------------------+
1 row in set (0.00 sec)

+------+---------+------------+------+---------+-----------+
| 3&&0 | 4&&NULL | 0 AND NULL | 4||0 | 5||NULL | 0 OR NULL |
+------+---------+------------+------+---------+-----------+
|    0 |    NULL |          0 |    1 |       1 |      NULL |
+------+---------+------------+------+---------+-----------+
1 row in set, 4 warnings (0.00 sec)

+----+----+----------+---------+------------+------------+
| !3 | !0 | NOT NULL | 4 XOR 0 | 2 XOR NULL | 0 XOR NULL |
+----+----+----------+---------+------------+------------+
|  0 |  1 |     NULL |       1 |       NULL |       NULL |
+----+----+----------+---------+------------+------------+
1 row in set, 2 warnings (0.00 sec)

+------+------+----------------------+
| 8&12 | 8|12 | ~13                  |
+------+------+----------------------+
|    8 |   12 | 18446744073709551602 |
+------+------+----------------------+
1 row in set (0.00 sec)

+-------+--------+
| 14<<3 | 155>>2 |
+-------+--------+
|   112 |     38 |
+-------+--------+
1 row in set (0.00 sec)

mysql>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值