数据库.doc

上传人:哈尼dd 文档编号:5022967 上传时间:2020-01-29 格式:DOC 页数:19 大小:251.50KB
返回 下载 相关 举报
数据库.doc_第1页
第1页 / 共19页
数据库.doc_第2页
第2页 / 共19页
数据库.doc_第3页
第3页 / 共19页
数据库.doc_第4页
第4页 / 共19页
数据库.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《数据库.doc》由会员分享,可在线阅读,更多相关《数据库.doc(19页珍藏版)》请在三一文库上搜索。

1、数据库(Data Base)目录1数据库的发展过程31.1手工管理阶段31.2文件系统阶段31.3数据库系统阶段42数据库的基本概念4数据4数据库(DB)43数据库模型53.1数据库模型的分类53.2关系数据库53.3实体53.4联系53.5关键字63.5.1组合关键字63.5.2唯一关键字63.5.3主关键字63.6索引63.6.1索引的优缺点63.7视图63.7.1什么是视图63.7.2视图的优缺点73.7.3视图的作用73.7.4视图的创建73.7.5删除视图73.8存储过程73.9触发器84范式84.1第一范式(1NF)84.2第二范式(2NF)84.3第三范式(3NF)94.4范式应

2、用105 PL/SQL116 Oracle中四大语言类型116.1什么是Oracle116.2ORACLE产品结构及组成126.2.1 ORACLE数据库系统的体系结构126.2.2ORACLE数据库的特点126.2.3 Oracle数据库工作原理136.3DDL(数据定义语言)136.3.1创建create136.3.2更改alter146.3.3删除drop和截断truncate146.4DML(数据操纵语言)156.4.1查询数据156.4.2插入数据166.4.3修改数据166.4.4删除数据166.5TCL(事务控制语言)166.6DCL(数据控制语言)167oracle开发中序列的

3、使用177.1建立序列命令177.2更改序列命令177.3删除序列命令17数据库1数据库的发展过程数据管理经历了从低级到高级的发展过程,这一过程大致可分为三个阶段:手工管理阶段、文件系统阶段和数据库系统阶段。1.1手工管理阶段在五十年代中期以前,计算机主要用于科学计算,计算机上没有操作系统,没有管理数据的专门软件,也没有像磁盘这样的设备来存储数据。这个时期数据管理的特点是:l 数据不保存。l 程序和数据联系在一起l 没有软件系统对数据进行管理 图1-1手工管理阶段1.2文件系统阶段 数据管理从五十年代后期进入文件系统阶段。操作系统中已经有了专门的管理数据的软件,一般称为文件系统。所谓文件系统是

4、一种专门管理数据的计算机软件。这个时期数据管理的特点是:l 将数据从程序中分离出来,组成相互独立的数据文件l 使用于科学计算及简单的数据管理l 数据和程序相互依赖l 数据冗余大l 数据的不一致性 图1-2文件系统管理阶段1.3数据库系统阶段20世纪60年代后期以来,这时硬件方面已有了大容量磁盘,硬件价格下降;软件则价格上升,为编制和维护系统软件及应用程序所需成本相对增加;在处理方式上,联机实时处理要求更多,并开始提出和考虑分布处理,在这种背景下,以文件系统作为数据管理手段已经不能满足应用的需求,于是为解决多用户、多任务共享数据的要求,使数据为尽可能多的应用服务,数据库技术便应运而生,出现了统一

