MySQL的运算符
(1)算术运算符:+-*/(除也能够写成div)%(取模能够写成mod)
(2)比较运算符:=>>=<<=!=(不等于还能够写成<>)<=>(安全等于)
(3)逻辑运算符:&&(逻辑与也能够写成and)||(逻辑或也能够写成or)not(逻辑非)
(4)规模:表达式between…and…(也能够写成表达式>=…and表达式<=…)
表达式notbetween…and…(也能够写成表达式<…||表达式>…)
(5)集合:in(值,值,值…)notin(值,值,值…)
(6)含糊查询:LIKENOTLIKE,通配符:%表明0-n个字符,_下划线代表一个字符
(7)位运算符:&(按位与)|(按位或)^(按位异或)~(按位取反)>>(右移)<<(左移)
(8)NULL值判别,isnull或isnotnull,假如运用null=null,null<>null,null=0,null<>0,null=false等都不对
不过xxxisnull能够运用xxx<=>null,xxxisnotnull能够写成notxxx<=>null
定论:一切的运算符遇到NULL成果都是NULL,除了<=>
1、算术运算符
#一、算术运算符
#+,-,*,/(div),%(mod)
#筛选出eid是偶数的职工
SELECT*FROMt_employeeWHEREeid%2=0;
SELECT*FROMt_employeeWHEREeidMOD2=0;
#检查每天的根本工资值,每个月按22天算
SELECTeid,basic_salary/12AS”日薪”
FROMt_salary;
#div也表明除,但是只保存整数部分
SELECTeid,basic_salaryDIV12AS”日薪”
FROMt_salary;
#关于+,在Java中,+的左右两边假如有字符串,那么表明字符串的拼接,但是在MySQL中+只表明数值相加,
#假如遇到非数值类型,先测验转成数值,假如转失败,就按0核算
SELECTeid+enameFROMt_employee;
SELECTeid+birthdayFROMt_employee;
#MySQL中字符串拼接要运用字符串函数实现
SELECTCONCAT(eid,”:”,ename)ASresultFROMt_employee;
2、比较运算符
#二、比较运算符
#=,>,<,>=,<=,!=(不等于<>),<=>(安全等于)
#查询basic_salary!=10000
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salary!=10000;
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salary<>10000;
#查询basic_salary=10000,留意在Java中比较是==
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salary=10000;
#查询commission_pct等于0.40
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pct=0.40;
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pct<=>0.40;
#查询commission_pct等于NULL
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pctISNULL;
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pct<=>NULL;
#查询commission_pct不等于NULL
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pctISNOTNULL;
SELECTeid,commission_pctFROMt_salaryWHERENOTcommission_pct<=>NULL;
3、逻辑运算符
#三、逻辑运算符
#与&&,或||,非!
#与AND,或OR,非NOT,异或XOR
#查询性别男,并且在90以前出世的职工
SELECT*FROMt_employeeWHEREgender=’男’ANDbirthday<‘1990-01-01′;
#查询职位编号job_id是1或2的职工
SELECT*FROMt_employeeWHEREjob_id=1ORjob_id=2;
#查询根本薪资是在9000-12000之间的职工编号和根本薪资
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salary>=9000ANDbasic_salary<=12000;
#查询根本薪资不在9000-12000之间的职工编号和根本薪资
SELECTeid,basic_salaryFROMt_salaryWHERENOT(basic_salary>=9000ANDbasic_salary<=12000);
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salary12000;
4、规模和集合
#四、表明区间规模和集合规模
#between…and…和notbetween…and…
#in(集合)和notin(…)
#查询根本薪资是在9000-12000之间的职工编号和根本薪资
SELECTeid,basic_salaryFROMt_salaryWHEREbasic_salaryBETWEEN9000AND12000;
#查询eid是1,3,5的根本工资
SELECTeid,basic_salaryFROMt_salaryWHEREeidIN(1,3,5);
5、含糊查询
#五、含糊查询
#like和通配符一同运用
#like_匹配单个字符
#like%匹配任意个字符
#查询姓名中有’冰’字的职工信息
SELECT*FROMt_employeeWHEREenameLIKE’%冰%’;
#查询姓李的职工信息
SELECT*FROMt_employeeWHEREenameLIKE’李%’;
#查询姓李,姓名就一个字的职工信息
SELECT*FROMt_employeeWHEREenameLIKE’李_’;
#查询李冰冰的信息
SELECT*FROMt_employeeWHEREenameLIKE’李冰冰’;
一般状况,能够运用FIND_IN_SET()函数或LIKE操作符查找SET值:
mysql>SELECT*FROMtbl_nameWHEREFIND_IN_SET(‘value’,set_col)>0;
mysql>SELECT*FROMtbl_nameWHEREset_colLIKE’%value%’;
第1个语句找出SET_col包括valueset成员的行。第2个类似,但有所不同:它在其它当地找出set_col包括value的行,甚至是在另一个SET成员的子字符串中。
下面的语句也是合法的:
mysql>SELECT*FROMtbl_nameWHEREset_col&1;
mysql>SELECT*FROMtbl_nameWHEREset_col=’val1,val2′;
第1个语句寻觅包括第1个set成员的值。第2个语句寻觅一个切当匹配的值。应留意第2类的比较。将set值与’val1,val2’比较返回的成果与同’val2,val1’比较返回的成果不同。指定值时的次序应与在列界说中所列的次序相同。
假如想要为SET列确认一切或许的值,运用SHOWCOLUMNSFROMtbl_nameLIKEset_col并解析输出中第2列的SET界说。
有什么实践应用呢?
比如咱们设定用户的权限控制,一个用户或许会有多种权限,咱们运用一切权限创建一个SET类型的字段,咱们不需要用一系列int来界说各种权限了,直接运用一个SET字段即可:
/*
用户权限permission表
*/
createtableuser_permission(
idintUNSIGNEDnotnullauto_increment,
user_idintnotnull,
permissionset(‘阅览’,’谈论’,’发帖’)notnull,
primarykey(id),
unique(user_id)
);
descuser_permission;
insertintouser_permissionvalues(0,1,’阅览’),(0,2,’阅览’),(0,3,’阅览,谈论’);
insertintouser_permissionvalues(0,4,’阅览,谈论,发帖’);
select*,permission+0fromuser_permission;
selectpermissionfromuser_permissionwhereuser_id=1;
select*fromuser_permissionwherepermission&10;
SELECT*FROMuser_permissionWHEREFIND_IN_SET(‘谈论’,permission)>0;
6、NULL值判别与核算处理
#NULL值判别与处理
#查询奖金百分比不为空的职工编号
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pctISNOTNULL;
#查询奖金百分比为空的职工编号
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pctISNULL;
#关于null值核算
#一切运算符遇到null都是null
#核算实践的薪资:basic_salary+salary*奖金百分比
#函数:IFNULL(表达式,用什么值替代)
SELECTeid,basic_salary+performance_salary*(1+commission_pct)FROMt_salary;#错误的
SELECTeid,basic_salary+performance_salary*(1+IFNULL(commission_pct,0))FROMt_salary;
#<=>安全等于
#查询奖金百分比为空的职工编号
SELECTeid,commission_pctFROMt_salaryWHEREcommission_pct<=>NULL;
7、位运算符
#七、位运算符
#>><<&|~^(异或)
SELECT2^3,2&3,2|3,2>>3,2<<3,~3;
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。