文章目录
数据库的定义
数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合。
数据不是依赖于处理过程的附属品,而是现实世界中独立存在的对象
数据库的特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
什么是DBMS
数据库管理系统(Database Management System,简称DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。是位于用户与操作系统之间的一层数据管理软件。
DBMS的目标
科学地组织和存储数据、高效方便地获取和维护数据。
DBMS的主要功能
1、数据定义功能
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象
2、数据操纵功能
- 提供数据操纵语言(DML)
- 操纵数据实现对数据库的基本操作 (查询、插入、删除和修改)
3、数据库的运行管理
- 保证数据的安全性、完整性
- 多用户对数据的并发使用
- 发生故障后的系统恢复
4、数据库的建立和维护功能
- 数据库数据批量装载
- 数据库转储
- 数据库的重组织
- 性能监视等
什么是数据库系统
数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成。
在不引起混淆的情况下常常把数据库系统简称为数据库。
数据库系统由数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。
数据库系统的特点
1、面向全组织的复杂的数据结构
- 支持全企业的应用而不是某一个应用
- 数据反映了客观事物间的本质联系,而不是着眼于面向某个应用,是有结构的数据。这是数据库系统的主要特征之一,与文件系统的根本差别。
2、数据的冗余度小,易扩充
- 数据集中管理,数据共享,因此冗余度小
- 节省存储空间,减少存取时间,且可避免数据之间的不相容性和不一致性
3、具有较高的数据和程序的独立性
- 把数据库的定义和描述从应用程序中分离出去
- 数据描述是分级的(全局逻辑、局部逻辑、存储)
- 数据的存取由系统管理,用户不必考虑存取路径等细节,从而简化了应用程序
4、统一的数据控制功能,数据共享程度高
- 数据的安全性控制(Security): 用户标识与鉴定,存取控制
- 数据的完整性控制(Integrity): 完整性约束条件定义和检查
- 并发控制(Concurrency) : 封锁
数据视图
数据库系统的一个主要目的是给用户提供数据的抽象视图,即系统隐藏关于数据存储和维护的某种细节。
数据抽象(Data Abstract)
1、物理层
- 最低层次的抽象
- 描述数据如何存储
2、逻辑层
- 描述数据及数据间的关系
- 由DBA使用
3、视图层
- 描述整个数据库的某一部分
- 使用户与系统交互更简单
实例与模式
-
实例:特定时刻存储在数据库中的信息的集合称作数据库的一个实例
-
模式:数据库的总体设计称作数据库模式
-
型是对数据的结构和属性的说明 ----模式
-
值是型的一个具体赋值 ----实例
型是相对稳定的,值是随时间不断变化的
数据库的三级模式结构
三级模式
1、物理模式(Physical Schema)
又称存储模式、内模式,是数据的物理结构及存储方式。
2、逻辑模式(Logical Schema)
所有用户的公共数据视图,是数据库全体数据的全局逻辑结构和特性的描述。
3、子模式(Sub-Schema)
用户的数据视图,是数据的局部逻辑结构,模式的子集。
两级映像
1、外模式/模式映象
定义某一个外模式和模式之间的对应关系,映象定义通常包含在各外模式中。
2、模式/内模式映象
定义数据逻辑结构与存储结构之间的对应关系。
数据独立性
1、物理数据独立性
存储结构改变时,修改模式/内模式映象,使模式保持不变,从而应用程序可以保持不变,称为数据的物理独立性
2、逻辑数据独立性
当模式改变时,修改外模式/模式映象,使外模式保持不变,从而应用程序可以保持不变,称为数据的逻辑独立性
事务定义
事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务特性(ACID)
1、原子性(Atomicity)
- 事务中包含的所有操作要么全做,要么全不做
- 原子性由恢复机制实现
2、一致性(Consistency)
- 事务的隔离执行必须保证数据库的一致性
- 事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态
- 数据库的一致性状态由用户来负责,由并发控制机制实现。如银行转帐,转帐前后两个帐户金额之和应保持不变
- 事务运行过程中允许暂时的不一致
3、隔离性(Isolation)
- 系统必须保证事务不受其它并发执行事务的影响
- 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行
- 隔离性通过并发控制机制实现
4、持久性(Durability)
- 一个事务一旦提交之后,它对数据库的影响必须是永久的
- 系统发生故障不能改变事务的持久性
- 持久性通过恢复机制实现
关系模型中的重要概念
1、超码(superkey)
- 是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地标识一个元组
2、候选码(Candidate Key)
- 关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码,如关系S中的sno可作为候选码。候选码是最小的超码
3、主码(Primary Key)
- 进行数据库设计时,从一个关系的多个候选码中选定一个作为主码,如可选定sno作为关系S的主码
4、外部码(Foreign Key)
- 关系R中的一个属性组,它不是R的主码,但它与关系S的主码相对应,则称这个属性组为R的外部码(R和S可以是同一关系)。如S关系中的dno属性
E-R模型向关系模式的转换
1、联系转化成的表,和实体转化成的表,可以机械地按照下述原则合并:
一对一,联系归任一;多对一,联系归于多;多对多,联系自成表。
- 二元多对一联系:
联系转化的表可以和“多端” 实体转化成的表进行合并 - 二元一对一联系:
联系转化的表可以任一端实体转化成的表进行合并
二元一对一联系不能导致相关实体转化成的表合并 - 二元m:n联系:
联系转化的表和实体转化的表不能进行合并 - 多元联系:
- 联系转化的表和实体转化的表不能进行合并
- 即便是m:n:1,其转化的表和也不能进行合并
2、实体转化成的表,相互之间不能机械合并
3、联系转化成的表,相互之间不能机械合并
索引的定义
1、格式
create [unique/distinct] [cluster] index 索引名
on 表名 (列名 [asc/desc] [ , 列名[ asc/desc]]…)
# 示例:
create cluster index s_sno_clu on S(sno)
create unique index s_sno on S(sno)
create index s_sname on S(sname)
- unique(distinct):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新
- cluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引(该索引可以包含多个列)
- asc/desc:索引表中索引值的排序次序,缺省为asc
2、索引的有关说明
- 可以动态地定义索引,即可以随时建立和删除索引
- 不允许用户在数据操作中指定索引,索引如何使用完全由DBMS决定
- 应该在使用频率高的、经常用于连接的列上建索引
- 索引实现:B+树,散列(hash)
- 一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率
SQL正则表达式
- REGEXP_LIKE(匹配)
- REGEXP_INSTR (包含)
- REGEXP_REPLACE(替换)
- REGEXP_SUBSTR(提取)
SQL正则表达式示例
Select * from table1
where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$')
^ 表示开始
$ 表示结束
[]内部为匹配范围
{}里的内容表时个数,有几位
查询手机号码是以 1开头接着是3或5再加9位的数字 所以这么理解:
1开头 表达式为 ^[1]{
1} 意为 开始