写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。
- 对于文章中出现的任何错误请大家批评指出,一定及时修改。
- 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
- 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
数据库、数据库管理系统、SQL和图形界面工具的关系
本文关键字:数据库、DBMS、SQL、图形界面工具
刚刚接触数据库的小伙伴可能会对几个名词混淆不清,一上来又是命令又是工具的,这篇文章帮大家来明确一下这几个概念之间的关系。
一、数据库(DB)
数据库是我们接触这一学科时认识的第一个词,也是最容易产生歧义的一个词。为什么这么说呢?因为它既有自己的意义,也是其他名词的简称。
- 数据
数据的概念大家并不陌生,这是一个很广义的词。书籍、磁盘、储存卡都能成为数据存储的载体,书籍中的文字、存储设备中的文本文件、音频、视频等等都可以称之为数据。如果,你去查百度百科的话,定义简直不要更抽象:
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。
既然我们现在接触的是信息技术和计算机相关的领域,那我们划一下重点,数据的定义可以是:存储在设备中的很重要的文件,通常是某些应用正常使用的基础。那么根据数据使用的时机和特点,我们还可以这样分类:内存中的数据和硬盘中的数据。我们知道,当一个程序开始运行时,首先要在内存中申请空间,然后根据程序的需要再去加载相应的资源。
比如我们运行一个游戏,可能自身的大小为10GB,但是运行的时候并不需要这么多,因为并不需要把所有的文件都加载到内存中,当我们切换到一个新的场景或者新开始一个游戏时,就需要加载一些素材和数据,这个时候就会从硬盘中加载一些(同时可能会释放一些无用的资源)。
当我们退出游戏时,比如我们积攒了一万金币,如果没有存档,那肯定会很悲剧,因为内存中的数据是不会永久保存的,当程序退出或者计算机重新启动,其中的内容就会被释放掉(毕竟那么多软件等着用呢)。而如果我们存档,就相当于把数据永久保存到了硬盘上,下次再进入时,是从硬盘上进行读档。
也就是说硬盘上的数据是持久化保存的,是以各种文件格式存在的,可能是游戏程序所需要的特定数据文件格式,也可能是我们熟知的各种文件格式。
- 数据库
理解了数据的概念和相关特点后,我们直接引用百度百科的定义:
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
简而言之,数据库就是具有某种数据格式的数据的集合。通常我们所说的数据库都将数据存储在硬盘上,对于这样的数据集合必然要通过相应的软件去管理,这样的软件被称作数据库管理系统,即:DBMS。所以,在很多时候我们会用“数据库”这个词直接代表“数据库管理系统”,因为二者其实是密不可分的。
如果真要说两者的区别,才需要较一下真,数据库指的是存储的数据本身,而数据库管理系统指的是为管理数据库而设计的电脑软件系统
。如果想要具体了解一下数据库的发展历程可以进传送门:数据库的发展与数据模型。
二、数据库管理系统(DBMS)
理解了DB(数据库)和DBMS(数据库管理系统)之间的关系后,我们再去看维基百科上面的叙述应该就很清楚了:
数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的电脑类型来作分类,例如服务器聚类、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。
数据库关系系统就是一个能够操作数据库的软件,用户可以通过DBMS去完成对数据的最基本操作,新增、删除、修改、查询,也就是常说的增删改查,或者洋气的称为:CURD,即:C-创建(Create)、U-更新(Update)、R-读取(Retrieve)和D-删除(Delete)。
目前我们所使用的数据库以第二代数据库为主,所学习的也都是典型的关系型数据库,如:SQL Server、MySQL、Oracle等。说到DBMS之间的区别,主要在于内置函数、数据存取策略、应用场景适用性以及数据库对象之间的差异等等。
很多小伙伴儿可能会发现,当学完一个DBMS之后,用同样的语句在另外一个DBMS上也能执行成功,于是就很兴奋的认为原来数据库就是如此简单,我已经能够驾驭多个DBMS了!对此,小编只能很冷静的告诉你:对不起,请收回你的自信。。。之所以能够通用是因为这些DBMS在设计之初都支持使用SQL
,但是仅仅掌握了SQL不能说你就掌握了这个DBMS。
三、结构化查询语言(SQL)
说到SQL,其实不需要过多的解释,因为他就像Java、C、Python一样,也是一种编程语言,只不过它的目的很单一,只作用在数据库上,能够对数据直接进行操作,也支持定义函数、存储过程、触发器等数据库对象,也可以使用case-when来实现选择结构。
SQL的全称为Structured Query Language,即:结构化查询语言。1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。SQL从功能和作用上可以分为6类:
- 数据查询语言(DQL):主要由SELECT、FROM、WHERE组成,用于查询数据
- 数据操纵语言(DML):主要包含插入(INSERT)、更新(UPDATE)、删除(DELETE)三种操作
- 数据定义语言(DDL):主要使用CREATE来创建各种数据库对象(TABLE、VIEW、INDEX等)
- 数据控制语言(DCL):主要用于数据库的权限控制及用户对数据库对象的使用管理
- 事务处理语言(TPL):事务处理主要为了保证一系列的操作能够全部成功或统一回滚,主要关键字包括TRANSACTION、COMMIT、ROLLBACK
- 指针控制语言(CCL):通过指针可以对数据表以行为单位进行操作,主要关键字包括CURSOR、FETCH、CURRENT
具体的SQL语法将在后续文章中介绍,有关于SQL和DBMS的关系我想大家应该已经很清楚了,SQL是关系型数据库语言的标准,可以适用于多种关系型数据库。有些小伙伴可能听说过T-SQL
,在这里也说明一下,T-SQL( Transact-SQL)是SQL的增强版,但是只能在Microsoft SQL Server数据库上使用。在有些时候也会用T-SQL来代表某一个数据库自己对SQL语言的扩展或高级用法,这里注意区分。
四、图形界面工具
说到图形界面工具,其实就是我们最常使用的软件,那为什么还要弄出这么个词呢?这是因为数据在安装以后是以一个系统服务的方式存在,需要有相应的客户端才能够访问和使用。一般安装数据库以后都会带有官方提供的客户端程序,如:Oracle的sqlplus,MySQL的mysql,但是这些客户端都是在cmd中运行的,只能通过相应的指令或SQL语句来操作,为了方便用户操作数据库,就会借助图形界面工具了,也就是说图形界面工具本身只是一个操作DBMS的可视化软件,必须连接到一个正常工作的数据库服务才能使用。
这里给大家介绍一些官方工具,大家可以根据喜好自行选择:
- Oracle SQL Developer:Oracle数据库官方图形界面工具(免费)
下载地址:https://www.oracle.com/cn/tools/downloads/oracle-sql-developer-download.html
- MySQL Workbench:MySQL数据库官方图形界面工具(免费)
下载地址:https://dev.mysql.com/downloads/workbench/
- SQL Server Management Studio(SSMS):SQLServer数据库官方图形界面工具(免费)
- PL/SQL Developer:支持Oracle数据库(需自行解决收费问题)
- SQLyog:支持MySQL数据库(旗舰版收费)
- MySQL-Front:支持MySQL数据库,生成数据字典较方便(需自行解决收费问题)
- Navicat Premium:支持多种数据库,新版集成了可视化组件(需自行解决收费问题)
- DataGrip:支持多种数据库,JetBrains家族优秀的数据库界面工具(需自行解决收费问题)
扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~