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

-------------分分钟带你玩转SQL高级查询语句(常用查询,正则表达式,运算符)

下面说说如何来思考上面SQL语句执行情况: from zhu:sql执行第一步,找,这个没啥变化; from zhu group by age:没有join 和 where 操作,就是group by... MySQL 查询时,当名字比较或者内某些字段比较长时,为了方便书写或者多次使用相同,可以给字段列或设置别名。...例如,创建一个 test,该包含设置 NOT NULL 字段,然后向插入不同记录值,其中包括 NULL 值和实际有值记录,最后通过 SELECT 查询字段包括 NULL 和不包括 NULL...如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。 如果两者都是字符串,则按照字符串进行比较。 如果两者至少有一个值是 NULL,则比较结果是 NULL。...,还包括右中有但是左匹 配行,这些记录在左 NULL 补足。

3.9K30

MySQL 教程上

特殊作用, 任何字段NULL 比较结果都是 false。...group by: 对 SELECT 查询出来结果集按照某个字段或者表达式进行分组,获得一组组集合,然后从每组取出一个指定字段或者表达式值。...简单正则表达式测试 可以不使用数据库情况下用SELECT来测试正则表达式。REGEXP 检查总是返回0(没有匹配)或1(匹配)。可以用带文字串REGEXP来测试表达式,并试验它们。...MySQL 字段属性应该尽量设置为 NOT NULL 指定 NULL 指定 NOT NULL 时,多数 DBMS 认为指定NULL,但不是所有的 DBMS 都这样。...建议定义列时候,检查 COMMENT 备注,是否运行非空,是否具有唯一性。 SQL 允许指定默认值,插入行时如果不给出值,DBMS 将自动采用默认值。

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

【MySQL 系列】MySQL 语句篇_DQL 语句

2.2、DQL 子句:JOIN MySQL ,JOIN 语句用于将数据库两个或者多个组合起来。...也就是两个所有的行所有可能组合。这相当于内连接没有连接条件或者连接条件永远为真。 如果一个有 m 行和另一个有 n 行它们交叉连接将返回 m * n 行数据。...右连接与左连接处理逻辑相反,右连接以右数据行为基础,根据条件匹配数据。如果匹配不到左数据,则左列为 NULL 值。...AND 运算符是一个双目逻辑运算符,用来组合两个操作数。只有当两个操作数都为真时,结果才返回真,否则返回假或者 NULL。...2.3.3、运算符 IN 使用 SQL 查询时候,我们可能需要判断一个字段是否位于一组值,这就需要用到 IN 运算符了。

13510

MySQL 查询专题

NULL匹配 通过过滤选择出不具有特定值行时,你可能希望返回具有 NULL行。但是,不行。因为未知具有特殊含义,数据库不知道它们是否匹配,所以匹配过滤或匹配过滤时返回它们。...因此,在过滤数据时,一定要验证返回数据确实给出了被过滤列具有 NULL 行。 计算次序 WHERE 可包含任意数目的 AND 和 OR 操作符。允许两者结合进行复杂和高级过滤。...❑ 如果分组列包含具有 NULL行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...例如,指定一个词必须匹配,一个词必须匹配,而一个词仅在第一个词确实匹配情况下才可以匹配或者才可以匹配。...这样,MySQL 可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词匹配它们匹配频率,等等。

5K30

SQL优化思路+经典案例分析

当explain与SQL一起使用时,MySQL将显示来自优化器有关语句执行计划信息。即MySQL解释了它将如何处理该语句,包括有关如何连接以及何种顺序连接等信息。...这是因为不加单引号时,是字符串跟数字比较它们类型匹配,MySQL会做隐式类型转换,把它们转换为浮点数再做比较。隐式类型转换,索引会失效。...2.9 group by使用临时 group by一般用于分组统计,它表达逻辑就是根据一定规则,进行分组。日常开发,我们使用得比较频繁。如果不注意,很容易产生慢SQL。...我们来看下这个SQL执行流程 select city ,count(*) as num from staff group by city; 创建内存临时,表里有两个字段city和num; 全扫描...可以有这些优化方案: group by 后面的字段加索引 order by null 不用排序 尽量只使用内存临时 使用SQL_BIG_RESULT 2.10 delete + in子查询走索引!

