码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 三大范式,ER图,外键,视图,索引,触发器


    目录

    一、数据库三大范式

    二、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.添加时外键的值必须是在外键表存在的

    MySchool数据库设计优化所有作业习题答案+课件
    zip 0星 超过10%的资源 50.68MB
    下载

    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、视图的操作

    1. #创建视图
    2. create or replace view v1
    3. as select * from student;
    4. #使用视图
    5. select * from v1;
    6. #修改视图
    7. create or replace view v1
    8. as select * from student;
    9. #删除视图
    10. drop view v1;
    11. #查看所有视图
    12. select * from information_schema.views where table_schema=‘db1’;

    五、索引

    5.1、什么是索引?

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

    5.2、索引的分类

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

    MySchool数据库设计优化 课件PPT 课后习题代码答案 上机练习代码
    zip 5星 超过95%的资源 50.68MB
    下载

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

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

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

    5.3、索引的底层实现原理

    B+树

    5.4、索引的操作

    1. -- 创建普通索引
    2. -- CREATE index i_tc9_a on tc_9(bbb(15));
    3. CREATE index index1 on class(cid);
    4. -- 查看表中有哪些索引
    5. show index from class;
    6. ​
    7. -- 删除索引
    8. drop index index1 on class;
    9. ​
    10. -- 创建一个唯一值索引
    11. 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、创建触发器

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

    6.4、删除触发器

    drop trigger 名称;

    6.5、查看触发器

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

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

    show create TRIGGER t1;

    七、存储过程

  • 相关阅读:
    G1D22-安装burpsuite&AttacKG
    解析字符串后分组写成多文件
    信息科技如何做好风险管理
    EMC原理-传导(共模、差模)与辐射(近场、远场)详解
    Redis的发布和订阅
    数据爬取京东,按时间划分的,手机价格,销量
    看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
    Hexagon_V65_Programmers_Reference_Manual (51)
    Weblogic SSRF漏洞
    CRM系统化整合从N-1做减法实践
  • 原文地址:https://blog.csdn.net/qq_60154877/article/details/126316153
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号