关闭

关闭

封号提示

内容

首页 深入浅出学Oracle.pdf

深入浅出学Oracle.pdf

深入浅出学Oracle.pdf

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

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

Java私塾《深入浅出学Oracle》系列精品教程n循序渐进地学习使用Oracle开发所需知识n第一部分:关系数据库基础数据库是什么、有什么、能干什么关系型数据库是什么、有什么、能干什么关系理论n第二部分:SQLSQL是什么、有什么、能干什么Oracle数据类型DDL、DMLn第三部分:SQL实战行列转换、分页、树n第四部分:JDBC使用Java操作数据库《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:课程概览《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:第一部分:关系数据库基础本部分将学习以下内容:、数据库是什么、有什么、能干什么、分类、关系简介、关系型数据库是什么、有什么、能干什么、关系理论关系模型、规范化等n思考:日常生活中有没有使用数据库?数据库是什么?是一种以某种有组织的方式存储的数据集合(数据容器)。数据库能干什么?存储数据(一般是有组织的数据)。数据库有什么?数据(一般是一组数据集合)。n思考:数据库中能不能随意存放数据即数据有没有结构限制?数据和数据之间有没有联系?《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:数据库基础《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:数据库基础学生学号姓名年龄性别……张三张三男……数据:描述现实世界事物的符号记录模型:现实世界的抽象关系型数据库(oracle、mysql、sqlserver、db、hsqldb、derby……)关系:自然语义:事物之间相互作用、相互联系的状态。关系型数据:以关系数学模型来表示的数据。一般以二维表的形式来描述数据。关系模型:关系的数据结构、关系操作集合和关系完整性约束组成。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础字段(列)记录(行)学生表学号姓名年龄性别系名年级张三男计算机李四男计算机表由什么组成?行和列表如何描述数据(模型)?列:表中的一个字段描述了表中的某列的数据类型因此表中所有列组成了关系数据结构(模型)。表如何存储数据?行:表中的数据是按行存储的所保存的记录存储在自己的行内。也可以成为“记录”(数据)。思考:学号允许重复吗?表是如何来解决重复问题的?《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础字段(列)记录(行)学生表学号姓名年龄性别系名年级张三男计算机李四男计算机主键:表中其中一列或几列的组合其值能唯一标识表中每个行。表中任何列都可以作为主键但要满足如下条件:•任何两行都不具有相同的主键值•每个行都必须具有一个主键值(主键列不允许为值)•主键列中的值不允许修改或更新•主键值不能重用(如果某行从表中删除它的主键不能赋给以后的新行)•一般以id或uuid作为主键的名字《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础关系数据库基础真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础《深入浅出学Oracle》系列精品教程n数据库表之间的关系分为三类:一对一、一对多、多对多n一对一数据表(学生表和学生信息表)n一对多数据表(教师表和学生表)n多对多数据表(学生表和课程表)uuidname张三uuidaddressstudentUuid北京市海淀区…uuidname李老师uuidnameteacherUuid张三李四uuidname张三李四uuidname语文数学uuidstudentUuidcourseUuidscore***外键是什么:在一个关系(参照表)中是主键(参照列)而另一个关系引用这个键那么这个键在另一个关系中就是外键。外键能干什么:使两个关系(表)形成关联外键只能引用参照表中的主键。保持数据一致性完整性。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础uuidname张三uuidaddressstudentUuid北京市海淀区…主键(参照列)外键参照表参照思考:如何在数据库内表示一对一、一对多、多对多?《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础uuidname张三uuidaddressstudentUuid北京市海淀区…主键(参照列)外键如何在数据库内表示一对一这一列不不允许重复唯一索引《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础如何在数据库内表示一对多uuidname李老师uuidnameteacherUuid张三李四*主键(参照列)外键这一列允许重复不加唯一索引uuidname张三李四uuidname语文数学uuidstudentUuidcourseUuidscore**关系完整性约束真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础关系完整性约束《深入浅出学Oracle》系列精品教程n关系模型的完整性约束是什么:是通过关系的某种约束条件对关系进行约束。也就是说关系的值随时间变化时应该满足一些约束条件。如年龄不能超过性别必须是男或者女关系模型的完整性约束能干什么:关系模型的完整性约束能有什么:实体完整性、参照完整性、用户自定义完整性。实体完整性:针对基本关系而言也就是一个二维表主键不能为……参照完整性:表之间存在关系自然就存在关系的引用(外键)表和表之间的关系通过外键实现外键可以为或引用表的主键用户自定义完整性:针对不同的需求定义自己的完整性约束。如不允许学生编号中出现非数字字符性别必须是男或者女…………问题、数据冗余太大:课程、系和系主任重复、造成存储空间浪费、更新异常:由于数据冗余当更新数据库中的数据时系统付出很大代价来维护数据库的完整性否则会面临数据不一致如更换系主任必须修改与该系学生有关的所有。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化学号姓名系系主任课程名成绩张三计算机系王五语文张三计算机系王五数学李四计算机王五数据结构学生表数据依赖:是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间的相关联系。U完全函数依赖于K或K唯一决定U候选码:唯一主码==主键主键可能有多列(学号,课程号)称为复合主键如“姓名年龄”:这个完全函数依赖只有在姓名没有重名情况下成立而如果允许姓名重复则年龄部分函数依赖于姓名。如“学号姓名”:即姓名完全函数依赖于学号学号能确定学生的任何东西。即学号是主键。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化范式:关系数据库中的关系要满足一定的要求满足不同程度要求的为不同的范式最低是第一范式在满足第一范式中满足进一步要求的是第二范式以此类推。即高范式必须满足低范式。第一范式:关系也就是二维表每列是不可再分的数据项。即每列的数据是原子的。学生表满足第一范式且主键是(学号,课程名)第一范式问题:更新异常《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化学号姓名系系主任课程名成绩张三计算机系王五语文张三计算机系王五数学李四计算机王五数据结构第二范式:首先满足第一范式其次表中非主属性完全函数依赖于码消除部分函数依赖。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化学号姓名系系主任课程名成绩张三计算机系王五语文张三计算机系王五数学李四计算机系王五数据结构第三范式:首先满足第二范式非主属性没有部分依赖于码且非主属性不传递依赖于码《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化学号(PK)姓名系系主任张三计算机系王五张三计算机系王五李四计算机系王五学号课程名成绩语文数学数据结构*《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:关系数据库基础规范化终点?第一范式每项数据是原子第二范式消除部分函数依赖第三范式消除传递函数依赖《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:第二部分:SQL本部分将学习以下内容:、SQL是什么、有什么、能干什么及HelloWorld、Oracle基本数据类型、DML、DQL及常用Oracle函数、DDL、DCL、SQL实战SQL是什么?SQL(StructuredQueryLanguage)结构化查询语言是一种数据库查询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统。(同时也是数据库脚本文件的扩展名。)SQL能干什么?SQL可创建新数据库SQL可在数据库中创建新表SQL可在数据库中创建视图SQL可在数据库中创建存储过程SQL可以设置表、存储过程和视图的权限。SQL面向数据库执行查询SQL可从数据库取回数据SQL可在数据库中插入新的记录SQL可更新数据库中的数据SQL可从数据库删除记录一句话:SQL是一种数据库语言用于完成所有数据库操作。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLSQL有什么?SQL语言包含个部分:数据定义语言(DDL)如:CREATE、DROP、ALTER等语句。数据操作语言(DML)如:INSERT、UPDATE、DELETE等语句。数据查询语言(DQL)如:SELECT等。数据控制语言(DCL)如:GRANT、REVOKE等语句。SQL标准:SQL-ANSI(即美国国家标准)年月SQL-ANSI年SQL-ANSI年即SQLSQL-ANSI年即SQLSQL:、SQL:、SQL:SQLServer的SQL扩展叫TSQL其遵循ANSI制定的SQL标准。Oracle的SQL扩展叫PLSQL其遵循ANSI制定的SQL标准。MySQL同样也遵循ANSI制定的SQL标准。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQL、数据库表的结构(数据字典)《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLHelloWorld、学生表TBLSTUDENT列名类型长度描述是否主键snumnumber学号snamevarchar姓名agenumber年龄sexchar性别(:男女)、课程表TBLCOURSE列名类型长度描述是否主键cnumnumber课程号cnamevarchar课程名、成绩表TBLGRADE列名类型长度描述是否主键snumnumber学号cnumnumber课程号scorenumber成绩、使用SQL创建数据库表学生表createtableTBLSTUDENT(SNUMNUMBERnot,SNAMEVARCHAR(),AGENUMBER,SEXCHAR(),constraintPKSTUDENTprimarykey(SNUM))课程表createtableTBLCOURSE(CNUMNUMBERnot,CNAMEVARCHAR(),constraintPKCOURSEprimarykey(CNUM))成绩表createtableTBLGRADE(SNUMNUMBERnot,CNUMNUMBERnot,SCORENUMBER,constraintPKGRADEprimarykey(SNUM,CNUM))《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLHelloWorld在Oracle中SQL语句不区分大小写、CURD(增删改查)新增insertintoTBLSTUDENT(Snum,Sname,AGE,SEX)values(,'zhang',,'')Commit修改updateTBLSTUDENTsetAGE=whereSNUM=Commit删除deletefromTBLSTUDENTwheresnum=Commit查询全部select*fromTBLSTUDENT按条件查询select*fromTBLSTUDENTwheresnum=《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLHelloWorld、字符类型•CHAR:一个定长字符串当位数不足自动用空格填充来达到其最大长度。如非的CHAR()总是包含字节信息。CHAR字段最多可以存储,字节的信息。•VARCHAR:目前这也是VARCHAR的同义词。这是一个变长字符串与CHAR类型不同它不会用空格填充至最大长度。VARCHAR()可能包含~字节的信息。VARCHAR最多可以存储,字节的信息。CHAR和VARCHAR的比较CHAR()“A“实际在数据库中存储为"A““ABCDE”超长报错VARCHAR()“A”存储的还是“A”“ABCDE”超长报错汉字:每个汉字占多少字节要看具体的编码方式如(字节)、GB(字节)、GBK(字节)、GB(、、字节)《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQL数据类型、数字类型•NUMBER:该数据类型能存储精度最多达位的数字。每个数存储在一个变长字段中其长度在~字节之间。Oracle的NUMBER类型精度很高远远高于许多编程语言中常规的FLOAT和DOUBLE类型。NUMBER(p,s)p表示精度(总长度)s表示小数位置且四舍五入NUMBER(,)是总长度是小数位数的长度:将存储为:精度超长了是总长度是小数位整数位为=位NUMBER()==NUMBER(,)javalangIntegerNUMBER()==NUMBER(,)javalangLong《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQL数据类型、日期类型•DATE:一个字节的定宽日期时间数据类型。其中总包含个属性包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。•TIMESTAMP:一个字节或字节的定宽日期时间数据类型。它与DATE数据类型不同因为TIMESTAMP可以包含小数秒(fractionalsecond)带小数秒的TIMESTAMP在小数点右边最多可以保留位。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQL数据类型、二进制及大文本数据•BLOB:(binarylargeobject)在Oraclei及以前的版本中这种数据类型允许存储最多GB的数据在Oracleg及以后的版本中允许存储最多(GB)(数据库块大小)字节的数据。BLOB包含不需要进行字符集转换的“二进制“数据如果要存储电子表格、字处理文档、图像文件等就很适合采用•CLOB:(CharacterLargeObject)在Oraclei及以前的版本中这种数据类型允许存储最多GB的数据在Oracleg及以后的版本中允许存储最多(GB)(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQL数据类型是什么:数据库模式定义语言DDL(DataDefinitionLanguage)是用于描述数据库中要存储的现实世界实体的语言。能干什么:创建删除修改表、索引……有什么:(不同数据库DDL可能不一样需要参考各个数据库的SQL手册)CREATETABLE创建表(主键、外键、约束、级联)DROPTABLE删除表ALTERTABLE修改表CREATEVIEW创建视图DROPVIEW删除视图CREATEINDEX创建索引DROPINDEX删除索引CREATESEQUENCE创建序列……《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL、创建表语法createtable表名(字段名类型notdefault默认值,字段名类型not,constraintpk表名primarykey(主键名),constraintunique表名字段名unique(字段名),constraintcheck表名字段名check(表达式),constraintcheck表名字段名check(表达式),constraintfk表名参照表名foreignkey(当前表外键名)references参照表(参照表主键名)ondeletecascade|noaction|set)《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL表、关系数据结构字段名不允许是Oracle关键字类型Oracle数据类型not不允许为默认允许default默认值指定默认值不知道默认就是、关系约束(可选)constraintpk表名primarykey(字段名):指定主键字段constraintunique表名字段名unique(字段名):唯一约束即该列不允许重复constraintcheck表名字段名check(表达式):检查约束如(age<)constraintfk表名参照表名foreignkey(当前表外键名)references参照表(参照表主键名)ondeletecascade|noaction|set:指定关联关系《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL表、修改表、重命名表altertable表名renameto新表名、新增一列altertable表名add(字段名类型notdefault默认值,字段名类型notdefault默认值,……)、重命名一列altertable表名renamecolumn原来字段名to新字段名、修改一列altertable表名modify(字段名新类型notdefault默认值,字段名新类型notdefault默认值,……)、删除一列altertable表名dropcolumn字段名《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL表、创建视图、语法createview视图名as查询、为什么使用视图?《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL视图、视图的本质是一条SQL语句它只是一个门面。、重用SQL语句。、保护数据。可以只给外界看部分数据。、转换数据视图可以返回与底层表完全不同的字段名和数据类型。、创建索引、索引用来干什么?用来排序数据以加快搜索和排序的速度。避免全表扫描减少磁盘IO次数、Oracle索引分类B树索引和位图索引、B树索引原理《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL索引注意:在B树中我们能进行范围查找、前缀查找。进行如!=查找、not查找、后缀查找将不会利用到索引。、创建索引语法创建索引的标准语法CREATEINDEX索引名ON表名(字段名)创建唯一索引CREATEuniqueINDEX索引名ON表名(字段名)创建组合索引CREATEINDEX索引名ON表名(字段名,字段名)创建反向索引CREATEINDEX索引名ON表名(字段名)reverse《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL索引、使用索引时注意事项:索引能改善查询性能但同时也降低了插入、删除和修改的性能因为执行这些操作需要更新索引。不要所有列都建索引那些经常查询的数据应该建立索引。可以索引多个列如(性别姓名)但根据之前介绍的只有在前缀查找时才能利用索引因此如果您执行(select*fromtblwhere姓名=‘aaa’)将无法利用索引而(select*fromtblwhere性别=‘’)将能利用索引如果在索引列上使用函数也无法利用索引如(select*fromtblwhereupper(姓名=‘AAA’)也无法利用索引。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL索引、创建序列序列号生成器可以为表中的行自动生成序列号产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值可以在插入语句中引用也可以通过查询检查当前值或使序列增至下一个值。一般用于生成流水号、如用户编号、订单流水号等等、创建序列CREATESEQUENCE序列名INCREMENTBYnSTARTWITHn、删除序列DROPSEQUENCE序列名《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDDL序列DML是什么:DataManipulationLanguage数据操纵语言命令使用户能够操作已有数据库中的数据的计算机语言。DML能干什么:增删改DML有什么:不同数据库DML可能不一样需要参考各个数据库的SQL手册但一般具有如下语句insert新增update修改delete删除《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDMLInsert(新增数据)语法insertinto表名(列名(,列名)*)*values(值(,值)*)、新增整行insertinto表名values(值(,值)*)insertintoTBLSTUDENTvalues(,’name’,,’’)注:所有值必须和列定义位置一一对应、新增行的一部分insertinto表名(列名(,列名)*)*values(值(,值)*)insertintoTBLSTUDENT(snum,sname,age)values(,’name’,)、新增某些查询的结果insertinto新表名(查询)insertintoTBLSTUDENT(select*fromTBLSTUDENT)、从一个表复制到另一个表createtabletblstudentasselect*fromtblstudent《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDMLinsertUpdate(更新数据)语法:Update表名set列名=值(,列名=值)*(where条件)*、更新表中特定行updatetblstudentsetage=,sex=‘’wheresnum=、更新表中所有行:初始化时可能用用Updatetblstudentsetage=,sex=‘’《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDMLupdateDelete(删除数据)语法:Deletefrom表名(where条件)*、从表中删除特定行数据Deletefromtblstudentwheresnum=、从表中删除所有行Deletefromtblstudent、截断更快的从表中删除所有行不保留日志、不能回滚、快TruncatetableTBLStudent《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDMLdelete是什么:DataQueryLanguage数据查询语言能干什么:数据检索有什么:SELECT查询字段FROM表WHERE查询条件GROUPBY分组字段HAVING分组条件ORDERBY排序字段ASC|DESCASC升序默认DESC降序《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL一、最简单查询、检索单列selectsnumfromtblstudent、检索多列selectsnum,snamefromtblstudent、检索所有列select*fromtblstudent《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL二、排序检索数据、按单列排序(查询所有学生按学号降序排序)select*fromtblstudentorderbysnumdesc、按多列排序(查询所有学生首先按年龄升序排序然后再按性别降序排序)select*fromtblstudentorderbyage,sexdesc注:多列排序时是先按第一个字段排序排好后再按照第二个字段对已排好序的记录再排序。uuidname《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQLorderbyuuiduuidnameorderbyuuidnameuuidname三、基本数据过滤、检索年龄小于的学生Select*fromtblstudentwhereage<、检索年龄不等于的学生Select*fromtblstudentwhereage!=《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL比较运算符:=、<、<=、>、>=、!=、^=、<>算数运算符:、、*、、范围:betweenand、notbetweenand逻辑运算符:and、or、not字符串匹配运算符:like、notlike字符串连接运算符:||空运算符:is、isnot包含运算符:in、notinexists、notexists集合操作符:union、unionall、intersect、minusOracle运算符三、基本数据过滤、检索及格的学生且小于等于分的Select*fromtblgradewherescore>=andscore<=Select*fromtblgradewherescorebetweenand(检索包括开始和结束)、检索没填性别的所有学生无值不是或空字符串’’而是Select*fromtblstudentwheresexis四、高级数据过滤、notandor检索及格的学生且小于分的Select*fromtblgradewherescore>=andscore<检索不及格的或缺考的Select*fromtblgradewherescore<orscoreis检索及格的Select*fromtblgradewherenot(score<orscoreis)《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、notandor优先级顺序(从高到低)notandor混用时最好加括号()、in运算符查询学号为或的学生信息Select*fromtblstudentwheresnum=orsnum=Select*fromtblstudentwheresnumin(,)《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL五、用通配符进行过滤LIKE操作符用于模糊匹配可使用的通配符如下::个或多个字符:一个字符。、通配符(匹配个或多个)(查询姓张的所有学生)Select*fromtblstudentwheresnamelike‘张’、通配符(查询姓名中包含a的所有学生)Select*fromtblstudentwheresnamelike‘a’、通配符(查询姓张的且姓名是两个字符的的所有学生)Select*fromtblstudentwheresnamelike‘张’《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL六、创建计算字段计算字段:或计算临时字段如在查询学生时需要查询学生的总成绩、平均成绩这些而外的数据需要有个字段来存放这个字段就是计算字段、拼接字段使用||连接字符串检索所有学生学生学号和姓名放一列显示selectsnum||''||sname,age,sexfromtblstudent、使用别名selectsnum||''||snameassname,age,sexfromtblstudent《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、算数运算*对检索出的所有学生年龄加selectsnum,agefromtblstudent七、数据处理函数虚拟表(哑表)DUAL(用于计算表达式用返回一行一列)、字符及字符串处理函数《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、CHR(intValue)返回等价数值的字符ASCII(charater)返回等价字符的数值、LENGTH(str)字符串长度、CONCAT(str,str)字符串连接、INITCAP(str)返回字符串的每个单词的第一个字母大写而其他字母小写。、LOWER(str)把字符串str转换为小写UPPER(str)把字符串str转换为小写、LTRIM(str,trimCharater)从str左边开始去掉出现在trimCharater的中任何前导字符集。、RTRIM(str,trimCharater)从str右边边开始去掉出现在trimCharater的中任何前导字符集。《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、LPAD(str,length,padStr)在字符串str左边添加字符串padStr直到str字符串的长度等于length、RPAD(str,length,padStr)在字符串str右边添加字符串padStr直到str字符串的长度等于length、SUBSTR(str,fromIndex,length)返回字符串str中从fromIndex位置开始的length个字符、INSTR(str,searchStr,fromIndex,count)在str中从位置fromIndex开始查找searchStr在str中出第count次的位置fromIndex可以为负(此时从str的尾部开始)。、tonumber(str)将str转换为数字、字符串处理函数、数字处理函数、ABS(x)x的绝对值、CEIL(x)大于或等于x的最小整数值FLOOR(x)小于或等于x的最大整数值、MOD(x,y)求余返回x除以y的余数。、POWER(x,y)计算x的y次幂、ROUND(x,y)计算保留到小数点右边y位的x值。会四舍五入、TRUNC(x,y)计算保留到小数点右边y位的x值。会四舍五入、LOG(x,y)、SIN(x)、COS(x)、TAN(x)、EXP(x)、LN(x)……、日期处理函数《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、当前系统时间selectsysdatefromdual、tochar(date,fmt)日期date按fmt指定的格式格式化后的字符串、todate(str,fmt)字符串str按fmt指定的格式格式化后的日期格式字符串如下:d:一周中的星期几dd:月中的第几天ddd:年中的第几天yyyy:四位年份yyy,yy,y:年份的最后三位两位一位hh:小时按小时计hh:小时按小时计mi:分ss:秒mm:月w:该月的第几个星期ww:年中的第几个星期更多函数请参考OracleSQL手册八、汇总数据、聚集函数、统计一共有多少学生selectcount(*)fromtblstudent注:count(*)所有记录count(score)score列所有不为的数量、统计学生的总成绩、平均成绩、最高分、最低分selectsum(score),avg(score),max(score),min(score)fromtblgrade注:聚集函数忽略值即值不参与运算单用:没分组部分默认全部记录是一组如果没有记录:count返回其他聚合函数返回《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、avg(列名)返回某列的平均值、count(列名)返回某列的行数、max(列名)返回某列的最大值、min(列名)返回某列的最小值、sum(列名)返回某列值的总和、统计某行不同值的数量(去除重复行)查询学生的年龄要求不重复selectdistinctagefromstudent统计不同年龄的数量selectcount(distinctage)fromstudent九、分组数据、统计每个学生的总分、平均分、最高分、最低分selectsnum,sum(score),avg(score),max(score),min(score)fromtblgradegroupbysnum、多分组字段类似于排序先按第一个分组再对已分好的组按第二个字段分组统计不同年龄、不同性别的人数selectage,sex,count(*)fromtblstudentgroupbyage,sex《深入浅出学Oracle》系列精品教程真正高质量培训签订就业协议网址:http:wwwjavasscn咨询QQ:SQLDQL、过滤分组WHERE是过滤字段而无法对分组进行过滤如过滤掉最低分小于的学生WHERE无法做到需要使用having来完成过滤掉最低分小于的学生selectsnum,sum(score),avg(score),max(score),min(score)fromtblgradegroupbysnumhavingmin(score)>=检索至少学过两门课的学生selectsnumfromtblgradegroupbysnumhavingcount(*)>=、分组和排序按照学

职业精品

废旧物资处置管理办法.docx

学校固定资产管理制度.doc

机械合同范本.doc

显示屏广告发布合同范本.doc

用户评论

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

精彩专题

相关资料换一换

资料评价:

/ 97
所需积分:1 立即下载

意见
反馈

返回
顶部