mysql数据库---索引、视图、触发器

使用索引的区间:

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

少量数据不适合用索引

索引时候数据结构,可以加快我们查询的效率,但是创建索引需要复制数据,会占用资源。

使用索引注意:

1、少量数据不使用数据

2、查询次数少不使用索引

3、查询要携带索引字段,通常放在select之后第一个

4、索引提高了查询的效率,占有跟多的资源。

设立索引:

1、普通索引  ---  可以为空、可以重复 

ALTER TABLE 表名 add index (字段名);

2、唯一索引 ---  可以为空、不可重复

ALTER TABLE 表名 ADD UNIQUE (字段名);

or

ALTER TABLE 表名 ADD 字段名 type UNIQUE;

3、主键索引 --- 不可为空、不可重复

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

4、多列索引 

扫描二维码关注公众号,回复: 5599258 查看本文章
ALTER TABLE 表名 ADD INDEX(字段名1,字段名2...)

什么时候适合用视图?

当查询的复杂度比较大,多表,多关系,会导致查询语句混乱,不利于sql语句的编写和编 写的sql语句的可读性。于是mysql推出了试图模式。

视图的优缺点:

试图优点:

1、简单,试图构建了一个虚拟的逻辑表,这个表里面的数据来自于指定的查询,而查询可 以是多表联查。在使用的时候,我们可以直接对试图表里面的数据进行查询,不用从原始 表查。

2、安全,数据库有权限设置,但是没有对行和列的权限。所以如果对一个表里的数据设置 不同的权限,mysql本身的权限设置有些不够,我们用试图查询出用户需要的数据,用户基 于试图进行查询。

3、数据独立,一旦试图试图的结构决定,可以屏蔽表结构变化给用用户带来的影响,在原 表当做增加一列。

试图的缺点:

试图会降低查询的效率。尤其在试图当做的查询当做再次使用试图。

创建视图:

CREATE VIEW 视图名 AS(查询语句);
例如:CREATE VIEW tb2_auto_add AS(select * from student where gender = '女');

使用视图:

SELECT * FROM 视图名 where 查询条件;

查看所有视图:

SHOW TABLE STATUS WHERE COMMENT = "view";

删除视图:

DROP VIEW 视图名;

 触发器:

创建两个表:

CREATE TABLE tb1(name CHAR(20),age INT));
CREATE TABLE tb2(name CHAR(20),age INT));

创建触发器:

DELIMITER ||  
CREATE TRIGGER tb2_auto_add 
AFTER 
INSERT ON tb1 FOR EACH ROW
BEGIN
INSERT INTO tb2(name,age) 
value("学习",22);
end
||

DELIMITER ||      声明mysql的结束符,默认结束符是;

向tb1插入数据(记得将结束符调回默认;)

DELIMITER ;
insert into tb1(name,age) value("炸弹",82);

查看tb2 (自动添加一行数据)

触发器:

时间:

BEFOR 在触发器之前

AFTER在触发事件之后

事件:

UPDATE 更新事件

DELETE 删除事件

INSERT 插入事件

查看触发器:

SELECT * FROM information_scheme.triggers;

删除触发器:

DROP TRIGGER 触发器名;

注意:

在触发器当中,NEW变量代表触发表。

DROP TRIGGER 触发器名;
DELIMITER ||
create trigger tb5_add_tb3_id_1 after insert ON tb3
for each row
begin
insert into tb5(tb3_id) value(NEW.id);
end
||

猜你喜欢

转载自blog.csdn.net/weixin_42223833/article/details/88647780