zoukankan      html  css  js  c++  java
  • 触发器、视图和索引

    #### 触发器

    Trigger:当一件事情发生以后会触发另一件事件发生,我们称之为触发器;

    在mysql中:我们对一张表操作时会引起另一张表的改变;

    语法:

    ​ delimiter \ (改变结束标志)

    ​ create trigger 名字 时间(after|before) 动作(insert|update|delete) on 表1

    ​ for each row

    ​ begin

    ​ sql语句 表2;

    ​ end \

    delimiter;

    两个变量:

    New:表一修改后的那一行内容;

    Old:表一修改前的那一行内容。

    删除:drop trigger 触发器名字;

    #### 视图

    如果有一张表包含员工的所有信息,很多信息我们并不希望所有都看到,我们可以创建多张表,但维护起来麻烦,我们可以使用视图来完成。

    视图是一张虚拟的表,从基本表的一部分组成的一个虚拟表。

    虽然是一张虚拟的表,但是我们可以当普通表使用。

    语法:create view 视图名 as select 语句;

    在视图里修改数据时,基本表也会进行相应的修改;

    在视图里插入数据时,基本表也可以插入相应的数据,但不是所有的都能成功(不满足视图的条件时,加上with check option 时,不满足条件会直接报错)。

    不能修改视图的情况:

    1.使用了聚合函数;

    2.视图中不能使用活用户变量;

    3.在存储过程中不能修改视图;

    4.在临时表中不能创建视图;

    5.在视图中可以创建视图;

    6.多表连接查询,除非视图和两张表里所有的列一 一对应,那么就不能修改视图。

    #### 索引(Index)

    索引里是有真实数据的,索引对这些数据进行排序,对有索引的数据进行查找查找时先进入索引进行查找,而不是直接在表中查找,因为已经进行排序(默认是平衡二叉树(BT)),所以查找速度加快,在多表查询时可以消除笛卡尔积。

    缺点:1.插入的速度慢。

    ​ 2.会占用硬盘空间,有时会比数据更大。

    索引相当于指针,指向表中的相关数据。

    Explain:我们称之为优化器,可以让我们来分析将要执行的select语句;

    **索引的类型:**
    1.普通索引,没有任何限制;

    2.唯一性索引;

    3.主键索引;

    4.多列索引:创建一个索引,这个索引有多列 xx index(字段1,字段2),

    先用字段1排序,如果排不好的话在使用字段2进行排序。

    ​ *覆盖索引(innode):索引的列已经包含将要查找的列。

    **语法:**

    添加:

    1.创建表时添加:
    create table (

    ​ 列 类型,

    ​ 【unique|primary|fulltext】 index 索引名 (列)

    );

    2.创建表以后添加:

    alter table 表名 add index 索引名(列);

    3.careate 索引类型 索引名 on 表 (字段)

    (如果不指定索引名,默认索引名为列名)

    查看:show indexs from 表名;

    删除:alter table 表名 drop index 索引名;

    禁用:alter table 表名 disable keys;

    开启:alter table 表名 enable keys;

    (表分析: analyaze table 表名)

  • 相关阅读:
    FlashInspector 【Firefox浏览器插件,flash分析工具】
    屌丝和木耳
    Flash剪贴板功能
    sql newid()随机函数
    SQL 视图
    向SQL Server 现有表中添加新列并添加描述.
    sql server 约束 查找
    创建与删除SQL约束或字段约束
    SQLServer
    利用排序规则特点计算汉字笔划和取得拼音首字母
  • 原文地址:https://www.cnblogs.com/susexuexi011/p/14483072.html
Copyright © 2011-2022 走看看