首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第04章_运算符

如果等号两边值都是整数, MySQL 会按照整数来比较两个值大小。 如果等号两边值一个是整数,另一个是字符串, MySQL 会将字符串转化为数字进行比较。...4.逻辑异或运算符 逻辑异或(XOR)运算符是当给定任意一个值为 NULL 时,返回 NULL;如果两个非 NULL 值都是 0 或者都不等于 0 时,返回 0;如果一个值为 0,另一个值不为...REGEXP 'on|ap'; 之前介绍过,LIKE 运算符也可以匹配指定字符串,但与 REGEXP 不同,LIKE 匹配字符串如果在文本中间出现,找不到它,相应行也不会返回。...ot]'; 在 fruits ,查询 s_id 字段包含 4、5 或者 6 记录,SQL 语句如下: mysql> SELECT * FROM fruits WHERE s_id REGEXP...在 fruits ,查询 f_id 字段包含字母 ae 和数字 12 以外字符记录,SQL 语句如下: mysql> SELECT * FROM fruits WHERE f_id REGEXP

22910
您找到你想要的搜索结果了吗?
是的
没有找到

mysql】使用正则表达式查询

运算符也可以匹配指定字符串,但与REGEXP不同,LIKE匹配字符串如果在文本中间出现,找不到它,相应行也不会返回。...REGEXP在文本内进行匹配,如果被匹配字符串在文本中出现,REGEXP将会找到它,相应行也会被返回。对比结果如下所示。...在fruits,查找f_name字段包含字母‘o’或者‘t’记录,SQL语句如下: mysql> SELECT * FROM fruits WHERE f_name REGEXP '[ot]';...在fruits,查询s_id字段包含4、5或者6记录,SQL语句如下: mysql> SELECT * FROM fruits WHERE s_id REGEXP '[456]'; 7....在fruits,查询f_id字段包含字母a~和数字1~2以外字符记录,SQL语句如下: mysql> SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1

2.5K30

MySQL算术比较逻辑位运算符与正则全解

如果等号两边值都是整数,MySQL会按照整数来比较两个值大小。 如果等号两边值一个是整数,另一个是字符串,MySQL会将字符串转化为数字进行比较。...如果不是IN列表一个值,返回1,否则返回0。...逻辑运算符 逻辑运算符主要用来判断表达式真假,在MySQL,逻辑运算符返回结果为1、0或者NULL。 MySQL中支持4种逻辑运算符如下: 逻辑非运算符 逻辑非(NOT或!)...逻辑异或运算符 逻辑异或(XOR)运算符是当 给定任意一个值为NULL时,返回NULL; 如果两个非NULL值都是0或者都不等于0时,返回0; 如果一个值为0,另一个值不为0时,返回1。..., 但与REGEXP不同,LIKE匹配字符串如果在文本中间出现,找不到它,相应行也不会返回

3.7K30

MySQL执行过程以及顺序

:存放存储过程和函数级别的权限 2:先从userHost,User,Password这3个字段判断连接ip、用户名、密码是否存在,存在通过验证。...即先检查全局权限user,如果user对应权限为Y,此用户对所有数据库权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,到db检查此用户对应具体数据库...,并得到db为Y权限;如果db为N,检查tables_priv此数据库对应具体表,取得权限Y,以此类推 4:如果在任何一个过程权限验证不通过,都会报错 1.2:缓存 MySQL缓存主要作用是为了提升查询效率...后面的条件进行过滤,按照指定字段值(如果有and连接符会进行联合筛选)从临时中间Temp2筛选需要数据,注意如果在此阶段找不到数据,会直接返回客户端,不会往下进行.这个过程会生成一个临时中间...实例说明:在temp7排好序数据,然后取前五条插入到Temp9这个临时,最终返回给客户端 ps:实际上这个过程也并不是绝对这样,中间MySQL会有部分优化以达到最佳优化效果,比如在select

1.4K20

深入理解MySQL执行过程及执行顺序

