数据库培训教程.docx
- 文档编号:3533514
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:115
- 大小:778.57KB
数据库培训教程.docx
《数据库培训教程.docx》由会员分享,可在线阅读,更多相关《数据库培训教程.docx(115页珍藏版)》请在冰豆网上搜索。
数据库培训教程
数据库培训教程
第一章
数据库概念
目标
掌握数据库基本概念
了解数据库发展历史
掌握数据库组成
了解数据组成方式
了解实体关系模型
1.1前言
当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。
例如:
A,称数据库是一个"记录保存系统"(该定义强调了数据库是若干记录的集合)。
B,称数据库是"人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合"(该定义侧重于数据的组织)。
更有甚者称数据库是"一个数据仓库"。
这种说法虽然形象,但并不严谨。
严格地说,数据库是"按照数据结构来组织、存储和管理数据的仓库"。
在经济管理的日常工作中,常常需要把某些相关的数据放进这样"仓库",并根据管理的需要进行相应的处理。
例如,学校教务处把本校学生的基本情况(学号、姓名、年龄、性别、地址、电话等)存放在表1,1中,这张表就可以看成是一个数据库。
有了这个"数据仓库"我们就可以根据需要随时查询某学生的基本情况,也可以查询成绩在某个范围内的学生人数等等。
学号
姓名
生日
性别
家庭住址
电话
05001
张三
1988-12-12
0
江苏南京
12345
05002
李四
1987-06--05
1
上海
12346
05003
王五
1987-12-01
0
北京
12347
……
……
表1.1
这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。
此外,在一些企业的财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。
1.2数据库历史
1.2.1人工管理阶段
这一阶段的计算机主要用于科学计算。
硬件中的外存只有卡片、纸带等。
软件只有汇编语言,没有数据管理方面的软件。
数据处理的方式基本上是批处理。
这个时期的数据管理特点如下:
(1)数据不保存。
(2)没有专用软件对数据进行管理。
(3)只有程序(PROGRAM)的概念、没有文件的概念。
(4)数据面向应用(即一组数据对应于一个程序)。
(5)对数据的存取以记录为单位。
1.2.2文件系统阶段
这一阶段的计算机不仅用于科学计算,还大量用于信息管理。
外存已有磁盘、磁鼓等直接存取贮设备。
软件方面出现了高级语言和操作系统。
操作系统中的文件系统(有时也称为“信息处理模块”)是专门处理外存的数据管理软件。
处理数据方式有批处理,也有联机实时处理。
这一阶段数据管理情况如下:
特点:
(1)数据可长期保存在外存的磁盘上。
(2)数据的物理结构与逻辑结构有了区别,但较简单。
程序与设备之间有设备独立性(程序只需用文件名与数据打交道)。
(3)文件的形式已多样化,有索引文件,链接文件和直接存取等,因而对文件的记录可顺序访问,也可随机访问。
但文件之间是独立的,联系要通过程序去构造,文件的共享性差。
(4)有了存贮文件以后,数据不再仅仅属于某个特定的程序,而可以重复使用。
但文件结构的设计仍然是基于特定的用途,程序仍然是基于特定的。
(5)对数据的存取基本上还是以记录为单位。
文件系统有三大缺陷:
(1)数据冗余性(REDUNDANCY),由于文件之间缺泛联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存贮。
(2)不一致性(INCONSISTENCY),这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎,就可能同样的数据在不同的文件中不一样。
(3)数据联系弱(POORDATARELATIONSHIP),这是文件之间独立,缺乏联系造成的。
1.2.3数据库阶段
采用复杂的数据模型(结构)
数据模型不仅要描述数据本身的特点,还要描述数据之间的联系。
这种联系是通过存取路径来实现的。
通过一切存取路径来表示自然的数据联系是数据库与传统文件的根本区别。
这样数据不再面向特定的某个或多个应用,而是面向整个应用系统。
数据冗余明显减少,实现了数据共享。
有较高的数据独立性
在数据库系统中,系统提供映象的功能,确保应用程序对数据结构和存取方法有较高的独立性。
用户以简单的逻辑结构操作数据而无需考虑数据的物理结构。
数据库结构分成用户的逻辑结构、整体逻辑结构和物理结构。
在改变物理结构时,不影响整体逻辑结构、用户的逻辑结构以及应用程序,这样就认为数据库达到了物理数据独立性。
在改变整体逻辑时,不影响用户的逻辑结构以及应用程序,这样就认为数据库达到了逻辑数据独立性。
数据库系统为用户提供了方便的用户接口
用户可使用查询语言或简单的终端命令操作数据库,也可以使用程序方式(用高级语言如C++、JAVA等语言和数据库操纵语言编制的程序)操作数据库。
提供下述四方面的数据控制功能
(1)数据完整性:
保证数据库始终包含正确的数据。
用户可设计一些完整性规则以确保数据值的正确性。
(2)数据安全性:
保证数据的安全和机密,防止数据丢失或被窃取。
(3)数据库的并发控制:
避免并发程序之间的相互干扰,防止数据库数据被破坏,杜绝提供给用户不正确的数据。
(4)数据的恢复:
在数据库被破坏时或数据不可靠时,系统有能力把数据库恢复到最近某个时刻的正确状态。
数据项为单位操作
对数据库的操作除了以记录为单位外还可以数据项为单位。
数据库种类
按照数据库数据的存取容量的大小,下面列出了常见的一些数据库。
小型数据库:
ACCESS,FOXPRO
中型数据库:
MYSQL,SQLSERVER
大型数据库:
ORACLE,DB2,SYBASE
1.3数据组织方式
数据是现实世界中信息的载体,是信息的具体表达形式。
为了表达有意义的信息内容,数据必须按照一定的方式进行组织和存储。
数据库中的数据组织一般可以分为四级:
数据项、记录、文件和数据库。
1.3.1数据项
数据项是可以定义数据的最小单位,也叫元素、基本项、字段等。
数据项与现实世界实体的属性相对应,数据项有一定的取值范围,称为域。
域以外的任何值对该数据项都是无意义的。
如表示月份的数据项的域是1—12,13就是无意义的值。
每个数据项都有一个名称,称为数据项目。
数据项的值可以是数值的、字母的、汉字的等形式。
数据项的物理特点在于它具有确定的物理长度,一般用字节数表示。
几个数据项可以组合,构成组合数据项。
如“日期”可以由日、月、年三个数据项组合而成。
组合数据项也有自己的名字,可以作为一个整体看待。
1.3.2记录
记录由若干相关联的数据项组成。
记录是应用程序输入—输出的逻辑单位。
对大多数据库系统,记录是处理和存储信息的基本单位。
记录是关于一个实体的数据总和,构成该记录的数据项表示实体的若干属性。
记录有“型”和“值”的区别。
“型”是同类记录的框架,它定义记录,“值”是记录反映实体的内容。
为了唯一标识每个记录,就必须有记录标识符,也叫关键字。
记录标识符一般由记录中的第一个数据项担任,唯一标识记录的关键字称主关键字,其它标识记录的关键字称为辅关键字。
1.3.3表
表是一给定类型的(逻辑)记录的全部具体值的集合。
表用文件名称标识。
表根据记录的组织方式和存取方法可以分为:
顺序表、索引表、直接表和倒排表等等。
1.3.4数据库
数据库是比文件更大的数据组织。
数据库是具有特定联系的数据的集合,也可以看成是具有特定联系的多种类型的记录的集合。
数据库的内部构造是文件的集合,这些文件之间存在某种联系,不能孤立存在。
1.4数据间的逻辑联系
数据间的逻辑联系主要是指记录与记录之间的联系。
记录是表示现实世界中的实体的。
实体之间存在着一种或多种联系,这样的联系必然要反映到记录之间的联系上来。
数据之间的逻辑联系主要有三种:
1.4.1一对一的联系
简记为1:
1,例如图1.1,地理名称与对应的空间位置之间的关系就是一种一对一的联系。
一对一的联系(1:
1)
图1.1
1.4.2一对多的联系
现实生活中以一对多的联系较多常见。
例如图1.2:
行政区划就具有一对多的联系,一个省对应有多个市,一个市有多个县,一个县又有多个乡。
一对多的联系(1:
N)
图1.2
1.4.3多对多的联系
这是现实中最复杂的联系。
例如图1.3:
土壤类型与种植的作物之间有多对多联系。
同一种土壤类型可以种不同的作物,同一种作物又可种植在不同的土壤类型上。
多对多的联系(N:
N)
图1.3
1.5实体关系
实体关系图:
简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是实体型、属性和联系,其表示方法为:
实体型(ENTITY):
用矩形表示,矩形框内写明实体名;比如学生张三丰、学生李寻欢都是实体。
属性(ATTRIBUTE):
用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。
联系(RELATIONSHIP):
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
N或M:
N)就是指存在的三种关系(一对一,一对多,多对多)。
比如老师给学生授课存在授课关系,学生选课存在选课关系。
如图1,4所示,表示学生以及课程,成绩之间的实体-联系图。
图1.4学生和课程之间的E-R关系图
1.6总结
综上所述,数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。
当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个"数据库集合"。
数据库的优点
使用数据库可以带来许多好处:
(1)减少了数据的冗余度,从而大大地节省了数据的存储空间;
(2)实现数据资源的充分共享等等。
(3)数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序。
数据库是通过数据库管理系统(DBMS-DATABASEMANAGEMENTSYSTEM)软件来实现数据的存储、管理与使用的。
ORACLE就是一种数据库管理系统软件。
它所管理的就是通过它自身创建出来的数据库。
第二章
表格及数据约束
目标
熟悉各种数据类型及其区别
熟练掌握建表及修改表规则
掌握各种约束作用
2.1前言
数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。
对数据库的操作可以基本归结为对数据对象的操作,理解和掌握数据库对象是学习数据库的捷径。
2.2表格概念
数据库是由一组相关文件组成的。
文件是一组相关的记录。
在实际数据库中,文件被称为表,字段称为“列”,记录称为“行”。
2.3数据类型
DB2内置数据类型可以分成数值型(NUMERIC)、字符串型(CHARACTERSTRING)、图形字符串(GRAPHICSTRING)、二进制字符串型(BINARYSTRING)或日期时间型(DATETIME)。
还有一种叫做DATALINK的特殊数据类型。
DATALINK值包含了对存储在数据库以外的文件的逻辑引用。
如图2.1表
学号
姓名
性别
0001
张三
男
0002
李敏
女
2.1表
2.3.1数值类型
所有数字都有符号和精度。
精度是除符号位以外的位数
SMALLINT(小型整数):
两个字节的整数,精度为5位。
范围-32768~32767。
INTEGER或INT(大型整数):
四个字节的整数,精度为10位。
范围-2147483648~2147483647
BIGINT(大整数):
八个字节的整数,精度为19位。
范围-9223372036854775808~9223372036854775807
DECIMAL(P,S):
是一个十进制数。
小数点的位置取决于数字的精度(P)和小数位(S)。
小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。
精度是数字的总位数,最大精度是31位。
小数型的范围从-1031+1到1031-1。
REAL(单精度浮点数):
是实数的32位近似值。
DOUBLE(双精度浮点数):
是实数的64位近似值。
DOUBLE也称FLOAT。
包括SMALLINT、INTEGER、BIGINT、DECIMAL(P,S)、REAL和DOUBLE。
所有数值都有符号和精度。
精度是指除符号以外的二进制或十进制的位数。
如果数字的值大于等于零,就认为符号为正。
2.3.2字符串类型
字符串是一个字节列。
字符串的长度为该序列中的字节数。
如果长度为0,则该字符串的值称为空字符串。
定长字符串:
CHAR(N)或CHARACTER(N),长度属性介于1到254字节之间。
如果没有指定长度,那么就认为是1个字节。
变长字符串:
VARCHAR(N)、LONGCHARACTERVARYING(N)以及CLOB三种类型。
定长图形字符串:
GRAPHIC(N),长度介于1到127个双字节字符之间。
如果没有指定长度,就认为是1个双字节字符。
变长图形字符串:
VARGRAPHIC(N),LONGVARCHAPHIC以及DBCLOB类型,最大长度可达16,336个双字节字符。
二进制大对象:
BLOB(N[K|M|G]),是一个字节序列。
它用于保存非传统数据,如图像等。
字符串包括CHAR(N)类型的定长字符串和VARCHAR(N)、LONGVARCHAR或CLOB(N)类型的变长字符串。
字符串的长度就是序列中的字节数。
2.3.3日期时间型
日期时间值是日期、时间以及时间戳记(一个格式为YYYYXXDDHHMMSS的字符串表示有效日期和时间的14为字符串)的表示法。
日期时间值可以用于某些算术运算和字符串运算,并且与某些字符串是相容的,但是它们既不是字符串也不是数字。
日期DATE:
是一个由三部分组成的值(年、月和日)。
时间TIME:
是一个由三部分组成的值(小时、分钟和秒)。
时间戳记TIMESTAMP:
是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。
日期时间型类型如表2.2所示
类型
说明
日期:
DATE
DATE是一个由三部分组成的值(年、月和日)。
年份部分的范围是从0001到9999。
月份部分的范围是从1到12。
日部分的范围是从1到N,其中N的值取决于月份。
DATE列长10个字节。
时间:
TIME
TIME是一个由三部分组成的值(小时、分钟和秒)。
小时部分的范围是从0到24。
分钟和秒部分的范围都是从0到59。
如果小时为24,分钟和秒的值都是0。
TIME列长8个字节。
时间戳记:
TIMESTAMP
TIMESTAMP是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。
年份部分的范围是从0001到9999。
月份部分的范围是从1到12。
日部分的范围是从1到N,其中N的值取决于月份。
小时部分的范围是从0到24。
分钟和秒部分的范围都是从0到59。
微秒部分的范围是从000000到999999。
如果小时是24,那么分钟值、秒的值和微秒的值都是0。
TIMESTAMP列长26个字节。
表2.2日期时间型
DB2常用的数据类型如表2.3所示
数据类型
类型
说明
示例或范围
CHAR(N)
CHARACTER(N)
定长字符串
1~254字节
‘SUNNYDAY’
VARCHAR(N)
变长字符串
最大长度32,672字节
‘SUNNYDAY’
SMALLINT
数字
长度为2字节的整数,精度为5位
范围从-32768~32,767
INTEGER
INT
数字
长度为4字节的整数,精度为10位
范围
-2147483648
~2147483647
BIGINT
数字
长度为8字节的整数,精度为19位
范围
-9223372036854775808
~9223372036854775807
DECIMAL(5,2)
数字
精度是5,小数位是2
范围
-1031+1到1031-1
REAL
数字
单精度浮点32位近似值
范围
-3.402*1038~-1,175*10-37
或1,175*10-37~3.402*1038
或为0
DOUBLE
数字
双精度浮点数64位近似值
范围
-179769*10308~-2225*10-307
或2225*10-307~179769*10308
或为0
DATE
日期时间
由三部分组成的值
2009-10-10
TIME
日期时间
由三部分组成的值
13.18.30
TIMESTAMP
日期时间
由七部分组成的值
2009-10-10-13.18.30.000000
表2.3DB2常用的数据类型
2.3.4空值
空值是一个区分所有非空值的特殊值。
它意味着对应的行中的某一列无任何其他值,所有数据类型都允许存在空值
注意:
日期时间值的字符串表示:
尽管DATE、TIME和TIMESTAMP的值的内部表示对用户是透明的,日期、时间和时间戳记也可以用字符串来表示,CHAR标量函数可以用于创建日期时间值的字符串表示。
日期值的字符串表示是一个以数字开始,长度不少于8个字符的字符串。
日期值的月份和日部分中前面的零可以省略。
时间值的字符串表示是以数字开头,长度不少于4个字符的字符串。
时间值的小时部分前面的零可以省略,秒部分可以完全省略。
如果秒的值没有指定,那么就认为是0。
时间戳记值的字符串表示是以数字开头,长度不少于16个字符的字符串。
完整的时间戳记字符串表示形式为YYYY-MM-DD-HH,MM,SS,NNNNNN。
时间戳记值的月、日或小时等几部分前面的零可以省略,微秒可以截断或完全省略。
如果任何时间戳记值的微秒部分尾零被省略掉了,那么将假定空缺的数位上是零。
2.4表的操作
2.4.1表的命名规则
表名标识一个表,所以应尽可能在表名中描述表,表名和列名的命名规则:
必须以字母开头
必须只能包含A–Z,A–Z,0–9,_,$,@和#
必须不能和用户定义的其他对象重名
必须不能是DB2的保留字
例:
表名的命名。
正确表名:
STUDENT_INFO
错误表名:
STUDENT_INFO!
@#
2.4.2表的创建
创建表语法如下:
CREATETABLE表名(
列名1属性默认值是否为空,
列名2属性默认值是否为空
)
例2.1:
学生表信息(TBL_STUDENTINFO)
伦理名
物理名
属性
主键
外键
学号
STUNO
INTEGER非空
是
姓名
STUNAME
VARCHAR(20)非空
生日
STUBIRTH
DATE
性别
STUSEX
CHAR
(1)
家庭住址
STUADDR
VARCHAR(200)
手机
STUTEL
VARCHAR(11)
表2.4学生信息表
创建学生信息表
CREATETABLETBL_STUDENTINFO_00MLL(
STUNOINTEGERNOTNULL,
STUNAMEVARCHAR(20)NOTNULL,
STUBIRTHDATE,
STUSEXCHAR
(1),
STUDADDRVARCHAR(200),
STUTELVARCHAR(11)
);
例2.2
课程表(TBL_CLASSINFO)
伦理名
物理名
属性
主键
外键
课程号
CLASSNO
CHAR(3)非空
是
课程名
CLASSNAME
VARCHAR(10)非空
表2.5课程表
创建课程表
CREATETABLETBL_CLASSINFO_00MLL(
CLASSNOCHAR(3)NOTNULL,
CLASSNAMEVARCHAR(10)NOTNULL
);
例2.3
成绩表(TBL_SCOREINFO)
伦理名
物理名
属性
主键
外键
学号
STUNO
INTEGER非空
是
参照学生表
课程号
CLASSNO
CHAR(3)非空
是
参照课程表
考试成绩
SCORE
DECIMAL(3,1)
表2.6成绩表
创建成绩表
CREATETABLETBL_SCOREINFO_00MLL(
STUNOINTEGERNOTNULL,
CLASSNOCHAR(3)NOTNULL,
SCOREDECIMAL(3,1)
);
注意:
NULLà可以为空NOTNULLà不可为空,DB2中空字符串’’不是NULL,此处与ORACLE数据库不同。
一般定义成CHAR型字段,是因为这个字段的数据长度固定,并且实际数据查询中,CHAR型比VARCHAR型的效率高。
性别这种固定内容的数据字段,一般不直接定义保存成’男’,’女’,而用CODE代替,数据’1’à‘男’,‘0’à‘女’。
2.4.3表的删除
删除表语法如下:
DROPTABLE表名
例2.4:
删除学生信息表
DROPTABLETBL_STUDENTINFO;
2.4.4表的修改
2.4.4.1字段的增加
增加字段语法如下:
ALTERTABLE表名ADD列名属性
例2.5:
学生信息表增加学生电话这一项目。
学生表信息(TBL_STUDENTINFO)
伦理名
物理名
属性
主键
外键
学号
STUNO
INTEGER非空
是
姓名
STUNAME
VARCHAR(20)非空
生日
STUBIRTH
DATE
性别
STUSEX
CHAR
(1)
家庭住址
STUADDR
VARCHAR(200)
手机
STUTEL
VARCHAR(11)
小组负责人
UPSTUNO
INTEGER
添加小组负责人
ALTERTABLETBL_STUDENTINFOADDUPSTUNOINTEGER;
2.4.4.2字段的删除
删除字段语法如下:
ALTERTABLE表名DROPCOLUMN列名
例2.6:
学生信息表删除学生电话这一项目。
ALTERTABLETBL_STUDENTINFODROPCOLUMNSTUTEL
2.4.4.3字段的修改
修改字段语法如下:
ALTERTABLE表名ALTERCOLUMN列名SETDATA TYPE 属性
例2.7:
学生信息表修改学生姓名属性。
ALTERTABLETBL_STUDENTINFO
ALTERCOLUM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 培训 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)