热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据库概论的笔记-mysql教程

前言1.关系模型要求关系必须是规范化的,这些规范条件中最基本的一条就是,关系的每一分量(元组)必须是一个不可分得数据项中的一个属性。2.模式反应的是数据的结构及其联系,而实例反应的是数据库某一时刻的状态。3.数据库的三级模式是指数据库系统由外

前言 1.关系模型要求关系必须是规范化的,这些规范条件中最基本的一条就是,关系的每一分量(元组)必须是一个不可分得数据项中的一个属性。 2.模式反应的是数据的结构及其联系,而实例反应的是数据库某一时刻的状态。 3.数据库的三级模式是指数据库系统由外

前言

1.关系模型要求关系必须是规范化的,这些规范条件中最基本的一条就是,关系的每一分量(元组)必须是一个不可分得数据项中的一个属性。

2.模式反应的是数据的结构及其联系,而实例反应的是数据库某一时刻的状态。

3.数据库的三级模式是指数据库系统由外模式、模式和内模式构成。数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

4.模式实际上是数据库数据在逻辑上的视图,一个数据库只有一个模式。dbms提供模式描述语言(模式ddl)来严格地定义模式。

正文

数据库的三级模式结构

一个数据库可以有多个外模式,同一个模式可被某一用户的多个应用系统使用,但一个应用程序只能使用一个外模式。

\

1.一个模式可以有任意外模式,对于每一个外模式,数据库系统都有一个外模式/模式映像。

2.当模式改变时,有数据库管理员对外模式/模式映像做相应的改变,达到外模式不用改变的目的。

.应用程序是依据数据的外模式编写的,从而应用程序不必修改,这样保证了数据与程序的逻辑独立性。除非应用需求本身发生变化,否则应用程序一般不需要修改。

关系数据库

关系是笛卡尔积的有限子集

1.关系可以有三种类型:

基本表:实际存在的表,它是实际存储数据的逻辑表示。

查询表:查询结果对应的白哦

视图表:由基本表或其他的视图表导出的表,是虚表,它不对应实际存储的数据

2.关系模式是型,关系是值

关系的描述称为关系模式,他可以形式化的表示为R(U,D,DOM,F).

其中R为关系名,U为组成该关系的属性集合;D为属性组U中的属性所来自得域;DOM为属性向域的映像集合;F为属性间数据的依赖关系集合。

3.关系操作

\

4.关系的完整性

1.实体完整性和关系完整性是关系模型必须满足的完整性约束条件。

实体完整性规则:如果属性A是基本关系R的主属性(候选码),则A不能取空值。

参照完整性规则:如果属性F是关系基本关系R的外码,它与基本关系s的主码K相对应,则对于R中的每一个元组在F上的值必须为:

或者取值为空,或者等于s中某个元组的主码值

其中的R和S可以是同一个关系,比如班长是外码。

5.关系代数

传统的集合运算时二目运算,即并、差、交和笛卡尔积四种,将关系看成元组的集合,其运算是从关系的水平方向即行的角度来进行,而专门的关系运算包括选择、投影、连接和除运算,不仅涉及行而且涉及列。比较运算符>,<,=,<>和逻辑运算符是用来辅助专门的关系运算的。

1.等&#20540;连接:它是从关系RYuS的广义笛卡尔积中选取A和B属性&#20540;相等的那些元组。

2.自然连接是一种特殊的等&#20540;连接,他要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以自然连接是从行和列的角度进行的运算。

3.外连接:把舍弃的元组页保存在结果关系中,而在其他属性上填空&#20540;。如果把左边关系R中要舍弃的元组保留就叫左连接;如果把右边关系的元组保留就叫右外连接。

4.除运算

给定关系R(x,y)和s(y,z),其中x,y,z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系p(x),P是R中满足一下关系的元组在x属性列上的投影:元组在X上分量&#20540;x的象集Yx包含S在Y上投影的集合。

例子“

1.查询选修了全部课程的学生姓名。

select sname from student where not exists (select * from course where no exists(select * from sc where sno=student.sno and cno=course.cno));--sql中没有全称量词,但是,我们总可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。

2.查询至少选修了学生10094030011选修的全部课程的学号。可以使用蕴含逻辑运算。

select distinct sno from sc scx where not exists(select * from sc scy where scy.sno='100940311' and not exists(select * from sc scz where scz.sno=scx.sno and scz.cno=scy.cno));

删除模式

drop schema <模式名> --cascade级联和restrict两者必选其一。

定义视图

rdbms执行 create view 语句只是把视图的定义存入数据字典,并不执行其中的select语句。只是在对视图查询时,才按视图的定义从基本表中将数据查出。对于非行列子集视图的查询,就不一定能转换。因为where子句中是不能用聚集函数作为条件表达式。

grant和revoke

grate和revoke语句向用户授予或回收对数据的操作权限。对数据库模式的授权则由dba在创建用户时实现。

\

数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合,使用角色来管理数据库权限可以简化授权的过程。

mac 强制存取控制

仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。

注:

