数据库索引与视图触发器

本文介绍了数据库的索引、视图和触发器。索引是特殊数据结构,可加速查询,有普通、唯一、主键等类型。视图是对查询结果的记录,有简单、安全、数据独立等优点,但会降低查询效率。触发器是特殊存储过程,由事件触发,如INSERT、UPDATE和DELETE语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数据库索引与视图触发器
  • 索引

    是一种特殊的数据结构,它包含了对数据表里的记录的指针,添加索引可以加速查询。类似于字典的目录。我们创建索引,会创建出一个特殊的文件来存储,所以我们对查询频繁的表或者字段添加索引。

    当使用索引之后,查询指定的返回数据是总数据的3%-5%我们认为是合适的。

    索引分类:

    普通索引 就是一个普通的索引,可以为空,可以重复。

    ALTER TABLE student ADD INDEX(name);

    唯一索引 可以为空,不可以重复

    ALTER TABLE student ADD UNIQUE(name);

    主键索引 不可以为空,不可以重复

    主键本身就是主键索引,我们创建表,添加了主键,就相当于添加了主键索引

    ALTER TABLE student ADD PRIMARY KEY(id);

    多列索引

    ALTER TABLE student ADD INDEX(name,id,age);

    删除索引

    DROP INDEX name ON student;

    DROP INDEX id ON student; 删除复合索引,需要删除创建索引时候的第一个字段

    查看索引

    SHOW INDEX FROM student;

 

视图

当查询的复杂度比较大,这里指的是多字段,多关系的查询,会导致查询混乱。不利于sql语句的编写,sql语句的可读性,会影响到的是sql的拼接。视图模式就是对查询结果进行记录,视图当中只存放语句,不存放结果,类似于虚表。

视图的优点

  1. 简单,视图构建了一个虚拟的逻辑表,这个表的数据来源于指定的查询,而查询可以是多表,在使用的时候直接使用虚表代替复杂的查询。
  2. 安全,数据库有权限设置,但是没有对行和列进行设置的。所以,对同一个表当中完整的数据是否展示就是问题了。
  3. 数据独立,就相当于在原表的基础上加一列。

视图的缺点

视图会降低查询的效率,尤其是嵌套视图

创建视图

CREATE VIEW student_view AS (SELECT id,name,age FROM student);

查看视图

SHOW TABLE STATUS WHERE COMMENT = “VIEW”\G;

使用视图

删除视图

DROP VIEW student_view;

触发器

触发器(trigger),也叫触发程序,是与表有关的命名数据库对象,触发器是一种特殊的存储过程,但是触发器不需要语句调用,也不需要手动启动,他有事件触发,事件包括INSERT,UPDATE,和DELETE语句,当指定表发生指定动作,将激活触发器。

例如:

Tb1插入姓名,tb2 获取tb1的数据同时插入。

以major和course表为例子

  1. 修改msyql的语法结束符。

DELIMITER ||将语法分割符修改为||

  1. 设置触发器

CREATE TRIGGER major_auto_add AFTER INSERT ON major FOR EACH ROW

BEGIN

INSERT INTO course(NAME)

VALUE

("hello");

END||

CREATE TRIGGER major_auto_add  创建一个叫做major_auto_add的触发器

AFTER INSERT ON major FOR EACH ROW 在major的任意行发生插入事件之后

BEGIN 开始执行

INSERT INTO course(NAME)

VALUE

("hello");

END|| 触发器设置结束

 

 

  1. 将mysql的语法结束符修改回来。

DELIMITER ;将语法分割符修改为;

  1. 触发触发器

   

查看触发器

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS\G;

删除触发器

DROP TRIGGER major_auto_add;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值