即先检查全局权限user,如果user对应权限为Y,此用户对所有数据库权限都为Y,将不再检查db,tables_priv,columns_priv;如果为N,到db检查此用户对应具体数据库...,并得到db为Y权限;如果db为N,检查tables_priv此数据库对应具体表,取得权限Y,以此类推。...3、如果在任何一个过程权限验证不通过,都会报错。 缓存 MySQL缓存主要作用是为了提升查询效率,缓存以key和value哈希表形式存储,key是具体SQL语句,value是结果集合。...where where表示筛选,根据where后面的条件进行过滤,按照指定字段值(如果有and连接符会进行联合筛选)从临时中间Temp2筛选需要数据,注意如果在此阶段找不到数据,会直接返回客户端...limit limit对中间Temp8进行分页,产生临时中间Temp9,返回给客户端。 实例说明:在Temp7排好序数据,然后取前五条插入到Temp9这个临时,最终返回给客户端。

1.3K20

Mysql执行过程

1、先从userHost,User,Password这3个字段判断连接ip、用户名、密码是否存在,存在通过验证。...即先检查全局权限user,如果user对应权限为Y,此用户对所有数据库权限都为Y,将不再检查db, tables_priv,columns_priv 如果为N,到db检查此用户对应具体数据库...,并得到db为Y权限;如果db为N,检查tables_priv此数据库对应具体表,取得权限Y,以此类推 3、如果在任何一个过程权限验证不通过,都会报错 查询缓存 mysql缓存主要作用是为了提升查询效率...之所以删除掉,是因为要求SQL和参数都是一样,同时查询缓存系统会跟踪查询涉及每一个,如果这些发生变化,该表相关所有缓存数据均会失效,查询缓存失效非常频繁, 如果在一个写多读少环境,缓存会频繁新增和失效...后面的条件进行过滤,按照指定字段值(如果有and连接符会进行联合筛选)从临时中间Temp2筛选需要数据,注意如果在此阶段找不到数据,会直接返回客户端,不会往下进行.这个过程会生成一个临时中间

2.8K20

配置查询与线程追踪函数|全方位认识 sys 系统库

匹配记录而不管该帐号是否在mysql.user存在,如果在setup_actors开启了任意帐号监控,那么就算在mysql.user不存在用户,也会返回YES 函数定义语句文本 DROP...未查询到,返回UNKNOWN值,如果给定ID值为NULL返回NULL 参数: in_connection_id BIGINT UNSIGNED:连接ID。...sys 系统库配置选项名称设置值,两个传参,第一个是要查看配置变量名称,第二个是传入默认值,如果在sys.sys_config查询到了该变量非null值,直接返回,如果查询到是null值,...使用第二个传参返回(如果在sys.sys_config没有查询到第一个传参变量名---即可能传入配置选项名称在sys.sys_config不存在,返回第二个传参值) 按照惯例,调用者在sys_get_config...VARCHAR(128):给定配置选项名称字符串 in_default_value VARCHAR(128):如果在sys_config找不到给定配置选项名称,返回该参数给定返回值:一个

1.8K30

MySQL】01_运算符、函数

比较运算符 比较运算符用来对表达式左边操作数和右边操作数进行比较,比较结果为真返回1,比较结果 为假返回0,其他情况返回NULL。...LIKE运算符也可以匹配指定字符串,但与REGEXP不同,LIKE匹配字符串如果在文本中间出现,找不到它,相应行也不会返回。...,查询s_id字段包含4、5或者6记录,SQL语句如下: SELECT * FROM fruits WHERE s_id REGEXP '[456]'; # 7.匹配指定字符以外字符 “[^...# 在fruits,查询f_id字段包含字母a~e和数字1~2以外字符记录,SQL语句如下: SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]'...未找到,返回0 ELT(m,s1,s2,…,sn) 返回指定位置字符串,如果m=1,返回s1,如果m=2,返回s2,如 果m=n,返回sn FIELD(s,s1,s2,…,sn) 返回字符串s在字符串列表第一次出现位置

