1️⃣什么是数据库
数据库管理系统(DataBase Management System),简称数据库(DBMS)。
但是,如果是存储数据的话,使用硬盘和文件存储数据不好吗?
用文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
内存中的数据:断电后不保留
硬盘中的数据:可以长时间保存
使用本地硬盘存储数据:
- 需求需要:开发中使用软件、程序时,需要依靠数据的支持,所以就要操作存储在硬盘中的数据;
- 问题出现:硬盘中的数据管理要比内存中的数据管理复杂;
- 导致结果:让程序员完全只有地管理硬盘中的数据变得困难;
- 所以:数据库管理软件就诞生了,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
2️⃣数据库的分类
SQL:Structure Query Language.
结构化查询语言,进行结构和数据的管理。
数据库大体可以分为 关系型数据库 和 非关系型数据库
- 关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个
关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
- Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系
统。收费。 - MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
- SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
- 非关系型数据库:
(了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:
- 基于键值对(Key-Value):如 memcached、redis
- 基于文档型:如 mongodb
- 基于列族:如 hbase
- 基于图型:如 neo4j
关系型数据库与非关系型数据库的区别:
关系型数据库 | 非关系型数据库 | |
---|---|---|
使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写 | 操作效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
使用场景 | 业务方面的OLTP系统 | 用于数据的缓存、或基于统计分析的OLAP系统 |
注:
OLTP(On-Line Transaction Processing)是指联机事务处理。短期的对数据的一系列动作(增删改查等等),要求对数据的响应快。对不同的要求技术方案是不一样的。
OLAP(On-Line AnalyticalProcessing)是指联机分析处理。一次涉及到很多数据,对数据往往只查询,很少做修改。要求实现的功能全,不要求响应快。对不同的要求技术方案也是不相同的。
3️⃣数据库的基本结构
这里使用的5.7的版本,不同的版本可以有差异。
数据库 DataBase 和 方案 Schema 都表示相同的概念。
我们接下来剖析一个数据库的结构:
先看一张学生表,保存了学生的基本信息:
- 其中每一列代表一个独有的属性;每一行代表一个独立的数据,第一行代表表的结构,不算数据。
- 通过行和列组成一张表,表示一类数据。
- 多张表构建出有关联的数据。
例如班级表,存储了班级号对应的班级名称:
两张表把学生的信息和对应班级联系了起来。
- 数据库即管理多张有关系的表。
- 最后多个数据库存在一个MySQL服务器上。
大概的结构:
4️⃣理解计算机和数据库的三个层面
计算机的三个层面:
在数据库上三个层面的体现:
5️⃣关于SQL
SQL的分类:
- DDL(Data Defination Language)数据定义语言,用来维护存储数据的结构。
比如新建或删除一个数据库,新建或删除一张表,修改表结构等等。
代表指令:create
,drop
,alter
- DML(Data Manipulation Language)数据操纵语言,用来对数据进行增删改查等操作。
比如添加或删除一行数据,查询某些符合条件的数据,修改某行中的数据等。
代表指令:insert
,delete
,update
DML中又单独分了一个DQL(Data Query Language),数据查询语言,代表指令:select
- DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。
比如添加一个DBMS用户、修改DBMS密码,重启服务等等
代表指令:grant
,revoke
,commit
SQL和Java语言的不同:
SQL是一种声明式语言,结果论的语言。
Java是一种过程式语言。
例如查找学生表中叫小A的同学