常用 SQL 技巧和常见问题

1、正则表达式的使用
正则表达式(Regular Expression),是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
MySQL 利用 REGEXP 命令提供给用户扩展的正则表达式功能,并且 REGEXP 在进行模式匹配时是区分大小写的。

2、巧用 RAND()提取随机行

可以利用这个函数与ORDER BY子句一起完成随机抽取某些行的功能。

3、利用 GROUP BY 的 WITH ROLLUP 子句做统计

WITH ROLLUP 反映的是一种 OLAP 思想,也就是说这一个 GROUP BY 语句执行完成后可以满足用户想要得到的任何一个分组以及分组组合的聚合信息值。

注意:1、当使用 ROLLUP 时, 不能同时使用 ORDER BY 子句进行结果排序。换言之, ROLLUP和 ORDER BY 是互相排斥的
           2、LIMIT 用在 ROLLUP 后面

4、用 BIT GROUP FUNCTIONS 做统计

使用 GROUP BY 语句和 BIT_AND、BIT_OR 函数完成统计工作。

5、数据库名、表名大小写问题

在大多数 UNIX 环境中,由于操作系统对大小写的敏感性导致了数据库名和表名对大小写敏感性,而在 Windows 中由于操作系统本身对大小写不敏感,因此在 Windows 下 MySQL 数据库名和表名对大小写也不敏感。列、索引、存储子程序和触发器名在任何平台上对大小写不敏感。默认情况下,表别名在UNIX 中对大小写敏感,但在 Windows 或 Mac OS X 中对大小写不敏感。

在 MySQL 中如何在硬盘上保存、使用表名和数据库名由 lower_case_tables_name 系统变量决定,可以在启动 mysqld 时设置这个系统变量。

注意:

1、在 UNIX 中将 lower_case_tables_name 设置为 1 并且重启 mysqld 之前,必须先将旧的数据库名和表名转换为小写。
2、尽管在某些平台中数据库名和表名对大小写不敏感,但是最好养成在同一查询中使用相同的大小写来引用给定的数据库名或表名的习惯。

6、使用外键需要注意的问题

在 MySQL 中,InnoDB 存储引擎支持对外部关键字约束条件的检查。而对于其他类型存储引擎的表,当使用 REFERENCES tbl_name(col_name)子句定义列时可以使用外部关键字,但是该子句没有实际的效果,只作为备忘录或注释来提醒用户目前正定义的列指向另一个表中的一个列。

总结

 应用正则表达式可使用户能在一段很大的字符串中找到符合自己规则的一些语句,这个功能在进行匹配查找的时候非常有用。
 RAND()函数与 ORDER BY 字句的配合使用能够实现随机抽取样本的功能,这个技巧在进行数据统计的时候很方便。
 GROUP BY 的 WITH ROLLUP 字句能够实现类似于 OLAP 的查询。
 BIT 函数与 GROUP BY 子句的联合使用在某些应用场合可以大大降低存储量,提高统计查询效率。
 MySQL 数据库名和表名的大小写与操作系统对大小写的敏感性关系密切,因此需要格外引起用户的注意。
 MySQL 的外键功能仅对 InnoDB 存储引擎的表有作用,其他类型存储引擎的表虽可以建立外键,但并不能起到外键的作用。
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数仓中常用SQL查询技巧有很多,以下是一些常见的技巧和建议: 1. 使用窗口函数:窗口函数(Window Function)是SQL中强大的功能之一,它可以在查询结果中对数据集进行分组、排序和聚合操作,常用的窗口函数包括RANK、ROW_NUMBER、LEAD、LAG等。 2. 优化查询性能:在处理大规模数据时,优化查询性能是非常重要的。可以通过创建合适的索引、避免全表扫描、使用合适的连接方式等方式来提高查询效率。 3. 使用子查询:子查询(Subquery)可以嵌套在主查询中,用于限制结果集或作为计算字段的来源。使用子查询可以简化复杂的查询逻辑,并提高可读性。 4. 使用临时表或表变量:当需要多次使用相同的结果集时,可以将查询结果存储在临时表或表变量中,避免重复查询和计算,提高性能。 5. 使用CTE(Common Table Expression):CTE是一种临时命名的查询结果集,可以在查询中多次引用,提高可读性和维护性。 6. 使用合适的连接方式:在进行表之间的关联查询时,选择合适的连接方式(如INNER JOIN、LEFT JOIN、RIGHT JOIN等)可以确保查询结果正确且高效。 7. 利用索引进行查询优化:合理创建和使用索引可以加快查询速度,尤其是在大型数据表中。根据查询的字段和条件,选择合适的索引策略,可以显著提高查询性能。 8. 使用视图(View):视图是一种虚拟的表,可以将复杂的查询逻辑封装为一个视图,使查询更简洁、可复用。 9. 使用合适的聚合函数:根据需要,选择合适的聚合函数(如SUM、AVG、COUNT、MAX、MIN等)进行数据统计和分析。 10. 使用合适的数据类型和字段命名:选择合适的数据类型可以节省存储空间和提高查询效率,良好的字段命名可以提高代码可读性和维护性。 这些只是一些常见的SQL查询技巧,实际应用中还会根据具体场景和需求进行调整和优化。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值