一、    索引:
  1、 为什么要使用索引:
    一本书需要目录能快速定位到寻找的内容,同理,数据表中的数据很多时候也可以为他们创建相应的“目录”,称为索引,当创建索引后查询数据也会更加高效
  2、 Mysql中的索引类型:
    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 into,delete,update,select
      *:针对数据库对象的CRUD操作语句:数据库、表、触发器、索引、存储过程、视图
      create,drop,alter
,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;

最新文章

  1. 关于WM_GETTEXT的应用
  2. JVM之ParNew收集器
  3. JSONResult 封装
  4. cocoapod集成失败,无法找到头文件的解决办法
  5. android studio新建hello world时出现Rendering Problems
  6. iOS上简单推送通知(Push Notification)的实现
  7. java设计模式--工厂模式
  8. Android TimePickerDialog样式配置与TimePicker模式选择
  9. velocity加减运算注意格式 ,加减号的左右都要有空格
  10. jAVA EE里什么是链式调用
  11. Teams(uva11609+组合)
  12. tornado的GET POST方法样品展示
  13. asp.net中TextBox里面实现回车触发指定事件
  14. springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)
  15. 剑指offer面试题14-调整数组顺序使奇数位于偶数前面
  16. Windows10 64位安装TensorFlow-GPU
  17. 【mysql】mysql触发器使用示例
  18. sql 指定数据库中的信息操作
  19. nginx随机模块——ngx_http_random_index_module
  20. cookie和session机制

热门文章

  1. Dubbo入门到精通学习笔记(四):持续集成管理平台之Maven私有库和本地库的安装与配置
  2. 截取url中的某个字符串后面的值
  3. Java通道
  4. redis集群创建时报错:Sorry, can&#39;t connect to node
  5. CDH6.1.0离线安装——笔记
  6. leetcode.字符串.5最长回文子串-Java
  7. python颜色
  8. 教你如何有效防止DDos攻击?
  9. 按钮与js事件先后顺序
  10. java 删除文件