数据库

Posted beimingdaoren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库相关的知识,希望对你有一定的参考价值。

数据库


顾名思义,数据库就比如是一个仓库。仓库里放着很多东西,有不同类别的。也不同地区仓储,怎么来理解。现实生活当中的JD商城,亚马逊都是在仓储这一块做的非常出色。中国有不同的省份,JD物流会在没一个省份安排一个仓库,也有在不同省份下的市级单位也设置仓库。这样一来的目的是为了什么?如果每一个用户在JD商城买的东西,都是从一个仓库里进行发货。那么,在特殊电商节日。这个物流会不会瘫痪!所以在每一个地方设置一个仓储是为了节省配货时间,以最快的速度进发货。但是每一个地方级仓库都是跟一个主仓库进行关联的。比如张三在JD商城里购一个手机。而同时这个手机在地方仓库就已经发货。那么JD商城如何才知道这个商品是否已经发货了呢?因为地方仓库和JD商城的总库是有关联的。那么某种意思来说,我们学习的sqlserver是关系型数据库。

市场上用得比较多的数据有哪一些?

  1. mysql
  2. oracle
  3. sqlserver

注意:上面所说的数据库他们都是关系型数据库。

数据库的基本概念

  1. 数据库里的基本单位是表组成而每一张表又由行和列组成。
  2. 数据库中的数据是存放在表当中。
  3. 数据库又分为二个重要因素一个是数据库系统(DBS)还有一个是数据库管理系统(DBMS)
  4. 为了方便查询和空间利用,可以适当的使用冗余。
  5. 数据库要讲究数据唯一性也就是完整性。

注意:表中的行,专业术语称这为记录;表中的列我们称之字段。 DBMS提供了可以操作数据的增删改查。DBS是数据库系统部门,例如:删除表,新建表等

系统数据库和用户数据库

1.系统数据库是当我们创建一个数据库,会自动产一些数据表。主要的作用是来操作用户数据库的一些权限管理,关系管理等。 2.用户数据库,则我们真正的关系数据表。

登录名和数据库用户

SQLServer中的登录名就好比如小区里的大门。而后,数据库用户则是小区业主的大门。那么某种意思来说,进小区大门只是确认是不是本小区的业主。如果是才能说你这个小区有房子。换一句说就是只有访问数据库的权限你才有资格去操作SqlServer里的数据库。

数据库物理文件构成

主要分为二个因素,1.数据文件;2.日志文件

数据文件: 由.mdf|.ndf,也就是你存在数据库里真实数据文件 日志文件: 由.ldf,保存的是操作数据库一些记录。例如:新增数据,删除数据等

注意:数据库里存放的数据放在.mdf或者.ndf文件里。意思就是数据里的还是存放在电脑的硬盘里。

数据表

数据库里数据不管是多少,数据都一定分存在数据表当中。表是数据库一个单位。同时,表也只是一个有规范的硬盘容器。当然,如果说是一个硬盘容器,其实为了效率,数据库也是有内存表的。他们之间一个是把数据存放在硬盘里,一个是存放在内存。硬盘里保存数据是永久,而内存保存数据则是暂时的(电脑一重启数据就为空了)。

为什么说是一个有规范的硬盘容器呢? 因为数据库本身设计就是用存储数据的。为了数据库的发挥出本身的工作效率。那么对于数据库里的表会做一些设置。目标就是为了数据准确不被污染。这样才能发挥出数据库真实作用。那么设置具体是什么东西呢?数据的完整性

数据的完整性 = 可靠性 + 准确性

具体完成这个设置是由以下四种方式来完成?

  1. 域完整性
  2. 实体完整性
  3. 引用完整性
  4. 自定义完整性

总结:关于表的设计一定根据数据的完整性来设计,具体来实现完整性由上面4种方式来完成。

案例说明一:

员工编号姓名地址
0010016 张珊 四川成都
0010017 李思 浙江杭州
0010018 王武 山东德州
0010019 黄琴琴 河北石家庄
0010020 肖宇 湖南长沙

准备插入一行数据,如果如下:

员工编号姓名地址
0010016 张珊 四川成都

答案: 是不能插入成功的,为什么?因为员工编号重复了。如果能够入成功,那么员工编号为0010016这一行数据就是破坏了数据完整性成了脏数据。

知识点:实体完整性 主要的作用是【1.唯一约束、2.主键约束、3.标识约束】

案例说明二:

员工编号姓名地址
0010016 张珊 四川成都
0010017 李思 浙江杭州
0010018 王武 山东德州
0010019 黄琴琴 河北石家庄
0010020 肖宇 湖南长沙

准备插入一行数据,如果如下:

员工编号姓名地址
8700000001 吴彤彤 湖北武汉

答案: 不能插入成功,因为破坏了数据表的域完整性。


分析: 准备插入行的数据,姓名和地址是符合源数据表的域完整性。但是从源数据表中数据分析得出结论。员工编号是按照一定根据来增长的。同是员工编号的数据长度也是有规定的。但是准备插入的数据行,员工编号匹配不上。第一个是长度,二个没有按照员工编号字段约束进行赋值。所以不能插入成功。

知识点: 域完整性是包括了,字段的数据类型、检查约束、外键约束、默认值约束、非空约束。

注意: 如果一张有十一个字段,那么域完整可以设置多少个?

案例说明三:

员工编号姓名地址
0010016 张珊 四川成都
0010017 李思 浙江杭州
0010018 王武 山东德州
0010019 黄琴琴 河北石家庄
0010020 肖宇 湖南长沙

 

科目员工编号绩效分数
考勤 0010016 32
考勤 0010018 65
工作效率 0010016 26
工作效率 0010018 87
考勤 0010019 90

准备插入一行数据,如果如下:

科目员工编号绩效分数
考勤 0010021 78

分析: 员工表和成绩表他们是什么关系啊?关联状态,员工编号与成绩表中的员工编号是关系字段。那么,针对成绩表中的员工编号是外键约束。既然是外健约束,那么就一定会触发数据库域完整性的外键约束检查。当我们准备插入数据有一个员工编号0010021这个外键在员工表中有这一条数据吗?是不是进入到了我们数据库完整性检验。所以不能插入

知识点: 引用完整性讲的就是外键约束

数据类型

数据类型定义作用作用
varchar 可变长度非 Unicode 数据 字母或者数字 “abc211”
nvarchar 可变长度 Unicode 数据 可以来保存汉字 “中国”

注意: Unicade是全球统一字符集,也就是一个字符对应一个单一的编码。而我们学习的varchar是按单字节来来计算的。而我们中文一个汉字代表2个字节。所以不建议使用来存汉字。而nvarchar是按字符来进行计算也就是一个字符占二个字节(双字节)。而至于非Unicode和Unicode的区别无非就是为了能正常显示。

以上是关于数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据库类型——系统数据库/用户数据库

关系型数据库与文档型数据库的差别?

数据库数据库管理系统数据库系统

mysql数据库的基本操作:创建数据库查看数据库修改数据库删除数据库

如何清理mysql数据库缓存数据?

JDBC访问数据库的步骤