首页 > > > 深入浅出学Oracle.pdf

深入浅出学Oracle.pdf

深入浅出学Oracle.pdf

上传者: 挡不住的woshishui 2014-02-16 评分1 评论0 下载1 收藏10 阅读量457 暂无简介 简介 举报

简介:本文档为《深入浅出学Oraclepdf》,可适用于软件工程领域,主题内容包含Java私塾《深入浅出学Oracle》系列精品教程n循序渐进地学习使用Oracle开发所需知识n第一部分:关系数据库基础数据库是什么、有什么、能干什符等。

Java私塾《深入浅出学Oracle》——系列精品教程n循序渐进地学习使用Oracle开发所需知识n第一部分:关系数据库基础数据库是什么、有什么、能干什么;关系型数据库是什么、有什么、能干什么关系理论n第二部分:SQLSQL是什么、有什么、能干什么Oracle数据类型DDL、DMLn第三部分:SQL实战行列转换、分页、树n第四部分:JDBC使用Java操作数据库《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900课程概览《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900第一部分:关系数据库基础本部分将学习以下内容:1、数据库是什么、有什么、能干什么、分类2、关系简介3、关系型数据库是什么、有什么、能干什么4、关系理论关系模型、规范化等n思考:日常生活中有没有使用数据库?数据库是什么?是一种以某种有组织的方式存储的数据集合(数据容器)。数据库能干什么?存储数据(一般是有组织的数据)。数据库有什么?数据(一般是一组数据集合)。n思考:数据库中能不能随意存放数据,即数据有没有结构限制?数据和数据之间有没有联系?《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900数据库基础-1《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900数据库基础-2学生学号姓名年龄性别……张三201001张三20男……数据:描述现实世界事物的符号记录模型:现实世界的抽象关系型数据库(oracle、mysql、sqlserver、db2、hsqldb、derby……)关系:自然语义:事物之间相互作用、相互联系的状态。关系型数据:以关系数学模型来表示的数据。一般以二维表的形式来描述数据。关系模型:关系的数据结构、关系操作集合和关系完整性约束组成。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-1字段(列)记录(行)学生表学号姓名年龄性别系名年级2010001张三20男计算机20102010002李四19男计算机2010表由什么组成?行和列表如何描述数据(模型)?列:表中的一个字段,描述了表中的某列的数据类型;因此表中所有列组成了关系数据结构(模型)。表如何存储数据?行:表中的数据是按行存储的;所保存的记录存储在自己的行内。也可以成为“记录”(数据)。思考:学号允许重复吗?表是如何来解决重复问题的?《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-2字段(列)记录(行)学生表学号姓名年龄性别系名年级2010001张三20男计算机20102010002李四19男计算机2010主键:表中其中一列或几列的组合,其值能唯一标识表中每个行。表中任何列都可以作为主键,但要满足如下条件:•任何两行都不具有相同的主键值•每个行都必须具有一个主键值(主键列不允许为null值)•主键列中的值不允许修改或更新•主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)•一般以id或uuid作为主键的名字《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-3关系数据库基础-4真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-4《深入浅出学Oracle》——系列精品教程n数据库表之间的关系分为三类:一对一、一对多、多对多n一对一数据表(学生表和学生信息表)n一对多数据表(教师表和学生表)n多对多数据表(学生表和课程表)uuidname201001张三uuidaddressstudentUuid1北京市海淀区…201001uuidname10000李老师uuidnameteacherUuid201001张三10000201002李四10000uuidname201001张三201002李四uuidname1语文2数学uuidstudentUuidcourseUuidscore12010011100220100129032010021901*1*111*外键是什么:在一个关系(参照表)中是主键(参照列),而另一个关系引用这个键,那么这个键在另一个关系中就是外键。外键能干什么:使两个关系(表)形成关联,外键只能引用参照表中的主键。保持数据一致性,完整性。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-5uuidname201001张三uuidaddressstudentUuid1北京市海淀区…20100111主键(参照列)外键参照表参照思考:如何在数据库内表示一对一、一对多、多对多?《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-6uuidname201001张三uuidaddressstudentUuid1北京市海淀区…20100111主键(参照列)外键如何在数据库内表示一对一这一列不不允许重复唯一索引《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础-7如何在数据库内表示一对多uuidname10000李老师uuidnameteacherUuid201001张三10000201002李四100001*主键(参照列)外键这一列允许重复不加唯一索引uuidname201001张三201002李四uuidname1语文2数学uuidstudentUuidcourseUuidscore12010011100220100129032010021901*1*关系完整性约束真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础关系完整性约束《深入浅出学Oracle》——系列精品教程n关系模型的完整性约束是什么:是通过关系的某种约束条件对关系进行约束。也就是说关系的值随时间变化时应该满足一些约束条件。如年龄不能超过1000,性别必须是男或者女关系模型的完整性约束能干什么:关系模型的完整性约束能有什么:实体完整性、参照完整性、用户自定义完整性。实体完整性:针对基本关系而言,也就是一个二维表主键不能为NULL,……参照完整性:表之间存在关系,自然就存在关系的引用(外键)表和表之间的关系通过外键实现外键可以为NULL或引用表的主键用户自定义完整性:针对不同的需求定义自己的完整性约束。如不允许学生编号中出现非数字字符,性别必须是男或者女…………问题1、数据冗余太大:课程、系和系主任重复、造成存储空间浪费2、更新异常:由于数据冗余,当更新数据库中的数据时,系统付出很大代价来维护数据库的完整性,否则会面临数据不一致,如更换系主任,必须修改与该系学生有关的所有。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化1学号姓名系系主任课程名成绩201001张三计算机系王五语文100201001张三计算机系王五数学100201002李四计算机王五数据结构80学生表数据依赖:是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间的相关联系。U完全函数依赖于K或K唯一决定U候选码:唯一,主码==主键,主键可能有多列(学号,课程号),称为复合主键如“姓名年龄”:这个完全函数依赖只有在姓名没有重名情况下成立,而如果允许姓名重复,则年龄部分函数依赖于姓名。如“学号姓名”:即姓名完全函数依赖于学号,学号能确定学生的任何东西。即学号是主键。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化2范式:关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的范式,最低是第一范式,在满足第一范式中满足进一步要求的是第二范式,以此类推。即高范式必须满足低范式。第一范式:关系,也就是二维表,每列是不可再分的数据项。即每列的数据是原子的。学生表满足第一范式,且主键是(学号,课程名)第一范式问题:更新异常《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化3学号姓名系系主任课程名成绩201001张三计算机系王五语文100201001张三计算机系王五数学100201002李四计算机王五数据结构80第二范式:首先满足第一范式,其次,表中非主属性完全函数依赖于码,消除部分函数依赖。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化4学号姓名系系主任课程名成绩201001张三计算机系王五语文100201001张三计算机系王五数学100201002李四计算机系王五数据结构80第三范式:首先满足第二范式,非主属性没有部分依赖于码,且非主属性不传递依赖于码《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化5学号(PK)姓名系系主任201001张三计算机系王五201001张三计算机系王五201002李四计算机系王五学号课程名成绩201001语文100201001数学100201002数据结构801*《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900关系数据库基础规范化6终点?第一范式每项数据是原子第二范式消除部分函数依赖第三范式消除传递函数依赖《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900第二部分:SQL本部分将学习以下内容:1、SQL是什么、有什么、能干什么及HelloWorld2、Oracle基本数据类型3、DML4、DQL及常用Oracle函数5、DDL6、DCL7、SQL实战SQL是什么?SQL(StructuredQueryLanguage)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。(同时也是数据库脚本文件的扩展名。)SQL能干什么?SQL可创建新数据库;SQL可在数据库中创建新表;SQL可在数据库中创建视图;SQL可在数据库中创建存储过程;SQL可以设置表、存储过程和视图的权限。SQL面向数据库执行查询;SQL可从数据库取回数据;SQL可在数据库中插入新的记录;SQL可更新数据库中的数据;SQL可从数据库删除记录;一句话:SQL是一种数据库语言,用于完成所有数据库操作。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-1SQL有什么?SQL语言包含4个部分:数据定义语言(DDL),如:CREATE、DROP、ALTER等语句。数据操作语言(DML),如:INSERT、UPDATE、DELETE等语句。数据查询语言(DQL),如:SELECT等。数据控制语言(DCL),如:GRANT、REVOKE等语句。SQL标准:1SQL-86ANSI(即美国国家标准)1986年10月2SQL-89ANSI1989年3SQL-92ANSI1992年即SQL24SQL-99ANSI1999年即SQL35SQL:2003、SQL:2006、SQL:20086SQLServer的SQL扩展叫T-SQL,其遵循ANSI制定的SQL-92标准。7Oracle的SQL扩展叫PL-SQL,其遵循ANSI制定的SQL-92标准。8MySQL同样也遵循ANSI制定的SQL-92标准。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-21.1、数据库表的结构(数据字典)《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-3HelloWorld11、学生表TBL_STUDENT列名类型长度描述是否主键snumnumber10学号snamevarchar2100姓名agenumber10年龄sexchar1性别(0:男,1女)2、课程表TBL_COURSE列名类型长度描述是否主键cnumnumber10课程号cnamevarchar2100课程名3、成绩表TBL_GRADE列名类型长度描述是否主键snumnumber10学号cnumnumber10课程号scorenumber10成绩1.2、使用SQL创建数据库表--学生表createtableTBL_STUDENT(SNUMNUMBERnotnull,SNAMEVARCHAR2(100),AGENUMBER,SEXCHAR(1),constraintPK_STUDENTprimarykey(SNUM));--课程表createtableTBL_COURSE(CNUMNUMBERnotnull,CNAMEVARCHAR2(100),constraintPK_COURSEprimarykey(CNUM));--成绩表createtableTBL_GRADE(SNUMNUMBERnotnull,CNUMNUMBERnotnull,SCORENUMBER,constraintPK_GRADEprimarykey(SNUM,CNUM));《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-3HelloWorld2在Oracle中SQL语句不区分大小写2、CURD(增删改查)新增insertintoTBL_STUDENT(Snum,Sname,AGE,SEX)values(1,'zhang',1,'1');Commit;修改updateTBL_STUDENTsetAGE=2whereSNUM=1Commit;删除deletefromTBL_STUDENTwheresnum=1Commit;查询全部select*fromTBL_STUDENT按条件查询select*fromTBL_STUDENTwheresnum=1《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-3HelloWorld31、字符类型•CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。•VARCHAR2:目前这也是VARCHAR的同义词。这是一个变长字符串,与CHAR类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~12字节的信息。VARCHAR2最多可以存储4,000字节的信息。CHAR和VARCHAR2的比较CHAR(4)“A“实际在数据库中存储为"A““ABCDE”超长报错VARCHAR2(4)“A”存储的还是“A”“ABCDE”超长报错汉字:每个汉字占多少字节,要看具体的编码方式,如UTF-8(1-3字节)、GB2312(2字节)、GBK(2字节)、GB18030(1、2、4字节)《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-4数据类型12、数字类型•NUMBER:该数据类型能存储精度最多达38位的数字。每个数存储在一个变长字段中,其长度在0~22字节之间。Oracle的NUMBER类型精度很高,远远高于许多编程语言中常规的FLOAT和DOUBLE类型。NUMBER(p,s)p表示精度(总长度)s表示小数位置且四舍五入NUMBER(10,3)10是总长度,3是小数位数的长度123.456123.4567:将存储为123.45712345679.899:精度超长了,10是总长度,3是小数位,整数位为10-3=7位NUMBER(10)==NUMBER(10,0)java.lang.IntegerNUMBER(19)==NUMBER(19,0)java.lang.Long《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-4数据类型23、日期类型•DATE:一个7字节的定宽日期/时间数据类型。其中总包含7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。•TIMESTAMP:一个7字节或12.字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒(fractionalsecond);带小数秒的TIMESTAMP在小数点右边最多可以保留9位。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-4数据类型34、二进制及大文本数据•BLOB:(binarylargeobject)在Oracle9i及以前的版本中,这种数据类型允许存储最多4GB的数据,在Oracle10g及以后的版本中允许存储最多(4GB)(数据库块大小)字节的数据。BLOB包含不需要进行字符集转换的“二进制“数据,如果要存储电子表格、字处理文档、图像文件等就很适合采用•CLOB:(CharacterLargeObject)在Oracle9i及以前的版本中,这种数据类型允许存储最多4GB的数据,在Oracle10g及以后的版本中允许存储最多(4GB)(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-4数据类型4是什么:数据库模式定义语言DDL(DataDefinitionLanguage),是用于描述数据库中要存储的现实世界实体的语言。能干什么:创建/删除/修改表、索引……有什么:(不同数据库DDL可能不一样,需要参考各个数据库的SQL手册)CREATETABLE创建表(主键、外键、约束、级联)DROPTABLE删除表ALTERTABLE修改表CREATEVIEW创建视图DROPVIEW删除视图CREATEINDEX创建索引DROPINDEX删除索引CREATESEQUENCE创建序列……《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL1、创建表语法createtable表名(字段名类型[notnull][default默认值],字段名类型[notnull],[constraintpk_表名primarykey(主键名),][constraintunique_表名_字段名unique(字段名),][constraintcheck_表名_字段名check(表达式),][constraintcheck_表名_字段名check(表达式),][constraintfk_表名_参照表名foreignkey(当前表外键名)references参照表(参照表主键名)ondelete[cascade|noaction|setnull]])《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-表1.1、关系数据结构字段名不允许是Oracle关键字类型Oracle数据类型notnull不允许为null,默认允许default默认值指定默认值,不知道默认就是null1.2、关系约束(可选)constraintpk_表名primarykey(字段名):指定主键字段constraintunique_表名_字段名unique(字段名):唯一约束,即该列不允许重复constraintcheck_表名_字段名check(表达式):检查约束,如(age<100)[constraintfk_表名_参照表名foreignkey(当前表外键名)references参照表(参照表主键名)ondelete[cascade|noaction|setnull]]:指定关联关系《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-表2、修改表2.1、重命名表altertable表名renameto新表名;2.2、新增一列altertable表名add(字段名类型[notnull][default默认值],字段名类型[notnull][default默认值],……);2.3、重命名一列altertable表名renamecolumn原来字段名to新字段名;2.4、修改一列altertable表名modify(字段名新类型[notnull][default默认值],字段名新类型[notnull][default默认值],……);2.5、删除一列altertable表名dropcolumn字段名;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-表3、创建视图3.1、语法createview视图名as查询;3.2、为什么使用视图?《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-视图1、视图的本质是一条SQL语句,它只是一个门面。2、重用SQL语句。3、保护数据。可以只给外界看部分数据。4、转换数据,视图可以返回与底层表完全不同的字段名和数据类型。4、创建索引4.1、索引用来干什么?用来排序数据以加快搜索和排序的速度。避免全表扫描,减少磁盘I/O次数4.2、Oracle索引分类B-树索引和位图索引4.3、B-树索引原理《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-索引50000000400000003500000045000000600000005500000065000000注意:在B-树中,我们能进行范围查找、前缀查找。进行如!=查找、not查找、后缀查找将不会利用到索引。4.5、创建索引语法创建索引的标准语法CREATEINDEX索引名ON表名(字段名)创建唯一索引CREATEuniqueINDEX索引名ON表名(字段名)创建组合索引CREATEINDEX索引名ON表名(字段名1,字段名2)创建反向索引CREATEINDEX索引名ON表名(字段名)reverse《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-索引4.6、使用索引时注意事项:索引能改善查询性能,但同时也降低了插入、删除和修改的性能,因为执行这些操作需要更新索引。不要所有列都建索引,那些经常查询的数据应该建立索引。可以索引多个列,如(性别,姓名)但根据之前介绍的只有在前缀查找时才能利用索引,因此如果您执行(select*fromtblwhere姓名=‘aaa’)将无法利用索引,而(select*fromtblwhere性别=‘1’)将能利用索引如果在索引列上使用函数也无法利用索引,如(select*fromtblwhereupper(姓名_=‘AAA’)也无法利用索引。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-索引5、创建序列序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。一般用于生成流水号、如用户编号、订单流水号等等5.1、创建序列CREATESEQUENCE序列名[INCREMENTBYn][STARTWITHn];5.2、删除序列DROPSEQUENCE序列名;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-5DDL-序列DML是什么:DataManipulationLanguage,数据操纵语言,命令使用户能够操作已有数据库中的数据的计算机语言。DML能干什么:增删改DML有什么:不同数据库DML可能不一样,需要参考各个数据库的SQL手册,但一般具有如下语句insert新增update修改delete删除《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-6DMLInsert(新增数据)语法insertinto表名(列名(,列名)*)*values(值(,值)*);1、新增整行insertinto表名values(值(,值)*);insertintoTBL_STUDENTvalues(1,’name’,1,’1’);注:[所有值必须和列定义位置一一对应]2、新增行的一部分insertinto表名(列名(,列名)*)*values(值(,值)*);insertintoTBL_STUDENT(snum,sname,age)values(1,’name’,1);3、新增某些查询的结果insertinto新表名(查询);insertintoTBL_STUDENT(select*fromTBL_STUDENT);4、从一个表复制到另一个表createtabletbl_student3asselect*fromtbl_student;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-6DML-insertUpdate(更新数据)语法:Update表名set列名=值(,列名=值)*(where条件)*1、更新表中特定行updatetbl_studentsetage=2,sex=‘0’wheresnum=1;2、更新表中所有行:初始化时可能用用Updatetbl_studentsetage=2,sex=‘0’;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-6DML-updateDelete(删除数据)语法:Deletefrom表名(where条件)*1、从表中删除特定行数据Deletefromtbl_studentwheresnum=1;2、从表中删除所有行Deletefromtbl_student;3、截断,更快的从表中删除所有行-不保留日志,1、不能回滚;2、快TruncatetableTBL_Student;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-6DML-delete是什么:DataQueryLanguage数据查询语言能干什么:数据检索有什么:SELECT查询字段FROM表[WHERE查询条件][GROUPBY分组字段][HAVING分组条件][ORDERBY排序字段[ASC|DESC]]ASC升序,默认;DESC降序《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL1一、最简单查询1、检索单列selectsnumfromtbl_student;2、检索多列selectsnum,snamefromtbl_student;3、检索所有列select*fromtbl_student;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL2二、排序检索数据1、按单列排序(查询所有学生,按学号降序排序)select*fromtbl_studentorderbysnumdesc;2、按多列排序(查询所有学生,首先按年龄升序排序,然后再按性别降序排序)select*fromtbl_studentorderbyage,sexdesc;注:多列排序时,是先按第一个字段排序,排好后再按照第二个字段对已排好序的记录再排序。uuid,name232211《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL3orderbyuuiduuid,name112322orderbyuuid,nameuuid,name112223三、基本数据过滤1、检索年龄小于20的学生Select*fromtbl_studentwhereage<20;2、检索年龄不等于20的学生Select*fromtbl_studentwhereage!=20;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL4比较运算符:=、<、<=、>、>=、!=、^=、<>算数运算符:+、-、*、/、%范围:between...and、notbetween....and逻辑运算符:and、or、not字符串匹配运算符:like、notlike字符串连接运算符:||空运算符:isnull、isnotnull包含运算符:in、notin;exists、notexists集合操作符:union、unionall、intersect、minusOracle运算符三、基本数据过滤3、检索及格的学生且小于等于80分的;Select*fromtbl_gradewherescore>=60andscore<=80;Select*fromtbl_gradewherescorebetween60and80;(检索包括开始和结束)4、检索没填性别的所有学生;无值不是0或空字符串’’,而是NULLSelect*fromtbl_studentwheresexisnull;四、高级数据过滤1、notandor检索及格的学生且小于80分的;Select*fromtbl_gradewherescore>=60andscore<80;检索不及格的或缺考的Select*fromtbl_gradewherescore<60orscoreisnull;检索及格的Select*fromtbl_gradewherenot(score<60orscoreisnull);《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL52、notandor优先级顺序(从高到低)notandor混用时最好加括号()3、in运算符查询学号为1或2的学生信息Select*fromtbl_studentwheresnum=1orsnum=2Select*fromtbl_studentwheresnumin(1,2)《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL6五、用通配符进行过滤LIKE操作符用于模糊匹配,可使用的通配符如下:%:0个或多个字符;_:一个字符。1.1、%通配符(匹配0个或多个)(查询姓张的所有学生)Select*fromtbl_studentwheresnamelike‘张%’1.2、%通配符(查询姓名中包含a的所有学生)Select*fromtbl_studentwheresnamelike‘%a%’1.3、_通配符(查询姓张的且姓名是两个字符的的所有学生)Select*fromtbl_studentwheresnamelike‘张_’《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL7六、创建计算字段计算字段:或计算临时字段,如在查询学生时需要查询学生的总成绩、平均成绩,这些而外的数据需要有个字段来存放,这个字段就是计算字段1、拼接字段使用||连接字符串检索所有学生,学生学号和姓名放一列显示;selectsnum||'--'||sname,age,sexfromtbl_student;2、使用别名selectsnum||'--'||snameassname,age,sexfromtbl_student;《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL83、算数运算+-*/对检索出的所有学生年龄加2selectsnum,age+2fromtbl_student;七、数据处理函数虚拟表(哑表)DUAL(用于计算表达式用,返回一行一列)1、字符及字符串处理函数《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL91、CHR(intValue)返回等价数值的字符ASCII(charater)返回等价字符的数值2、LENGTH(str)字符串长度3、CONCAT(str1,str2)字符串连接4、INITCAP(str)返回字符串的每个单词的第一个字母大写,而其他字母小写。5、LOWER(str)把字符串str转换为小写UPPER(str)把字符串str转换为小写6、LTRIM(str1,trimCharater)从str左边开始去掉出现在trimCharater的中任何前导字符集。7、RTRIM(str1,trimCharater)从str右边边开始去掉出现在trimCharater的中任何前导字符集。《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL108、LPAD(str,length,padStr)在字符串str左边添加字符串padStr直到str字符串的长度等于length9、RPAD(str,length,padStr)在字符串str右边添加字符串padStr直到str字符串的长度等于length10、SUBSTR(str,fromIndex,length)返回字符串str中从fromIndex位置开始的length个字符11、INSTR(str,searchStr,fromIndex,count)在str中从位置fromIndex开始查找searchStr在str中出第count次的位置,fromIndex可以为负(此时,从str的尾部开始)。12、to_number(str)将str转换为数字1、字符串处理函数2、数字处理函数1、ABS(x)x的绝对值2、CEIL(x)大于或等于x的最小整数值FLOOR(x)小于或等于x的最大整数值3、MOD(x,y)求余,返回x除以y的余数。4、POWER(x,y)计算x的y次幂5、ROUND(x,y)计算保留到小数点右边y位的x值。会四舍五入6、TRUNC(x,y)计算保留到小数点右边y位的x值。会四舍五入7、LOG(x,y)、SIN(x)、COS(x)、TAN(x)、EXP(x)、LN(x)……3、日期处理函数《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL111、当前系统时间selectsysdatefromdual;2、to_char(date[,fmt])日期date按fmt指定的格式格式化后的字符串3、to_date(str[,fmt])字符串str按fmt指定的格式格式化后的日期格式字符串如下:d:一周中的星期几dd:月中的第几天ddd:年中的第几天yyyy:四位年份yyy,yy,y:年份的最后三位,两位,一位hh:小时,按12小时计hh24:小时,按24小时计mi:分ss:秒mm:月w:该月的第几个星期ww:年中的第几个星期更多函数请参考OracleSQL手册八、汇总数据1、聚集函数1、统计一共有多少学生selectcount(*)fromtbl_student;注:count(*)所有记录count(score)score列所有不为null的数量2、统计学生的总成绩、平均成绩、最高分、最低分selectsum(score),avg(score),max(score),min(score)fromtbl_grade;注:聚集函数忽略NULL值,即NULL值不参与运算单用:没分组部分,默认全部记录是一组;如果没有记录:count返回0,其他聚合函数返回NULL《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL121、avg(列名)返回某列的平均值2、count(列名)返回某列的行数3、max(列名)返回某列的最大值4、min(列名)返回某列的最小值5、sum(列名)返回某列值的总和3、统计某行不同值的数量(去除重复行)查询学生的年龄,要求不重复selectdistinctagefromstudent;统计不同年龄的数量selectcount(distinctage)fromstudent;九、分组数据1、统计每个学生的总分、平均分、最高分、最低分selectsnum,sum(score),avg(score),max(score),min(score)fromtbl_gradegroupbysnum;2、多分组字段类似于排序,先按第一个分组,再对已分好的组按第二个字段分组统计不同年龄、不同性别的人数selectage,sex,count(*)fromtbl_studentgroupbyage,sex《深入浅出学Oracle》——系列精品教程真正高质量培训签订就业协议网址:http://www.javass.cn咨询QQ:460190900SQL-7DQL133、过滤分组WHERE是过滤字段,而无法对分组进行过滤,如过滤掉[最低分小于60]的学生WHERE无法做到,需要使用having来完成过滤掉最低分小于60的学生selectsnum,sum(score),avg(score),max(score),min(score)fromtbl_gradegroupbysnumhavingmin(score)>=60;检索至少学过两门课的学生selectsnumfromtbl_gradegroupbysnumhavingcount(*)>=24、分组和排序按照学

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 97
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!