使用 MySQL 中,如果查询字符串时使用“!=”条件,当字段值为 Null 时也会满足该条件。...示例表: id name url 1 张三 https://cloud.tencent.com 2 李四 3 王五 NULL 查询语句: select * from user where url !...但实际上在 MySQL 中只返回了 id 为 2 的记录。 解决办法是补充对 null 的判断,比如: select * from users where url !...= "https://cloud.tencent.com" or url is null 当然,如果创建数据表时没有特殊要求的话,MySQL 字段强烈不建议设置 null 为默认值,字符串类型默认值:空字符串即可...,这也是 MySQL 数据库设计的一个推荐规范。
AND运算符 AND运算符用于将多个条件组合起来,要求所有条件都为真时,整个表达式才为真。...当所有条件都为TRUE时,整个表达式的结果为TRUE;否则为FALSE。 示例:查询部门为“Sales”且薪资超过50000的员工记录。...当至少有一个条件为TRUE时,整个表达式的结果为TRUE;否则为FALSE。 示例:查询分类为“Electronics”或库存超过80的商品记录。...使用NOT运算符后,如果condition为TRUE,则整个表达式的结果为FALSE;如果condition为FALSE,则整个表达式的结果为TRUE。 示例:查询国家不是“USA”的客户记录。...如果 condition1 和 condition2 一个为真,一个为假,则 XOR 表达式的结果为真;如果两者都为真或都为假,则结果为假。
这相当于内连接没有连接条件或者连接条件永远为真。 如果一个有 m 行的表和另一个有 n 行的表,它们交叉连接将返回 m * n 行数据。...AND 运算的结果为 0;④ 如果两个操作数中有一个为 NULL,且另一个不为 0 (FALSE),则返回 NULL;⑤ 两个操作数的前后顺序不影响 AND 操作符的运算结果; ⑥ WHERE 子句中的...0;④ 如果两个操作数有一个为 NULL,另一个为 0 (FALSE) 或者 NULL,则 OR 运算的结果为 NULL;⑤ 两个操作数的前后顺序不影响 OR 操作符的运算结果;⑥ AND 运算符的优先级高于...如果一个子查询返回了至少一个数据行,则 EXISTS 的计算结果为 TRUE,否则计算结果为 FALSE。...subquery 作为参数;③ 如果子查询 subquery 返回了至少一个数据行,则 EXISTS 的计算结果为 TRUE,否则计算结果为 FALSE;④ EXISTS 运算时,一旦子查询找到一个匹配的行
通过使用比较运算符可以判断出 表中有哪些记录是符合条件的,如果比较的结果为真则返回 1,如果为假则返回 0,比较的结果如果不确定则返回 NULL。...NULL,如果为 NULL 返回 1,否则返回 0。...如果其中一个值为 NULL,则返回结果就为 NULL。 GREATEST:当有两个或者多个参数时,返回其中的最大值。如果其中一个值为 NULL, 则返回结果就为 NULL。...逻辑非将跟在它后面的逻辑测试取反,把真变为假,把假变为真。如果 NOT 后面的操作数为 0 时,所得值为 1;如果操作数为非 0 时,所得值为 0;如果操作数为 NULL 时,所得值为 NULL。...0 或者都是非 0,则返回 0;如果一个为 0, 另一个为非 0,则返回结果为 1;当任意一个值为 NULL 时,返回值为 NULL。
MySQL 从 4.1 版本开始支持子查询,使用子查询可以进行 SELECT 语句的嵌套查询,即一个 SELECT 查询的结果作为另一个 SELECT 语句的条件。...FileSort 排序则一般在 内存中 进行排序,占用 CPU 较多。如果待排序的结果较大,会产生临时文件 I/O 到磁盘进行排序的情况,效率低。...WHERE 使用索引的最左前缀定义为常量,则 order by 能使用索引 WHERE a = const ORDER BY b,c WHERE a = const AND b = const ORDER...场景:查询年龄为30岁的,且学生编号小于101000的学生,按用户名称排序 先删除以前的索引。再测试如下sql。...包含了 order by、group by、distinct 这些查询的语句,where 条件过滤出来的结果集请保持在 1000 行以内,否则 SQL 会很慢。 工欲善其事,必先利其器”。
运算符 描述 例子 = 检查两个操作数的值是否相等,如果是,则条件为真(true) (a = b)is false != 检查两个操作数的值是否相等,如果值不相等则条件为真(true) (a !...= b)is true 检查两个操作数的值是否相等,如果值不相等则条件为真(true) (a b)is true > 检查左操作数的值是否大于右操作数的值,如果是,则条件为真(true) (...a > b)is false 如果是,则条件为真(true) (a < b)is true >= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真...(true) (a < b)is false 如果是,则条件为真(true) (a < b)is true !...如果是,则条件为真(true) (a < b)is false !
= >= 比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。...如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。...IN运算符 IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。...LIKE运算符 LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。...REGEXP运算符 REGEXP运算符用来匹配字符串,语法格式为:expr REGEXP 匹配条件。如果expr满足匹配条件,返回1;如果不满足,则返回0。
默认值 10 --forced-shutdown=STRING 超过--time限制后,关闭程序之前需要等待的秒数,如果设置为off则表示不启用。...默认值 0 注意: 如果运行程序命令时,如果当前总执行时间已经达到--time选项参数值(默认10秒),不管当前已执行事件总数是否达到--events选项参数值,都会停止运行程序,所以如果需要为程序命令显示指定...创建数据库 CREATE DATABASE `sbtest` DEFAULT CHARACTER SET utf8; 注意:如果不事先创建数据库,则运行一下测试脚本时,会报错:FATAL: error...begin_query = "LOCK TABLES " .. table.concat(tables, " ,") commit_query = "UNLOCK TABLES" else # 否则定义事务起始查询语句为...为真(oltp_write_only默认为false) # 则执行以下for循环(oltp_point_selects默认为10次,所以,会执行10次for循环查询,查询语句为: # SELECT
由于不同数据库厂商,引擎实现各有不同,SQL的语法、关键字、函数等都略有差异,因此本文只拿在互联网公司使用最广泛的MySQL为例进行讲解,文中涉及的SQL和例子都是在MySQL中运行的。...其使用方法为,MD5(str),返回对str进行md5算法计算得到的校验和字符串。 IFNULL(expr1, expr2):如果expr1不为NULL,则返回expr1,否则返回expr2。...IF(expr1, expr2, expr3):如果expr1不等于0或者不为NULL,则返回expr2的值,否则返回expr3的值。...ELSE END 其执行过程为,按照书写顺序,依次判断WHEN后面求值表达式返回的值为真或假,如果返回值为假,则继续向下搜索;如果返回值为真时,执行THEN后面对应的表达式,将执行后的值返回...这里需要注意一点的是,如果执行到第二个THEN的时候,实际生效的条件为的值为假,与此同时的值为真;如果执行到第三个THEN的时候,实际生效的条件为和<求值表达式
用户具有FILE权限 secure_file_priv如果非空,则只能在对应的目录下写入文件 输出不能是一个已存在的文件 查询secure_file_priv值的语句为show variables like...LOAD_FILE读文件的条件类似 用户具有FILE权限 secure_file_priv如果非空,则只能在对应的目录下读文件 高级函数 #EXTRACTVALUE (XML_document, XPath_string...#new_value,String格式,替换查找到的符合条件的数据 #作用:从目标XML中返回包含所查询的字符串 #这两个函数功能类似,一个是查询,一个是更新。...由于要求第二个参数为xpath格式字符串,如果输入的不是该格式,就会引起报错,可进行报错注入 #sleep() 让此语句运行N秒钟 #if(),需要3个值,第一个值为一个表达式,如果表达式结果为真返回第二个参数...经典的“万能密码”就是利用逻辑运算符将语句构造结果为真,导致成功登陆。
---- 比较运算符 比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果 为假则返回0,其他情况则返回NULL。 ...如果给 定的值为NULL,则结果为NULL。...10,20,30的人 运行结果如下所示: ---- LIKE运算符 LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回 0。...如果给定的值或者匹配条件为NULL,则返回结果为NULL。 “%”:匹配0个或多个字符。 “_”:只能匹配一个字符。...如果expr满足匹配条件,返回 1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。
2.如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。 3.如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。...IN运算符 IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。...LIKE运算符 LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。...0值时,则返回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;当两个值都为NULL时,返回NULL。...4.逻辑异或运算符 逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。
MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT … FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查询中做条件验证...c WHERE sc.sno = s.sno AND sc.cno = c.cno AND c.cname = '信号与系统') 使用存在量词EXISTS后,若内层查询结果为非空,则外层的WHERE子句返回值为真...,否则返回值为假。...使用存在量词NOT EXISTS后,若对应查询结果为空,则外层的WHERE子语句返回值为真值,否则返回假值。...对应student的Altair记录,course表中的所有的记录对应的中间层的返回值为假,所以最外层的NOT EXISTS对应的值为真,最外层的WHERE的值也为真,则Altair对应的记录符合查询条件
expression 的值为空,IS NULL 返回真,IS NOT NULL 返回假 表达式的值不为空,IS NULL 返回假,IS NOT NULL 返回真 正确地查找没有上级领导的员工...如果仅仅能够指定单个过滤条件,就无法满足复杂的查询需求;为此,SQL 引入了用于构建复杂条件的逻辑运算符。 复合条件 借助于逻辑代数中的逻辑运算,SQL 提供了三个逻辑运算符: AND,逻辑与运算符。...只有当两边的条件都为真时,结果才为真,返回数据;否则,不返回数据。 OR,逻辑或运算符。只要有一个条件为真,结果就为真,返回数据;否则,不返回数据。 NOT,逻辑非运算符。...用于将判断结果取反,真变为假,假变为真;空值取反后仍然为空值。...AND 左边的结果为假,肯定不会返回任何结果,因此也就不会计算 1/0;第二个查询由于 OR 左边的结果为真,一定会返回结果,同样不会产生除零错误。
目录MySQL多表关系一对一一对多多对多MySQL外键约束创建外键数据插入删除多表联合查询交叉连接查询内连接查询外连接查询子查询关键字自关联MySQL多表关系MySQL表与表之间的三种关系一对多关系...交叉连接查询 •交叉连接查询返回被连接的两个表所有数据行的笛卡尔积 •笛卡尔积可以理解为一张表的每一行去和另外一张表的任意一行进行匹配 •假如A表有m行数据,B表有n行数据,则返回m*n行数据 •笛卡尔积会产生很多冗余的数据...ALL表示指定列中的值必须要大于子查询集的每一个值,即必须要大于子查询集的最大值;如果是小于号即小于子查询集的最小值。同理可以推出其它的比较运算符的情况。...有数据结果”(至少返回一行数据), 则该EXISTS() 的结果为“true”,外层查询执行该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()的结果为“false”,外层查询不执行EXISTS...后面的子查询不返回任何实际数据,只返回真或假,当返回真时 where条件成立注意,EXISTS关键字,比IN关键字的运算效率高,因此,在实际开发中,特别是大数据量时,推荐使用EXISTS关键字select
如果等号两边的值都是整数,则 MySQL 会按照整数来比较两个值的大小。 如果等号两边的值一个是整数,另一个是字符串,则 MySQL 会将字符串转化为数字进行比较。...LIKE 运算符 LIKE 运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回 1,否则返回 0。如果给定的值或者匹配条件为 NULL,则返回结果为 NULL。...REGEXP 运算符 REGEXP 运算符用来匹配字符串,语法格式为: expr REGEXP 匹配条件 。如果 expr 满足匹配条件,返回 1;如果不满足,则返回 0。...0 值时,则返回 1,否则返回 0;当一个值为 NULL,并且另一个值为非 0 值时,返回 1,否则返回 NULL;当两个值都为 NULL 时,返回 NULL。...4.逻辑异或运算符 逻辑异或(XOR)运算符是当给定的值中任意一个值为 NULL 时,则返回 NULL;如果两个非 NULL 的值都是 0 或者都不等于 0 时,则返回 0;如果一个值为 0,另一个值不为
目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...• 假如 A 表有 m 行数据, B 表有 n 行数据,则返回 m*n 行数据 • 笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选...ALL表示指定列中的值必须要大于子查询集的每一个值,即必须要大于子查询集的最大值;如果是小于号即小于子查询集的最小值。同理可以推出其它的比较运算符的情况。...EXISTS 该子查询如果“有数据结果”(至少返回一行数据), 则该EXISTS() 的结果为“true”,外层查询执行 该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()的结果为...“false”,外层查询不执行 EXISTS后面的子查询不返回任何实际数据,只返回真或假,当返回真时 where条件成立 注意,EXISTS关键字,比IN关键字的运算效率高,因此,在实际开发中,特别是大数据量时
MySQL控制流函数: CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回resultN,否则返回default CASE...f) 如果test是真,返回t;否则返回f IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2 NULLIF(arg1,arg2) 如果arg1=arg2返回NULL...,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。...如果没有指定ELSE块,而且所有的WHEN-THEN比较都不是真,MySQL将会返回NULL。...,返回的结果取决于相应的条件测试是否为真。
简介在MySQL中,逻辑运算符用于处理布尔类型的数据,进行逻辑判断和组合条件。逻辑运算符主要包括AND、OR、NOT三种,它们可以帮助我们在查询和条件语句中进行复杂的逻辑操作。...本文将详细介绍MySQL中逻辑运算符的使用方法和示例。AND运算符AND运算符用于将多个条件组合起来,要求所有条件都为真时,整个表达式才为真。...当condition1和condition2都为TRUE时,整个表达式的结果为TRUE,否则为FALSE。...示例如下:-- 查询年龄在20到30岁之间的员工SELECT * FROM employees WHERE age >= 20 AND age 条件组合起来,只要有一个条件为真...总结本文详细介绍了MySQL中逻辑运算符的使用方法和示例。逻辑运算符是查询和条件语句中非常重要的组成部分,通过合理使用逻辑运算符,我们可以构建复杂的查询条件,并得到我们所需的结果。
MySQL控制流函数: CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回resultN,否则返回default CASE...,f) 如果test是真,返回t;否则返回f IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2 NULLIF(arg1,arg2) 如果arg1=arg2返回...这个函数有三个参数,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。...如果没有指定ELSE块,而且所有的WHEN-THEN比较都不是真,MySQL将会返回NULL。...,返回的结果取决于相应的条件测试是否为真。
领取专属 10元无门槛券
手把手带您无忧上云