73310

SQL必知必会》万字精华-第1到13章

是某种特定类型数据结构化清单。 存储数据是同一种类型数据或者清单 数据库每个都有自己名字,并且这个是唯一。 列 是由列组成,列存储某部分信息。列是某个字段。...AND...联合使用 空值检查 当我们创建时候,可以指定其中是否包含空值。一个列包含值时,称其包含空值NULL。...日期和时间处理函数 日期和时间采用相应数据类型存储特殊格式来存储。...除了聚集函数外,SELECT语句中每列都必须在GROUP BY子句中列出 如果分组包含具有NULL行,则NULL将作为一个分组返回;如果列中出现多个NULL它们将分成一个组 GROUP BY子句必须在...因此外联结实际上有两种形式,它们之间可以互换 左外联结 右外联结 还有一种比较特殊外联结,叫做全外联结full outer join,它检索两个所有行并关联那些可以关联行。

6.9K00

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

使用等号运算符时,遵循如下规则: 如果等号两边值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较是每个字符串字符ANSI编码是否相等。...fruits,查询f_name字段字母‘b’开头记录,SQL语句如下: SELECT * FROM fruits WHERE f_name REGEXP '^b'; 查询特定字符或字符串结尾记录...fruits,查询f_name字段字母‘y’结尾记录,SQL语句如下: SELECT * FROM fruits WHERE f_name REGEXP 'y$'; 用符号"."...fruits,查询f_name字段值 包含字母‘a’与‘g’且两个字母之间只有一个字母记录,SQL语句如下: SELECT * FROM fruits WHERE f_name REGEXP...fruits,查找f_name字段包含字母‘o’或者‘t’记录,SQL语句如下: SELECT * FROM fruits WHERE f_name REGEXP '[ot]'; 匹配指定字符以外字符

3.7K30

MySQL 【教程三】

本章节我们将向大家介绍如何使用 MySQL JOIN 两个或多个查询数据。 你可以 SELECT, UPDATE 和 DELETE 语句中使用 Mysql JOIN 来联合多表查询。...JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个字段匹配关系记录。 LEFT JOIN(左连接):获取左所有记录,即使右没有对应匹配记录。...: 比较操作符(不同于 = 运算符),当比较两个值相等或者都为 NULL 时返回 true。 关于 NULL 条件比较运算是比较特殊。你不能使用 = NULL 或 !... MySQL 只有使用了 Innodb 数据库引擎数据库或才支持事务。 事务处理可以用来维护数据库完整性,保证成批 SQL 语句要么全部执行,要么全部执行。...值和默认值影响 当你修改字段时,你可以指定是否包含值或者是否设置默认值。

2K30

MySql 全方位基础优化定位执行效率低SQL语句存储过程与触发器区别面试回答数据库优化问题从以下几个层面入手

,所以应用反应执行效率出现问题时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前Mysql进行线程,包括线程状态,是否等,可以实时查看sql执行情况,...; 可以从warning字段能够看到,会去除一些恒成立条件,可以利用explain extended结果来迅速获取一个更清晰易读sql语句 通过show profile 分析sql 查看mysql...连接之所用更有效率是因为mysql不需要在内存创建临时来完成这个逻辑上需要两个步骤查询工作 优化分页查询 一般分页查询,通过创建覆盖索引能够比较好地提高性能。...函数完成统计工作,这两个函数一般用途就是做数值之间逻辑 ---- 优化数据库对象 优化类型 需要使用何种数据类型工具应用来判断,虽然考虑字段长度会有一定冗余,但是推荐让很多字段都留有大量冗余...增加派生列其他作业是查询时减少连接操作,避免使用集函数 重新组:指如果许多用户需要查看两个连接出来结果数据,则把这两个查询组成一个来减少连接而提高性能 分割 维护数据完整性 批处理维护是指对复制列或派生列修改积累一定时间后