1.主体是系统中的活动实体,即包括都不陌生所管理的实际用户,页包括代表用户的各进程;客体是系统中的被动实体,是受主体操作的,包括文件、基本表、索引和视图。

2.mac是对数据库本身进行密级标志,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操作数据。

3.较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现mac时要首先实现dac,系统首先进行dac检查,对通过dac检查的允许存取的数据库对象再由系统自动进行mac检查,只有通过mac检查的数据库对象方可存取。

audit 审计

audit语句用来设置审计功能,noaudit语句取消审计功能。

audit alter,update on 表名;

审计设置以及审计内容一般都存放在数据字典中,必须把审计开关打开。即把系统参数audit_rail设置为true,才可以在系统表sys_audittrail中查看审计信息。

注:

号的安全性措施应该使得那些试图破坏安全的人所花费的代价远远超过他们所获得的利益

触发器 trigger

trigger是用户定义在关系表上的一类由事件驱动的特殊过程

1.创建触发器

create trigger <触发器名>

{before|after}<触发事件>on <表名>

foreach{row|statement}

[when <触发事件>]

<触发动作体>

2.删除触发器

drop trigger <触发器名> on <表名>

注:

1.foreach statement是语句级,触发动作只发生一次,如果表的触发器是行级的话,触发动作将作用于所有的行。

如果是行级触发器,用户可再过程中使用new和old引用update、insert事件之后的新&#20540;和update、delete事件之前的旧&#20540;。如果为语句级触发器,则不可使用new和old进行引用。

2.触发动作体可以是一个匿名PL/SQL块,也可以是对已创建的存储过程的调用。

3.同一个表的多个触发器激活时遵循如下的执行顺序。

1)执行该表上的before触发器

2)激活触发器上的sql语句

3)执行该表上的after触发器。

规范化

设R(U)是属性集U上的关系模式。X,Y是U的子集。如果对于R(U)的任意一个可能的关系R,R中不可能存在两个元组在X上的属性&#20540;,而在Y上的属性&#20540;不等,则称x函数圈定y,或者是y函数依赖于x。

1.完全函数依赖

在R(U)中,如果y函数依赖于y,并且对于x的任何一个真子集x',都有y函数不依赖于x'.则称y对x完全函数依赖。

2.范式

1)。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的激活。这种过程叫做规范化。

2)。关系,作为一张二维表,对他有一个最起码的要求:每一个分量必须是不可分的数据项。满足这一条件的关系模式就属于第一范式。

3.如果关系R属于第一范式,且每一个非主属性完全函数依赖于吗,即消除部分函数依赖,来达到第二范式。

4)。关系模式R中如果不存在这样的吗Y,属性组Y及非数主属性Z(Z不属于Y),使得y函数依赖于X,且Z函数依赖于Y成立,X不依赖于Y.。则称关系模式属于第三范式。如果是第三范式,它的任何非键属性都并不传递依赖于任何候选键。

进程

进程的概念一分为二,task是申请资源的最小单位,而thread是调度和运行的最小单位。一个task可以有多个thread,这些thread共享task的所有资源,共同完成一个任务。

1.线索机制与进程机制的比较

1)线索比进程占用更少的资源。

2线索调度比较灵活。.

3)线索切换开销较小:线索共享同一地址空间,而进程的地址空间是私有的。

4)线索通信简便

游标

系统为用户开设的一个数据缓冲池,存放sql语句的执行结果,每一个游标区都有一个名字。

PL/SQL ( procedural language/sql)

pl/sql是编写数据库存储过程的一种过程语言,是对sql的扩展,使其增加了过程化语句功能。

1.pl/sql概述

pl/sql程序的基本结构是块,每个快完成一个逻辑操作

注:

1.pl/sql块主要有两种类型,即命名块和匿名块。匿名块每次执行时都要进行编译,它不能存储到数据库中,也不能在其他的pl/sql块中引用。

2.存储过程和函数是命名快,他们被编译后保存在数据库中,可以被反复的调用,运行速度较快。

pl/sql的创建

1.creste procedure 过程名(【参数1,参数2,...】)

as

2.alter procedure 过程名1 rename to 过程名2;

执行pl/sql

call /perform procedure 过程名(【参数列表】);

删除pl/sql

drop procedure 关系名();

注:

1.l优化时,在既有选择操作和链接操作时,应当先做选择操作,这样参加连接的元组就可以大大减少。者是代数优化

2.选择操作算法有全表扫描和索引扫描,应当选用索引扫描。

3.表的连接采用index join代价页较小。这是物理优化。

总结

1.关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户自定义完整性。

2.存储过程与函数的区别

存储过程是用户定义的一系列sql语句的集合,设计特定的表或其他对象的任务,用户可以调用存储过程;

而函数通常是数据库已定义的方法,它接受参数并返回某种类型的&#20540;并且不涉及特定的用户表。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 本文介绍了在SQL中查询分组后每组行数的统计方法。通过使用count()函数和GROUP BY子句可以统计每组的行数,但是如何统计所有组的行数呢?本文提供了一种实现方法,并给出了相应的SQL查询语句。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
author-avatar
王素维060615
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有