三大范式,ER图,外键,视图,索引,触发器

41 篇文章 0 订阅
7 篇文章 0 订阅

目录

一、数据库三大范式

二、ER图和实例

2.1、什么是ER图:

2.2、ER图核心要素:

2.3、画ER图和数据建模

三、外键约束与级联操作

3.1、什么是外键?

3.2、什么是外键约束?

3.3、创建表时添加外键约束

3.4、添加了外键约束后对数据的影响

3.5、外键约束的操作

3.6、级联操作

四、视图

4.1、什么是视图?

4.2、为什么使用视图?

4.3、视图的操作

五、索引

5.1、什么是索引?

5.2、索引的分类

5.3、索引的底层实现原理

5.4、索引的操作

5.5、索引的注意事项

六、触发器

6.1、什么是触发器

6.2、触发器的四大要素

6.3、创建触发器

6.4、删除触发器

6.5、查看触发器

6.6、查看触发器的创建语法

七、存储过程


一、数据库三大范式

第一范式:设计表时,应该尽量保证表中的属性不可再分割(单表如何设计)

第二范式:非主属性必须完全依赖主属性(多对多怎么设计)

第三范式:属性不依赖于其它非主属性。(一对多)

二、ER图和实例

2.1、什么是ER图:

ER(Entity,RelationShip)图又称实体关联图,实体联系图,是用来描述实体本身以及与其它实体关系的一种图。

2.2、ER图核心要素:

实体:长方形(t_student)

属性:椭圆形(id,name...)

关系:菱形(拥有)

2.3、画ER图和数据建模

网站:支持主流数据库模型设计,在线自动生成DDL-裕奥在线ER模型设计工具

三、外键约束与级联操作

3.1、什么是外键?

外键是用来建立两个表的关联关系的字段。

3.2、什么是外键约束?

用来约束表中的数据必须符合外键表的相关条件,以及在更新数据,自动对关联表做出相关处理。

3.3、创建表时添加外键约束

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,...]

REFERENCES <主表名> 主键列1 [,主键列2,...]

3.4、添加了外键约束后对数据的影响

1.添加时外键的值必须是在外键表存在的

2.修改时外键的值必须是在外键表存在的

3.删除时,不能先删除外键主表中外键所在行记录,只能先删除外键所在表的记录

3.5、外键约束的操作

1.建表后添加外键约束

ALTER TABLE <数据表名> ADD CONSTRAINT <索引名> FOREIGN KEY (<列名>) REFERENCES <主表名> (<列名>);

2.查看表中的外键

show indexes from 表名;

3.删除外键

alter table <表名> drop foreign key <外键约束名>;

3.6、级联操作

不做级联操作: restrict , no action

级联更新: cascade

级联删除: cascade

设为null: set null

(父表修改了,有关联关系的子表也会跟着改变

加是只能加外键的,删是只能删不是外键的)

四、视图

4.1、什么是视图?

视图是一张虚拟表,是一张逻辑表,本身没有数据。本质就是一段SQL,是一段保存在数据库,且可以重复利用的sql

4.2、为什么使用视图?

简单:不用关注视图背后的表结构和逻辑,就把视图当成一表用。

安全:仅能访问到视图返回的数据

4.3、视图的操作

#创建视图

create or replace view v1

as select * from student;

#使用视图

select * from v1;

#修改视图

create or replace view v1

as select * from student;

#删除视图

drop view v1;

#查看所有视图

select * from information_schema.views where table_schema=‘db1’;

五、索引

5.1、什么是索引?

索引类似于 书籍中的目录,本质是一张表。

5.2、索引的分类

主键索引:表中的主键字段就是一个索引

唯一值索引:添加唯一值约束时就会添加唯一值索引

普通索引:能快速检索想要的数据

全文索引:通常用于varchar,char,text类型的内容快速查找

5.3、索引的底层实现原理

B+树

5.4、索引的操作

-- 创建普通索引
--  CREATE index i_tc9_a on tc_9(bbb(15));
    CREATE index index1 on class(cid);
    
--  查看表中有哪些索引
show index from class;
​
-- 删除索引
drop index index1 on class;
​
-- 创建一个唯一值索引
CREATE UNIQUE index index1 on class(cid);

5.5、索引的注意事项

1.索引能增加查询速度,但会影响CUD速度

2.一张表最好不要超过3个索引

3.一个字段重复率超过30%时,不建议添加索引

六、触发器

6.1、什么是触发器

触发器(trigger):监听某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作(insert,delete,update)时就会激活它执行

6.2、触发器的四大要素

1.监听地点(table)

2.监听事件(insert/update/delete)

3.触发事件(after/before)

4.触发事件(内部执行逻辑)

6.3、创建触发器

delimiter $ //设置MySQL执行结束标志,默认为;
​
create trigger tg_name -- 触发器名称
after|before -- 触发时间
insert|update|delete -- 监听事件
on table_name -- 监听表名
for each row -- 固定写法
begin -- 开始触发器内部逻辑
        update goods set num=num-2 where gid = 1;
end$ -- 结束触发器内部逻辑
delimiter; //重新将MySQL执行结束标志设置为;

6.4、删除触发器

drop trigger 名称;

6.5、查看触发器

show triggers;

select * from information_schema.TRIGGERS where trigger_schema=‘db3’ and event_object_table = ‘t1’;

6.6、查看触发器的创建语法

show create TRIGGER t1;

七、存储过程

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值