5、管理数据的专门软件系统数据库管理系统。这个时期数据管理的特点是:l 数据结构化l 数据共享l 可控冗余度l 统一的管理和控制l 数据独立性 图1-3数据库系统阶段2数据库的基本概念数据:就是描述事物的符号,在我们的日常生活中数据无所不在,数字、文字、图表、图像、声音等都是数据。人们通过数据来认识世界,交流信息。数据库(DB):就是数据存放的地方。在计算机中,数据库是数据和数据对象的集合。所谓数据库对象是指表、视图、存储过程、触发器等。数据库管理系统(DBMS): DBMS是帮助用户建立、使用和管理数据库的软件系统。包括:DDL(Data description language)、 DML(d

6、ata manipulation language)和 其他管理和控制程序。数据库系统(DBS):以计算机系统为基础,以数据库方式管理大量共享数据的综合系统构成:数据库应用系统(DBAS):3数据库模型数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等);模型的操纵部分规定了数据的添加、删除、显示、维护、打印、查找、选择、排序和更新等操作。3.1数据库模型的分类l 概念模型对真实世界中问题域内的事物的描述,不是对软件设计的描述。l 层次模型用树型(层次)结构表示实体类型及实体间联系的数据模型。l 网状模型用有向图结构表示实体类型及实体间联系的数据

7、结构模型。 l 关系模型用二维表的形式表示实体和实体间联系的数据模型。3.2关系数据库关系数据库就是基于关系模型的数据库。3.3实体实体是指现实世界中具有区分于其它事物的特征或属性并与其它实体有联系的对象。在关系模型中实体通常是以表的形式来表现的。表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性。3.4联系联系是指实体之间的关系,即实体之间的对应关系。联系可以分为三种:() 一对一的联系。如:一个人只有一种性别,一个性别为一对一的联系;() 一对多的联系。如:相同性别的人有许多个,性别人为一对多的联系;() 多对一的联系。如:很多人有同一个性别,人一个性别为多对一的联系。通过联

8、系就可以用一个实体的信息来查找另一个实体的信息。关系模型把所有的数据都组织到表中。表是由行和列组成的,行表示数据的记录,列表示记录中的域。3.5关键字关键字是可用来标识或存取特定行的一组列。3.5.1组合关键字由不止一列组成的关键字称为组合关键字。在具有组合关键字的表中,组合关键字中各列的排序不受这些列在表中排序的约束。3.5.2唯一关键字唯一关键字被定义为它的任何值都不相同。唯一关键字的列不能包含空值。在执行 INSERT 和 UPDATE 语句期间,数据库管理程序强制执行该约束。一个表可以有多个唯一关键字。唯一关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE

9、语句中定义。3.5.3主关键字主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。3.6索引数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位

10、的。3.6.1索引的优缺点l 优点:方便了查询,在数据量大时排序更易查询。 l 缺点:查询时需要进行重新排序,减少了效率。物理索引缺点 建立索引效率低,只能建一个。3.7视图3.7.1什么是视图 视图是查看数据库表中数据的一种方法; 视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力; 视图只是一种逻辑对象,并不是物理对象,因为视图不占物理存储空间; 在视图中被查询的表称为视图的基表; 视图可以由以下任意一项组成::一个基表的任意子集;两个或两个以上的基表的合集;两个或两个以上基表的交集;一个或者多个基表运算的结果集合;另一个视图的子集.3.7.2视图的优缺点 优点:l 视点集

11、中 l 简化操作 l 定制数据 l 合并分割数据 l 安全性 缺点:l 如果试图连接复杂,查询起来需要花费时间l 视图是只读的,更新时需要更新原表,数据更新对用户来说很麻烦3.7.3视图的作用l 简单性:看到的就是需要的l 安全性:通过视图用户只能查询和修改他们所能见到的数据l 逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响3.7.4视图的创建 创建视图需要CREAE VIEW系统权限,视图的创建语法如下: CREATE OR REPLACE FORCE|NOFORCE VIEW 视图名(别名1,别名2.) AS 子查询 WITH CHECK OPTION CONSTRAINT 约

12、束名 WITH READ ONLY 其中: OR REPLACE 表示替代已经存在的视图。 FORCE表示不管基表是否存在,创建视图。 NOFORCE表示只有基表存在时,才创建视图,是默认值。 别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。 子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。WITH READ ONLY 表示视图是只读的。 3.7.5删除视图删除视图的语法如下: DROP VIEW 视图名;删除视图者需要是视图的建立者或者

13、拥有DROP ANY VIEW权限。视图的删除不影响基表,不会丢失数据。3.8存储过程存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。3.9触发器触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

