当前位置: 首页 > article >正文

MYSQL-------正则表达式的使用

正则表达式的使用

  • 基本语法
    • REGEXPRLIKE 关键字用于在 MySQL 中使用正则表达式。
    SELECT column FROM table WHERE column REGEXP 'pattern';
    
    • 例如,查找 email 列中以 @example.com 结尾的记录:
    SELECT email FROM users WHERE email REGEXP '@example.com$';
    

代码解释

  • REGEXPRLIKE 后面的 'pattern' 是正则表达式模式。
  • '@example.com$' 中的 $ 表示以 @example.com 结尾,这样可以筛选出符合该模式的 email 记录。

巧用 RAND() 提取随机行

  • 随机提取一行数据
    SELECT column FROM table ORDER BY RAND() LIMIT 1;
    

代码解释

  • RAND() 函数会为每一行生成一个随机数。
  • ORDER BY RAND() 会根据这些随机数对行进行排序。
  • LIMIT 1 只选取排序后的第一行,从而实现随机选取一行的目的。

在这里插入图片描述

利用 GROUP BY 和 WITH ROLLUP 子句做统计

  • 基本 GROUP BY 统计
    SELECT column1, COUNT(column2) AS count FROM table GROUP BY column1;
    
    • 例如,统计每个部门的员工数量:
    SELECT department, COUNT(employee_id) AS employee_count FROM employees GROUP BY department;
    

代码解释

  • GROUP BY department 会将 employees 表中的数据按照 department 列分组。

  • COUNT(employee_id) 计算每个组中 employee_id 的数量,作为 employee_count 存储。

  • 使用 WITH ROLLUP 进行汇总统计

    SELECT column1, COUNT(column2) AS count FROM table GROUP BY column1 WITH ROLLUP;
    
    • 继续上面的例子,添加汇总统计:
    SELECT department, COUNT(employee_id) AS employee_count FROM employees GROUP BY department WITH ROLLUP;
    

代码解释

  • WITH ROLLUP 会在 GROUP BY 的基础上添加一个额外的汇总行,统计所有组的总和。在上述例子中,会添加一行显示所有部门员工总数。

用 BIT GROUP FUNCTIONS 做统计

  • BIT_AND、BIT_OR、BIT_XOR 函数的使用
    SELECT BIT_AND(column) AS bit_and_result, BIT_OR(column) AS bit_or_result, BIT_XOR(column) AS bit_xor_result FROM table;
    
    • 例如,对 flags 列进行位运算统计:
    SELECT BIT_AND(flags) AS bit_and_result, BIT_OR(flags) AS bit_or_result, BIT_XOR(flags) AS bit_xor_result FROM data;
    

代码解释

  • BIT_AND(flags)flags 列的每一行进行位与操作,结果存储在 bit_and_result 中。
  • BIT_OR(flags) 进行位或操作,存储在 bit_or_result 中。
  • BIT_XOR(flags) 进行位异或操作,存储在 bit_xor_result 中。

数据库名,表名大小写问题

  • 大小写敏感性
    • 在 Windows 系统上,MySQL 通常不区分数据库名和表名的大小写(取决于文件系统)。
    • 在 Linux 系统上,MySQL 默认区分大小写,这取决于文件系统和 MySQL 服务器的配置。
    • 为避免混淆,可以在创建数据库和表时统一使用小写,例如:
    CREATE DATABASE mydatabase;
    CREATE TABLE mytable (id INT);
    

代码解释

  • 上述代码创建了一个名为 mydatabase 的数据库和一个名为 mytable 的表,使用小写避免因大小写问题导致的混淆。

使用外键需要注意的问题

  • 创建外键
    ALTER TABLE child_table
    ADD CONSTRAINT fk_name
    FOREIGN KEY (child_column) REFERENCES parent_table(parent_column);
    
    • 例如,在 orders 表和 customers 表之间建立外键:
    ALTER TABLE orders
    ADD CONSTRAINT fk_customer_id
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id);
    

代码解释

  • ALTER TABLE child_table 表示要修改的子表。

  • ADD CONSTRAINT fk_name 为外键添加一个约束,fk_name 是外键的名称。

  • FOREIGN KEY (child_column) REFERENCES parent_table(parent_column) 定义外键,child_column 是子表的列,它引用了 parent_table 中的 parent_column

  • 注意事项

    • 确保外键关联的列的数据类型和长度相同。
    • 外键所在的表(子表)和被引用的表(父表)使用相同的存储引擎。
    • 父表中的引用列通常需要有索引,以提高性能。
    • 外键会影响性能,尤其是在大量数据插入、更新和删除时,因为需要检查引用完整性。

小结

  • 正则表达式:使用 REGEXPRLIKE 可以方便地进行模式匹配,筛选出符合特定模式的数据。
  • RAND() 函数:可以用于随机选取数据,但对于大数据集性能可能不佳,因为它会对每一行计算随机数。
  • GROUP BY 和 WITH ROLLUP:可以方便地进行分组统计和汇总统计。
  • BIT GROUP FUNCTIONS:提供了对二进制数据的位运算统计功能。
  • 大小写问题:注意不同操作系统下的大小写敏感性,创建时尽量使用小写或遵循统一的命名规则。
  • 外键:合理使用外键可以保证数据完整性,但要注意其性能影响和使用的限制。

在使用这些 SQL
技巧和功能时,需要根据实际的业务需求和数据库环境来选择合适的方法,同时注意它们可能带来的性能和维护问题。对于外键,要谨慎使用,特别是在高并发和大数据量的场景下,要充分考虑性能影响和维护成本。在使用正则表达式时,确保模式的准确性和有效性,避免过度复杂的模式影响性能。


http://www.kler.cn/a/471763.html

相关文章:

  • 【S32DS项目实战系列】项目工程外设 之 C40_IP组件
  • Rust语言使用iced实现简单GUI页面
  • AF3 one_hot函数解读
  • RPC自定义协议
  • 搭建企业AI助理的创新应用与案例分析
  • 谷粒商城-高级篇完结-Sleuth+Zipkin 服务链路追踪
  • 搭建Hadoop分布式集群
  • 中学教资笔记1
  • 【微服务】6、限流 熔断
  • redis学习笔记(一)了解redis
  • 如何设置通过Visual Studio(VS)打开的C#项目工具集?
  • 书籍推荐:MySQL 是怎样运行的-从根上理解 MySQL
  • C# 之某度协议登录,JS逆向,手机号绑定,获取CK
  • Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建
  • 05容器篇(D2_集合 - D6_容器源码分析篇 - D1_ArrayList)
  • Flex布局的三个属性
  • 2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined
  • WPF中RenderTargetBitmap问题解决
  • 服务器等保测评审计日志功能开启(auditd)和时间校准
  • 如何从串 ‘ 中国 +86‘ 中,获取到‘中国’:strip()、split()及正则表达式的使用