3.数据库基础知识
3.1数据库的概念及模式
3.1.1数据库的三种模式
数据库三级模式:外模式、模式(概念模式)、内模式
(1)概念模式:
又称为“逻辑模式”,对应的是维护数据库人员的概念级
它是由数据库设计者综合所有用户的数据并按照统一的观点构造全局逻辑结构,是对数据库中全部的数据结构和逻辑的总体描述,是所有用户的公共数据视图。
(2)外模式:
又称为“子模式”,对应的是用户或程序员的用户级
外模式是模式导出的一个子集,包含模式中允许特定用户使用的部分数据。
(3)内模式:
又称为“存储模式”,对应的是系统程序员的物理级
内模式是数据库中最低一级的数据描述,它描述数据在存储介质上的存储方式和物理结构。
(4)三级模式的映射
对于一个数据库系统而言,物理级数据库是客观存在的,它是数据库的基础;概念级数据库中不过是物理数据库的一种逻辑且抽象的描述;用户级数据库则是用户与数据库的接口,它是概念级数据库的一个子集
由数据库管理系统(DBMS)负责数据的存储,从而简化了应用程序
3.1.2数据库系统的安全性控制机制
数据库的安全性机制包括以下几个方面:
(1)用户标识与鉴别
(2)存取控制
(3)授权与回收
(4)数据库角色
(5)视图机制
(6)审计
(7)数据加密
数据的完整性包括:
(1)数据的正确性:指输入值与数据表对应域类型一样。
(2)数据的有效性:指数据库中理论数值满足现实应用对该数据段的应用。
(3)数据的一致性:指不同用户使用同一数据应该是一样的。
3.2关系模式及函数依赖
3.2.1函数依赖
设有一关系模式R,其中X、Y均为子集,对于R的值r来说,当其中任意两个元组u和v中对应X的属性分量的值均相等时,则有u和v中对应于Y的那些属性分量的值也相等,则称“x函数决定Y”或“Y依赖于X”,记为X->Y
函数依赖的分类:
(1)完全函数依赖
(2)部分函数依赖
(3)传递函数依赖
3.2.2实体关系(ER模型)
实体关系图(ER模型)指实体、关系、属性3个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。
它提供了实体、属性、联系的方法,用来描述现实世界的概念模型。
构成ER图的基本要素是实体型、属性、联系。
ER模型表示方法:
(1)实体型(Entity):用矩形表示
(2)属性(Attribute):用椭圆形表示
(3)联系(Relationship):用菱形表示
3.2.3关系运算
关系运算符有4类:
3.2.3.1传统的集合运算
(1)并(UNION)
(2)差(DIFFERENCE)
(3)交(INTERSCTION)
(4)广义笛卡儿积(Extended Cartesian product)
3.2.3.2专门的关系运算
(1)选择(Selection)
(2)投影(Projection)
(3)连接(Join)
(4)除(Division)
3.2.3.3比较运算符
(1)大于(>)
(2)大于等于(≥)
(3)小于(<)
(4)小于等于(≤)
(5)等于(=)
(6)不等于(≠)
3.2.3.4逻辑运算符
(1)与(A)
(2)或(V)
(3)非(—)
3.3关系模型及SQL语句
3.3.1关系数据库系统
关系数据库系统是支持关系模型的数据库系统
关系模型组成如下:
(1)关系数据结构
(2)关系操作结合
(3)关系的3类完整性约束
包括实体完整性、参照完整性、用户定义完整性
3.3.2结构化查询语言
3.3.2.1结构化查询语言的内容
包括如下4个部分:
(1)数据定义语言(DDL):如CREATE、DROP、ALTER
(2)数据操作语言(DML):如INSERT、UPDATE、DELETE
(3)数据查询语言(DQL):如SELECT
(4)数据控制语言(DCL):如GRANT、REVOKE、COMMIT、ROLLBACK
3.3.2.2语法规则
(1)SELECT语句
·选择所有列:SELECT * FROM test table
·选择部分列并指定其显示顺序
·更改列标题
·删除重复行
·限制返回的行数
(2)FROM语句
·表名 as 别名
·表名 别名
(3)WHERE语句
·比较运算符:>、>=、=、<、<=、<>、!>、!<
·范围运算符:BETWEEN…AND…, NOT BETWEEN…AND…
·列表运算符:IN, NOT IN
·模式匹配符:LIKE, NOT LIKE
·空值判断符:IS NULL , NOT IS NULL
·逻辑运算符:NOT, AND, OR
(4)ORDER BY语句
3.3.2.3常用的SQL内部函数
(1)COUNT:返回行数
(2)SUM:返回指定列或表达式的数值和
(3)AVG:返回指定列或表达式的数值平均值
(4)MIN:返回指定列或表达式的数值最小值
(5)MAX:返回指定列或表达式的数值最大值
3.3.3联合查询和连接查询
3.3.3.1联合查询
SELECT_STATEMENT
UNION[ALL] SELECTSTATEMENT
[UNION[ALL] SELECTSTATEMENT][…N]
3.3.3.2连接查询
(1)内连接
·等值连接:在连接条件中使用(=)来查询的结果
·不等连接:在连接条件中使用(>、<、>=、<=、!<、!>)来查询的结果
·自然连接:在连接条件中使用(=)来查询的结果,但删除重复列
(2)外连接
(3)交叉连接
3.4索引的相关概念
索引的作用体现在:
(1)通过创建唯一性缩影可以保证数据库中每一行数据的唯一性
(2)可以大大加快数据的检索速度
(3)可以加速表与表之间的连接
(4)在使用分组和排序子句检查数据时同样可以显著减少查询中分组和排序的时间
(5)使用优化隐藏器提高系统性能
增加索引的不利方面
(1)创建和维护索引要耗费时间
(2)索引要占用物理空间
(3)当对表中的数据执行增加、删除和修改时,索引也要动态维护
就一般原则来说:应该在如下列上创建索引:
(1)在经常需要搜索的列上
(2)在作为主键的列上
(3)在经常用在连接的列上
(4)在经常需要根据范围进行搜索的列上
(5)在经常需要排序的列上
(6)在经常使用在WHERE子句中的列上
不应该创建索引的列包括以下特点
(1)在查询中很少使用到或参考到的列
(2)只有很少数据值得列
(3)定义为text,image,bit数据类型的列
(4)当修改性能远远大于检索性能时