数据库.docx
《数据库.docx》由会员分享,可在线阅读,更多相关《数据库.docx(19页珍藏版)》请在冰豆网上搜索。
数据库
数据库技术的重要性
1数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支。
产生到今天仅仅40余年,但取得辉煌成就:
经历了三代演变:
层次/网状系统、关系系统、新一代数据库系统家族;造就了三位图灵奖turingaward得主:
C.W.Bachman、E.F.Codd和JamesGray;发展了一门计算机基础学科:
以数据模型和DBMS核心技术为主,内容丰富、领域宽广;形成了一个巨大的软件产业:
DBMS及其相关工具产品、应用解决方案;当前,在大、中、小、微型计算机上都有数据库系统在运行;信息资源已成为各部门的重要财富和资源,各行各业均需应用信息系统,而数据库是信息系统的核心。
2数据库是其它很多系统的核心或重要组成部分,如:
⏹MIS管理信息系统
⏹DSS决策支持系统,知识库,规则库,专家系统,智能数据库
⏹计算机辅助设计与制造工程数据库
⏹计算机集成制造
3数据库技术与其他学科相结合,涌现出各种新型的数据库系统,如:
分布式数据库系统并行数据库系统面向对象数据库系统知识库系统多媒体数据库系统模糊数据库系统,网络数据库系统
§1.1四个基本概念
⏹数据(Data)
⏹数据库(Database)
⏹数据库管理系统(DBMS)
⏹数据库系统(DBS)
一、数据
信息:
客观世界中事物的存在方式和运动状态及其变化的反映,是客观事物之间相互联系和相互作用的表征。
数据:
数据是对信息的符号化表示,即用一定的符号(数字、文字、图形、图象、声音等)来表示信息。
⏹数据与信息的联系:
数据是信息的载体,信息是数据的内涵。
同一信息可以有不同的数据表示形式,而同一数据也可能有不同的解释。
数据举例
⏹数据:
(李明,男,1972,江苏,计算机系,1990)
⏹李明是个大学生,男,1972年出生,江苏人,1990年考入计算机系
⏹李明是位老师,男,1972年参加工作,江苏人,计算机系,1990年晋升为教授
⏹数据的形式不能完全表达其内容,必须经过解释,数据的解释即对数据语义的说明
二、数据库(Database,简称DB)
⏹人们收集并抽取出一个应用所需要的大量数据之后,应将其保存起来以供进一步加工处理,进一步抽取有用信息
数据库是长期储存在计算机内、有组织的、可共享的大量数据集合
数据库的特征:
数据按一定的数据模型组织、描述和存储;可为各种用户共享;冗余度较小;易扩展;数据独立性较高。
三、数据库管理系统(DatabaseManagementSystem,简称DBMS)
⏹数据库管理系统是位于用户与操作系统之间的一层数据管理软件。
DBMS的主要功能
⏹数据定义功能:
提供数据定义语言(DDL),定义数据库中的数据对象
⏹数据操纵功能:
提供数据操纵语言(DML)操纵数据实现对数据库的基本操作(查询、插入、删除和修改)
⏹数据库的运行管理:
安全性控制;完整性控制;多用户对数据的并发使用时的并发控制
⏹数据库的建立和维护功能(实用程序);数据库数据批量装载;数据库转储;介质故障恢复;数据库的重组织;性能监视、分析等
四、数据库系统(DatabaseSystem,简称DBS)
数据库系统是指在计算机系统中引入数据库后的系统构成。
数据库系统由数据库、数据库管理系统、应用系统(及其开发工具)、数据库管理员和用户构成。
§1.2数据管理技术的产生和发展
在应用需求的推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了下面三个阶段:
⏹一、人工管理阶段(40年代中--50年代中)
特点:
数据不保存;没有专门的应用程序进行数据处理;没有数据共享功能;不具备数据的独立性。
应用程序与数据的对应关系(人工管理)
⏹二、文件系统阶段(50年代末--60年代中)
特点:
数据独立保存;用专门的数据管理软件来管理数据;文件的组成形式丰富;数据的独立性差;数据的共享性差,冗余度大。
应用程序与数据的对应关系(文件系统)
⏹三、数据库系统阶段(60年代末--现在)
特点:
数据结构化;数据的共享性高,冗余度低,可扩展性和可移植性强;数据独立于程序;数据库系统具有统一管理和控制功能。
应用程序与数据的对应关系(数据库系统)
⏹物理独立性:
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。
当数据的物理存储改变了,应用程序不用改变。
⏹逻辑独立性:
指用户的应用程序与数据库的逻辑结构是相互独立的。
数据的逻辑结构改变了,用户程序也可以不变。
§1.3数据库系统结构
§1.3.1数据库系统内部的模式结构(从数据库管理系统角度看)
§1.3.2数据库系统外部的体系结构(从数据库最终用户角度看)
§1.3.1数据库系统的模式结构
数据库系统的三级模式结构
1.模式(Schema)
⏹模式(也称逻辑模式、数据库模式、概念模式);一个数据库只有一个模式;模式的地位:
是数据库系统模式结构的中间层
2.外模式(ExternalSchema)
⏹外模式(也称子模式或用户模式);一个数据库可以有多个外模式,但一个应用程序只能使用一个外模式;外模式的地位:
介于模式与应用之间;模式与外模式的关系:
一对多;外模式通常是模式的子集
外模式(续)
⏹外模式的用途
保证数据库安全性的一个有力措施。
每个用户只能看见和访问所对应的外模式中的数据
3.内模式(InternalSchema)
⏹内模式(也称存储模式)
⏹是数据物理结构和存储方式的描述
⏹是数据在数据库内部的表示方式
⏹记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
⏹索引的组织方式
⏹数据是否压缩存储
⏹数据是否加密
⏹一个数据库只有一个内模式
三级模式与二级映象
⏹三级模式是对数据的三个抽象级别
⏹二级映象在DBMS内部实现这三个抽象层次的联系和转换
数据库系统的三级模式结构
1.外模式/模式映象
⏹定义外模式与模式之间的对应关系
⏹每一个外模式都对应一个外模式/模式映象
⏹映象定义通常包含在各自外模式的描述中
外模式/模式映象的用途
保证数据的逻辑独立性
⏹当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
⏹应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
2.模式/内模式映象
⏹模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
例如,说明逻辑记录和字段在内部是如何表示的
⏹数据库中模式/内模式映象是唯一的
⏹该映象定义通常包含在模式描述中
模式/内模式映象的用途
保证数据的物理独立性
⏹当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
⏹应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
小结
⏹模式
⏹是数据库的中心与关键
⏹独立于数据库的其它层次
⏹设计数据库模式结构时应首先确定数据库的逻辑模式
小结(续)
⏹内模式
⏹依赖于全局逻辑结构,但独立于数据库的用户视图即外模式,也独立于具体的存储设备。
⏹它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
小结(续)
⏹外模式
⏹面向具体的应用程序,定义在逻辑模式之上,但独立于存储模式和存储设备
⏹设计外模式时应充分考虑到应用的扩充性。
当应用需求发生较大变化,相应外模式不能满足要求时,该外模式就得做相应改动
小结(续)
⏹二级映象
⏹保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
1.3.2数据库系统外部的体系结构
⏹单用户结构
⏹主从式结构
⏹分布式结构
⏹客户/服务器结构
⏹浏览器/应用服务器/数据库服务器结构
1.单用户数据库系统
⏹整个数据库系统(应用程序、DBMS、数据)装在一台计算机上,为一个用户独占,不同机器之间不能共享数据。
⏹早期的最简单的数据库系统
2.主从式结构的数据库系统
⏹一个主机带多个终端的多用户结构
⏹数据库系统,包括应用程序、DBMS、数据,都集中存放在主机上,所有处理任务都由主机来完成
⏹各个用户通过主机的终端并发地存取数据库,共享数据资源
主从式结构的数据库系统
主从式结构的数据库系统(续)
⏹优点
⏹易于管理、控制与维护。
⏹缺点
⏹当终端用户数目增加到一定程度后,主机的任务会过分繁重,成为瓶颈,从而使系统性能下降。
⏹系统的可靠性依赖主机,当主机出现故障时,整个系统都不能使用。
3.分布式结构的数据库系统
⏹数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。
⏹网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用
⏹同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用
分布式结构的数据库系统
分布式结构的数据库系统(续)
⏹优点
⏹适应了地理上分散的公司、团体和组织对于数据库应用的需求。
⏹缺点
⏹数据的分布存放给数据的处理、管理与维护带来困难。
⏹当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约。
4.客户/服务器结构的数据库系统
⏹把DBMS功能和应用分开
⏹网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器
⏹其他结点上的计算机安装DBMS的外围应用开发工具,用户的应用系统,称为客户机
客户/服务器数据库系统的种类
⏹集中的服务器结构
一台数据库服务器,多台客户机
⏹分布的服务器结构
⏹在网络中有多台数据库服务器
⏹分布的服务器结构是客户/服务器与
分布式数据库的结合
集中的服务器结构
分布的服务器结构
客户/服务器结构的优点
⏹客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后,只将结果返回给用户,从而显著减少了数据传输量
⏹数据库更加开放
⏹客户与服务器一般都能在多种不同的硬件和软件平台上运行
⏹可以使用不同厂商的数据库应用开发工具
客户/服务器结构的缺点
“胖客户”问题:
⏹相同的应用程序要重复安装在每一台客户机上,从系统总体来看,大大浪费了系统资源。
⏹系统规模达到数百数千台客户机,它们的硬件配置、操作系统又常常不同,要为每一个客户机安装应用程序和相应的工具模块,其安装维护代价便不可接受了。
5.浏览器/应用服务器/数据库服务器结构
⏹客户端:
浏览器软件、用户界面
浏览器的界面统一,广大用户容易掌握
大大减少了培训时间与费用。
⏹服务器端分为两部分:
⏹Web服务器、应用服务器
⏹数据库服务器
专门的应用服务器处理客户请求,提高了数据库的访问效率
将部分任务处理和数据操作移到后台,简化了客户机的设计
第8章创建和使用表
8.1创建、修改和删除表
8.2数据更新(记录的增加、修改、删除)
⏹创建一个数据表时主要包括以下几个组成部分:
1.字段名(列名):
字段名可长达128个字符。
字段名可包含中文、英文字母、下划线、#号、货币符号($)及AT符号(@)。
同一表中不许有重名列;
2.字段数据类型:
当定义表时,需要为表中的每一个字段设置一个数据类型,用来指定字段所存放的数据是整数、字符串、货币或是其它类型的数据。
⏹SQLServer的数据类型有很多种,主要分为以下8类:
1.整数数据类型:
依整数数值的范围大小,有BIT,INT,SMALLINT,TINYINT四种。
2.精确数值类型:
用来定义可带小数部分的数字,有NUMERIC和DECIMAL两种。
二者相同。
如:
123.0、8000.56
3.近似浮点数值数据类型:
当数值的位数太多时,可用此数据类型来取其近似值,用FLOAT和REAL两种。
如:
1.23E+10
4.日期时间数据类型:
用来表示日期与时间,依时间范围与精确程度可分为DATETIME与SMALLDATETIME两种。
如:
1998-06-0815:
30:
00
5.字符串数据类型:
用来表示字符串的字段。
包括:
CHAR,VARCHAR,TEXT三种,如:
“数据库”
6.UNICODE字符串数据类型:
UNICODE是双字节文字编码标准,包括NCHAR,NVARCHAR与NTEXT三种。
与字符串数据类型相类似,但UNICODE的一个字符用2字节存储,而一般字符数据用一个字节存储。
7.二进制数据类型:
用来定义二进制码的数据。
有:
BINARY,VARBINARY,IMAGE三种,通常用十六进制表示:
如:
OX5F3C
8.货币数据类型:
用来定义与货币有关的数据,分为MONEY与SMALLMONEY两种,如:
123.0000
各种数据类型的有关规定如下表
3其他约束:
PRIMARYKEY、UNIQUE、FOREIGNKEY
(主键约束、唯一约束、外键约束)
(1)PRIMARYKEY:
主码
(2)UNIQUE:
码
(3)FOREIGNKEY:
外码
1、创建表
⏹使用语句CREATETABLE创建数据表,其基本语法格式为:
CREATETABLE<表名>(<列定义>[{,<列定义>|<表约束>}])
⏹<表名>是合法标识符,最多可有128个字符,如S,SC,C,不允许重名。
⏹<列定义>:
<列名><数据类型>[{<列约束>}]
定义完整性约束
⏹上例为创建基本表的最简单形式,还可以对表进一步定义,如主键、空值等的设定,使数据库用户能够根据应用的需要对基本表的定义做出更为精确和详尽的规定。
⏹在SQLServer中,对于基本表的约束分为列约束和表约束。
⏹列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;
⏹表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用’,’分隔,定义表约束时必须指出要约束的那些列的名称。
完整性约束的基本语法格式为:
[CONSTRAINT<约束名>]<约束类型>
⏹约束名:
约束不指定名称时,系统会给定一个名称。
⏹约束类型:
在定义完整性约束时必须指定完整性约束的类型。
⏹在SQLSERVER中可以定义五种类型的完整性约束,下面分别加以介绍:
(1)NULL/NOTNULL
⏹是否允许该字段的值为NULL。
⏹NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。
⏹当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。
⏹如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用
⏹只能用于定义列约束,
⏹其语法格式如下:
[CONSTRAINT<约束名>][NULL|NOTNULL]
(2)UNIQUE约束
⏹UNIQUE约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。
⏹定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
⏹唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。
⏹UNIQUE既可用于列约束,也可用于表约束。
⏹UNIQUE用于定义列约束时,其语法格式如下:
[CONSTRAINT<约束名>]UNIQUE
(3)PRIMARYKEY约束
⏹PRIMARYKEY约束用于定义基本表的主键,起唯一标识作用,其值不能为NULL,也不能重复,以此来保证实体的完整性。
⏹PRIMARYKEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
⏹①在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束;
⏹②对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
⏹注意:
不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARYKEY约束。
PRIMARYKEY既可用于列约束,也可用于表约束。
⏹PRIMARYKEY用于定义列约束时,其语法格式如下:
[CONSTRAINT<约束名>]PRIMARYKEY
(4)FOREIGNKEY约束
⏹FOREIGNKEY约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。
⏹系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。
以此保证两个表之间的连接,确保了实体的参照完整性。
⏹FOREIGNKEY既可用于列约束,也可用于表约束,
⏹其语法格式为:
[CONSTRAINT<约束名>]FOREIGNKEYREFERENCES<主表名>(<列名>[<,列名>…])
USEStudent_Course
CREATETABLESC
(SnoCHAR(8)NOTNULLCONSTRAINTS_FOREFOREIGNKEYREFERENCESStudent(Sno),
CnoCHAR(8)NOTNULLCONSTRAINTC_FOREFOREIGNKEYREFERENCESCourse(Cno),
GradeNUMERIC(3),
CONSTRAINTSC_PRIMPRIMARYKEY(SNO,CNO));
修改基本表
⏹由于应用环境和应用需求的变化,经常需要修改基本表的结构,比如,增加新列和完整性约束、修改原有的列定义和完整性约束等。
⏹使用ALTERTABLE命令来完成这一功能,有如下三种修改方式:
1.ADD方式
⏹用于增加新列和完整性约束,定义方式同CREATETABLE语句中的定义方式相同,其语法格式为:
ALTERTABLE<表名>ADD<列定义>|<完整性约束定义>
2.ALTER方式
⏹用于修改某些列,其语法格式为:
ALTERTABLE<表名>
ALTERCOLUMN<列名><数据类型>[NULL|NOTNULL]
3.DROP方式
⏹删除完整性约束定义,其语法格式为:
ALTERTABLE<表名>
DROPCONSTRAINT<约束名>[,约束名…]
⏹删除列
ALTERTABLE<表名>
DROPCOLUMN<字段名>[,字段名…]
3.2.3.3删除基本表
⏹当某个基本表无用时,可将其删除。
⏹删除后,该表中的数据和在此表上所建的索引都被删除,而建立在该表上的视图不会随之删除,系统将继续保留其定义,但已无法使用。
⏹如果重新恢复该表,这些视图可重新使用。
⏹删除表的语法格式:
DROPTABLE<表名>
例3.17删除表STUDENT
USEStudent_Course
DROPTABLEStudent
8.2数据更新
1插入数据
2修改数据
3删除数据
1插入数据
⏹插入数据是把新的记录插入到一个存在的表中。
插入数据使用语句INSERTINTO。
⏹语句格式
INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]
VALUES(<常量1>[,<常量2>]…)
⏹功能
将新元组插入指定表中。
[例1]将一个新学生记录
(学号:
95020;姓名:
陈冬;性别:
男;所在系:
IS;年龄:
18岁)插入到Student表中。
INSERT
INTOStudent
VALUES('95020','陈冬','男',18,'IS')
[例2]插入一条选课记录('95020','1')。
INSERT
INTOSC(Sno,Cno)
VALUES('95020','1')
新插入的记录在Grade列上取空值
⏹INTO子句
⏹指定要插入数据的表名及属性列
⏹属性列的顺序可与表定义中的顺序不一致
⏹没有指定属性列:
表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
⏹指定部分属性列:
插入的元组在其余属性列上取空值
⏹VALUES子句
⏹提供的值必须与INTO子句匹配
>值的个数
>值的类型
2修改数据
⏹SQL语言可以使用UPDATE语句对表中的一行或多行记录的某些列值进行修改,其语法格式为:
⏹语句格式
UPDATE<表名>
SET<列名>=<表达式>[,<列名>=<表达式>]…
[WHERE<条件>];
⏹<表名>是指要修改的表
⏹SET子句给出要修改的列及其修改后的值
⏹WHERE子句指定待修改的记录应当满足的条件,WHERE子句省略时,则修改表中的所有记录。
⏹二种修改方式
⏹修改某一个元组的值
⏹修改多个元组的值
(1).修改某一个元组的值
[例4]将学生95001的年龄改为22岁。
UPDATEStudent
SETSage=22
WHERESno='95001'
(2).修改多个元组的值
[例5]将所有学生的年龄增加1岁。
UPDATEStudent
SETSage=Sage+1
[例6]将信息系所有学生的年龄增加1岁。
UPDATEStudent
SETSage=Sage+1
WHERESdept='IS'
3删除数据
DELETE
FROM<表名>
[WHERE<条件>];
–功能
♦删除指定表中满足WHERE子句条件的元组
–WHERE子句
♦指定要删除的元组
♦缺省表示要修改表中的所有元组
⏹二种删除方式
⏹删除某一个元组的值
⏹删除多个元组的值
(1).删除某一个元组的值
[例8]删除学号为95019的学生记录。
DELETE
FROMStudent
WHERESno='95019'
(2).删除多个元组的值
[例9]删除2号课程的所有选课记录。
DELETE
FROMSC
WHERECno='2'
[例10]删除所有的学生选课记录。
DELETE
FROMSC
删除数据(续)
–参照完整性
●插入子表中记录时:
•限制
•忽略
●删除父表中的记录时
•限制
•忽略
•级联