1、数据库基本知识 提纲 信息、数据与数据处理 数据库系统 数据模型 关系数据库与关系代数1数据库基本知识 1.1 信息、数据与数据处理 数据:数据的概念包括两个方面,即数据内容和数据形式 信息:数据经过加工处理后所获取的有用知识。数据处理:数据处理就是将数据转换为信息的过程。数据处理的内容主要包括:数据的收集、整理、存储、加工、分类、维护、排序、检索和传输等一系列活动的总和。数据处理的发展:人工管理、文件管理、数据库管理及分布式数据库管理等四个阶段 1数据库基本知识 1.1 信息、数据与数据处理(续)数据库技术发展的三个标志事件 1969年IBM公司研制、开发了数据库管理系统商品化软件IMS 美
2、国数据系统语言协会CODASYL(Conference On Data System Language)下属的数据库任务组DBTG(Data Base Task Group)对数据库方法进行系统的讨论、研究,提出了若干报告1970年IBM公司San Jose研究实验室的研究员E.F.Codd发表了著名的“大型共享系统的关系数据库的关系模型”论文,为关系数据库技术奠定了理论基础。数据库新技术:分布式数据库、面向对象数据库、多媒体数据库、数据仓库 1数据库基本知识 1.2 数据库系统数据库应用系统简称为数据库系统。是一个计算机应用系统。它由计算机硬件、数据库管理系统、数据库、应用程序和用户等部分组
3、成。数据库系统的组成:计算机硬件、数据库管理系统、数据库、应用程序和用户等部分1语言编译 DBMSOS应用程序硬件数据库基本知识 1.2 数据库系统(续)数据库系统体系结构:3个模式(外模式、模式和内模式)和2个映射(外模式模式映射和模式内模式映射)。1数 据 库 内 模 式 全 局 视 图 概 念 模 式 内 模 式 映 射 外 模 式 1 外 模 式 1 外 模 式 概 念 模 式 映 射 DBM S 物 理 级 存 储 视 图 概 念 模 式 概 念 级 用 户 视 图 用 户 级 应 用 程 序 1 应 用 程 序 2 应 用 程 序 3 应 用 程 序 4 OS 数据库基本知识 1.
4、2 数据库系统(续)数据库系统的功能 数据库定义(描述)功能 数据库操纵功能 数据库运行管理功能 数据组织、存储和管理 数据库的建立和维护 通信功能 1数据库基本知识 1.2 数据库系统(续)数据库管理系统的组成 数据定义语言及其编译处理程序 数据操作语言及其编译程序 数据库运行控制程序 实用程序 1数据库基本知识 1.2 数据库系统(续)数据库系统的特点 数据共享 减少数据冗余 具有较高的数据独立性 增强了数据安全性和完整性保 1数据库基本知识 1.3 数据模型 现实世界的数据描述信息处理的三个层次(1)现实世界(2)信息世界(3)数据世界信息世界中的基本概念:实体、属性、域、实体型和实体值
5、、实体集、实体联系 实体模型:又称概念模型,它是反映实体之间联系的模型。1数据库基本知识 1.3 数据模型(续)数据模型 层次模型 网状模型 关系模型 目前,常用的数据库系统基本上都属于关系型数据库系统,如SQL Server、Oracle、DB2等都是常用的关系型DBMS。1数据库基本知识 1.3 数据模型(续)关系的基本概念及特点 基本概念关系、元组、属性、域 优点(1)数据结构单一(2)关系规范化,并建立在严格的理论基础上(3)概念简单,操作方便 1数据库基本知识 1.4 关系数据库与关系代数 关系数据库概述关系模型由三个部分构成:关系数据结构、关系数据操作和完整性约束。1数据库基本知识
6、 1.4 关系数据库与关系代数(续)关系数据结构(1)关系1、域:域是一组具有相同数据类型的值的集合。域中所包含的值的个数叫做域的基数。域是需要命名的。例如:D1=李国庆 刘娇丽,表示人名的集合 D2=清华大学出版社 中国水利水电出版社,表示出版社的集合,D3=数据结构 高等数学,表示书名的集合2、笛卡尔积:给定一组域D1,D2,D3,Dn,则这些域的笛卡尔积为:D1D2D3Dn=(d1,d2,d3,dn)|diDj,i=1,2,n 1数据库基本知识 1.4 关系数据库与关系代数(续)关系数据结构(续)(1)关系3、关系:D1D2Dn的子集叫作在域D1,D2,Dn上的关系,用R(D1,D2,D
7、n)表示。其中R表示关系的名字,n是关系的目或度(degree)。当n=1时,关系中仅含一个域,称为单元关系。当n=2时,关系中仅含两个域,称为二元关系。4、码的定义 p码(Key)。在关系的各个属性中,能够用来唯一标识一个元组的属性或属性组。p候选码(Candidate Key)。若在一个关系中,某一个属性或属性组的值能唯一地标识该关系的元组,而其真子集不行,则称该属性或属性组为候选码。p主码(Primary Key)。若一个关系有多个候选码,则选定其中一个为主码(也称主键)。p主属性(Prime Attribute)。候选码的诸属性称为主属性。p非主属性(Non-Key Attribute
8、)。不包含在任何候选码中的属性。:D1D2D3Dn=(d1,d2,d3,dn)|diDj,i=1,2,n 1数据库基本知识 1.4 关系数据库与关系代数(续)关系数据结构(续)(1)关系5、关系的三种类型:基本关系、导出表、视图6、关系的6条性质:p性质1 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。p性质2 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。p性质3 列的顺序无所谓,即列的次序可以任意交换。p性质4 任意两个元组不能完全相同。这只是现实中的一般性要求,有些数据库是允许在同一张表中存在两个完全相同的元组的。p性质5 行的顺序无所谓,
9、即行的次序可以任意交换。p性质6 分量必须取原子值,也就是说每一个分量都必须是不可分的数据项。D1D2D3Dn=(d1,d2,d3,dn)|diDj,i=1,2,n 1数据库基本知识 1.4 关系数据库与关系代数(续)关系数据结构(续)(2)关系模式 元组集合结构:有那些属性、属性来自那些域,属性与域之间的映像关系(属性的长度和类型);元组集合的语义;完整性约束条件:属性间的相互关系,属性的取值范围限制。关系的三种类型:基本关系、导出表、视图 概括来说,关系模式描述下列五个要素:关系名R;属性名集合U;属性来自的域D;属性向域的映像集合DOM;属性间数据的依赖关系集合F。1数据库基本知识 1.
10、4 关系数据库与关系代数(续)关系数据结构(续)(3)关系数据库 所有支持关系数据库模型的实体及实体之间的联系的关系集合就构成了一个关系数据库。关系数据库有型与值之分,型称为关系数据库的模式,值称为关系数据库的值。关系数据库模式与关系数据库的值通常统称为关系数据库。1数据库基本知识 1.4 关系数据库与关系代数(续)关系完整性(1)实体完整性 (2)参照完整性 (3)用户定义完整性1数据库基本知识 1.4 关系数据库与关系代数(续)关系代数 关系代数是用关系的运算来表达查询方式的,它是关系数据操纵语言的一种传统表达方式。其特点是以一个或多个关系作为运算对象,结果为另外一个关系。关系代数的运算符
11、分为四类:集合运算符、专门的关系运算符、比较运算符、逻辑运算符。常用关系运算符如表:1运算符运算符含义含义集合运算符集合运算符并并差差交交广义笛卡尔积广义笛卡尔积专门的关系运算符专门的关系运算符选择选择投影投影续表续表运算符运算符含义含义专门的关系运算符专门的关系运算符连接连接除除比较运算符比较运算符大于大于大于或等于大于或等于小于小于小于或等于小于或等于等于等于不等于不等于逻辑运算符逻辑运算符非非与与或或数据库基本知识 1.4 关系数据库与关系代数(续)关系代数(续)1、传统的集合预算:包括并()、交()、差(-)、笛卡尔积(),它将关系看成元组的集合,从关系的水平方向(行)来进行的。并:R
12、St|tRtS 差-:R-St|tR tS 交:RSt|tR tS 广义笛卡尔积:RStr ts|trRtsS 集合运算实现的数据库操作:数据库记录的添加、插入-并运算 删除-差运算 数据库的修改(先删后插)-差+并运算 关系的连接-笛卡尔积 1数据库基本知识 1.4 关系数据库与关系代数(续)关系代数(续)1、传统的集合预算:例子1ABCa1b1c1a2b2c2(a)RDEFd1e1f1d2e2f2a1b1c1d1e1f1(b)SABCa1b1c1(c)RS ABCa1b1c1a2b2c2d1e1f1d2e2f2(d)R S ABCa2b2c2(e)R-S ABCDEFa1b1c1d1e1f
13、1a1b1c1d2e2f2a1b1c1a1b1c1a2b2c2d1e1f1a2b2c2d2e2f2a2b2c2a1b1c1(f)RX S 数据库基本知识 1.4 关系数据库与关系代数(续)关系代数(续)2、专门的关系运算:包括选择、投影、连接、除等操作。选择(selection):F(R)=t|tRF(t)=TRUE 投影:A(R)=t A|t R 连接(join):R Strts|trRtsSXY 除(division):Zx=tZ|tR,tX=,RS=tr X|tr R Yx y(S)1x y x y ORACLE数据库 提纲 安装与配置 启动和关闭数据库 ORACLE体系结构 ORACL
14、E数据库访问控制 SQL*PLUS工具2ORACLE数据库 2.1 安装与配置 与安装有关的基本概念 最佳的灵活的体系结构 ORACLE基目录(ORACLE BASE)ORACLE主目录(ORACLE HOME)Oracle Universal Installer2ORACLE数据库 2.1 安装与配置 数据库服务器安装 1、演示安装过程2、确认安装是否成功 2ORACLE数据库 2.1 安装与配置(续)客户端安装 1、演示安装过程2、确认安装是否成功 2ORACLE数据库 2.1 安装与配置(续)默认安装的数据库内容 1、默认的数据库账号和口令 2用户名称用户名称说明说明SYSTEM用于数据
15、库管理,具有用于数据库管理,具有DBA角色角色SYS用于数据库管理,具有用于数据库管理,具有DBA权限。该用户管理数据库的字典,权限。该用户管理数据库的字典,是权限最高也是最重要的用户,通常由级别最高的用户掌握是权限最高也是最重要的用户,通常由级别最高的用户掌握SCOTT具有具有CONNECT和和RESOURCE角色,能够连接数据库,能够角色,能够连接数据库,能够创建表、视图等数据库对象,具有基本用户所必须的权限,创建表、视图等数据库对象,具有基本用户所必须的权限,通常用于测试通常用于测试HR例子账号,其中包含了一些人力资源管理方面的表例子账号,其中包含了一些人力资源管理方面的表ORACLE数
16、据库 2.1 安装与配置(续)默认安装的数据库内容(续)2、Oracle相关的Windows服务 安装完成后,系统会自动启动两个Windows服务:OracleServiceSID和OracleHOME_ NAMETNSListener如果安装了企业管理器组件,则还会启动OracleDBConsoleSID服务。还有一些已安装的特殊服务,如OracleHOME_NAMEiSQL*Plus,该服务是运行iSQL*Plus必须的。2ORACLE数据库 2.1 安装与配置(续)默认安装的数据库内容(续)3、默认表空间和数据文件 2表空间表空间数据文件数据文件说明说明EXAMPLEExample01.
17、dbf存放示例模式存放示例模式TEMPTemp01.dbf临时表空间,执行临时表空间,执行SQL语句时需要用临时表空间存放中间结果数语句时需要用临时表空间存放中间结果数据据SYSAUXSysaux01.dbf用于用于SYSTEM表空间的辅助表空间,有些工具和选件过去使用表空间的辅助表空间,有些工具和选件过去使用SYSTEM,现在移到了该表空间,现在移到了该表空间SYSTEMSystem01.dbf系统表空间,存放数据字典,包括表、视图、存储过程等数据对系统表空间,存放数据字典,包括表、视图、存储过程等数据对象的定义信息象的定义信息UNDOTBSUndotbs01.dbf在数据库运行在自动撤消(
18、在数据库运行在自动撤消(undo)管理模式时,用于存放撤消)管理模式时,用于存放撤消信息。默认情况下,新建的数据库都是运行在自动撤消管理模式信息。默认情况下,新建的数据库都是运行在自动撤消管理模式下下USERSUser01.dbf为用户应用提供存储空间。默认情况下,用户数据存放在这个表为用户应用提供存储空间。默认情况下,用户数据存放在这个表空间,但可以根据需要创建自己的存储表空间空间,但可以根据需要创建自己的存储表空间ORACLE数据库 2.1 安装与配置(续)默认安装的数据库内容(续)4、默认初始化参数 数据库启动时必须从一个初始化参数文件或服务器参数文件读取启动参数。初始化参数文件是一个文
19、本文件,而服务器参数文件是一个二进制文件。默认初始化参数文件名为init.ora,该文件存放在目录Oracle_BASEadminDB_NAMEpfile;默认的服务器参数文件名称为SPFILESID.ora 2ORACLE数据库 2.1 安装与配置(续)默认安装的数据库内容(续)5、默认重做日志文件6、默认控制文件7、数据字典 2ORACLE数据库 2.2 启动和关闭数据库 启动和关闭数据库的方式有如下几种 使用SQL*Plus;使用Oracle管理助手;使用Windows服务。2ORACLE数据库 2.2 启动和关闭数据库(续)使用SQL*Plus启动和关闭数据库 Oracle实例与数据库
20、的关系2实例后台进程SGA数据库文件数据库应用软件ORACLE数据库 2.2 启动和关闭数据库(续)使用SQL*Plus启动和关闭数据库(续)关闭数据库()输入sqlplus/nolog并按“确定”启动SQL*Plus()在SQL命令提示符下输入如下语句:CONNECT system/AS SYSDBA()在SQL命令提示符下键入SHUTDOWN IMMEDIATE并按回车 2ORACLE数据库 2.2 启动和关闭数据库(续)使用SQL*Plus启动和关闭数据库(续)HUTDOWN 命令的四种参数()NORMAL ()IMMEDIATE()TRANSACTIONAL()ABORT 2ORACL
21、E数据库 2.2 启动和关闭数据库(续)使用SQL*Plus启动和关闭数据库(续)打开数据库()一步打开数据库的操作 ()启动实例但不加载数据库 ()启动实例,加载数据库但不打开数据库 2ORACLE数据库 2.2 启动和关闭数据库(续)使用Windows 服务启动和关闭数据库 在安装完数据库后,系统会自动启动两个Windows服务 OracleServiceSID OracleHOME_NAMETNSListener 在OracleServiceSID服务启动的同时,将自动启动Oracle数据库,用户可以直接使用Oracle数据库。可以通过Windows的服务管理器启动或关闭数据库 2ORA
22、CLE数据库 2.racle体系结构2数据文件控制文件日志文件表空间段区块后台进程服务器进程Oracle数据库服务器数据库实例物理存储逻辑存储SGA进程ORACLE数据库 2.racle体系结构 物理存储结构 Oracle的物理存储结构是指在操作系统下数据库的文件组织和实际的数据存储。文件主要包括:数据文件、控制文件和重做日志文件等。2ORACLE数据库 2.racle体系结构 物理存储结构(续)数据文件 Oracle数据库在内部是通过表、索引等逻辑单元来管理数据的,为了长期保存这些逻辑单元中的数据,Oracle将这些数据存放在一些操作系统文件中,这些操作系统文件就是数据文件。表和索引等的数据
23、是通过表空间和数据文件关联的 2ORACLE数据库 2.racle体系结构 物理存储结构(续)控制文件 控制文件是一个很小的二进制文件,它对于数据库的启动和运行都是非常重要的。每个数据库必须至少拥有一个控制文件,也可以同时拥有多个控制文件。但每个控制文件只能与一个数据库关联。控制文件包含关于关联的数据库的信息,这些信息是Oracle实例启动和运行时访问数据库所必须的。控制文件的信息只能由Oracle数据库修改,不能由数据库管理员或任何用户修改。2ORACLE数据库 2.racle体系结构 物理存储结构(续)重做日志文件 联机重做日志文件 归档重做日志文件2ORACLE数据库 2.racle体系
24、结构 物理存储结构(续)初始化参数文件 传统的Oracle参数文件 二进制服务器端参数文件 2ORACLE数据库 2.racle体系结构 逻辑存储结构 Oracle在逻辑上将数据划分为一个个小单元来进行管理,这些逻辑单元包括块(Data Block)、区(Extent)、段(Segment)和表空间(Tablespace)2表空间表空间段1段2段3.区1区2.区1区2区1区2.块1块2块1块2块1块2块1块2块1块2块1块2ORACLE数据库 2.racle体系结构 逻辑存储结构(续)块 Oracle以数据块(block)为单位管理数据文件中的存储空间,数据块是数据库I/O的最小单位。块的大小
25、是通过初始化参数DB_BLOCK_SIZE指定的,并且块的大小必须是操作系统的块的大小的整数倍。2ORACLE数据库 2.racle体系结构 逻辑存储结构(续)区 区(extent)由一系列物理上连续的块组成,一个或多个区组成更高一级的逻辑单元:段。Oracle在分配存储空间时有两个重要概念:初始区(initial extent)和增加区(increment)。当段中的初始区的空间已经用完时,Oracle将自动为这个段分配一个增加区。增加区可以是同一大小,也可以是按一定比例逐步增大的。2ORACLE数据库 2.racle体系结构 逻辑存储结构(续)段 段(segment)是一系列的区组成的,其
26、中存放了表空间中某个特定数据对象的所有数据。段有4种类型 (1)数据段(2)索引段(3)临时段(4)回滚段 2ORACLE数据库 2.racle体系结构 逻辑存储结构(续)表空间 Oracle将数据逻辑地存放到表空间中,而表空间则与具体的物理文件相关联。2表空间表索引索引索引索引索引表索引索引索引索引索引表数据文件数据对象ORACLE数据库 2.racle体系结构 实例结构 Oracle实例由两部分组成:实例的内存结构和实例的进程结构。内存结构包括SGA和PGA两部分,而进程结构包括服务器进程和后台进程。2ORACLE数据库 2.racle体系结构 实例结构(续)内存结构:Oracle的基本内
27、存结构包括系统全局区(SGA)和程序全局区(PGA)。2Java池数据库缓存重做日志缓存共享池大型池服务器进程1PGA服务器进程2PGA后台进程1PGA服务器进程3PGA后台进程2PGAORACLE数据库 2.Oracle数据库访问控制 概要文件 概要文件(Profile)提供了一种阻止失控查询和恶意访问的机制,它由一系列资源限制参数组成,通过概要文件,数据库管理员可以为特定用户定义其可访问的系统资源的数量。这些系统资源包括:连接和空闲的总时间;逻辑输入或输出的总数量;每个用户的并发会话数;使用内存的数量。2ORACLE数据库 2.Oracle数据库访问控制 管理用户 用户是数据库中定义的一个
28、名称,通过它可以访问数据库的对象。Oracle是一个多用户数据库系统,使用“用户”和“权限”两个基本概念来建立访问控制结构,以防止非法的用户侵入数据库中查看数据或对数据进行未经授权的改动,并防止合法用户无意或恶意占用过多的系统资源。管理数据库用户的操作都是在具有较高权限的管理用户中完成的 2ORACLE数据库 2.Oracle数据库访问控制 管理用户(续)创建用户 修改用户信息 删除用户 查询用户信息 2ORACLE数据库 2.Oracle数据库访问控制 权限和角色 权限:定义了用户对一个命名对象的访问许可 权限可以分为两类:系统权限和对象权限。(1)系统权限:系统权限是用户在系统范围内执行某
29、种操作或对某一类对象执行某种操作的权力,这种权力不是针对某一个特定对象的,而是针对整个数据库范围或某一类对象而言。()对象权限:对象权限是用户对特定的模式对象执行操作的权力。对象权限不仅可以授予到表级,还可授予到列级或行级。2ORACLE数据库 2.Oracle数据库访问控制 权限和角色(续)角色:角色是一组相关权限的命名集合,它可以授予用户或其他角色,被授予角色的用户将具有角色所拥有的全部权限。采用角色为用户授权,而不是直接向各个用户授权,具有如下优点:()简化授权工作 ()动态权限管理()可选的权限可用性()应用感知能力 2ORACLE数据库 2.Oracle数据库访问控制 管理权限 授权
30、:使用GRANT语句进行授权操作,包括:将系统权限授予用户或角色;将角色授予用户或角色;将特定对象的对象权限授予用户或角色。回收权限:使用REVOKE语句进行权限回收操作,包括:从用户和角色回收系统权限;从用户和角色回收角色;从用户和角色回收指定对象的对象权限。2ORACLE数据库 2.SQL*Plus工具 使用SQL*Plus 1、SQL*Plus命令类型可以输入三种类型的命令:SQL语句;PL/SQL块;SQL*Plus命令,如格式化、选项设置、编辑指令等。2ORACLE数据库 2.SQL*Plus工具 使用SQL*Plus 2、输入SQL语句一条语句可以用一行或多行输入,三种方法结束一条
31、语句:用分号结束:结束SQL语句输入,并执行该语句;用处于单独一行的符号“/”:结束SQL语句输入,并执行该语句;用一个空行:结束SQL语句输入,但不执行。2ORACLE数据库 2.SQL*Plus工具 使用SQL*Plus 3、输入PL/SQL语句块在SQL*Plus中进入PL/SQL块输入模式的方法有两种:输入DECLARE或BEGIN并回车;输入创建存储过程或函数的语句(如CREATE PROCEDURE)块输入完成后用“.”结束输入,回到命令提示符状态,这时,PL/SQL块存入了SQL缓存,要执行该块,在命令提示符下输入RUN或“/”即可。2ORACLE数据库 2.SQL*Plus工具
32、 使用SQL*Plus 4、输入SQL*Plus命令 SQL*Plus命令用于操作SQL语句和PL/SQL块、格式化和打印查询结果。SQL*Plus命令的语法与SQL语句和PL/SQL块的语法不同。它不需要用分号表示语句结束,当用户输入完一条SQL*Plus命令后,按回车直接运行该命令。如果希望在多行上输入一条SQL*Plus命令,可以通过在行尾输入连字符“-”,以便在下一行接着输入。2ORACLE数据库 2.SQL*Plus工具 常用环境选项 1Pause2Pagesize3Linesize4Numformat2ORACLE数据库 2.SQL*Plus工具 常用SQL*Plus命令1DESC
33、RIBE2LIST和RUN3EDIT和SAVE4START和命令5SHOW6HELP7SPOOL2关系数据库标准语言SQL 提纲 SQL概述 数据定义 数据查询 数据更新 视图 数据控制3关系数据库标准语言SQL 3.1 SQL概述SQL语言也叫结构化查询语言(Structured Query Language),是一种介于关系代数与关系演算之间的语言。其功能包括:数据定义、数据查询、数据操作和数据控制四个方面,是一个通用的、功能很强的关系数据库语言。3关系数据库标准语言SQL 3.1 SQL概述(续)SQL语言 扩展SQL语言3关系数据库标准语言SQL 3.2 数据定义SQL数据定义功能包括
34、定义基本表、定义视图和定义索引等3操作对象操作对象操作方式操作方式创建创建删除删除修改修改基本表基本表CREATE TABLEDROP TABLEALTER TABLE视图视图CREATE VIEWDROP VIEW索引索引CREATE INDEXDROP INDEX关系数据库标准语言SQL 3.2 数据定义(续)基本表定义CREATE TABLE 表名(列名1 数据类型 列级完整性约束条件,列名2 数据类型 列级完整性约束条件,列名N 数据类型 列级完整性约束条件表级完整性约束条件)说明:(1)其中表名是要定义的基本表的名称。一个表可以由一个或多个属性列组成。(2)创建表时通常还可以定义与该
35、表有关的完整性约束条件。完整性约束条件被存入系统的数据字典中。当用户对表中的数据进行更新操作(插入和修改)时,DBMS会自动检查该操作是否违背这些约束条件。如果完整性约束条件涉及表的多个属性列,则必须定义在表级上,否则既可以定义在列级,也可以定义在表级。3关系数据库标准语言SQL 3.2 数据定义(续)基本表定义(续)Oracle支持标准SQL语言,但在很多方面进行了扩展,如对CREATE TABLE语句,Oracle增加了对存储参数的控制。Oracle创建表的常用语法为:CREATE TABLE 方案.表名(列名1 数据类型 列级完整性约束条件,列名2 数据类型 列级完整性约束条件,列名N
36、数据类型 列级完整性约束条件表级完整性约束条件)PCTFREE integerPCTUSED integerTABLESPACE 表空间 STORAGE(INITIAL integer NEXT integer MINEXTENTS integer MAXEXTENTS integer PCTINCREASE integer)3关系数据库标准语言SQL 3.2 数据定义(续)基本表定义(续)例3-1 在Oracle中用SQL命令创建图书信息表、读者信息表和借阅表。(1)创建图书信息表。CREATE TABLE book (bookid VARCHAR2(20)PRIMARY KEY,bookn
37、ame VARCHAR2(60)NOT NULL,editor VARCHAR2(8),price NUMBER(5,2),publish VARCHAR2(30),pubdate DATE,qty NUMBER(5)3关系数据库标准语言SQL 3.2 数据定义(续)基本表定义(续)(2)创建读者信息。CREATE TABLE reader (cardid VARCHAR2(10)PRIMARY KEY,name VARCHAR2(8),sex VARCHAR2(2)CHECK(sex IN(男,女),dept VARCHAR2(20),class NUMBER(1)3关系数据库标准语言SQL
38、 3.2 数据定义(续)基本表定义(续)(3)创建借阅表。CREATE TABLE borrow (bookid VARCHAR2(20),cardid VARCHAR2(10),bdate DATE NOT NULL,sdate DATE,PRIMARY KEY(bookid,cardid,bdate),CONSTRAINT FK_bookid FOREIGN KEY(bookid)REFERENCES book(bookid),CONSTRAINT FK_cardid FOREIGN KEY(cardid)REFERENCES reader(cardid)3关系数据库标准语言SQL 3.2
39、 数据定义(续)修改基本表SQL语言用ALTER TABLE语句修改基本表,其一般格式为:ALTER TABLE MODIFY NULL|NOT NULLADD 完整性约束 ADD DROP CONSTRAINT DROP COLUMN 3关系数据库标准语言SQL 3.2 数据定义(续)修改基本表(续)例3-2 将BOOKID列宽改为15。ALTER TABLE book MODIFY bookid VARCHAR2(15)例3-3 删除借阅表中的参照完整性。ALTER TABLE borrow DROP CONSTRAINT FK_bookid DROP CONSTRAINT FK_card
40、id例3-4 如果例3-1中没为借阅表创建参照完整性,或者已按例3-3将参照完整性删除,则可按下面方法创建参照完整性。ALTER TABLE borrow ADD CONSTRAINT FK_bookid FOREIGN KEY(bookid)REFERENCES book(bookid)ADD CONSTRAINT FK_cardid FOREIGN KEY(cardid)REFERENCES reader(cardid)3关系数据库标准语言SQL 3.2 数据定义(续)删除基本表DROP TABLE 3关系数据库标准语言SQL 3.2 数据定义(续)建立索引CREATE UNIQUE IN
41、DEX ON (,);3关系数据库标准语言SQL 3.2 数据定义(续)删除索引DROP INDEX.3关系数据库标准语言SQL 3.3 数据查询 一般格式SELECT ALL|DISTINCT ,FROM ,别名 WHERE GROUP BY HAVING ORDER BY ASC|DESC ;3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(1)选择表中的若干列例3-6 查询所有读者的卡号和姓名。SELECT cardid,name FROM reader例3-7 查询所有图书信息。SELECT *FROM book例3-8 使用别名,查询所有读者的卡号和姓名。SELECT
42、 cardid卡号,name姓名 FROM reader3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(2)选择表中满足条件的记录 3查询条件查询条件运算符运算符比较比较=,=,=,!=,确定范围确定范围BETWEEN.AND.NOT BETWEEN.AND集合运算集合运算IN,NOT IN字符匹配字符匹配LIKE,NOT LIKE空值判断空值判断IS NULL,IS NOT NULL逻辑运算逻辑运算AND,OR,NOT关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(2)选择表中满足条件的记录(续)例3-9 查询价格在20元以上的所有图书信息。SELECT*F
43、ROM book WHERE price=20例3-10 查询在2003年后的借书记录。SELECT*FROM borrow WHERETO_CHAR(bdate,YYYY)=2003例3-11 查询价格在2030元之间的所有图书信息。SELECT*FROM book WHERE price BETWEEN 20 AND 30例3-12 查询电子工业出版社、清华大学出版社和高等教育出版社出版的所有图书的书名。SELECT bookname FROM bookWHERE publish IN(电子工业出版社,清华大学出版社,高等教育出版社)例3-13 查询以“数据库”开头的所有图书的书名和出版社
44、。SELECT bookname,publish FROM bookWHERE bookname LIKE 数据库%3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(2)选择表中满足条件的记录(续)例3-14 查询书名含有DELPHI_6的所有图书信息。SELECT*FROM bookWHERE bookname LIKE%DELPHI_6%ESCAPE 例3-15 读者借书后还未还书时,借阅表中的还书日期为空值。查询所有未还书籍的读者号和借书时间。SELECT cardid,TO_CHAR(bdate,YYYY-MM-DD)FROM borrow WHERE sdate IS
45、 NULL例3-16 查询单位为“计算机系”且类别为学生(class=1)的所有读者信息SELECT*FROM reader WHERE dept=计算机系 and class=13关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(3)对查询结果排序 例3-17 查询2003年后出版的所有图书并按出版先后顺序排序。SELECT*FROM bookWHERE TO_CHAR(pubdate,YYYY)=2003ORDER BY pubdate3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(4)使用集函数 SQL提供了许多集函数,主要包括:COUNT(DISTINC
46、T|ALL *)统计元组个数。COUNT(DISTINCT|ALL )统计一列中值的个数。SUM(DISTINCT|ALL )计算一列值的总和(此列必须是数值型)。AVG(DISTINCT|ALL )计算一列值的平均值(此列必须是数值型)。MAX(DISTINCT|ALL )计算一列值的最大值。MIN(DISTINCT|ALL )计算一列值的最小值。3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(4)使用集函数(续)例3-18 查询读者总数。SELECT COUNT(*)FROM reader例3-19 查询有未还书的读者数。SELECT COUNT(DISTINCT car
47、did)FROM borrowWHERE sdate IS NULL例3-20 查询库存书总数。SELECT SUM(qty)FROM book3关系数据库标准语言SQL 3.3 数据查询(续)单表查询(续)(5)分组统计 例3-21 统计不同类型的读者数。SELECT class,COUNT(cardid)FROM readerGROUP BY class例3-22 按出版年份统计库存量。SELECT TO_CHAR(pubdate,YY),SUM(qty)FROM bookGROUP BY TO_CHAR(pubdate,YY)例3-23 查询借书数量大于10本的读者卡号。SELECT c
48、ardidFROM borrowWHERE sdate IS NULLGROUP BY cardid HAVING COUNT(bookid)103关系数据库标准语言SQL 3.3 数据查询(续)多表查询(1)等值与非等值连接查询 例3-24 查询所有借书未还的读者的姓名。SELECT nameFROM reader,borrowWHERE reader.cardid=borrow.cardid AND sdate IS NULL例3-25 查询所有读者信息及借阅情况。SELECT reader.*,borrow.*FROM reader,borrowWHERE reader.cardid=b
49、orrow.cardid3关系数据库标准语言SQL 3.3 数据查询(续)多表查询(续)(2)自然连接 例3-26 自然连接READER和BORROW表。SELECT reader.cardid,name,sex,dept,class,bookid,bdate,sdateFROM reader,borrowWHERE reader.cardid=borrow.cardid3关系数据库标准语言SQL 3.3 数据查询(续)多表查询(续)(3)自身连接 例3-27 查询书名相同而出版社不同的所有图书的书名。SELECT DISTINCT B1.booknameFROM book B1,book B
50、2WHERE B1.bookname=B2.bookname AND B1.publishB2.publish3关系数据库标准语言SQL 3.3 数据查询(续)多表查询(续)(4)外连接 左外连:查询结果中不仅包含符合连接条件的行,而且包含左表中所有数据行。右外连:查询结果中不仅包含符合连接条件的行,而且包含右表中所有数据行。全外连:查询结果中不仅包含符合连接条件的行,而且包含两个连接表中所有数据行。3关系数据库标准语言SQL 3.3 数据查询(续)多表查询(续)(4)外连接(续)例3-28 在例3-26中要求将没有借书记录的读者也显示出来。SELECT reader.cardid,name,