目录
用户标识与鉴别(Identification & Authentication)
第1章 绪论
1.1术语
1.数据(Data)
数据是数据库中存储的基本对象。定义为描述事务的符号记录。数据的含义称为语义,数据与其语义是不可分的。
2.数据库(DataBase,DB)
长期存储在计算机内,有组织的,可共享的大量数据的集合。
数据库基本特征:1.永久存储 2.有组织 3.可共享 4.冗余度小 5.易扩展
3.数据库管理系统(DataBase Management System,DBMS)
位于用户与操作系统之间的一层数据管理软件
数据库管理系统和操作系统一样是计算机的基础软件。
主要功能:提供数据定义语言(DDL)、数据操纵语言(DML)等
4.数据库系统(DataBase System,DBS)
数据库系统由数据库(DB),数据库管理系统(DBMS),应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。
1.2重要概念
数据库管理技术的发展过程(三个阶段)
1.人工管理阶段:
在计算机出现之前,人们运用常规的手段从事记录、存储和对数据加工,也就是利用纸张来记录和利用计算工具(算盘、计算尺)来进行计算,并主要使用人的大脑来
管理和利用这些数据。
特点:
(1)计算机系统不提供对用户数据的管理功能;
(2)数据不能共享;
(3)不保存数据。
2.文件系统阶段:
在这一阶段(20世纪50年代后期至60年代中期)计算机不仅用于科学计算,还利用在信息管理方面。随着数据量的增加,数据的存储、检索和维护问题成为紧迫的需要,数据结构和数据管理技术迅速发展起来。此时,外部存储器已有磁盘、磁鼓等直接存取的存储设备。软件领域出现了操作系统和高级软件。操作系统中的文件系统是专门管理外存的数据管理软件,文件是操作系统管理的重要资源之一。
特点:
数据以“文件”形式可长期保存在外部存储器的磁盘上。由于计算机的应用转向信息管理,因此对文件要进行大量的查询、修改和插入等操作,这些操作由文件系统提供。
缺点:
数据冗余;不一致性;数据独立性差。
3.数据库系统阶段:
20世纪60年代后期以来 ,计算机性能得到进一步提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,才有可能克服文件 系统管理数据时的不足,而满足和解决实际应用中多个用户、多个 应用程序共享数据的要求,从而使数据能为尽可能多的 应用程序服务,这就出现了数据库这样的数据管理技术。
特点:
(1)数据结构化。
(2)数据共享性高、冗余少且易扩充。
(3)数据独立性高。
(4)数据由DBMS统一管理和控制。
数据模型(Data Model)
一、数据模型的分类
1.概念模型
按用户的观点来对数据和信息建模,主要用于数据库设计
概念模型的表示方法很多,最常用的为实体-联系方法(Entity-Relationship approach),该方法用E-R图来描述概念模型。E-R方法也成为E-R模型
2.逻辑模型和物理模型
逻辑模型主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系数据模型等,主要用于数据库管理系统的实现。
物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方法和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
二、数据模型的组成要素
数据模型通常由数据结构、数据操作和完整性约束三个部分组成。
数据结构描述数据库的组成对象以及对象之间的联系,通常按其数据结构的类型来命名数据模型,例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型、关系模型。
数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及其有关的规则,主要分为查询和更新(插入、删除、修改)两大类操作。
完整性约束条件是给定的数据模型中数据及其联系所具有的制约和依存规则,在关系模型中体现为实体完整性和参照完整性。例如,某大学的数据库中规定学生成绩如果有6门以上不及格则不能授予学士学位,教授的退休年龄是65周岁等。
逻辑模型的分类(非关系模型与关系模型)
非关系模型:层次模型(Hierarchical Model)、网状模型(Network Model)
关系模型(Relational Model)
层次模型,满足下面两个条件的基本层次联系的集合为层次模型(就是树结构):
①有且只有一个结点没有双亲结点,这个结点称为根结点
②根以外的其它结点有且只有一个双亲结点
网状模型,满足下面两个条件的基本层次联系的集合(一对多关系,结构上像有向图):
①允许一个以上的结点无双亲;
②一个结点可以有多于一个的双亲。
关系模型术语:
1.关系:一个关系对应通常说的一张表。
2.属性:表中的一列即为一个属性。
3.域:属性的取值范围。
4.元组:表中的一行即为一个元组。
5.码:也称码键。表中的某个属性组,它可以唯一确定一个元组。
6.分量:元组中的一个属性值。
7.关系模式:对关系的描述,一般表示为 关系名(属性1,属性2,.....,属性n)
画E-R图
实体-联系方法(Entity-Relationship Approach)是概念模型的一种表示方法,其提供了表示实体型、属性和联系的方法。
实体型:用矩形表示,矩形框内写明实体名
属性:用椭圆表示,并用无向边将其与相应的实体型连接起来
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时标明联系的类型(1:1, 1:n, m:n)
比如有两个简单实体,分别是单位和职员,它们的关系就是1:m,一个单位可以有多个职员;
再比如有两个实体,分别是学生和图书,它们的关系就是m:n,从而形成中间表学生借阅的图书,结果是1本图书可以被多人借阅,1个人也可以借多本图书。
数据库系统结构
数据库系统的三级模式结构:模式(Schema)、外模式(External Schema)、内模式(Internal Schema)
模式(也称逻辑模式):
①数据库中全体数据的逻辑结构和特征的描述
②所有用户的公共数据视图,综合了所有用户的需求
模式的地位:是数据库系统模式结构的中间层
①与数据的物理存储细节和硬件环境无关
②与具体的应用程序、开发工具及高级程序设计语言无关
外模式(也称子模式或用户模式):
①数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
②数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式的用途:①保证数据库安全性的一个有力措施 ②每个用户只能看见和访问所对应的外模式中的数据
内模式(也称存储模式):
①是数据物理结构和存储方式的描述
②是数据在数据库内部的表示方式:
a. 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
b. 索引的组织方式
c. 数据是否压缩存储
d. 数据是否加密
e. 数据存储记录结构的规定
第2章 关系数据库
由之前的内容直到,关系模型是由关系数据结构、关系操作集合、关系完整性约束三部分组成的,所以要了解对于关系模型这三部分的含义
2.1关系数据结构及形式化定义
关系模型是建立在集合代数的基础上的,因此从集合论角度给出关系数据结构的形式化定义。
1.域(Domain):域是一组具有相同数据类型的值的集合,例如整数、自然数都是域
2.笛卡尔积(Cartesian Product):笛卡尔积是域上面的一种集合运算。
给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D2,…,Dn的笛卡尔积为:
笛卡尔积中每个元素(d1,d2,…dn)称为一个n元组或简称元组
笛卡尔积可表示为一个二维表,表中每行对应一个元组,表中每一列的值来自一个域
例如,给出3个域:
D1=导师集合SUPERVISOR={张清玫,刘逸}
D2=专业集合SPECIALITY={计算机专业,信息专业}
D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D1,D2,D3的笛卡尔积为
3.关系(Relation)
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,
表示为R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)
关系也是一个二维表,每行对应一个元组,每列对应一个域,每列称为属性
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)
若一个关系有多个候选码,则选定其中一个或多个为主码(Primary key)
候选码的多个属性称为主属性(Prime attribute),不包含在任何候选码中的属性称为非主属性;最简单的情况下,候选码只包含一个属性,如果关系模式的所有属性都是这个关系的候选码,则称为全码(All-key)
2.2关系操作
关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作这两大部分。
查询操作又分为:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等;其中:选择、投影、并、差、笛卡尔积是5种基本操作,其他操作是可以用基本操作来定义和导出的。
2.3关系的完整性
关系模型的完整性规则是对关系的某种约束条件,关系模型中有三类完整性约束:
实体完整性(Entity Integrity):关系模型以主码作为唯一性标识,主码中的属性即主属性不能取空值
参照完整性(Referential Integrity):外码
用户自定义完整性(User-defined Integrity):反映某一具体应用所涉及的数据必须满足的语义要求
2.4关系代数
并、差、投影、笛卡尔积、选择为五个基本操作,交、连接、除等为附加操作,附加操作可以用五个基本操作表示
选择
选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
如查询信息系(IS系)全体学生
投影
投影操作主要是从列的角度进行运算,但投影成功之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
如查询学生的姓名和所在系
连接
连接运算的含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组
等值连接:θ为’=’的连接运算称为等值连接,即选取属性相等的元组
自然连接:特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中要把重复的属性列去掉
一般的连接操作是从行的角度进行运算的,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
例如:
可以先得到两个关系的笛卡尔积,然后筛选出C < E的
自然连接是特殊的等值连接,相同的属性组进行比较,并去除重复的属性列。即笛卡尔积里找出B相等的然后合并R.B和S.B为B
悬浮元组与外连接
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
外连接(OUTER JOIN)
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
左外连接(LEFT OUTER JOIN或LEFT JOIN):只保留左边关系R中的悬浮元组
右外连接(RIGHT OUTER JOIN或RIGHT JOIN):只保留右边关系S中的悬浮元组
除
除操作是同时从行和列的角度进行运算的
第3章 SQL
基本概念
在SQL中一个关系就对应一个基本表,一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
存储文件的逻辑结构组成了关系数据库的内模式
视图是从一个或几个基本表导出的表,它本身不独立存储在数据库中,这些数据仍存放在导出视图的基本表中
专有名词及解释
1.索引:建立索引是加快查询速度的有效手段,用户(数据库管理员或建表者)可以在基本表上建立一个或多个索引,以提供多种存取路径,系统在存取数据时会自动选择合适的索引作为存取路径。
索引是关系数据库的内部实现技术,属于内模式的范畴。
唯一索引:使用UNIQUE关键字,每个索引值对应唯一一条数据记录
非唯一索引:不使用UNIQUE关键字
聚簇索引:指索引项的顺序与表中记录的物理顺序一致的索引组织,可以在最经常查询的列上建立聚簇索引,对于经常更新的列不宜建立聚簇索引。一个表只能建立一个聚簇索引,一般默认是主键,所谓“与记录的物理顺序一致”即该记录升序索引也升序之类的?
2.视图:视图是从一个或几个基本表(或视图)导出的表,数据库只存放视图的定义而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中数据发生变化,从视图查询出的数据也会随之改变。
视图的作用:
①简化用户的操作:用户所做的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无须了解。
②使用户能以多种角度来看待同一数据:当许多不同种类的用户共享同一个数据库时,这种灵活性是非常有必要的。
③对重构数据库提供了一定的逻辑独立性:即使重构数据库也不一定需要修改应用程序。
④能够对机密数据提供安全保护:只允许用户查询提供给他的视图而不是直接查询表,可以隐藏表中的机密数据
⑤适当的利用视图可以更清晰地表达查询语句:利用视图来表达查询语句
数据定义
SQL数据定义语句
操作对象 |
操作方式 |
||
创建 |
删除 |
修改 |
|
模式 |
CREATE SCHEMA |
DROP SCHEMA |
|
表 |
CREATE TABLE |
DROP TABLE |
ALTER TABLE |
视图 |
CREATE VIEW |
DROP VIEW |
|
索引 |
CREATE INDEX |
DROP INDEX |
|
1.创建/删除数据库
create database 数据库名 [其他选项];
例如我们需要创建一个名为 samp_db 的数据库, 在命令行下执行以下命令:
create database samp_db character set gbk;
为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk。
drop database 数据库名 删除数据库
2.创建/删除/修改基本表
create table student(
id int auto_increment primary key,
name varchar(50),
sex varchar(20),
date varchar(50),
content varchar(100)
)default charset=utf8;
【说明】
DATATYPE --数据类型,mysql有bit int decimal float varchar char date datetime
NUT NULL --可不可以允许资料有空的
PRIMARY KEY --是本表的主键
CONSTRAINT --是对表里的字段添加约束.(约束类型有Check,Unique,Primary key,not null,Foreign key);
删除表:drop table student
修改表:
#表结构修改
create table test
(
id int not null auto_increment primary key, #设定主键
name varchar(20) not null default 'NoName', #设定默认值
department_id int not null,
position_id int not null,
unique (department_id,position_id) #设定唯一值
);
#修改表的名字
#格式:alter table tbl_name rename to new_name
alter table test rename to test_rename;
#向表中增加一个字段(列)
#格式:alter table tablename add columnname type;/alter table tablename add(columnname type);
alter table test add columnname varchar(20);
#修改表中某个字段的名字
alter table tablename change columnname newcolumnname type; #修改一个表的字段名
alter table test change name uname varchar(50);
select * from test;
#表position 增加列test
alter table position add(test char(10));
#表position 修改列test