14、4范式构造数据库必须遵循一定的规则,在关系数据库中这种规则就是范式(NF Normal Form)。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式、第三范式、第四范式、第五范式和第六范式。满足最低要求的范式是第一范式,在第一范式的基础上进一步满足更多要求的称为第二范式,其余范式依次类推。一般说来数据库只需满足第三范式就行了。4.1第一范式(1NF)在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据

15、库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。例如,如下的数据库表是符合第一范式:字段1字段2字段3字段4?而这样的数据库表是不符合第一范式的: 字段1字段2字段3字段4?字段3.1字段3.2?4.2第二范式(2NF)第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式

16、(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。例如,假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关

17、键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) (姓名, 年龄, 成绩, 学分) 这个数据库表不满足第二范式,因为存在如下决定关系: (课程名称) (学分) (学号) (姓名, 年龄)即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由n个学生选修,学分就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的学分值都要更新,否则会出现同一门课程学分不同的情况。 (3) 插入异常: 假设要开设一门新的课程,暂时还没有人选修

18、。这样,由于还没有学号关键字,课程名称和学分也无法记录入数据库。 (4) 删除异常: 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。把选课关系表SelectCourse改为如下三个表: 学生:Student(学号, 姓名, 年龄); 课程:Course(课程名称, 学分); 选课关系:SelectCourse(学号, 课程名称, 成绩)。 这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。4.3第三范式

19、(3NF)在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在A B C的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 非关键字段x 非关键字段y 假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字学号,因为存在如下决定关系: (学号) (姓名, 年龄, 所在学院, 学院地点, 学院电话) 这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系: (学号) (所在学院) (学院地点, 学院电话) 即存

20、在非关键字段学院地点、学院电话对关键字段学号的传递函数依赖。 它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。 把学生关系表分为如下两个表: 学生:(学号, 姓名, 年龄, 所在学院); 学院:(学院, 地点, 电话)。 这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。4.4范式应用我们来逐步搞定一个论坛的数据库,有如下信息: (1) 用户:用户名,email,主页,电话,联系地址 (2) 帖子:发帖标题,发帖内容,回复标题,回复内容 第一次我们将数据库设计为仅仅存在表: 用户名 email 主页 电话 联系地址 发帖标题 发帖内容 回

21、复标题 回复内容 这个数据库表符合第一范式,但是没有任何一组候选关键字能决定数据库表的整行,唯一的关键字段用户名也不能完全决定整个元组。我们需要增加发帖ID、回复ID字段,即将表修改为: 用户名 email 主页 电话 联系地址 发帖ID 发帖标题 发帖内容 回复ID 回复标题 回复内容 这样数据表中的关键字(用户名,发帖ID,回复ID)能决定整行: (用户名,发帖ID,回复ID) (email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容) 但是,这样的设计不符合第二范式,因为存在如下决定关系: (用户名) (email,主页,电话,联系地址) (发帖ID) (发帖标题,发帖

22、内容) (回复ID) (回复标题,回复内容) 即非关键字段部分函数依赖于候选关键字段,很明显,这个设计会导致大量的数据冗余和操作异常。 我们将数据库表分解为(带下划线的为关键字): (1) 用户信息:用户名,email,主页,电话,联系地址 (2) 帖子信息:发帖ID,标题,内容 (3) 回复信息:回复ID,标题,内容 (4) 发贴:用户名,发帖ID (5) 回复:发帖ID,回复ID 这样的设计是满足第1、2、3范式和BCNF范式要求的,但是这样的设计是不是最好的呢? 不一定。 观察可知,第4项发帖中的用户名和发帖ID之间是1:N的关系,因此我们可以把发帖合并到第2项的帖子信息中;第5项回复中