2.4K30

听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(常用查询,正则表达式,运算符)

通常使用 NULL 来表示缺失值,也就是在该字段是没有值如果在创建时,限制某些字段不为空,则可以使用 NOT NULL 关键字,不使用默认可以为空。...,如果匹配成功返回 1,反之返回 0。...,如果两者都是 0 或者都是非 0,返回 0;如果一个为 0, 另一个为非 0,返回结果为 1;当任意一个值为 NULL 时,返回值为 NULL。...左连接以左侧为基础,接收左所有行,并用这些行与右侧参考记录进行匹配,也就是说匹配所有行以及右符合条件行。...右连接跟左连接正好相反,它是以右为基础,用于接收右所有行,并用这些记录与左行进行匹配。也就是说匹配每一行及左符合条件记录。

3.9K30

MySQL8.0 JSON函数之搜索JSON值(五)

如果文档没有指定路径,返回值为0。否则,返回值取决于 one_or_all参数: ‘one’:如果文档至少存在一个路径,则为1,否则为0。...返回值由path参数匹配所有值组成 。如果这些参数有可能返回多个值,匹配值将按照与生成它们路径相对应顺序自动包装为一个数组。否则,返回值是单个匹配值。...如果在目标JSON文档找不到匹配键,使用->表达式将计算为NULL,如下所示: mysql>SELECT * FROM tj10 WHERE a->"$[4][1]" IS NOT NULL;...JSON对象顶级值键,如果给定了path参数,返回所选路径顶级键。...如果任何一个json_doc,path或 search_str 参数为NULL,返回NULL;文档不存在路径;或找不到搜索字符串。

6.7K51

MySQL基本查询示例(二)

内联接使用比较运算符进行间某些列数据比较操作,并列出这些与联接相匹配数据行。...2)外联接 外联接(outer join)是对内联接扩充,除了将两个数据集合重复部分以内数据行联接起来之外,还可以根据要求返回左侧或右侧中非匹配数据或全部数据。...外联接还可以分为以下几种: 左外联接(left join或left outer join)结果包括左所有行,如果左某一行在右没有匹配行,返回空值,否则返回相应值。...右外联接(right join或right outer join)是左外联接反向联接,将返回所有行,如果右某一行在左没有匹配行,返回空值,否则返回相应值。...全联接(full join 或full outer join)将返回和右所有行,当某一行在另一个没有匹配行时,另一个返回空值,否则返回相应值。

70630

哦耶!美团二面过了!

我这里将前面的商品 product_no (商品编码)字段设置为二级索引,那么二级索引 B+Tree 如下图(图中叶子节点之间我画了单向链表,但是实际上是双向链表,原图我找不到了,修改不了,偷个懒我不重画了...但如果在事务执行过程中出现错误,或者用户执行了ROLLBACK操作,MySQL就会利用Undo Log信息将数据恢复到事务开始前状态,从而实现事务原子性。...MySQL事务隔离性主要通过锁机制和多版本并发控制(MVCC)来实现。 锁机制:包括行锁和锁。行锁可以精确到数据库某一行,而锁则会锁定整个数据。...,并将插入其中,最后get方法返回null;如果不为null,尝试获取threadLocalsTL1所在键值对,如果该键值对为null,向threadLocals通过set...方法插入,最后返回null,如果键值对不为null,返回键值对值。

18630

MySQL查询重写插件

插件可以将原始树返回到服务器以进行进一步处理,或者构造不同树并返回该树。...,"DBAs"); 查询刚刚插入规则: ? 输出规则每一列内容如下: id: 规则ID。此列是主键。可以使用该ID唯一标识任何规则。 pattern: 指示规则匹配语句模式模板,使用?...如果相应数据库和名相同,语句中限定名与模式限定名匹配;当默认数据库pattern_database与名相同且语句名相同时,语句中非限定名才匹配模式非限定名称 。...如果在将规则加载到内存时该列存在,插件会使用模式摘要更新它。此列可帮助确定某些语句无法重写原因。 normalized_pattern 此列用于调试和诊断。...如果在将规则加载到内存时该列存在,插件会使用模式规范化形式对其进行更新。如果您尝试确定某些语句无法重写原因,此列可能很有用。

