数据库基础知识复习

数据库知识整理,很详细完整,适合入门或者复习。 数据库知识点整理,包括数据库和表的创建,增删改查,子查询,关联查询,连接,交并差集,索引,序列,视图,各种函数,DDL、DML、DQL的实例。 每个知识点都有基于ORACLE scott 账户下employee 表的实例代码。 立即下载
1. 1NF 2NF 3NF BCNF

1NF的定义为:符合1NF的关系中的每个属性都不可再分.
这里写图片描述

商品表(编号,品名,进货数量,进货单价,销售数量,销售单价,备注);

2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
如果码只有一个也就说不是组合属性组成的,那就不存在非主属性对码的部分依赖,因为码不可拆分;
例如:
学生_成绩(学号,姓名,系,系主任,课程,成绩)
第一步:确定码:设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K,那么我们称 K 为候选码,简称为码。在实际中我们通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。(实际应用中为了方便,通常选择其中的一个码作为主码)
码:(学号,课程)
第二:判断是否存在非主属性对码的部分依赖
(学号,课程)—>(姓名)
姓名只依赖于学号,所以存在非主属性对码的部分依赖
修改:
选课表(学号,课程,成绩)
学生(学号,姓名,系名,系主任)
3NF:在2NF的基础之上,消除了非主属性对于码的传递函数依赖
例如上面的(学号,姓名,系名,系主任)存在这样的传递依赖,系主任依赖于系名,系名依赖于学号,学号–>系名–>系主任
修改:
学生(学号,姓名,系名)
系(系名,系主任)
BCNF: 不存在主属性对于码的部分函数依赖与传递函数依赖
仓库(仓库名,管理员,物品名,数量)
显然上面满足三范式,不存在可分的字段;不存在非主属性对码的部分依赖;不存在非主属性对码的传递依赖:码(仓库名,管理员,物品名);
但是在码中存在主属性对码的部分依赖管理员依赖于仓库,
修改:
仓库(仓库名,管理员)
物品(仓库名,物品,数量)

参考文档:罗老师数据库三范式


2. 数据库索引

索引是用于加速数据存取的数据对象,合理的使用索引可以大幅降低I/O次数,从而提高数据访问性能。

create index indexName on tableName(col1Name[, col2Name,...]);

索引的使用原则:在大表上建立索引才有意义;在where子句(根据where条件创建索引,并且SQL语句的查询条件是从右向左);连接条件上经常使用的列上建立索引(外键);索引的层次不宜超过4层。

索引的缺点:建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引;更新数据时,必须同时对索引进行更新,以维持数据和索引的一致性。

聚集索引: 表中存储的数据按照索引的顺序存储,检索效率比普通索引高。逻辑顺序决定了表中相应行的物理顺序。
非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。
索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块;

Oracle数据库提供以下类型的索引:

B-tree索引(Oracle默认建立B-tree索引)
B-tree聚集索引(B-tree cluster indexes)
Hash聚集索引(Hash cluster indexes)
反向索引(Reverse key indexes)
位图索引(Bitmap indexes)
位图连接索引(Bitmap join indexes)

Oracle也支持基于函数的索引和某个应用的域索引(domain indexes)。
B-TREE索引(二叉树索引,默认情况下,我们建的索引都是此种类型)
一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。可以用下图一来描述B树索引的结构。其中,B表示分支节点,而L表示叶子节点。

这里写图片描述

对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是升序排列)。每 个索引条目(也可以叫做每条记录)都具有两个字段。第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;第二个字段为四个字节,表示所 链接的索引块的地址,该地址指向下面一个索引块。在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。比如从上图一可以看到,对于 根节点块来说,包含三条记录,分别为(0 B1)、(500 B2)、(1000 B3),它们指向三个分支节点块。其中的0、500和1000分别表示这三个分支节点块所链接的键值的最小值。而B1、B2和B3则表示所指向的三个分支节点块的地址。

对 于叶子节点块来说,其所包含的索引条目与分支节点一样,都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。每个索引条目(也可以 叫做每条记录)也具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引来说则是多个值组合在一起的。第二个字段表示键值所 对应的记录行的ROWID,该ROWID是记录行在表里的物理地址。如果索引是创建在非分区表上或者索引是分区表上的本地索引的话,则该ROWID占用6个字节;如果索引是创建在分区表上的全局索引的话,则该ROWID占用10个字节。

bitmap索引(位图索引):
位图(bitmap)索引是另外一种索引类型,它的组织形式与B树索引相同,也是一棵平衡树。与B树索引的区别在于叶子节点里存放索引条目的方式不同。从前面我们知道,B树索引的叶子节点里,对于表里的每个数据行,如果被索引列的值不为空的,则会为该记录行在叶子节点里维护一个对应的索引条目。 而位图索引则不是这样,其叶子节点里存放的索引条目如下图所示。
假设某个表T里所有的记录在列C1上只具有三个值:01、02和03。在表T的C1列上创建位图索引以后,则叶子节点的内容如图9-14所示。可以看到,位图索引只有三个索引条目,也就是每个C1列的值对应一个索引条目。位图索引条目上还包含表里第一条记录所对应的ROWID以及最后一条记录所对应的ROWID。索引条目的最后一部分则是由多个bit位所组成的bitmap,每个bit位就对应一条记录。
这里写图片描述

