工作两年了,一直做着各种业务,是时候静下心来总结回顾以及复习一些知识了,先从第一个专题数据库开始吧。
什么是数据库呢?
数据库(database),顾名思义,就是存储和管理数据的一个程序仓库,存储什么数据呢,内存数据么?当然不是,存储的是驻留在内存之外的数据,所以它存储的肯定是持久型的数据,不会因为程序结束了数据没有了,要不然要它也没用了,数据库必须要具有高的可靠性,因为一般我们存储的数据都是比较重要的,所以数据库必须要考虑硬件故障,软件故障,断电,人为攻击等等方面的因素。数据库数据一般会由多个用户操作的,所以还需要保证数据的一致性,支持并发操作。
总结如下,数据库具有这些特点:
- 处理大规模数据
- 持久性
- 安全性
- 多用户操作,并发操作
- 方便操作
- 高效和高可靠性
数据库管理系统(DBMS)
数据库管理系统(Database Management System 简称DBMS)是一种操纵和管理数据库的大型软件,是用于创建、使用和维护数据库的程序软件。
1.DBMS的主要功能
- 数据定义功能:提供数据定义语言(DDL)【drop create alter】
- 数据操纵功能:提供数据操纵语言(DML)【select insert delete update】
- 数据库运行管理
a.保证数据的安全性 b.多用户对数据的并发使用 c.发生故障后的系统恢复
- 数据库的建立和维护功能
- DBMS分类
- 小型数据库: Access foxbase sqlite
- 中型数据库: mysql, sql server infomix posgreSql(开源) MongoDB(开源)
- 大型数据库: Sysbase oracle db2
数据库分类
数据库基于存储介质的不同:进行了分类,分为两类:
关系型数据库(SQL)
非关系数据库(NoSQL : Not Only SQL, 不是关系型的数据库都叫做非关系数据库)关系型数据库:安全(保存磁盘基本不会丢失),容易理解,符合人类的认知。但是比较浪费空间(二维表)
非关系型数据库:效率高,不安全(断电丢失)
关系型数据库
1、什么是关系型数据库?
关系型数据库:是一种建立在关系模型(数学模型)上的数据库。
关系模型:一种所谓建立在关系上的模型。关系模型包含三个方面:
数据结构: 数据存储的问题,二维表(有行和列)
操作指令集合:所有的SQL语句;
完整性约束:表内数据约束,表与表之间约束(外键)
2、关系型数据库的设计?
关系型数据库: 从需要存储的数据需求中分析,如果是一类数据(实体)应该设计成一张二维
表:表是由表头(字段名:用来规定数据的名字)和数据部分组织(实际存储的数据单位)
二维表:行和列
表头 字段名1 字段名2
数据单元 数据1 数据2
SQL
SQL: Structured Query Language ,结构化查询语句(数据主要是以查询为主:99%是在进行查询操作)
SQL分为三个部分
DDL: Data Definition Language 数据定义语言,用来维护存储数据的结构(s数据库,
表)代表指令: create,drop, alter等。
DML : Data Manipulation Language ,数据操作语言,用来对数据进行操作(数据表的>> 内容),代表指令:insert delete update等。其中DML内部又单独进行了一种分类,DQL(Data Query >> Language):数据库查询语句,如selectDCL: Data Control Language ,数据控制语句,主要负责权限>> 管路(用户),代表指令:grant、revoke等SQL是关系型数据库的操作指令,SQL是一种约束,但不强制
(类似W3C),不同的数据库产品(如Oracle, mysql)可能内部会有一些细微的区别!