23、的发帖ID和回复ID之间也是1:N的关系,因此我们可以把回复合并到第3项的回复信息中。这样可以一定量地减少数据冗余,新的设计为: (1) 用户信息:用户名,email,主页,电话,联系地址 (2) 帖子信息:用户名,发帖ID,标题,内容 (3) 回复信息:发帖ID,回复ID,标题,内容 数据库表1显然满足所有范式的要求; 数据库表2中存在非关键字段标题、内容对关键字段发帖ID的部分函数依赖,即不满足第二范式的要求,但是这一设计并不会导致数据冗余和操作异常; 数据库表3中也存在非关键字段标题、内容对关键字段回复ID的部分函数依赖,也不满足第二范式的要求,但是与数据库表2相似,这一设计也不会导致数

24、据冗余和操作异常。 由此可以看出,并不一定要强行满足范式的要求,对于1:N关系,当1的一边合并到N的那边后,N的那边就不再满足第二范式了,但是这种设计反而比较好! 对于M:N的关系,不能将M一边或N一边合并到另一边去,这样会导致不符合范式要求,同时导致操作异常和数据冗余。 对于1:1的关系,我们可以将左边的1或者右边的1合并到另一边去,设计导致不符合范式要求,但是并不会导致操作异常和数据冗余。 结论 满足范式要求的数据库设计是结构清晰的,同时可避免数据冗余和操作异常。这并不意味着不符合范式要求的设计一定是错误的,在数据库表中存在1:1或1:N关系这种较特殊的情况下,合并导致的不符合范式要求反而

25、是合理的。 在我们设计数据库的时候,一定要时刻考虑范式的要求。 1N | 消除非主属性对码的部分函数依赖 2N | 消除非主属性对码的传递函数依赖 3N | 消除主属性对码的部分和传递函数依赖 BCNF | 消除非平凡且非函数依赖的多值依赖 4N5 PL/SQLPL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。6

26、 Oracle中四大语言类型6.1什么是OracleORACLE 是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。6.2ORACLE产品结构及组成 ORACLE系统是由以RDBMS为核心的一批软件产品构成,其产品结构轮廓下图所示:ORACLE*REPORTORACLE*FORMSSQL*PLUS用户编制的程序SQL*CALCSQL*GRAPHIC程序接口(SQL执行程序)ORACLE内核(RDBMS)操作系统数据字典DD数据库DB6.2.1 ORACL

27、E数据库系统的体系结构ORACLE数据库系统为具有管理ORACLE数据库功能的计算机系统。每一个运行的ORACLE数据库与一个ORACLE实例(INSTANCE)相联系。一个ORACLE实例为存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时,称为系统全局区(SYSTEM GLOBAL AREA)的一内存区(简称SGA)被分配,有一个或多个ORACLE进程被启动。该SGA 和 ORACLE进程的结合称为一个ORACLE数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。在ORACLE系统中,首先是实例启动,然后由实例装配(MOUNT)一数据库

28、。在松耦合系统中,在具有ORACLE PARALLEL SERVER 选项时,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。6.2.2ORACLE数据库的特点l 方便地从一种计算机配置移至另一种计算机配置上。l 支持大数据库、多用户的高性能的事务处理。l ORACLE遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。l 实施安全性控制和完整性控制。l 支持分布式数据库和分布处理。6.2.3 Oracle数据库工作原理(1) 数据库服务器计算机当前正在运行ORACLE(后台进程)。(2) 在一客户工作站运行一个数据库应用(为用户进程),如SQL*PLUS。客户应用使用SQ

29、L*NET DRIVER建立对服务器的连接。(3) 数据库服务器计算机当前正运行合适的SQL*NET DRIVER,该机上接收器进程检出客户数据库应用的连接请求,并在该机上为用户进程建立专用服务器进程。(4) 用户发出单个SQL语句。(5) 专用服务器进程接收该语句,在此处有两种方法处理SQL语句:l 如果在共享池一共享SQL区中包含有相同SQL语句时,该服务器进程可利用已存在的共享SQL区执行客户的SQL语句。l 如果在共享池中没有一个SQL区包含有相同的SQL语句时,在共享池中为该语句分配一新的共享SQL区。在每一种情况,在会话的PGA中建立一个专用SQL区,专用服务器进程检查用户对查询数