当发出where c1=’01’这样的SQL语句时,oracle会去搜索01所在的索引条目,然后扫描该索引条目中的bitmap里所有的bit位。第一个bit位为 1,则说明第一条记录上的C1值为01,于是返回第一条记录所在的ROWID(根据该索引条目里记录的start ROWID加上行号得到该记录所在的ROWID)。第二个bit位为0,则说明第二条记录上的C1值不为01,依此类推。另外,如果索引列为空,也会在位 图索引里记录,也就是将对应的bit位设置为0即可。 如果索引列上不同值的个数比较少的时候,比如对于性别列(男或女)等,则使用位图索引会比较好,因为它对空间的占用非常少(因为都是用bit位来表示表里 的数据行),从而在扫描索引的时候,扫描的索引块的个数也比较少。可以试想一下,如果在列的不同值非常多的列上,比如主键列上,创建位图索引,则产生的索 引条目就等于表里记录的条数,同时每个索引条目里的bitmap里,只有一个1,其它都是0。这样还不如B树索引的效率高。 如果被索引的列经常被 更新的话,则不适合使用位图索引。因为当更新位图所在的列时,由于要在不同的索引条目之间修改bit位,比如将第一条记录从01变为02,则必须将01所 在的索引条目的第一个bit位改为0,再将02所在的索引条目的第一个bit位改为1。因此,在更新索引条目的过程中,会锁定位图索引里多个索引条目。也 就是同时只能有一个用户能够更新表T,从而降低了并发性。 位图索引比较适合用在数据仓库系统里,不适合用在OLTP系统里。

光纤接口类型与应用场景全解析 本文全面解析了光纤接口的类型与应用场景,详细介绍了SC、LC、FC和ST等主流光纤接口的特点及适用环境。从数据中心的高密度布线到工业环境的极端条件,提供了专业的接口选型指南和实战经验,帮助读者根据具体需求选择最合适的光纤接口方案。 阅读详情

相关推荐

Robocopy 参数进阶:/MIR 镜像同步与 /PURGE 删除操作的风险规避指南

本文深入解析Robocopy的/MIR镜像同步与/PURGE删除操作的高级用法及风险规避策略。通过实际案例和四重防护机制,指导用户安全实现目录同步,避免数据丢失风险,特别适用于远程主机间的数据复制与备份场景。

weixin_33462927的博客 355

关系数据库设计之三范式大白话

简单来说: 首先,要知道范式是用于我们设计数据库表结构用的,所以它叫范式嘛,就是按这个套路来设计表的结构。 其次,要清楚 3NF的表肯定满足2NF和1NF的要求,2NF的表肯定满足1NF的要求,也就是1NF->2NF->3NF 要求越来越多,设计的表结构越来越严格。 然后,我们为啥要按范式来设计数据表呢,有什么好处呢,我的理解是关系型数据库嘛,描述的是关系,范式越严格的表设计表现出来的关系越直接越清楚。 1NF: 每个字段下只表示一个属性。以下进货和销售字段都有两...

bo_self_effacing的博客 2005

Windows10下部署Heygem进行数字人生成

对于使用Heygem生成数字人,需要注意几个问题: + 需要使用Nvidia的显卡。 + 需要在Windows上进行本地部署。主要原因为客户端是Windows的,客户端对上传的视频写入硬编码的`D:\heygem_data\voice\data`目录,需要在容器上读取这些文件。 + 需要在Windows上部署Docker,将Windows的目录映射到容器中,由容器中的服务进行读取。 + 需要特别注意,一定要有D盘,这个D盘是Windows的D盘,不能是插入的USB设备后产生的D盘。 + 需要下载3个Doc

冀辉的博客 5617

第四章 关系数据库理论的规范化设计 各种函数依赖

1.第一范式 2.第二范式

Jay_fearless的博客 1371

【迁移学习综述】

迁移学习的目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。

afadgas的博客 4318

消费级显卡跑大模型:RTX 3060 12G 部署 70 亿参数 AI 编程助手的优化实战

本文详细介绍了如何在消费级显卡RTX 3060 12G上,通过量化、投机解码和分页KV-Cache等核心优化技术,成功部署并流畅运行70亿参数的CodeLlama-7B编程助手。文章提供了从环境配置、模型准备到参数调优的完整实战笔记,实测显存占用降至7.3GB,生成速度达21.7 token/秒,为开发者和技术爱好者提供了可行的本地AI部署方案。

weixin_29053067的博客 1251

数据库设计三大范式应用实例剖析

引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住。所以我们很多人就根本不按

xuehuashijie的专栏 480

Python爬虫-汽车之家各车系月销量榜数据

本文是该专栏的第41篇,后面会持续分享python爬虫干货知识。本文以某汽车平台为例,基于python采集该平台“各车系月销量”的榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1617

