数据库简介
数据的时代
- 涉及的数据量大
- 数据不随程序的结束而消失
- 数据被多个应用程序共享
- 大数据
数据的分类
- 结构化的数据:即有固定格式和有限长度的数据。
- 非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据。
- 半结构化数据
数据库的发展史
文件管理系统的缺点
- 编写应用程序不方便
- 数据冗余不可避免
- 应用程序依赖性
- 不支持对文件的并发访问
- 数据间联系弱
- 难以按用户视图表示数据
- 无安全控制功能
数据库系统发展阶段
- 萌芽阶段:文件系统
使用磁盘文件来存储数据
- 初级阶段:第一代数据库
出现了网状模型、层次模型的数据库
- 中级阶段:第二代数据库
关系型数据库和结构化查询语言
- 高级阶段:新一代数据库
“关系-对象”型数据库
DBMS 数据库管理系统
- Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
- DBMS:是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
- DBA:负责数据库的规划、设计、协调、维护和管理等工作
- 应用程序:指以数据库为基础的应用程序
数据库管理系统的优点
- 相互关联的数据的集合
- 较少的数据冗余
- 程序与数据相互独立
- 保证数据的安全、可靠
- 最大限度地保证数据的正确性
- 数据可以并发使用并能同时保证一致性
数据库管理系统的基本功能
- 数据定义
- 数据处理
- 数据安全
- 数据备份
数据库系统的架构
- 单机架构
- 大型主机/终端架构
- 主从式架构(C/S)
- 分布式架构
当今主流数据库介绍
SQL Server(微软公司产品)
- 面向Windows操作系统
- 简单、易用
Oracle(甲骨文公司产品)
- 面向所有主流平台
- 安全、完善,操作复杂
DB2 (IBM公司产品)
- 面向所有主流平台
- 大型、安全、完善
MySQL(甲骨文公司收购)
- 免费、开源、体积小
数据库分类
关系型数据库
- 关系数据库系统是基于关系模型的数据库系统
- 关系模型的数据结构使用简单易懂的二维数据表
- 关系模型可用简单的“实体-关系”(E-R)图来表示
- E-R图中包含了实体(数据对象)、关系和属性三个要素
实体:
- 也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物。
属性:
- 实体所具有的某一特性,一个实体可以有多个属性。
联系:
- 实体集之间的对应关系称为联系,也称为关系。
- 如银行客户和银行账户之间存在“储蓄”的关系。
所有实体及实体之间联系的集合构成一个关系数据库
关系型数据库的存储结构
关系型数据库的存储结构是二维表格。
在每个二维表中:
- 每一行称为一条记录,用来描述一个对象的信息。
- 每一列称为一个字段,用来描述对象的一个属性。
关系型数据库的优缺点
优点:
- 易于维护:都是使用表结构,格式一致;
- 使用方便:SQL语言通用,可用于复杂查询;
- 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
- 读写性能比较差,尤其是海量数据的高效率读写;
- 固定的表结构,灵活度稍欠;
- 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库
- 非关系数据库也被称作NoSQL (Not Only SQL)
- 存储数据不以关系模型为依据,不需要固定的表格式。
非关系型数据库的优缺点
优点:
- 数据库可高并发读写。
- 对海量数据高效率存储与访问。
- 数据库具有高扩展性与高可用性。
- 成本低:nosql数据库部署简单,基本都是开源软件。
- 格式灵活
缺点:
- 不提供sql支持,学习和使用成本较高;
- 无事务处理;
- 数据结构相对复杂,复杂查询方面稍欠。
MySQL数据库介绍
- MySQL是一款深受欢迎的开源关系型数据库。
- Oracle旗下的产品。
- 遵守GPL协议,可以免费使用与修改。
Mysql特点
- 性能卓越、服务稳定
- 开源、无版权限制、成本低
- 多线程、多用户
- 基于C/S(客户端/服务器)架构
- 安全可靠
MySQL商业版与社区版
- MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用。
- MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用。
区别
- 商业版组织管理与测试环节更加严格,会比社区版更稳定。
- 商业版不遵守GPL,社区版遵从GPL可以免费使用。
- 商业版可获得7*24小时的服务,社区版则没有。
数据库基本操作
SQL分类
- 数据库:database
- 表:table,行:row 列:column
- 索引:index
- 视图:view
- 存储过程:procedure
- 存储函数:function
- 触发器:trigger
- 事件调度器:event scheduler,任务计划
- 用户:user
- 权限:privilege
SQL 语言规范
- 在数据库系统中,SQL 语句不区分大小写,建议用大写
- SQL语句可单行或多行书写,默认以 " ; " 结尾
- 关键词不能跨多行或简写
- 用空格和TAB 缩进来提高语句的可读性
- 子句通常位于独立行,便于编辑,提高可读性
数据库的组件(对象)
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则:
必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
不要使用MySQL的保留字,如tabble select show databases
SQL语句分类
- DDL: Data Defination Language 数据定义语言
CREATE,DROP,ALTER
- DML: Data Manipulation Language 数据操纵语言
INSERT,DELETE,UPDATE
软件开发:CRUD
- DQL:Data Query Language 数据查询语言
SELECT
- DCL:Data Control Language 数据控制语言
GRANT,REVOKE
TCL:Transaction Control Language 事务控制语言