30、据的存取权限。(6) 如果需要,服务器进程从数据文件中检索数据块,或者可使用已存储在实例SGA中的缓冲存储区的数据块。(7) 服务器进程执行存储在共享SQL区中的SQL语句。数据首先在SGA中修改,由DBWR进程在最有效时将它写入磁盘。LGWR进程在在线日志文件中记录用户提交请求的事务。(8)如果请求成功,服务器将通过网络发送一信息。如果请求不成功,将发送相应的错误信息。(9)在整个过程中,其它的后台进程是运行的,同时注意需要干预的条件。另外,ORACLE管理其它事务,防止不同事务之间请求同一数据的竞争。6.3DDL(数据定义语言)数据库模式定义语言DDL(Data Definition La

31、nguage),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。具体是指create(创建)、alter(更改)、drop(删除)和truncate(截断)命令。6.3.1创建createCreate语句是用来创建新的数据库对象。Create table语句用于在数据库中创建数据表。其语法格式如下:CREATE TABLE database nameschema_name|schema_name. /*指定表的所有者Table_name(|、n)ONpartition_scheme_name(partition

32、_column_name)|filegroup|”default”TEXTIMAGE_ONfilegroup|”default”;Table_name:创建的表名。表名在一个数据库中必须唯一,并且符合标示符的规则。表名可以是一个部分限定名,也可以是一个完全限定名。:列的属性定义,包括列名,列数据类型,默认值,标示规范,是否允许为空等。:对一个或多个表的列进行约束设计。例如:创建一个学生表Create table student(Sno number(10) primary key,Sname varchar2(32),Ssex varchar2(8) check(Ssex=man or Sse

33、x=woman),Sage number(10),Sheight number(10,2)6.3.2更改alterAlter语句是用来修改已有对象的结构。Alter table 语句用于修改表,对表的修改包括添加列、更改列的定义、删除列、添加、修改和删除约束和触发器等。Alter table的一般格式如下:ALTER TABLE ADD完整性约束 DROP ALTER例如:为表student添加院系列Alter table student add department varchar2(50).6.3.3删除drop和截断truncateDrop语句是用来删除已有的数据库对象。而truncat

34、e语句和delete差不多,但还是有区别的。Drop语句的一般格式为:DROP TABLE表 | INDEX索引 ON表 | PROCEDURE procedure | VIEW view部分说明: table 欲删除的表的名称,或欲删除的索引所在的表的名称。 过程 欲创建的表的名称。 view 欲创建的表的名称。 index 欲从表中删除的索引的名称。 说明: 必须先关闭表,然后才能删除此表或此表中的索引。 也可以使用 ALTER TABLE 语句 来删除表中的索引。 你可以用 CREATE TABLE 建立一个表,也可以用 CREATE INDEX 或 ALTER TABLE 建立一个索引

35、。使用 ALTER TABLE修改表。例如:删除表studentDrop table student6.4DML(数据操纵语言)数据操纵语言DML(Data Manipulation Language),命令使用户能够查询数据库以及操作已有数据库中的数据的计算机语言。具体是指是SELECT查询、UPDATE更新、INSERT插入、DELETE删除。6.4.1查询数据SELECT语句,查询语言用来对已经存在于数据库中的数据按照特定的组合、条件表达式或次序进行检索。例如:一、简单查询列(SELECT和FROM)1,查询学好为2006312104同学所住的宿舍楼的管理员姓名2,查询东一宿舍楼管理员的

36、姓名3,查询计算机系学生住宿的宿舍楼和房间4,查询住在东一宿舍楼的计算机系学生的姓名1,use 数据库名GOselect 学号,管理员姓名 from formx where 学号 = 2006312104GO2,select 楼名,管理员姓名 from formn where 楼名 = 东一宿舍楼3,select 房间号 , 楼名,系部 from forma where 系部 = 计算机系4,select 学生姓名 ,楼名,系部 from form1 where 楼名=东一宿舍楼 AND 系部=计算机系二、过滤结果的重复值(DISTINCT)DISTINCT关键字用于从SELECT语句的结果集

37、中消除重复项。查询时如果没有指定DISTINCT,将返回所有行。如果指定了DISTINCT则只返回取值不同的行三、对查询的列进行排序(ORDER BY)ORDER BY 用于对结构集进行排序按照院系的名称进行排序:SELECT 学号,姓名,院系名称 FROM 学生表 ORDER BY 院系名称ORDER BY 后面还可以指定关键字ASC(升序)和DESC(降序)四、查询列的重新命名(AS)查询pubs数据库的authors表,并将返回的列命名为中文:USE pubs Select au_id AS 编号,au_lname AS 姓氏,au_fname AS名字 FROM authors五、模糊

38、查询(LIKE和NOT LIKE)1.%:包含零个或多个字符的任意字符串。“WHERE 学号LIKE 2005%”查询“学号”以2005开头的记录信息。2._:任何单字字符3.:指定范围(a-f)或集合(abcdef)内的任何单个字符。4.:和相反。6.4.2插入数据INSERT语句可以实现往数据库表中插入记录。有两种方法可以向一张表中插入数据一种是用VALUES选择,直接给各字段赋值;二是通过一条查询语句,把从其它表或视图中选取的数据插入。例如:打开cust数据库,向students表中插入数据Values (11,影子,男,1999-12-12,湖北,83779805,武汉市桥口区,VB爱

39、好者)Use cust Insert Into students Values (11,影子,男,1999-12-12,湖北,83779805,武汉市桥口区,VB爱好者)6.4.3修改数据UPDATE语句实现更新数据库。例如:打开cust数据库,修改students表,使number100的数据的name的值全部加007。Use cust Update students Set name=name+007 Where number1006.4.4删除数据删除数据有delete,drop ,truncate。它们的区别为:当你不再需要该表时, 用 drop; 当你仍要保留该表,但要删除所有记录时

40、, 用 truncate; 当你要删除部分记录时(always with a WHERE clause), 用 delete.而alter是对表结构的修改.6.5TCL(事务控制语言)TCL (最早称为“工具命令语言”Tool Command Language, 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本编程,GUI和测试等方面。TCL念作“踢叩” tickle. 包括commit(提交)、savepoint(保存点)和rollback(回滚)命令。6.6DCL(

41、数据控制语言)DCL(Data Control Language)是数据库控制语言。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。包括grant(授予)和revoke(回收)命令。7oracle开发中序列的使用序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。Oracle序列允许同时生成多个序列号,

42、而每一个序列号是唯一的。 当一个序列号生成时,序列是递增,独立于事务的提交或回滚。容许设计缺省序列,不需指定任何子句。该序列为上升序列,由1开始,增量为1,没有上限。7.1建立序列命令 CREATE SEQUENCE user.sequence_name increment by n start with n maxvalue n | nomaxvalue minvalue n | nominvalue; INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。 START WITH:指定生成的第一个序列号。在升序时,序列可从

43、比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。 MAXVALUE:指定序列可生成的最大值。 NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。 MINVALUE:指定序列的最小值。 NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。例如,为stu1的主键sid创建一个从值2008304040101开始的序列create sequence sid start with 2008304040101插入数据的时候用语句:insert into stu1 values (sid.nextval,xx

44、x,xxx,xxx,xx)。7.2更改序列命令 ALTERSEQUENCE user.sequence_nameINCREMENT BY nMAXVALUE n| NOMAXVALUE MINVALUE n | NOMINVALUE;修改序列可以:修改未来序列值的增量。设置或撤消最小值或最大值。改变缓冲序列的数目。指定序列号是否是有序。注意:1,第一次NEXTVAL返回的是初始值2,可以alter除start至以外的所有sequence参数。如果想要改变start值,必须drop sequence 再 re-create。7.3删除序列命令 DROP SEQUENCE user.sequence_name;用于从数据库中删除一序列。18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1