提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录运算符算数运算符比较运算符区间或集合范围比较运算符模糊匹配比较运算符逻辑运算符关于NULL值的问题一、运算符总览二、各类运算符详解1. 算术运算符2. 比较运算符3. 区间与集合运算符4. 模糊匹配运算符LIKE5. 逻辑运算符6. NULL 值相关处理三、易错点总结运算符算数运算符运算符说明求和MySQL中 没有字符串拼接功能-减*乘/除div整除只保留整数部分% mod模取余示例select23;select9/2,9div2;select10.1/2.1,10.1div2.1;select9%2,9mod2;selecthelloworld;# 结果为0--NULL与其他数据类型的运算结果为NULL select2null;selecthellonull;select date(2020-01-01)null;比较运算符运算符说明大于小于大于等于小于等于等于不能用于NULL判断使用is来判断是否为null! 或 不等于不能用于NULL判断示例use atguigu;--查询薪资高于15000的员工姓名和薪资 select ename,salaryfromt_employee where salary15000;--查询薪资为9000的员工的姓名和薪资 select ename,salaryfromt_employee where salary9000;--查询地址不在北苑的 select*fromt_employee where address!北苑;select*fromt_employee where address北苑;区间或集合范围比较运算符运算符说明between x and y处于区间内not between x and y不处于区间内in(x,y,z)处于集合内not in (x,y,z)不处于集合内示例use atguigu;--查询薪资在[10000,15000]select*fromt_employee where salary10000salary15000;select*fromt_employee where salary between10000and15000;--查询薪资不在[10000,15000]select*fromt_employee where salarynotbetween10000and15000;--查询地址在这几个地方的 select*fromt_employee where addressin(北苑,望京,龙泽);--查询地址不在这几个地方的 select*fromt_employee where addressnotin(北苑,望京,龙泽);模糊匹配比较运算符运算符说明%代表任意个字符_代表1个字符如果2个下划线就代表2个字符示例use atguigu;--查询名字有 冰 字的 select*fromt_employee where ename like%冰%;--查询名字以 雨 结尾的 select*fromt_employee where ename like%雨;--查询名字以 李 开头的 select*fromt_employee where ename like李%;--查询名字有 红 这个字但是 红 的前面只能有1个字 select*fromt_employee where ename like_红%;--查询当前MySQL数据库的字符集情况 show variables like%character%;逻辑运算符运算符说明 或 and逻辑与或 or逻辑或! 或 not逻辑非xor逻辑异或示例use atguigu;--查询薪资高于15000并且性别是男的员工 select*fromt_employee where salary15000andgender男;--查询薪资高于15000或者did为1的员工 select*fromt_employee where salary15000||did1;--查询薪资不在[15000,20000]范围的 select*fromt_employee where !(salary between15000and20000);--查询薪资高于15000或者did为1的员工两者只能满足其一 select*fromt_employee where salary15000xor did1;select*fromt_employee where(salary15000)^(did1);关于NULL值的问题运算符说明is null或 null是NULLis not null不是NULLifnull(x,y)当x是NULL时用y代替示例use atguigu;--查询奖金比例为null的员工 select*fromt_employee where commission_pctisnull;select*fromt_employee where commission_pctnull;--查询奖金比例不为null的员工 select*fromt_employee where commission_pctisnotnull;--查询员工的实发工资实发工资薪资薪资*奖金比例 select ename,salary,commission_pct,salarysalary*ifnull(commission_pct,0)实发工资fromt_employee;《MySQL 运算符》学习笔记最终总结版一、运算符总览MySQL 中的运算符主要分为以下六类算术运算符比较运算符区间与集合运算符模糊匹配运算符LIKE逻辑运算符NULL 值相关运算符下面按类别整理核心知识点和典型示例。二、各类运算符详解1. 算术运算符运算符说明示例加法不能拼接字符串SELECT 23;→ 5-减法SELECT 10-3;→ 7*乘法SELECT 5*4;→ 20/除法保留小数SELECT 9/2;→ 4.5000DIV整除只保留整数部分SELECT 9 DIV 2;→ 4%或MOD取模取余数SELECT 10%3;→ 1示例SELECThelloworld;-- 结果为 0不能拼接字符串SELECT2NULL;-- 结果为 NULL2. 比较运算符运算符说明注意事项、、、大于、小于、大于等于、小于等于常规比较等于不能用于判断 NULL!或不等于不能用于判断 NULL示例SELECT*FROMt_employeeWHEREsalary15000;SELECT*FROMt_employeeWHEREaddress!北苑;SELECT*FROMt_employeeWHEREaddress北苑;3. 区间与集合运算符运算符说明BETWEEN x AND y处于区间内闭区间NOT BETWEEN x AND y不处于区间内IN (x,y,z)在集合内NOT IN (x,y,z)不在集合内示例SELECT*FROMt_employeeWHEREsalaryBETWEEN10000AND15000;SELECT*FROMt_employeeWHEREaddressIN(北苑,望京,龙泽);4. 模糊匹配运算符LIKE通配符说明%代表任意个字符包括0个_代表1个字符示例SELECT*FROMt_employeeWHEREenameLIKE%冰%;-- 包含“冰”SELECT*FROMt_employeeWHEREenameLIKE李%;-- 以“李”开头SELECT*FROMt_employeeWHEREenameLIKE_红%;-- 红前面只有一个字查看字符集SHOWVARIABLESLIKE%character%;5. 逻辑运算符运算符说明替代写法AND逻辑与OR逻辑或NOT逻辑非!XOR逻辑异或^示例SELECT*FROMt_employeeWHEREsalary15000ANDgender男;SELECT*FROMt_employeeWHEREsalary15000XORdid1;-- 两者只能满足一个6. NULL 值相关处理写法说明IS NULL或 NULL判断是否为 NULLIS NOT NULL判断是否不为 NULLIFNULL(字段, 默认值)如果字段为 NULL则返回默认值示例SELECT*FROMt_employeeWHEREcommission_pctISNULL;SELECTename,salary,commission_pct,salary*(1IFNULL(commission_pct,0))AS实发工资FROMt_employee;三、易错点总结以下是学习本章时最容易出错的地方按严重程度排序使用拼接字符串错误SELECT hello world;正确MySQL 中只能做加法字符串拼接要用CONCAT()函数。用判断 NULL错误WHERE commission_pct NULL正确必须使用IS NULL或 NULLBETWEEN是闭区间BETWEEN 10000 AND 15000包含 10000 和 15000 两个边界值新手容易误以为是开区间。LIKE中%和_的含义混淆% 任意多个字符包括0个_严格1个字符容易写错个数。DIV和/的区别/返回小数DIV只保留整数部分向下取整。忘记处理 NULL 值导致计算结果为 NULL薪资×奖金比例时如果commission_pct是 NULL整个结果会变成 NULL必须用IFNULL()处理。IN和NOT IN对 NULL 的处理当集合中包含NULL时NOT IN的结果可能不符合预期需特别小心。XOR异或使用不熟练逻辑异或表示“两者只能满足一个”实际开发中使用频率较低但考试常考。字符串比较时字符集影响中文比较结果可能受字符集和排序规则Collation影响建议统一使用utf8mb4。逻辑运算符优先级问题NOTANDOR复杂条件建议使用括号明确优先级。