2.5K30

盘点数据库一些坑(一)

盘点数据库一些坑(一) 前言 此文是个人根据日常工作遇到坑以及通过各种资料总结sql 踩坑点,有些坑如果在编写sql时候不注意确实是容易翻车,所以这里一并进行总结。...「NOT IN 与未知值比较时返回 0 条记录」由于“NULL”是未知,因此在可能值列表包含“NULL”或“NULL”“NOT IN”查询将始终返回“0”记录,因为无法确定“NULL” value...join效率快一点 left join:主表关联条件ID为空时拼接连接内容为空,right join相反 full join:等于left join和right join并集 两张关系存在一对多关系...、如果是out join(left),还需要把没匹配行数添加和join数据合并,生成一张临时 6、where,对临时进行过滤 exists 真的比in 快么?...外层查询小于子查询,则用 「exists」 「,外层查询大于子查询,则用 「in」 ,如果外层和子查询差不多,爱用哪个用哪个。」

35720

MySQL基础SQL编程学习1

不同 SQL JOIN 分类: INNER JOIN (内连接):如果中有至少一个匹配返回行 OUTER JOIN (外连接): LEFT JOIN(左连接):即使右没有匹配,也从左返回所有的行...RIGHT JOIN(右连接):即使左没有匹配,也从右返回所有的行 FULL JOIN(全连接):只要其中一个存在匹配返回行 INNER JOIN(内连接-笛卡尔积) 描述:SQL INNER...LEFT JOIN 关键字 描述:LEFT JOIN 关键字从左(table1)返回所有的行,即使右(table2)没有匹配。如果右没有匹配结果为 NULL。...RIGHT JOIN 关键字 描述:RIGHT JOIN 关键字从右(table2)返回所有的行,即使左(table1)没有匹配。如果左没有匹配结果为 NULL。...2.外连接就好像是为非基准添加了一行全为空值万能行,用来与基准找不到匹配行进行匹配,两个没有空值进行左连接,左是基准,左所有行都出现在结果,右则可能因为无法与基准匹配而出现是空值字段

4.6K20

查看Mysql执行计划

解释 1、ID、table id:Query Optimizer 所选定执行计划查询序列号;table:显示这一行数据是关于哪张 2、type 显示连接使用了何种类型,对表所使用访问方式。...eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;在连接MYSQL在查询时,从前面的,对每一个记录联合都从读取一个记录,它在查询使用了索引为主键或惟一键全部时使用...“对于每一种与另一个记录组合,MySQL将从当前读取所有带有匹配索引值记录。...如果连接操作所用键只匹配少量记录,ref是一 种好连接类型。” 6、rows MYSQL认为必须检查用来返回请求数据行数 ,这里最理想数字就是1。...,并用它来从返回行。

3.3K10

MySQL多表关联查询

外连接就好像是为非基准添加了一行全为空值万能行,用来与基准找不到匹配行进行匹配。...不同 SQL JOIN 在我们继续讲解实例之前,我们先列出您可以使用不同 SQL JOIN 类型: INNER JOIN:如果中有至少一个匹配返回行 LEFT JOIN:即使右没有匹配...,也从左返回所有的行 RIGHT JOIN:即使左没有匹配,也从右返回所有的行 FULL JOIN:只要其中一个存在匹配返回行(MySQL不支持FULL JOIN) 实例1:...如果右没有匹配结果为 NULL mysql> SELECT w.name, a.count, a.date FROM websites w LEFT JOIN access_log a ON w.id...RIGHT JOIN 关键字从右(table2)返回所有的行,即使左(table1)没有匹配。如果左没有匹配结果为 NULL。

5K20
领券