数据库的基础知识

数据库基础

数据库的定义

1.DB
DB的全称是data base,即数据库的意思。数据库实际上就是一个文件集合,是一个存储 数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;

2.DBMS
DBMS的全称是Database Management System,即数据库管理系统的意思,是一个软件,用来管理数据库文件的软件,用户可以访问DBMS对数据进行增删改查操作,常见DBMS有: MySQL、oracle、DB2、sqlite、sqlserver等

数据库的分类

1.关系型数据库: 经过数学理论验证 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位;
2.非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据;

主流关系数据

1.MySQL: 08年被sun公司收购09年sun被oracle收购,开源免费,到oracle发布了5.0版本(使用了oracle核心技术 性能提高30%),因为Oracle数据库地位受到威胁,计划把mysql闭源,原mysql作者们不干了,原程序员出去单干,发布了MariaDB数据库、名字是因为作者女儿叫Maria ,市场排名第一;
2.Oracle:闭源、最贵、性能最高,市场排名第二;
3.SQLServer:微软公司的产品,市场排名第三,主要应用在.net(C#)开发的网站中;
4.DB2:IBM公司有做网站的完整解决方案(操作系统,we服务器(如tomcat),数据库等)主要应用在银行等国有大型企业中;
5.sqlite:轻量级数据库,只有几十k,一般应用在嵌入式和移动设备中;

二维表

1.二维表介绍
在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系),二维表名就是关系名。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。
常用的关系术语如下:
记录 二维表中每一行称为一个记录,或称为一个元组。
字段 二维表中每一列称为一个字段,或称为一个属性。
域 即属性的取值范围。
2.二维表的性质
(1)二维表中元组个数是有限的——元组个数有限性;
(2)二维表中元组均不相同——元组的唯一性;
(3)二维表中元组的次序可以任意交换——元组的次序无关性;
(4)二维表中元组的分量是不可分割的基本数据项——元组分量的原子性;
(5)二维表中属性名各不相同——属性名唯一性;
(6)二维表中属性与次序无关,可任意交换——属性的次序无关性;
(7)二维表属性的分量具有与该属性相同的值域——分量值域的统一性。

数据库主键,外键和索引

1.主键
定义:唯一标识一条记录,不能有重复的,不允许为空
作用:用来保证数据完整性
个数:主键只能有一个
2.外键
定义:表的外键是另一表的主键, 外键可以有重复的, 可以是空值
作用:用来人其他表格建立练习
个数:主键可以具有多个
3.索引
定义:该字段没有重复值,但可以有一个空值
作用:可以提高查询排序的数据
个数:一个表可以具有多个唯一索引

数据库表分类

1.每个表应该只包含关于一个主题的信息
当每个表只包含关于一个主题的信息时,就可以独立于其他主题来维护该主题的信息。例如,应将教师基本信息保存在“教师”表中。如果将这些基本信息保存在“授课”表中,则在删除某教师的授课信息,就会将其基本信息一同删除。
2.表中不应包含重复信息
表间也不应有重复信息 每条信息只保存在一个表中,需要时只在一处进行更新,效率更高。例如,每个学生的姓名、性别等信息,只在“学生”表中保存,而“成绩”中不再保存这些信息。

数据库视图

  1. 视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
    视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
    视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。
    视图看上去非常像数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)
    2.特性
  • 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
  • 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:
    使用权限可被限制在基表的行的子集上。
    使用权限可被限制在基表的列的子集上。
    使用权限可被限制在基表的行和列的子集上。
    使用权限可被限制在多个基表的连接所限定的行上。
    使用权限可被限制在基表中的数据的统计汇总上。
    使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。
    视图的安全性可以防止未授权用户查看特定的行或列,使用户只能看到表中特定行的方法如下:
    1 在表中增加一个标志用户名的列;
    2 建立视图,使用户只能看到标有自己用户名的行;
    3 把视图授权给其他用户。
  • 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。
    视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:
    1) 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。
    2) 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。
    3) 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。
    4) 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。
    3.功能
    安全:有的数据是需要保密的,如果直接把表给出来进行操作会造成泄密,那么可以通过创建视图把相应视图的权限给出来即可保证数据的安全。
    高效:复杂的连接查询,每次执行时效率比较低,可以考虑新建视图,每次从视图中获取,将会提高效率。
    定制数据:将常用的字段放置在视图中

参考资料

[1]: [SQL必知必会] https://u18036366.pipipan.com/fs/18036366-300877816
额外的参考资料:
[2]: [MySQL教程] http://www.runoob.com/mysql/mysql-tutorial.html
[3]:虚拟机安装Linux https://blog.csdn.net/yang5726685/article/details/78635388
[4]:Windows 10下 MySQL https://cloud.tencent.com/developer/article/1010608
[5]:Windows 安装 MySQL 常见问题 https://blog.csdn.net/qq_40942329/article/details/79125366

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章