数据库 预备知识
我的电脑系统: Windows 10 64位
使用的SQL Server软件: SQL Server 2014 Express
如果我们要学习这个数据库,我们需要学习什么知识。
预备知识
先解决几个疑问:
1 . 学习数据库必须得学习数据库原理吗
按道理说是这个样子的。数据库原理里面讲的都是一些很理论的知识,而我们现在学的数据库就对它的一个实现。我们学习SQL Server软件是都数据库原理的一个实现。当然你不会数据库原理,问题也不大,因为我们后面会介绍一些需要数据库原理的知识。
2 . 学习 SQL Server 2014 必须得先学习一门编程语言吗
不需要,但是懂一门编程语言的话会有助于学习SQL Server 2014的TL_SQL。(如果不是专门去研究这个 TL_SQL,不懂编程语言,问题也不大。就是对于初学者,你可以不懂编程语言,也可以学习SQL Server 2014,并且不用管里面的TL_SQL)。什么是TL_SQL?我们以后的博客里面会讲。简单的说:TL_SQL 是一个带有 for
循环的流程控制的编程语言。
数据库是属于第四代语言,它里面没有
for
循环,没有if
,里面只有命令。
3 . 数据结构 和 数据库的区别
数据库和数据结构都是研究数据的存储和操作,但是研究的层次不一样。数据库是在应用软件(硬盘)级别研究数据的存储和操作;数据结构是在系统软件(内存)级别研究数据的存储和操作。
4 . 什么是 连接?
这个你必须要知道,这个不知道的话,你都不知道库是怎么运行的,它跟我们的编程语言完全不一样。
这里的 连接 指的是:
SQL Server 2014 软件它只是一个客户端,而数据库是后台。
我们必须要要连接数据库,才能使用数据库。这个数据库可以是本地硬盘里面,也可以是在你附近另一个电脑里面,甚至是在另外一个国家的某一个服务器里面。
操作数据库的命令不想是编程语言,有些命令不能一起执行,有些命令可以,具体的内容,我们日后的博客里面会介绍,这边博客只是科普,你了解了解就可以。
5 . 有了编程语言为什么还需要数据库
数据库是用来存数据的。那么C#语言能不能存数据,Java 语言能不能存储数据?它们也能存储数据,它们使用IO流就可以做到,IO流是将数据从一个设备传输到另一个设备的一个管道。那么既然已经有了IO流,为什么还需要使用数据库呢?
因为数据库简单。因为对于编程语言:对内存数据操作是编程语言的强项,但是对硬盘数据操作却是编程语言的弱项。
我们在学习编程语言的时候,都是学对内存的分配:内存什么时候分配、内存如何释放、内存是谁释放的、内存在哪一块空间可以使用,在哪一块空间中就不能使用了。
说白了:编程语言里面的共有、私有、多态、封装其实都是考虑内存的问题。虽然编程语言也可以对硬盘进行操作,但是功能很弱。如果要存放的数据很庞大的话,那么使用编程语言就搞不定了。
那么编程语言搞不定,其他的东西就能搞定吗?的确是这样子的。数据库:对硬盘数据操作却是数据库的强项,是数据库研究的核心问题。
对硬盘的数据要做什么操作呢?比如说,现在要将十万个数据全部写入硬盘;将硬盘是十万个数据一次性全部删除。这东西你要是使用编程语言去实现,那就是非常困难了。数据库就是专门对硬盘进行操作的。
当然你也不能说,数据库对内存的操作就很弱,因为数据库很多功能的实现也是要借助内存的。
总结: 整体而言,数据库是对硬盘的数据进行操作,也编程语言是对内存的数据进行操作。
扩展: 我们在做项目的时候,通常利用数据库可以对数据操作。但是有些操作不方便,我们要把这些数据调到内存,对内存数据进行操作完了之后,把数据在写入硬盘。以前我们讲个容器,这个就是它们之间的合作。我们为什么需要编程语言也需要数据库?是因为数据库的操作很简单很方便,但是复制操作,它实现起来很困难,(数据库内部其实是有语言可以来实现的:比如:TL_SQL语言,但是这些都不是很好,因为一般人不会。)那现在怎么办?
我们有一种常用的方式:如果对数据库里面数据操作很复杂的操作,我们是先将数据库里面的数据调入内存,再利用Java、C#、C、C++、Python等语言对内存里的数据进行操作。现在就生成了我们有效的数据了,最后将这些数据再写入数据库。
6 . 建议初学者从三个方面学习数据库
数据库里面有很多的内容很多,比如说有:建表、增、删、改、查、树、触发器、约束、存储过程、函数。它们之间有什么联系呢?它们之间是一个什么样的关系,我们怎么样找到一个线把它们这些知识给串起来。你可以通过下面的角度去学习数据库:(你这样去学的话,学起来可能会简单,而且可以将这些知识有机的整合成一个整体。)
(1) . 数据库是如何存储数据的
比如说:我们的SQL Server软件,它怎么就能将数据存储起来。
那么,你就需要理解:字段、记录、表、约束(主键、外键、唯一键、非空、check
、default
、触发器)。
我写这些是什么意思呢?就是:如果你以后看到这些知识,它们所讲的都是:如何存储数据。数据库就是使用这些知识来对数据进行存储的。
(2) . 数据库是如何操作数据的
insert
、update
、delete
、T-SQL、存储过程、函数、触发器。
这些知识,讨论的就是:如何操作数据。
(3) . 数据库是如何显示数据的
select
(重点中的重点)
上面提到的知识,我们日后的博客中都会一个一个的详细介绍。