数据库基本原理及应用介绍.ppt_第1页
数据库基本原理及应用介绍.ppt_第2页
数据库基本原理及应用介绍.ppt_第3页
数据库基本原理及应用介绍.ppt_第4页
数据库基本原理及应用介绍.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理及应用,主要内容,数据库基本概念 数据库 数据库管理系统 ER图 规范化 数据查询 数据操作 表和视图 SQL内置函数,基本概念,数据库和数据库管理系统 数据库是在计算机上组织、存储和共享数据的方法,数据库系统是由普通的文件系统发展而来的。数据库系统具有较高的数据独立性,即不依赖于特定的数据库应用程序;数据库系统的数据冗余小,可以节省数据的存储空间;另外数据库系统还很容易实现多个用户的数据共享。 数据库系统成熟的标志就是数据库管理系统的出现。数据库管理系统(DataBase Managerment System,简称DBMS)是对数据库的一种完整和统一的管理和控制机制。数据库管理系统

2、不仅让我们能够实现对数据的快速检索和维护,还为数据的安全性、完整性、并发控制和数据恢复提供了保证。数据库管理系统的核心是一个用来存储大量数据的数据库。,一个真正的数据库系统由硬件和软件两个方面构成。 比如我们要使用Oracle数据库,需要安装Oracle公司提供的数据库服务器软件和一台用于安装数据库管理系统的高性能的计算机服务器。 数据库系统的发展经历了层次模型、网状模型及关系模型几个阶段。当今应用最普遍的是关系型数据库管理系统。 目前,市场上流行的几种大型数据库,如Oracle、DB2、Sybase、MS SQL Server等都是关系型数据库管理系统。Oracle数据库是一种面向对象的关系

3、型数据库管理系统(ORDBMS),是基于标准SQL语言的数据库产品。,基本概念,在数据库的设计阶段,需要创建逻辑模型。关系数据库的逻辑模型叫做实体关系模型。 实体模型化最常用的工具是实体关系图,简称ER(EntityRelationship)图,它是一种简单的图形技术,用来定义数据库中需要的表、字段和关系。它用于数据库设计的第一步,与我们使用的具体的数据库管理系统无关。实体关系模型的优点是: 有效地搜集和表示组织的信息需求。 提供一个容易理解的系统描述图。 易于开发和提炼。 明确定义了信息需求的范围。 将业务需求信息与业务执行活动分开。 根据业务说明或描述创建实体关系图。,实体关系模型,典型的

4、实体关系模型有以下三个要素: 实体:客观存在并可以相互区分的事物称为实体,包括有意义的人、地方或事物,如学生、教师、课程、成绩等。 属性:实体所具有的某一特性称为属性,一个实体可以用若干属性来刻画,如学生实体具有学号、姓名、性别等属性。 关系:两个实体之间的相关性,如学生与课程之间的关系,教师与课程之间的关系。,实体关系模型三要素,实体关系,实体之间的关系有三种类型: 一对一:表示一个实体中的一种情况只与另一个实体中的一种情况有关系。比如:学生与学生证,一个学生只对应一个学生证,一个学生证只对应一个学生。 一对多:表示一个实体中的一种情况与另一个实体中的多种情况有关系。比如:班级与学生,一个班

5、级可有多个学生,而一个学生只能属于某一个班级。 多对多:表示一个实体中的一种情况与另一个实体中的多种情况有关系,而第二个实体中的一种情况也与第一个实体中的多种情况有关系。比如:教师与学生,一个学生有多个教师为其上课,一个教师要为多个学生上课,ER图,在ER模型图中,用实线表示实体之间必须有关系,用虚线表示实体之间是可选的关系,用三角表示一对多关系。 在实体的属性中,在属性前用“*”表示必须有的属性,用“#”表示惟一属性,小写字母“o”代表可选属性。在每一实体上,要定义一个惟一表示该实体的标识符,称为UID(UNIQUE IDENTIFIER),UID是属性之间的组合。图1-3表示了三个实体之间