数据库系统概论复习-第六章范式

数据库期末复习专用!

weixin_48637535的博客 880

安卓手机强制清理数据恢复出厂设置后无法设置密码怎么办?(分享亲身经历的有效解决方案)

📱安卓手机强制清数据恢复出厂设置后,竟无法设置锁屏密码!本文将解析问题根源,分享亲测有效的解决方案,帮你快速摆脱困扰🎉

XiaoqiangClub的博客 240

【软考高级架构】论文范文17——论软件系统架构评估及其应用(ATAM)

软件系统架构评估是保障系统质量属性满足业务目标的关键环节,架构权衡分析方法(Architecture Trade-off Analysis Method,ATAM)作为一种主流的架构评估方法,通过场景识别、敏感点与权衡点分析、风险与非风险决策识别等系统化活动,能够在架构设计早期发现潜在问题,降低后期修改成本。本文以笔者主导的某省级智慧医疗平台架构评估项目为案例,围绕ATAM方法的应用展开论述。笔者担任系统架构师,负责组织评估团队、引导场景捕获、分析架构决策、识别风险与权衡点。

qq837993702的博客 489

python3基础知识复习 -- 数据库DB(mysql)

python, 免费的开源数据库:什么是SQL?SQL是Structured Query Language 结构化查询语言的缩写,用来访问和操作数据库系统。SQL语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还可以对数据库进行管理和维护操作。不同的数据库,都支持SQL,这样,我们通过学习SQL这一种语言,就可以操作各种不同的数据库。不通的数据库对SQL进行了不通的扩展,Oracle把自己扩展的SQL称为,Microsoft把自己扩展的SQL称为。总的来说,SQL语言定义了这么几种操作.

peanutfish的专栏 1237

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9520

数据库MySQL学习——day8(复习与巩固基础知识)

数据库是数据存储的容器,包含多个表,每个表由多个行和列组成。学习常用的SQL命令SELECT用于查询,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据。通过DROP TABLE等命令,可以创建和修改表结构。通过实践创建数据库、表格并插入、更新数据,掌握如何操作SQL数据库。

blackA_的博客 998

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Mysql数据库基础知识总复习

sql常用语法总结,Mysql基础知识,数据,数据库,数据库管理系统,数据库系统,数据库的发展阶段,数据库系统的结构,数据模型,设计模式,数据库的创建修改,删除,表的怎删改查,,索引,事务

qq_48584557的博客 5266

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

mysql数据库基础知识整合复习总结

mysql数据库基础知识整合复习总结 (上为样表) day01 创建学生表 create table student( id int not null, name varchar(20) not null, sex varchar(4), age int ); 插入两条记录 insert into student values(1,'张三','男',21), (2,'李四','男',20);...

Java从入门到入土 540

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL数据库基础知识复习

现在是2020年寒假,这也是新年写的第一篇博客,用了十几天的时间自学了数据库基础部分,想总结一下得失同时并通过写博客来复习前面学的知识点。 个人: 1、本来是计划一周学完基础部分的178p但没能完成这个计划,想了想原因还是寒假在家自控力不如在学校的时候,特别是前几天早上睡懒觉,也没有制定具体的计划每天学到什么地方,应该反思。 2、能静下来坐在这学数据库有两点原因: #1前端...

XJHui 485

[数据库]数据库基础知识复习

DQLDMLDDLDCL 数据查询语言DQL 数据操纵语言DML 数据定义语言DDL 数据控制语言DCL 数据库中的五大约束 数据库范式 1NF 2NF 3NF BCNF 存储过程 存储过程的好处写在前:最近在准备找实习,在复习之前学习过的数据库知识,特写此博文总结之。DQL、DML、DDL、DCLSQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言D

让勤奋成为习惯 758

SQL数据库基础知识复习

1. 三大数据库: a)  甲骨文         oracle b)  IBM              DB2 c)  Microsoft     SQL 2. 微软的SQL Server数据库,是一种关系数据库,属于C/S架构。数据管理需要登录连接到服务进行。 3. SQL数据库的图形管理界面工具是SQL Server Management Studio 4. 服务器管理 a)...

逻辑无道 1万+

数据库期末复习 基础知识

数据库期末复习 基础知识一、数据存储发展1.1 人工1.2 文件系统1.3 DBMS二、数据模型2.1 ER模型2.1.1 基本概念2.1.2 设计2.2 关系模型2.2.1 数据结构2.2.2 约束2.2.3 从ER模型转换三、DBS结构3.1 基本概念3.2 三级模式3.3 二级映像功能四、关系代数4.1 运算4.2 运算符4.2.1 交4.2.2 并4.2.3 差4.2.4 笛卡尔积4.2.5 选择4.2.6 投影4.2.7 连接4.2.8 除 一、数据存储发展 1.1 人工 1.2 文件系统 1.3

fixupyourmind的博客 473
上一篇: SpringMvc+Hibernate+Spring个人介绍网站
下一篇: Spring Bean的生命周期
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值