数据库知识点总结?数据库原理与技术
大家好,今天给各位分享数据库知识点总结的一些知识,其中也会对数据库原理与技术进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
MySQL知识点总结
只要字段值还可以继续拆分,就不满足第一范式。
范式设计得越详细,对某些实际操作可能会更好,但并非都有好处,需要对项目的实际情况进行设定。
在满足第一范式的前提下,其他列都必须完全依赖于主键列。如果出现不完全依赖,只可能发生在联合主键的情况下:
实际上,在这张订单表中,product_name只依赖于 product_id,customer_name只依赖于 customer_id。也就是说,product_name和 customer_id是没用关系的,customer_name和 product_id也是没有关系的。
这就不满足第二范式:其他列都必须完全依赖于主键列!
拆分之后,myorder表中的 product_id和 customer_id完全依赖于 order_id主键,而 product和 customer表中的其他字段又完全依赖于主键。满足了第二范式的设计!
在满足第二范式的前提下,除了主键列之外,其他列之间不能有传递依赖关系。
表中的 customer_phone有可能依赖于 order_id、 customer_id两列,也就不满足了第三范式的设计:其他列之间不能有传递依赖关系。
修改后就不存在其他列之间的传递依赖关系,其他列都只依赖于主键列,满足了第三范式的设计!
查询每门课的平均成绩。
查询 score表中至少有 2名学生选修,并以 3开头的课程的平均分数。
分析表发现,至少有 2名学生选修的课程是 3-105、3-245、6-166,以 3开头的课程是 3-105、3-245。也就是说,我们要查询所有 3-105和 3-245的 degree平均分。
查询所有学生的 name,以及该学生在 score表中对应的 c_no和 degree。
通过分析可以发现,只要把 score表中的 s_no字段值替换成 student表中对应的 name字段值就可以了,如何做呢?
查询所有学生的 no、课程名称( course表中的 name)和成绩( score表中的 degree)列。
只有 score关联学生的 no,因此只要查询 score表,就能找出所有和学生相关的 no和 degree:
然后查询 course表:
只要把 score表中的 c_no替换成 course表中对应的 name字段值就可以了。
查询所有学生的 name、课程名( course表中的 name)和 degree。
只有 score表中关联学生的学号和课堂号,我们只要围绕着 score这张表查询就好了。
只要把 s_no和 c_no替换成 student和 srouse表中对应的 name字段值就好了。
首先把 s_no替换成 student表中的 name字段:
再把 c_no替换成 course表中的 name字段:
查询 95031班学生每门课程的平均成绩。
在 score表中根据 student表的学生编号筛选出学生的课堂号和成绩:
这时只要将 c_no分组一下就能得出 95031班学生每门课的平均成绩:
查询在 3-105课程中,所有成绩高于 109号同学的记录。
首先筛选出课堂号为 3-105,在找出所有成绩高于 109号同学的的行。
查询所有成绩高于 109号同学的 3-105课程成绩记录。
查询所有和 101、108号学生同年出生的 no、name、birthday列。
查询'张旭'教师任课的学生成绩表。
首先找到教师编号:
通过 sourse表找到该教师课程号:
通过筛选出的课程号查询成绩表:
查询某选修课程多于5个同学的教师姓名。
首先在 teacher表中,根据 no字段来判断该教师的同一门课程是否有至少5名学员选修:
查看和教师编号有有关的表的信息:
我们已经找到和教师编号有关的字段就在 course表中,但是还无法知道哪门课程至少有5名学生选修,所以还需要根据 score表来查询:
根据筛选出来的课程号,找出在某课程中,拥有至少5名学员的教师编号:
在 teacher表中,根据筛选出来的教师编号找到教师姓名:
查询“计算机系”课程的成绩表。
思路是,先找出 course表中所有计算机系课程的编号,然后根据这个编号查询 score表。
查询计算机系与电子工程系中的不同职称的教师。
查询课程 3-105且成绩至少高于 3-245的 score表。
查询课程 3-105且成绩高于 3-245的 score表。
查询某课程成绩比该课程平均成绩低的 score表。
查询所有任课(在 course表里有课程)教师的 name和 department。
查询 student表中至少有 2名男生的 class。
查询 student表中不姓"王"的同学记录。
查询 student表中每个学生的姓名和年龄。
查询 student表中最大和最小的 birthday值。
以 class和 birthday从大到小的顺序查询 student表。
查询"男"教师及其所上的课程。
查询最高分同学的 score表。
查询和"李军"同性别的所有同学 name。
查询和"李军"同性别且同班的同学 name。
查询所有选修"计算机导论"课程的"男"同学成绩表。
需要的"计算机导论"和性别为"男"的编号可以在 course和 student表中找到。
建立一个 grade表代表学生的成绩等级,并插入数据:
查询所有学生的 s_no、c_no和 grade列。
思路是,使用区间( BETWEEN)查询,判断学生的成绩( degree)在 grade表的 low和 upp之间。
准备用于测试连接查询的数据:
分析两张表发现,person表并没有为 cardId字段设置一个在 card表中对应的 id外键。如果设置了的话,person中 cardId字段值为 6的行就插不进去,因为该 cardId值在 card表中并没有。
要查询这两张表中有关系的数据,可以使用 INNER JOIN(内连接)将它们连接在一起。
完整显示左边的表( person),右边的表如果符合条件就显示,不符合则补 NULL。
完整显示右边的表( card),左边的表如果符合条件就显示,不符合则补 NULL。
完整显示两张表的全部数据。
在 MySQL中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。
比如我们的银行转账:
在实际项目中,假设只有一条 SQL语句执行成功,而另外一条执行失败了,就会出现数据前后不一致。
因此,在执行多条有关联 SQL语句时,事务可能会要求这些 SQL语句要么同时执行成功,要么就都执行失败。
在 MySQL中,事务的自动提交状态默认是开启的。
自动提交的作用:当我们执行一条 SQL语句的时候,其产生的效果就会立即体现出来,且不能回滚。
什么是回滚?举个例子:
可以看到,在执行插入语句后数据立刻生效,原因是 MySQL中的事务自动将它提交到了数据库中。那么所谓回滚的意思就是,撤销执行过的所有 SQL语句,使其回滚到最后一次提交数据时的状态。
在 MySQL中使用 ROLLBACK执行回滚:
由于所有执行过的 SQL语句都已经被提交过了,所以数据并没有发生回滚。那如何让数据可以发生回滚?
将自动提交关闭后,测试数据回滚:
那如何将虚拟的数据真正提交到数据库中?使用 COMMIT:
事务的实际应用,让我们再回到银行转账项目:
这时假设在转账时发生了意外,就可以使用 ROLLBACK回滚到最后一次提交的状态:
这时我们又回到了发生意外之前的状态,也就是说,事务给我们提供了一个可以反悔的机会。假设数据没有发生意外,这时可以手动将数据真正提交到数据表中:COMMIT。
事务的默认提交被开启(@@AUTOCOMMIT= 1)后,此时就不能使用事务回滚了。但是我们还可以手动开启一个事务处理事件,使其可以发生回滚:
仍然使用 COMMIT提交数据,提交后无法再发生本次事务的回滚。
事务的四大特征:
事务的隔离性可分为四种(性能从低到高):
查看当前数据库的默认隔离级别:
修改隔离级别:
测试 READ UNCOMMITTED(读取未提交)的隔离性:
由于小明的转账是在新开启的事务上进行操作的,而该操作的结果是可以被其他事务(另一方的淘宝店)看见的,因此淘宝店的查询结果是正确的,淘宝店确认到账。但就在这时,如果小明在它所处的事务上又执行了 ROLLBACK命令,会发生什么?
这就是所谓的脏读,一个事务读取到另外一个事务还未提交的数据。这在实际开发中是不允许出现的。
把隔离级别设置为 READ COMMITTED:
这样,再有新的事务连接进来时,它们就只能查询到已经提交过的事务数据了。但是对于当前事务来说,它们看到的还是未提交的数据,例如:
但是这样还有问题,那就是假设一个事务在操作数据时,其他事务干扰了这个事务的数据。例如:
虽然 READ COMMITTED让我们只能读取到其他事务已经提交的数据,但还是会出现问题,就是在读取同一个表的数据时,可能会发生前后不一致的情况。*这被称为*不可重复读现象( READ COMMITTED)。
将隔离级别设置为 REPEATABLE READ(可被重复读取):
测试 REPEATABLE READ,假设在两个不同的连接上分别执行 START TRANSACTION:
当前事务开启后,没提交之前,查询不到,提交后可以被查询到。但是,在提交之前其他事务被开启了,那么在这条事务线上,就不会查询到当前有操作事务的连接。相当于开辟出一条单独的线程。
无论小张是否执行过 COMMIT,在小王这边,都不会查询到小张的事务记录,而是只会查询到自己所处事务的记录:
这是因为小王在此之前开启了一个新的事务( START TRANSACTION)*,那么*在他的这条新事务的线上,跟其他事务是没有联系的,也就是说,此时如果其他事务正在操作数据,它是不知道的。
然而事实是,在真实的数据表中,小张已经插入了一条数据。但是小王此时并不知道,也插入了同一条数据,会发生什么呢?
报错了,操作被告知已存在主键为 6的字段。这种现象也被称为幻读,一个事务提交的数据,不能被其他事务读取到。
顾名思义,就是所有事务的写入操作全都是串行化的。什么意思?把隔离级别修改成 SERIALIZABLE:
还是拿小张和小王来举例:
此时会发生什么呢?由于现在的隔离级别是 SERIALIZABLE(串行化),串行化的意思就是:假设把所有的事务都放在一个串行的队列中,那么所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作(这意味着队列中同时只能执行一个事务的写入操作)。
根据这个解释,小王在插入数据时,会出现等待状态,直到小张执行 COMMIT结束它所处的事务,或者出现等待超时。
转载:
Hbase知识点总结
hbase概念:
非结构化的分布式的面向列存储非关系型的开源的数据库,根据谷歌的三大论文之一的bigtable
高宽厚表
作用:
为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
能干什么:
存储大量结果集数据,低延迟的随机查询。
sql:
结构化查询语言
nosql:
非关系型数据库,列存储和文档存储(查询低延迟),hbase是nosql的一个种类,其特点是列式存储。
非关系型数据库--列存储(hbase)
非关系型数据库--文档存储(MongoDB)
非关系型数据库--内存式存储(redis)
非关系型数据库--图形模型(graph)
hive和hbase区别?
Hive的定位是数据仓库,虽然也有增删改查,但其删改查对应的是整张表而不是单行数据,查询的延迟较高。其本质是更加方便的使用mr的威力来进行离线分析的一个数据分析工具。
HBase的定位是hadoop的数据库,电脑培训发现是一个典型的Nosql,所以HBase是用来在大量数据中进行低延迟的随机查询的。
hbase运行方式:
standalonedistrubited
单节点和伪分布式?
单节点:单独的进程运行在同一台机器上
hbase应用场景:
存储海量数据低延迟查询数据
hbase表由多行组成
hbase行一行在hbase中由行健和一个或多个列的值组成,按行健字母顺序排序的存储。
计算机基础知识点总结归纳
随着信息技术的发展,计算机日益走进人们的工作、学习和生活。下面是由我为大家整理的“计算机基础知识点总结归纳”,仅供参考,欢迎大家阅读。
计算机基础知识点归纳总结硬件知识
1.计算机系统的组成包括硬件系统和软件系统硬件系统分为三种典型结构:
(1)单总线结构;
(2)、双总线结构;
(3)、采用通道的大型系统结构。
中央处理器CPU包含运算器和控制器。
2.指令系统
指令由操作码和地址码组成。
3.存储系统分为主存—辅存层次和主存—Cache层次。
Cache作为主存局部区域的副本,用来存放当前最活跃的程序和数据。计算机中数据的表示
Cache的基本结构:Cache由存储体、地址映像和替换机构组成。
4.通道是一种通过执行通道程序管理I/O操作的控制器,它使CPU与I/O操作达到更高的并行度。
5.总线从功能上看,系统总线分为地址总线(AB)、数据总线(DB)、控制总线(CB)。
6.磁盘容量记计算。
非格式化容量=面数*(磁道数/面)*内圆周长*最大位密度
格式化容量=面数*(磁道数/面)*(扇区数/道)*(字节数/扇区)
7、数据的表示方法原码和反码
[+0]原=000…00 [—0]原=100……00 [+0]反=000…00 [—0]反=111…11
正数的原码=正数的补码=正数的反码负数的反码:符号位不变,其余位变反。
操作系统
操作系统定义:用以控制和管理系统资源,方便用户使用计算机的程序的集合。
功能:是计算机系统的资源管理者。特性:并行性、共享性
分类:多道批处理操作系统、分时操作系统、实时操作系统、网络操作系统。
进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
进程分为三种状态:运行状态(Running)、就绪状态(Ready)、等待状态(Blocked)。
虚拟存储器:是指一种实际上并不以物理形式存在的虚假的存储器。
页架:把主存划分成相同大小的存储块。
页:把用户的逻辑地址空间(虚拟地址空间)划分成若干个与页架大小相同的部分,每部分称为页。
页面置换算法有:
1、最佳置换算法OPT
2、先进先出置换算法FIFO
3、最近最少使用置换算法LRU
4、最近未使用置换算法NUR
使独占型设备成为共享设备,从而提高设备利用率和系统的效率。
SPOOL系统:实现虚拟设备技术的硬件和软件系统,又Spooling系统,假脱机系统。
作业调度算法:
1、先来先服务调度算法FIFO:按照作业到达系统或进程进入就绪队列的.先后次序来选择。
2、优先级调度算法:按照进程的优先级大小来调度,使高优先级进程得到优先处理的调度策略。
3、最高响应比优先调度算法:每个作业都有一个优先数,该优先数不但是要求的服务时间的函数,而且是该作业为得到服务所花费的等待时间的函数。以上三种都是非抢占的调度策略。
嵌入式系统基本知识
定义:以应用为中心,计算机技术为基础,软硬件可裁剪,适应于特定应用系统,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。
特点:硬件上,体积小、重量轻、成本低、可靠性高等特点、使用专用的嵌入式CPU。软件上,代码体积小、效率高,要求响应速度快,能够处理异步并发事件,实时处理能力。
应用:从航天飞机到家用微波炉。
滑动窗口协议规定重传未被确认的分组,这种分组的数量最多可以等于滑动窗口的大小,TCP采用滑动窗口协议解决了端到端的流量控制。
拓展阅读:计算机类有哪些专业 1.计算机科学与技术专业
计算机科学与技术是研究计算机的设计与制造和利用计算机进行信息获取、表示、存储、处理、控制等的理论、原则、方法和技术的学科。
该专业培养德、智、体全面发展的,具有良好综合素质和开拓创新能力的计算机专业人才。通过系统学习掌握该专业的基本理论、基础知识和基本技能与方法,能在科技、教育和经济部门从事研究、教学、应用开发和管理工作。
2.软件工程专业
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。
3.网络工程专业
网络工程是指按计划进行的以工程化的思想、方式、方法,设计、研发和解决网络系统问题的工程。培养掌握网络工程的基本理论与方法以及计算机技术和网络技术等方面的知识,能运用所学知识与技能去分析和解决相关的实际问题,可在信息产业以及其他国民经济部门从事各类网络系统和计算机通信系统研究、教学、设计、开发等工作的高级网络科技人才。
本专业培养德、智、体、美全面发展,掌握自然科学和人文社科基础知识、计算机科学基础理论、计算机软硬件系统及应用知识、网络工程的专业知识及应用知识,具有创新意识,具有本专业领域分析问题和解决问题的能力,具备一定的实践技能,并具有良好的外语应用能力的高级研究应用型专门人才。
4.数字媒体技术专业
数字媒体技术是一种开放式的平台,主要包含场景设计、角色形象设计、游戏程序设计、多媒体后期处理、人机交互技术,是主要针对游戏开发、网站美工和创意设计类工作设计的专业。
本专业培养德智体美全面发展的、面向当今信息化时代的、从事数字媒体开发与数字传播的专业人才。毕业生将兼具信息传播理论、数字媒体技术和设计管理能力,可在党政机关、新闻媒体、出版、商贸、教育、信息咨询及IT相关等领域,
5.电子与计算机工程专业
电子与计算机工程专业是教育部的特设专业,结合电气工程和计算机科学,具有很好的发展前景。电子与计算机工程专业是将软件设计与硬件设计一体化,并结合电力电子学的一门专业。
该专业学生主要学习电学以及计算机技术的基本理论和知识,受到相关的训练,具有解决实际问题及相关工作的能力。
关于数据库知识点总结和数据库原理与技术的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。