运算符
算术运算符:
+ - * /(div) %(mod)
加减乘除运算符:
例:SELECT 100,100+0,100-0,100+50,100+50-30,100+35.5,100-35.5
FROM DUAL;
SELECT 100+'1' #在sol中,+没有连接的作用,就表示加法的运算,会将字符串转换为数值(隐式转换)
FROM DUAL;
SELECT 100+'a' #此时将'a'看做0处理
FROM DUAL;
SELECT 100+NULL
FROM DUAL;
-
由运算结果结论:
1. 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;
2. 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;
3. 加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;
4. 在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数
值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL
中字符串拼接要使用字符串函数CONCAT()实现)
乘法与除法运算符:
例:SELECT 100,100*1,100*1.0,100/1.0,100/2,100+2*5/2,100/3,100 DIV 0
#分母如果为0,则结果为null
FROM DUAL;
-
由运算结果得出结论:
1. 一个数乘以整数1和除以整数1后仍得原数;
2. 一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;
3. 一个数除以整数后,不管是否能除尽,结果都为一个浮点数;
4. 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;
5. 乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。
6. 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。
求模(求余)运算符:
例:SELECT 12%3,12%5,12 MOD -5,-12%5,-12%-5,10%3
FROM DUAL;
#练习:查询员工id为偶数的员工信息
SELECT *
FROM employees
WHERE employee_id%2=0; #employee_id为员工字段
比较运算符:
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
-
(=)等号运算符:
等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。
在使用等号运算符时,遵循如下规则:
1. 如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的
是每个字符串中字符的ANSI编码是否相等。
2. 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
3. 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
例:SELECT 1=2,1!=2,1='1',1='a',0='a' #字符串存在隐式转换,如果转换数值不成功,则看做0
FROM DUAL;
SELECT 'a'='a','ab'='ab','a'='ab' #两边都是字符串的话,则按照ANSI的比较规则进行比较
FROM DUAL;
SELECT 1=NULL,NULL=NULL #只要有mull参与判断,结果就为null
FROM DUAL;
SELECT last_name,salary,commission_pct
FROM employees
#WHERE salary =6000
WHERE commission_pct=NULL; #null与null执行,不会有任何的结果
-
安全等于运算符:
安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘<=>’可
以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个
操作数为NULL时,其返回值为0,而不为NULL。
#<=>安全等于 为null而生
SELECT 1<=>2,1<=>'1',1<=>'a'
FROM DUAL;
SELECT 1<=>NULL,NULL<=>NULL # 两边都是null结果为trun(1)。
FROM DUAL;
#查询表中commission_pct为null的数据有哪些
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct<=>NULL; #比较两个都为null结果为1,这就能显示null的数据结果了
-
(空)或非空运算符:
空运算符 IS NOT NULL
非空运算符(IS NULL或者ISNULL)判断一个值是否不为NULL,如果不为NULL则返回1,否则返回0。
#IS NULL \ IS NOT NULL \ ISNULL
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pcT IS NULL;
SELECT last_name,salary,commission_pct
FROM employees
WHERE ISNULL(commission_pct);#这个是函数 效果都一样的 三种方法都一样 查看结果为null的
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL; #查看的结果显示不为null的
-
最小和最大值运算符:
LEAST() 最小 \ GREATEST() 大
#LEAST() 最小 \ GREATEST() 大
SELECT LEAST('g','b','m'),GREATEST('g','b','t','m') #查出最小值为b,最大值为t
FROM DUAL;
SELECT LEAST(first_name,last_name)
FROM employees;
-
BETWEEN AND 运算符:
#BETWEEN 条件1(下界) AND 条件2(上界) (查询条件1和条件2范围内的数据,包含边界)(范围的查找)
#查询工资在6000 到 8000的员工信息
SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;
#也可以用逻辑运算符来写
WHERE salary >= 6000 && salary <= 8000;
-
IN运算符 :
#IN 、 NOT IN (指定的查询,就是离散值的查找)
#查询部门为10,20,30部门的员工信息
SELECT last_name,salary,department_id
FROM employees
#WHERE department_id =10 OR department_id =20 OR department_id =30;#传统方法
WHERE department_id IN (10,20,30)
#查询工资不是6000,7000,8000的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);
-
LIKE 运算符 :
LIKE运算符主要用来匹配字符串,通常用于模糊匹配
#LIKE:模糊查询
# % :代表不确定个数的字符
#例:查询last_name中包含字符'a'开头的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE 'a%'
#例:查询last_name中包含字符'a'且包含字符'e'的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE '%a%e%' AND last_name LIKE '%e%a%'
# _ :代表一个不确定的字符,一个下划线代表一个不确定的字符
#例: 查询第2个字符是'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '_a%';
#例:查询第2个字符是_且第3个字符是'a'的员工信息
#需要使用转义字符:\
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';
#或者 (了解就行)
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';#ESCAPE就要告诉服务器这是转义的意思
-
REGEXP \ RLIKE: 正则表达式:
REGEXP运算符用来匹配字符串
语法格式为: expr REGEXP 匹配条件 ,如果expr满足匹配条件返回1,否则为0
REGEXP运算符在进行匹配时,常用的几种通配符:
(1)‘^’匹配以该字符后面的字符开头的字符串。
(2)‘$’匹配以该字符前面的字符结尾的字符串。
(3)‘.’匹配任何一个单字符。
(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,
使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,
而“*”匹配任何数量的任何字符。
-
逻辑运算符:
#逻辑运算符:AND(&&) OR(||) NOT(!) XOR
#XOR '异' 就是一个真一个假
SELECT last_name,salary,department_id
FROM employees
WHERE department_id=50 XOR salary>6000;
-
位运算符:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?