2.2K111

第04章_运算符

使用等号运算符时,遵循如下规则: 如果等号两边值、字符串或表达式都为字符串,则 MySQL 会按照字符串进行比较,其比较是每个字符串字符 ANSI 编码是否相等。... fruits ,查询 f_name 字段字母‘b’开头记录,SQL 语句如下: mysql> SELECT * FROM fruits WHERE f_name REGEXP '^b'; 2... fruits ,查询 f_name 字段字母‘y’结尾记录,SQL 语句如下: mysql> SELECT * FROM fruits WHERE f_name REGEXP 'y$'; 3... 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

22910

大厂都在用MySQL优化方案

可使用show processlist命令查看当前MySQL进行线程,包括线程状态,是否等,可以实时查看sql执行情况,同时对一些锁进行优化。...连接之所用更有效率是因为mysql不需要在内存创建临时来完成这个逻辑上需要两个步骤查询工作 优化分页查询 一般分页查询,通过创建覆盖索引能够比较好地提高性能。...函数完成统计工作,这两个函数一般用途就是做数值之间逻辑 ---- 优化数据库对象 优化类型 需要使用何种数据类型工具应用来判断,虽然考虑字段长度会有一定冗余,但是推荐让很多字段都留有大量冗余...增加派生列其他作业是查询时减少连接操作,避免使用集函数 重新组:指如果许多用户需要查看两个连接出来结果数据,则把这两个查询组成一个来减少连接而提高性能 分割 维护数据完整性 批处理维护是指对复制列或派生列修改积累一定时间后...特别是需求变化时,不易于维护 使用触发器,对数据任何修改立即触发对复制列或者派生列相应修改,触发器是实时,而且相应处理逻辑只一个地方出现,易于维护,一般来说,是解决这类问题比较方法 使用中间提高统计查询速度

46310

12个MySQL慢查询原因分析「建议收藏」

这是因为不加单引号时,是字符串跟数字比较它们类型匹配,MySQL 会做隐式类型转换,把它们转换为浮点数再做比较。隐式类型转换,索引会失效。...select * from user where name =’捡田螺小男孩’; 因为查询条件列 name 不是联合索引 idx_userid_name 第一个列,索引生效 联合索引,查询条件满足最左匹配原则时...如果被驱动没有可用索引,join 是 join_buffer 内存做,如果匹配数据量比较或者 join_buffer 设置比较大,速度也不会太慢。...11、group by 使用临时 group by 一般用于分组统计,它表达逻辑就是根据一定规则,进行分组。日常开发,我们使用得比较频繁。如果不注意,很容易产生慢 SQL。...我们来看下这个 SQL 执行流程 select city ,count(*) as num from staff group by city; 创建内存临时,表里有两个字段 city和num

1.4K50

一场pandas与SQL巅峰大战(二)

而在hive SQL,既有简易Like关键字匹配特定字符,也可以使用regexp_extract,regexp_replace这两个函数更灵活地实现目标。接下来我们举例说明。...为了减少干扰,我们将order数据重新读入,并设置了pandas显示方式。 ? 可以看到,同一个uid对应订单id已经显示同一行了,订单id之间逗号分隔。...下面是Hive和pandas查看数据样例方式。我们目标是将原始字符串形式存储数组元素解析出来。 ? ?...先来看pandas如何实现,这里我们需要用到literal_eval这个包,能够自动识别字符串形式存储数组。...本文出发点仅仅是对比两者操作,方便从两个角度理解常见数据处理手段,也方便工作转换查阅,不强调孰优孰劣。

2.3K20

SQL优化一(SQL使用技巧)

order by执行比较特殊)再进行操作, 也就是说sql语句中order by也会影响分析函数执行结果:     a) 两者一致:如果sql语句中order by满足与分析函数配合开窗函数...这里如果开窗函数统计结果为null或者为0,就是说占用比率被除数为0或者null, 则得到结果也为0....7、KEEP使用      keep是Oracle下另一个分析函数,他用法不同于通过over关键字指定分析函数,可以用于这样一种场合下:取同一个分组下某个字段排序后,对指定字段取最小或最大那个值...而前面的MIN或者MAX则是KEEP结果集中取某一字段最大值或最小值。  ...匹配换行符号; m:多行模式; x:扩展模式,忽略正则表达式空白字符。

