热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:MySQL索引触发器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MySQL索引触发器相关的知识,希望对你有一定的参考价值。一

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MySQL 索引触发器相关的知识,希望对你有一定的参考价值。



一、 索引:
  
1、 为什么要使用索引:
    一本书需要目录能快速定位到寻找的内容,同理,数据表中的数据很多时候也可以为他们创建相应的“目录”,称为索引,当创建索引后查询数据也会更加高效
  
2mysql中的索引类型:
    
1) 普通索引:在不添加任何关键字的情况下创建的索引,他没有其他特殊功能,就是为了提高查询效率
    
2) 唯一索引:使用UNIQUE关键字标记,被添加唯一索引的字段值不重复
    
3) 全文索引:使用FULL TEXT关键字标记,MYSQL在针对一些数据量较大的字段建议创建全文索引,以便在查询时检索更快
    注:全文索引只能在myisam相关的数据库引擎使用,MySQL默认的数据库引擎innodb是不支持全文索引的
  
3、 创建索引:
    
1) 在创建数据表结构时就使用关键字创建唯一索引:UNIQUE关键字
    
2) 使用CREATE INDEX语句完成:
      语法:
      
create {不写 | UNIQUE | FULLTEXT} index <索引名称> ON 表名(字段名列表)
      举例:
-- 在tb_student表的student_name上添加唯一索引
      CREATE UNIQUE INDEX inx_student_name_u ON tb_student (student_name);
      
-- 查看索引
      show index from tb_student ;
    
3) 在修改数据表时为其添加索引的方式完成:
      语法:
      
ALTER TABLE <表名> ADD {不写 | UNIQUE | FULLTEXT} INDEX <索引名> (字段名列表)
      举例:
      
-- 在tb_student2中的address字段上创建全文索引。
      --
从tb_student复制一份新表tb_student2
      CREATE TABLE tb_student2 SELECT * FROM tb_student;
      
SELECT * FROM tb_student2;
      
-- 创建全文索引 需要将数据表的引擎修改为myisam
      ALTER TABLE tb_student2 ADD FULLTEXT INDEX inx_address_f (address);
      show
INDEX FROM tb_student2;
    
4) 查看索引:
      语法:SHOW
INDEX FROM <表名>
      举例:SHOW
INDEX FROM tb_student;
    
5) 删除索引
      语法:
DROP INDEX <索引> ON <表名>
      举例:
DROP INDEX inx_address_f ON tb_student2;
      
*:针对记录的CRUD操作语句:
      
Insert intodeleteupdateselect
      *:针对数据库对象的CRUD操作语句:
      
createdropalter,show
二、 触发器:
  
1、 什么是触发器?
    当满足设定好的条件时会自动执行事先设定好的任务的一种数据库对象,称为触发器。
  
2、 触发器的几个要素:
    
1) 触发地点:具体是针对哪个数据表创建触发器
    
2) 触发事件:具体是执行什么操作(增删改)时会启动触发器
    
3) 触发时机:具体是在操作之前还是之后启动触发器
  
3、 创建触发器:
    语法:
    
CREATE TRIGGER <触发器名>
    {befor
| after} /*触发时机*/
    {
INSERT | DELETE | UPDATE} /*触发事件*/
    ON <表名> /*触发地点*/
    For each row /*固定写法:针对每一行都生效*/
    Begin
    #为触发器事先设定的要执行的任务
    
End;
    说明:在触发器中的取值需要通过OLD或NEW关键字来获取字段的“老值”、“新值”。

    举例:
    delimiter
//
    CREATE TRIGGER trig_studentscore
    BEFORE
INSERT ON tb_score
    
FOR EACH ROW
    
BEGIN
     IF NEW.student_score < 0 THEN
    SET NEW.student_score = 0;
     ELSEIF NEW.student_score
> 100 THEN
     SET NEW.student_score = 100;
    
END IF;
    
END //
    delimiter ;
  
    
-- 执行触发器中对应的触发事件,启动触发器,验证触发器是否正常工作
    INSERT INTO tb_score VALUES(null,"S08",2,-3.3,2019-10-11);
    
INSERT INTO tb_score VALUES(null,"S08",2,80.5,2019-10-11);
    
INSERT INTO tb_score VALUES(null,"S08",2,120,2019-10-11);
    
SELECT * FROM tb_score WHERE student_no = s08;
    
DESC tb_score;
    
-- 查看当前数据库下的所有触发器
    SHOW TRIGGERS;

 


推荐阅读
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 本文探讨了如何在C# WinForms应用程序中将带有格式(如粗体、下划线等)的RTF文本粘贴到RichTextBox控件中,并确保粘贴后的文本保持原始格式和着色。我们还将介绍一些优化方法,以提高处理效率。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • SDN网络拓扑发现机制解析
    本文深入探讨了SDN(软件定义网络)中拓扑发现的原理与实现方法,重点介绍了LLDP协议在OpenFlow环境中的应用,并讨论了非OpenFlow设备存在时的链路发现策略。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本文详细比较了CSS选择器和XPath在Selenium中通过页面结构定位元素的优劣,并提供了具体的代码示例,帮助读者理解两者在不同场景下的适用性。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
author-avatar
mobiledu2502852915
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有