6、关系的ER图,其中系部ID、专业ID和教师ID分别是三个实体的UID。,目录,数据库基本概念 数据查询 基本语法 排序查询 条件查询 高级查询 数据操作 表和视图 SQL内置函数,数据库查询语言SQL,主要特点: SQL语言可以在Oracle数据库中创建、存储、更新、检索和维护数据,其中主要的功能是实现数据的查询和数据的插入、删除、修改等操作。 SQL语言在书写上类似于英文,简洁清晰,易于理解。它由关键字、表名、字段名,表达式等部分构成。 分类: SQL语言按功能可分为DDL语言、DML语言、DCL语言和数据库事务处理语言四个类别。 SQL语言的主要关键字有:ALTER、DROP、REVOKE

7、、AUDIT、GRANT、ROLLBACK、COMMIT、INSERT、SELECT、COMMENT、LOCK、UPDATE、CREATE、NOAUDIT、VALIDATE、DELETE、RENAME等。,SQL语言的分类,按照SQL语言的不同功用,可以进一步对SQL语言进行划分。下表给出了SQL语言 的分类和功能简介。,由主句和若干个从句组成,主句和从句都由关键字引导。 主句表示该语句的主要功能 从句表示一些条件或限定,有些从句是可以省略的。 在语句中会引用到列名、表名或表达式。另外还有如下一些说明: 关键字、字段名、表名等之间都要用空格或逗号等进行必要的分隔。 语句的大小写不敏感(查询的内

8、容除外)。 语句可以写在一行或多行。 语句中的关键字不能略写和分开写在两行。 要在每条SQL语句的结束处添加“;”号。 为了提高可读性,可以使用缩进。 从句一般写在另一行的开始处。,SQL基本语法,查询语句是最常见的SQL语句,它从给定的表中,把满足条件的内容检索出来。以下是最基本的SELECT语句语法。 SELECT (字段名列表|*) FROM 表名 WHERE 条件; SELECT为查询语句的关键字,该关键字不能省略。 字段名列表代表要查询的字段。 FROM 也是查询语句关键字,后面跟要查询的表名,该关键字不能省略。 WHERE条件限定检索特定的记录,满足“条件”的记录被显示出来,不满足

9、条件的被过滤掉。 语句查询的结果往往是表的一部分行和列。如果字段名列表使用*,将检索全部的字段。如果省略WHERE条件,将检索全部的记录。 SELECT * FROM emp WHERE deptno=10;,SQL查询语句,基本查询语句,1基本查询 select * from dept; 2显示行号 ROWNUM 每个表都有一个虚列ROWNUM,它用来显示结果中记录的行号。我们在查询中也可以显示这个列。SELECT rownum,ename FROM emp; select * from(select rownum no ,id,name from student) where no2; s

