本篇文章是想,用最通俗的语言来,让大家了解一下数据库,因为初学者在第一次接触数据库的时候,是很迷惑的。比如,主键是什么?外键是什么?包括所谓的,什么字段、记录,等等。大家第一次在学习的时候,难免觉的很难理解。
下面我来介绍一下,此思路,希望能帮助到初学者
学习思路
请从下面三个角度来思考数据库的学习
1.数据库是如何存储数据的
字段 记录 表 约束(主键 外键 唯一键 非空 check
default 触发器)
2.数据库是如何操作数据的
insert update delete T-SQL 存储过程 函数 触发器
3.数据库是如何显示数据的
select(重点的重点)
什么是数据库
狭义:
存储数据的仓库
广义:
可以对数据进行存储和管理的软件,以及数据本身,统称为数据库
数据库是由表、关系、操作组成
为什么需要数据库
几乎所有的应用软件的后台都需要数据库
数据库存储数据占用空间小 容易持久保存
存储比较安全
容易维护和升级
数据库移植比较容易
简化对数据的操作
数据结构和数据库的区别
数据库是在应用软件级别研究数据的存储和操作 外存 硬盘
数据结构是在系统软件级别研究数据的存储和操作 内存
什么是日志?
日志:谁在什么时间,对我这个数据库进行了什么操作这个就是日志
通过表来引入概念
我们通过存储一个员工的信息来看,字段等等是什么意思:
现在我有这样两个表格 员工表和部门表
员工表
部门表
主键概念
第一个问题:
假设有4个信息,这4个信息 ,如果只写了员工姓名 员工工资 员工性别 员工年龄。将来录入信息出现同名字的人该怎么办?数据如何来辨别呢?
两个人信息相同,就出现冗余了。需要设置一个东西能够标志唯一性
所以通过编号能唯一确定一个数据.
所以能够唯一标识数据的这个东西称为主键,第一条数据和第二条数据通过主键能辨别开来。能够辨别出不同事物的数据叫做主键。这里员工编号就是主键。
下图这一列就是作为主键了
第二个问题
我们能不能把员工的信息和部门的信息在一个表中表示?
不行,为什么不行呢?
不能标识主键不是核心问题,如果这样写,部门姓名、部门人数、部门地址需要重复
100多次。如果部门地址信息很长。
部门有两个写两次就够了,但是部门人数比较多需要写100次。这放在一起是
十分不合理的。
设计任何一个事物(数据)都需要一个标识符(主键),没有主键事物和事物之间
就没办法辨别了
假设A 有1 2 3 4 5 这个五个属性,这个第五属性是特殊的,可以把5作为主键,但是我们会从0到5进行编号。(主键)编号是单独添加的。比如学号本身是没有意义的。但是用它标记学生就有意义了。
记住我们以后做项目也一样,我们要保存数据的时候。永远是单独添加一列,用这个没有实际意义的只有编号的这一列来充当主键。自然主键。我们数据库库在存数据的时候也是这样设计的。
如果不加编号,用表中有实际意义的属性做为主键的话。
员工和部门是不是有关系,这个关系应该怎么表达呢?如果我们想把一个现实中的问题,保存在我们的电脑里,首先考虑个体怎么存,个体与个体之间的关系怎么模拟。
在学数据库的时候,就要考虑这两个方面。看看数据库到底是怎么存储数据的。事物怎么存、事物与事物之间的关系怎么存?
这两个问题能解决,就解决了事物的存储问题了
外键概念
怎么表示事物和事物之间的关系呢?
关系如何去表示,这里就要提到关系型数据库了,我们现在的数据库都叫做关系型数据库。什么叫做关系型数据库?实际上就是用一张二维表来表示事物和事物与事物之间的关系。主流数据库都是关系型。
员工和部门这两个表如何建立起来关系呢?在员工表中添加一列部门编号也叫做外键,来建立员工和部门之间的关系。
下图这样
现在还有问题
能不能在部门表中加一列员工编号呢?来做外键建立关系。
是不能的。因为如果有1000个员工,但是你部门只有两个,需要你插入1000多次信息。
员工和部门的关系是怎么样的?
是一对多,还是多对多?
一个员工对应很多部门,还是一个部门对应很多员工呢?
是多对一,多个员工对应一个部门。
总之如果是员工和部门的话,外键就设置在员工表中。属性为部门编号
我们所谓的主键和外键就是这样
外键:就是联系两个表的字段(事物与事物之间的联系)
主键:能够唯一的标识一个事物
但是外键是怎么能表示事物与事物之间的联系呢?
别人问外键怎么实现联系的呢?最核心的 “来自” 一个表中的字段数据 ,是另外一个表的一列数据。
比如就是员工表的部门编号就是来自于部门表的,员工表中有一列数据并不是自身的,这个数据来自于另外一个表。
我们有个词叫做参考、引用。引用就是指针,也就是说员工表里部门编号的数据的地址在部门表中。定义成外键的数据不能随便改变。
在数据库中一旦把一列或者一个字段,定义成外键那就意味着,这个数据就不能随意写。写入的值如果在对应的表中找不到。就会报错了。
我们看具体介绍
字段:到底该怎么理解字段?
一个事物的某一个静态特征
记录:
字段的组合 表示的是一个具体的事物(一行)
表:
记录的组合 表示的是一同一类型事物的集合
表和字段、记录的关系:
字段是事物的属性
记录是事物本身
表是事物的一个集合
列 :字段的一种称谓
属性:字段的另一种称谓
元组:
记录的另一种称谓 这个就是一行