mysql总数除以分数_MySQL运算符

(1)算术运算符

在MySQL软件中,算术运算符包含加、减、乘、除;

(2)比较运算符

在MySQL软件中,比较运算符包含常用运算符如大于、小于、等于、不等于、小于大于等于、小于等于;实现特殊功能的比较运算符如between and、is null、in、like、regexp;

(3)逻辑运算符

在MySQL软件中,逻辑运算符包含与、或、非、异或;

(4)位运算符

在MySQL软件中,位运算符包含按位与、按位或、按位取反、按位异或、按位左移、按位右移;

1、算术运算符:

加法:a+b+c

减法:a-b-c

乘法:a*b*c

除法:a/b/c  a div b div c

求余:a%b%c     a mod b mod c

例1:

select 6+4 as加法,-> 6-4 as减法,-> 6*4 as乘法,-> 6/4 as除法,-> 6 div 4 as除法div,-> 6%4求余,-> 6 mod 4 as 求余mod;

注意:div做除时,整数划分,从除法结果中舍弃小数点右侧的小数部分;

例2:

select 6/0,-> 6 div 0,-> 6%0,-> 6 mod 0;

注意:当做除或求余时,如果除数为0,将是非法运算,返回结果为null;

例3:

当课程名称为管理学时,设置平均绩点分为分数除以2,要求显示学号,课程号,平均绩点分;

select studentno,courseno,score/2

-> fromtb_score-> where courseno=

-> (select courseno from tb_course where coursename='管理学');

2、比较运算符

大于:a>b

小于:a

等于:a=b a<=>b

不等于:a!=b   a<>b

大于等于:a>=b

小于等于:a<=b

指定范围: str between a and b

判断为空:str is null

指定集合:str in(a,b,c)

通配符匹配:str like 表达式

正则表达式:str regexp 表达式

例1:比较数值、字符串、表达式;

select 1=1,-> 1<=>1,-> 'liu'='liu',-> 'liu'<=>'liu',-> 1+2=2+3,-> 1+2<=>2+3;

注意:1)=和<=>判断是否相等,相等则返回1,不相等则返回0;

例2:

select null=null,-> null<=>null;

注意:1)=不能操作null(空值),结果返回null;

2)      <=>可以操作null,结果相等返回1;

3)      !=和<>都不能操作null,结果返回null;

例2:

查询分数在80到90之间的学生的信息;

select * fromtb_score-> where score>80 and score<90;

例3:

查询和数据库这门课程同一学期的课程的课程号、课程名称、学分;

selectcourseno,coursename,credit-> fromtb_course-> where term=

-> (select term from tb_course where coursename='数据库') and coursename!='数据库';

2.1、正则表达式:

正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式找文本中符合要求的特殊字符。在不使用数据库表的情况下,可以直接将正则表达式置于select关键字之后,进行简单的正则表达式测试,如果返回0,则表示没有匹配,返回1,则表示匹配成功;

:匹配包含指定字符串的文本,如’会计’

[]:匹配[]中任何一个字符,如:’[ab]’

[^]:匹配不在[]中的任何一个字符,如:’[^ab]’

^:匹配文本的开始字符,如:’^b’

$:匹配文本的结尾字符,如’er$’

.:匹配任意单个字符,如:’b.t’

*:匹配0个或多个*前指定的字符,如’f*n’

+:匹配+前面的字符1次或多次,如’ba+’

{n}:字符串出现n次,如’b{2}’

(m,n):字符串出现至少m次,最多n次

例1:

查询班级名称中带有’会计’的班级信息;

select * fromtb_class-> where classname regexp '会计';

例2:

查询班级名称中包含’会’’计’中任何一个字的班级信息;

例3:

查询课程名称中不含程序设计的课程信息;

select * fromtb_course-> where coursename regexp '[^程序设计]';

例4:

查询课程名称中含有’管理’’信息’或’系统’中文字符的所有课程信息;

select * fromtb_course-> where coursename regexp '管理|信息|系统';

例5:

查询班级名称以’会计’开头的班级信息;

select * fromtb_class-> where classname regexp '^会计';

例6:

查询课程名称以’系统’结尾的课程信息;

select * fromtb_course-> where coursename regexp '系统$';

3、逻辑运算符:

And(&&):与运算,如a and b,或a&&b

Or(||):或运算,如a or b,a||b

Not(!):非运算,如not a

XOR:异或,如a xor b

与运算:

例1:

select 3 and 4,-> 0 and 4,-> 0 and null,-> 3 and null,-> 3 && 4,-> 0 && 4,-> 0 && null,-> 3 && null;

注意:

1)   非0,没有null,结果返回1;

2)   非0,有null,结果返回null;

3)   任一操作数为0,结果返回0;

例2:

查询学分大于等于3且学时数大于32的课程名称、学分和学时数;

selectcoursename,credit,coursehour-> fromtb_course-> where credit>=3 and coursehour>32;

或运算:

例3:

select 3 or 4,0 or 4,0 or 0,0 or null,3 or null,3 || 4,0 || 4,0 || 0,0 || null,3 || null\G

注意:

1)   包含任一非0数据,结果返回1;

2)   包含0,null,结果返回null;

3)   所有操作数都为0,结果返回0;

例4:

查询籍贯是北京或上海的学生的姓名、籍贯和名族;

selectstudentname,native,nation-> fromtb_student-> where native='北京' or native='上海';

例5:

查询籍贯是北京或湖南的少数名族男生的姓名、籍贯和名族;

selectstudentname,native,nation-> fromtb_student-> where (native='北京' || native='湖南') && nation!='汉' && sex='男';

非运算:

例6:

select not 3,-> not 0,-> not null,-> !3,-> ! 0,-> ! null;

注意:

1)   操作数是非0数字,结果返回0;

2)   操作数为0,结果返回1;

3)   操作数为null(空值),结果返回null;

例7:

查询不是北京地区的学生信息;

select * fromtb_student-> where native!='北京';

或:

select * fromtb_student-> where not native='北京';

异或运算:

例8:

select 3 xor 4,-> 0 xor 0,-> null xor null,-> 0 xor 4,-> 0 xor null,-> 3 xor null;

注意:

1)   操作数包含null,结果返回null;

2)   操作数同为0或同为非0,结果返回0;

3)   操作数一个为0,一个非0,结果返回1;

4、位运算:

&:按位与,a & b

|:按位或,a | b

~:按位取反,~a

^:按位异或,a ^ b

<<: b>

>>:按位右移,a >> b

例1://按位与

select 5&6,bin(5&6),4&5&6,bin(4&5&6);

注意:

1)   按位与,首先由操作数由十进制转换成二进制数;

2)   然后按位进行与操作,1与1为1,其他为0;

3)最后将与后的结果转换成十进制数;

例2://按位或

select 5|6,bin(5|6),4|5|6,bin(4|5|6);

注意:

1)   按位或,1和任何数的或运算的结果是1;

2)   按位或,0和0的或运算的结果是0;

例3://按位取反

select ~4,bin(~4);

注意:

1)   mysql中用8个字节(64位)表示,需要在100二进制数前面用0补足64位,再做取反操作;

2)   取反,1取反,结果为0;0取反,结果为1;

例4://按位异或

select 4^5,bin(4^5);

注意:

1)   相同的数异或后的结果为0;

2)   不同的数异或后的结果为1;

例5://按位左移,右移

select bin(5),-> 5<<4,bin(5<<4),-> 5>>1,bin(5>>1);

注意:

1)   按位左移,右边补0;

按位右移,左边补0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值