2.5K40

基础知识_数据库

两者兼容关系如下: - S X S √ × X × × 意向锁 1.如果事务T1对第5行加了排它锁,T2又想对表加排它锁/共享锁,T2需要检查两件事: 是否排它锁。...某一行是否加了排它锁。 判断第二点时候,需要遍历每一行才能判断,这样开销太大了。如果能给加一个标志,用来标志内某一行是否有排它锁。这样就产生了意向锁。...=检测是否相等,、!=检测不等,其他还有=。 BINARY表示区分大小写。 WHERE也可以用于DELETE 或者 UPDATE。...**IS NOT NULL:** 当列值不为 NULL, 运算符返回 true。 **:** 比较操作符(不同于 = 运算符),当比较两个值相等或者都为 NULL 时返回 true。...例如,’o{2}’ 不能匹配 “Bob” ‘o’,但是能匹配 “food” 两个 o。 {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

72320

如何管理SQL数据库

执行基本查询 要查看单个列所有数据,请使用以下语法: SELECT column FROM table; 要查询同一个多个列,请使用逗号分隔列名: SELECT column_1, column...LIKE 测试值是否与指定字符串匹配 IS NULL 测试NULL值 IS NOT NULL 测试除以外所有值 NULL 使用通配符 SQL允许使用通配符。...就其本身而言,上一节描述聚合函数仅返回单个值。但是,您可以通过包含GROUP BY子句来查看对列每个匹配值执行聚合函数结果。...以下语法将计算column_2匹配数量,并按升序或字母顺序对它们进行分组: SELECT COUNT(column_1), column_2 FROM table GROUP BY column_...INNER JOIN将返回两个具有匹配所有记录,但不会显示任何没有匹配记录。 通过使用外部 JOIN子句,可以从两个一个返回所有记录,包括另一个没有相应匹配值。

5.5K95

⑩② 【MySQL索引】详解MySQL`索引`:结构、分类、性能分析、设计及使用规则。

哈希碰撞问题 如果出现两个或多个键值映射到同一个槽位上,也就是出现hash碰撞时,可以通过链表解决问题。...创建、查看、删除索引 索引操作: 创建索引 -- 使用UNIQUE关键字,创建唯一索引 -- 使用FULLTEXT关键字,创建全文索引 -- 指定上述两者,创建常规索引 CREATE [UNIQUE...profile cpu for query query_id; - explain执行计划 explain执行计划: EXPLAIN或者DESC命令获取MySQL如何执行SELECT语句信息,包括...⚪Key_len:表示索引中使用字节数,该值为索引字段最大可能长度,并非实际使用长度,损失精确性前提下,长度越短越好。...索引设计原则 1.针对于数据量较大,且查询比较频繁建立索引。 2.针对于常作为查询条件(where)、排序(order by)、分组(group by)操作字段建立索引。

56340

查看Mysql执行计划

第一个查询是全扫描,第二个是索引扫描: 区别在于type:all是全扫描 index 通过索引扫描 或者查询输入需要查看执行计划语句,点击执行,然后点击解释。...eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;连接,MYSQL查询时,从前面的,对每一个记录联合都从读取一个记录,它在查询使用了索引为主键或惟一键全部时使用...unique_subquery:子查询返回结果字段组合是主键或者唯一约束 index_merge:查询同时使用两个(或更多)索引,然后对索引结果进行merge 之后再读取数据; index_subquery...列数据是从仅仅使用了索引信息而没有读取实际行动返回,这发生在对表全部请求列都是同一个索引部分时候。...Using index for group-by:数据访问和Using index 一样,所需数据只需要读取索引即可,而当Query 中使用了GROUP BY 或者DISTINCT 子句时候,如果分组字段索引

3.3K10
领券