10、elect * from (select rownum no,id,name from student where rownum=2; 3显示计算列 在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次序。常用的算术运算符包括: +:加法运算符。 ?:减法运算符。 *:乘法运算符。 /:除法运算符。,基本查询语句,4 连接运算符 在前面,我们使用到了包含数值运算的计算列,显示结果也是数值型的。我们也可以使用字符型的计算列,方法是在查询中使用连接运算。连接运算符是双竖线“|”。通过连接运算可以将两个字

11、符串连接在一起。 5 使用别名 as 我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。 说明:表头显示的是列别名,转换为汉字显示。在列名和别名之间要用AS分隔,如ename和它的别名“名称”之间用AS隔开。AS也可以省略,如sal和它的别名“工资”之间用空格分割。 注意:如果用空格分割,要区别好列名和别名,前面为列名,后面是别名。 别名如果含有空格或特殊字符或大小写敏感,需要使用双引号将它引起来。,6消除重复行 如果在显示结果中存在重复行,可以使用的关键字DISTINCT消除重复显示。 SELECT DIST

12、INCT job FROM emp; 7. 查询结果的排序 SELECT 字段列表 FROM 表名 WHERE 条件ORDER BY 字段名1 ASC|DESC,字段名 ASC|DESC.; ASC 升序(默认)|DESC 降序 SELECT ename, sal FROM emp ORDER BY sal; 可以按多列进行排序,先按第一列,然后按第二列 如果要对计算列排序,可以为计算列指定别名,然后按别名排序。,基本查询语句,条件查询,简单条件查询 要对显示的行进行限定,可在FROM从句后使用WHERE从句,在WHERE从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件

13、表达式中可以包含比较运算,表达式的值为真的记录将被显示。 例子:,条件查询,复合条件查询 可以用逻辑运算符构成复合的条件查询,即把两个或多个条件,用逻辑运算符连接成一个条件。有3个逻辑运算符,如下表所示。 运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号。,条件查询条件特殊表示法,特殊条件查询,Between.and In Is Not Null LIKE 使用LIKE操作符可完成按通配符查找字符串的查询操作,该操作符适合于对数据进行模糊查询。其语句法为: NOT LIKE 匹配模式 匹配模式中除了可以包含固定的字符之外,还可以包含以下的通配符: %:代表0个或多个任意字

14、符。 _ :代表一个任意字符。,函数-数值型函数,函数字符型函数,函数日期型函数,函数类型转换函数,1自动类型转换 Oracle可以自动根据具体情况进行如下的转换: * 字符串到数值。 * 字符串到日期。 * 数值到字符串。 * 日期到字符串。,2日期类型转换 将日期型转换成字符串时,可以按新的格式显示。 如格式YYYY-MM-DD HH24:MI:SS表示“年-月-日 小时:分钟:秒”。Oracle的日期类型是包含时间在内的。,日期类型转换,日期类型转换2,数值转换符,其他常用函数,目录,数据库基本概念 数据查询 基本语法 排序查询 条件查询 高级查询 数据操作 表和视图 SQL内置函数,高

15、级查询,多表联合查询 通过连接可以建立多表查询,多表查询的数据可以来自多个表,但是表之间必须有适当的连接条件。为了从多张表中查询,必须识别连接多张表的公共列。一般是在WHERE子句中用比较运算符指明连接的条件。 忘记说明表的连接条件是常见的一种错误,这时查询将会产生表连接的笛卡尔积(即一个表中的每条记录与另一个表中的每条记录作连接产生的结果)。一般N个表进行连接,需要至少N-1个连接条件,才能够正确连接。两个表连接是最常见的情况,只需要说明一个连接条件。 相等连接。 不等连接。 外连接。 自连接。,相等连接 通过两个表具有相同意义的列,可以建立相等连接条件。使用相等连接进行两个表的查询时,只有

16、连接列上在两个表中都出现且值相等的行才会出现在查询结果中。 外连接 相等连接有一个问题:如果某个值内容在另一张表中没有对应的记录存在,那么在查询中就不会出现相应的结果; 为了解决这个问题可以用外连,即除了显示满足相等连接条件的记录外,还显示那些不满足连接条件的行,不满足连接条件的行将显示在最后。 不等连接 自连接 自连接就是一个表,同本身进行连接。对于自连接可以想像存在两个相同的表(表和表的副本),可以通过不同的别名区别两个相同的表。,联合查询,统计查询,通常需要对数据进行统计,汇总出数据库的统计信息。这个功能可以由统计查询完成。 Oracle提供了一些函数来完成统计工作,这些函数称为组函数,

17、组函数不同于前面介绍和使用的函数(单行函数)。组函数可以对分组的数据进行求和、求平均值等运算。组函数只能应用于SELECT子句、HAVING子句或ORDER BY子句中。组函数也可以称为统计函数。,分组函数中SUM和AVG只应用于数值型的列,MAX、MIN和COUNT可以应用于字符、数值和日期类型的列。组函数忽略列的空值。 使用GROUP BY 从句可以对数据进行分组。所谓分组,就是按照列的相同内容,将记录划分成组,对组可以应用组函数。 如果不使用分组,将对整个表或满足条件的记录应用组函数。 在组函数中可使用DISTINCT或ALL关键字。ALL表示对所有非NULL值(可重复)进行运算(COU

18、NT除外)。DISTINCT 表示对每一个非NULL值,如果存在重复值,则组函数只运算一次。如果不指明上述关键字,默认为ALL。 对分组查询的结果进行过滤,要使用HAVING从句。HAVING从句过滤分组后的结果,它只能出现在GROUP BY从句之后,而WHERE从句要出现在GROUP BY从句之前。,统计查询,我们可能会提出这样的问题,在雇员中谁的工资比SCOTT高? 第一步查询雇员SCOTT的工资 第二步查询工资高于SCOTT的雇员。 通过把一个查询的结果作为另一个查询的一部分,可以实现这样的查询功能。 第一个查询可以作为第二个查询的一部分出现在第二个查询的条件中,这就是子查询。出现在其他

19、查询中的查询称为子查询,包含其他查询的查询称为主查询。 子查询一般出现在SELECT语句的WHERE子句中,Oracle也支持在FROM或HAVING子句中出现子查询。子查询比主查询先执行,结果作为主查询的条件,在书写上要用圆括号扩起来,并放在比较运算符的右侧。子查询可以嵌套使用,最里层的查询最先执行。子查询可以在SELECT、INSERT、UPDATE、DELETE等语句中使用。,子查询,集合运算,多个查询语句的结果可以做集合运算,结果集的字段类型、数量和顺序应该一样。,目录,数据库基本概念 数据查询 数据操作 表和视图 SQL内置函数,数据库操作语句DML,插入数据 可以使用INSERT命

20、令,向已经存在的表插入数据,语法格式如下: INSERT INTO 表名 (字段列表) VALUES(表达式1, 表达式2,.)|QUERY语句; 修改数据 修改数据的语句UPDATE对表中指定字段的数据进行修改,一般需要通过添加WHERE条件来限定要进行修改的行,如果不添加WHERE条件,将对所有的行进行修改。 (1)修改数据的语句UPDATE的基本语法如下:UPDATE 表名 SET 字段名1=表达式1, 字段名2=表达式2, . WHERE 条件; (2)UPDATE语句的另外一种用法:UPDATE 表名 SET(字段名1, 字段名2, .)=SELECT (字段名1, 字段名2, .)

21、 FROM 另外的表名WHERE条件; 删除数据 DELETE FROM表名 WHERE 条件;,数据库操作语句,目录,数据库基本概念 数据查询 数据操作 表和视图 表的创建和操作 数据完整和约束条件 SQL内置函数,Oracle数据库对象,CREATE TABLE 表名(列名 数据类型(宽度)DEFAULT 表达式COLUMN CONSTRAINT,. TABLE CONSTRAINT TABLE_PARTITION_CLAUSE ); 由此可见,创建表最主要的是要说明表名、列名、列的数据类型和宽度,多列之间用“,”分隔。 可以是用中文或英文作为表名和列名。 表名最大长度为30个字符。在同一

22、个用户下,表不能重名,但不同用户表的名称可以相重。另外,表的名称不能使用Oracle的保留字。在一张表中最多可以包含2000列。该语法中的其他部分根据需要添加,作用如下: DEFAULT 表达式:用来定义列的默认值。 COLUMN CONSTRAINT:用来定义列级的约束条件。 TABLE CONSTRAINT:用来定义表级的约束条件。 TABLE_PARTITION_CLAUSE:定义表的分区子句。,表的创建,create table TEST ( ID NUMBER(6,2) not null , NAME VARCHAR2(20) default mao not null, AGE NU

23、MBER, DEPTNO NUMBER not null, COMM VARCHAR2(50) not null, primary key(id), foreign key (DEPTNO) references DEPT (DEPTNO), check (age0 and age150) ),通过子查询创建表 如果要创建一个同已有的表结构相同或部分相同的表,可以采用以下的语法: CREATE TABLE 表名(列名.) AS SQL查询语句; 该语法既可以复制表的结构,也可以复制表的内容,并可以为新表命名新的列名。新的列名在表名后的括号中给出,如果省略将采用原来表的列名。复制的内容由查询语句

24、的WHERE条件决定。 删除已创建的表 DROP TABLE 表名CASCADE CONSTRAINTS; 表的删除者必须是表的创建者或具有DROP ANY TABLE权限。CASCADE CONSTRAINTS表示当要删除的表被其他表参照时,删除参照此表的约束条件。有关内容请参考下一节。,表的创建和删除,表的重命名 RENAME 旧表名 TO 新表名; 清空表 TRUNCATE TABLE 表名;DDL 清空表可删除表的全部数据并释放占用的存储空间。有关训练请参照DELETE(DML)语句部分,注意两者的区别。 添加注释 (1) 为表添加注释:COMMENT ON TABLE 表名 IS .

25、; (2) 为列添加注释:COMMENT ON COLUMN 表名.列名 IS . 查看表 可以通过对数据字典USER_OBJECTS的查询,显示当前模式用户的所有表。SELECT object_name FROM user_objects WHERE object_type=TABLE;,表的操作,目录,数据库基本概念 数据查询 数据操作 表和视图 表的创建和操作 数据完整和约束条件 视图的创建和操作 SQL内置函数,数据完整性和约束条件,表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。约束条件是一些规则

26、,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。 完整性包括数据完整性和参照完整性 数据完整性定义表数据的约束条件: 主键(PRIMARY KEY) 非空(NOT NULL) 惟一(UNIQUE) 检查(CHECK)约束条件定义 参照完整性定义数据之间的约束条件。参照完整性由外键(FOREIGN KEY)约束条件定义。,外键约束,第一种语法,如果子记录存在,则不允许删除主记录: CONSTRANT 约束名 FOREIGN KEY(列名1,列名2,.)REFERENCES 表名(列名1,列名2,.) 第二种语法,如果子记录存在,则删除主记录时,级联删除子记录: CONST

27、RANT 约束名 FOREIGN KEY(列名1,列名2,.)REFERENCES 表名(列名1,列名2,.)on delete cascade 第三种语法,如果子记录存在,则删除主记录时,将子记录置成空: CONSTRANT 约束名 FOREIGN KEY(列名1,列名2,.)REFERENCES 表名(列名1,列名2,.)on delete set null其中的表名为要参照的表名。,数据字典USER_CONSTRAINTS中包含了当前模式用户的约束条件信息。其中,CONSTRAINTS_TYPE 显示的约束类型为: C:CHECK约束。 P:PRIMARY KEY约束。 U:UNIQUE

28、约束。 R:FOREIGN KEY约束。 其他信息可根据需要进行查询显示,可用DESCRIBE命令查看USER_CONSTRAINTS的结构。 SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,SEARCH_CONDITION FROM USER_CONSTRAINTS WHERE TABLE_NAME=图书; 使约束条件失效:ALTER TABLE 表名 DISABLE CONSTRANT 约束名; 使约束条件生效:ALTER TABLE 表名 ENABLE CONSTRANT 约束名;,查看约束条件,目录,数据库基本概念 数据查询 数据操作 表和视图 表的创建和

29、操作 数据完整和约束条件 视图的创建和操作 SQL内置函数,视图的概念,视图是基于一张表或多张表或另外一个视图的逻辑表。 视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。通过视图来查看表,就像是从不同的角度来观察一个(或多个)表。 可以提高数据访问的安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访问表的全部行和列。 简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询,用户对视图的检索却很简单。 一个视图可以检索多张表的数据,因此用户通过访问一个视图,可完成对多个表的访问。 视图是相同数据的不同表示,通过为不同的用户创建同一个表的不同视图,使用户可分别访问同一个表的不同部分。 视图可以在表能够使用的任何地方使用,但在对视图的操作上同表相比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和触

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论