




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院第1章 安装1 1.1 ORACLE.1 ORACLE数据库安装数据库安装1.2 P1.2 PL/SQLL/SQL工具安装工具安装, ,默认下一步即可默认下一步即可. .1 1.3 .3 配置本机配置本机tnsname.oratnsname.ora文件文件1 1.4 .4 测试测试tnsname.oratnsname.ora配置是否正确配置是否正确1.5 PL/SQL1.5 PL/SQL登录登录中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院第2章 SQL基础2.1 数据库查
2、询语言数据库查询语言SQL2.2 基本查询和排序基本查询和排序2.3 条件查询条件查询 2.4 函数函数 2.5 高级查询高级查询2.6 阶段训练阶段训练2.7 练习练习中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2.1 数据库查询语言SQL2.1.1 SQL语言的特点和分类语言的特点和分类SQL语言有以下的主要特点:语言有以下的主要特点:* SQL语言可以在语言可以在Oracle数据库中创建、存储、更新、检索数据库中创建、存储、更新、检索和维护数据,其中主要的功能是实现数据的查询和数据的插入、和维护数据,其中主要的功能是实现数据的查询和数据的插入、删除
3、、修改等操作。删除、修改等操作。* SQL语言在书写上类似于英文,简洁清晰,易于理解。它语言在书写上类似于英文,简洁清晰,易于理解。它由关键字、表名、字段名,表达式等部分构成。由关键字、表名、字段名,表达式等部分构成。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院* SQL语言属于非过程化的语言属于非过程化的4GL(第四代语言第四代语言)。* SQL语言按功能可分为语言按功能可分为DDL语言、语言、DML语言、语言、DCL语言语言和数据库事务处理语言四个类别。和数据库事务处理语言四个类别。* SQL语言的主要关键字有:语言的主要关键字有:ALTER、DRO
4、P、REVOKE、AUDIT、GRANT、ROLLBACK、COMMIT、INSERT、SELECT、COMMENT、LOCK、UPDATE、CREATE、NOAUDIT、VALIDATE、DELETE、RENAME等。等。按照按照SQL语言的不同功用,可以进一步对语言的不同功用,可以进一步对SQL语言进行语言进行划分。下表给出了划分。下表给出了SQL语言的分类和功能简介。语言的分类和功能简介。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-1 SQL语言的分类类 别 功 能 举 例 数据库控制 语言(DCL) 控 制 对 数据 库 的访 问 , 启动
5、 和 关 闭 等 对系统权限进行授权和回收的 G RANT、REVOKE等 语 句 数据库定义 语言(DDL) 用 来 创 建、 删 除及 修 改 数据 库 对 象 创建表和索引的 CREA TE TABLE、ALTER INDEX等 语 句 数据库操纵 语言(DM L) 用 来 操 纵数 据 库的 内 容 ,包 括 查 询 查 询 、 插 入 、 删 除 、 修 改 和 锁 定 操 作 的SELECT、 INSER T、 UPDA TE、 DELETE、 LOCK TABLE 等语 句 数 据 库 事 务 处 理 实 现 对 数据 的 交易 过 程 的完 整 控 制 与数据库事物处理相关的
6、COM M IT、 ROLLBACK、 SA VEPOINT、 SET TRANSACTION等 语 句 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2.1.2 SQL的基本语法的基本语法SQL语言的语法比较简单,类似于书写英文的语句。其语句语言的语法比较简单,类似于书写英文的语句。其语句一般由主句和若干个从句组成,主句和从句都由关键字引导。一般由主句和若干个从句组成,主句和从句都由关键字引导。主句表示该语句的主要功能,从句表示一些条件或限定,有些主句表示该语句的主要功能,从句表示一些条件或限定,有些从句是可以省略的。在语句中会引用到列名、表名或表达式。
7、从句是可以省略的。在语句中会引用到列名、表名或表达式。另外还有如下一些说明:另外还有如下一些说明:* 关键字、字段名、表名等之间都要用空格或逗号等进行必关键字、字段名、表名等之间都要用空格或逗号等进行必要的分隔。要的分隔。* 语句的大小写不敏感语句的大小写不敏感(查询的内容除外查询的内容除外)。* 语句可以写在一行或多行。语句可以写在一行或多行。* 语句中的关键字不能略写和分开写在两行。语句中的关键字不能略写和分开写在两行。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院* 要在每条要在每条SQL语句的结束处添加语句的结束处添加“;”号。号。* 为了提高可
8、读性,可以使用缩进。为了提高可读性,可以使用缩进。* 从句一般写在另一行的开始处。从句一般写在另一行的开始处。查询语句是最常见的查询语句是最常见的SQL语句,它从给定的表中,把满语句,它从给定的表中,把满足条件的内容检索出来。以下是最基本的足条件的内容检索出来。以下是最基本的SELECT语句语法。语句语法。SELECT 字段名列表字段名列表 FROM 表名表名 WHERE 条件条件;SELECT为查询语句的关键字,后跟要查询的字段名列为查询语句的关键字,后跟要查询的字段名列表,字段名列表用来指定检索特定的字段,该关键字不能表,字段名列表用来指定检索特定的字段,该关键字不能省略。省略。中国电信广
9、东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院字段名列表代表要查询的字段。字段名列表代表要查询的字段。FROM 也是查询语句关键字,后面跟要查询的表名,该也是查询语句关键字,后面跟要查询的表名,该关键字不能省略。关键字不能省略。WHERE条件限定检索特定的记录,满足条件限定检索特定的记录,满足“条件条件”的记的记录被显示出来,不满足条件的被过滤掉。录被显示出来,不满足条件的被过滤掉。语句查询的结果往往是表的一部分行和列。如果字段语句查询的结果往往是表的一部分行和列。如果字段名列表使用名列表使用*,将检索全部的字段。如果省略,将检索全部的字段。如果省略WHERE条件,
10、条件,将检索全部的记录。将检索全部的记录。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练1】 查询部门查询部门10的雇员。的雇员。输入并执行查询:输入并执行查询:SELECT * FROM emp WHERE deptno=10;结果略。结果略。 说明:该查询语句从说明:该查询语句从emp表中检索出部门表中检索出部门10 的雇员,的雇员,条件由条件由WHERE deptno=10 子句指定。子句指定。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2.2 基本查询和排序2.2.1 查询的基本用法查询的基本用法在
11、在Oracle数据库中,对象是属于模式的,每个账户对应一个数据库中,对象是属于模式的,每个账户对应一个模式,模式的名称就是账户名称。在表名前面要添加模式的名模式,模式的名称就是账户名称。在表名前面要添加模式的名字,在表的模式名和表名之间用字,在表的模式名和表名之间用“.”分隔。我们以不同的账户分隔。我们以不同的账户登录数据库时,就进入了不同的模式,比如登录到登录数据库时,就进入了不同的模式,比如登录到STUDENT 账账户,就进入了户,就进入了STUDENT模式。而在模式。而在STUDENT模式要查询属于模式要查询属于SCOTT模式的表,就需要写成:模式的表,就需要写成:SELECT * FR
12、OM SCOTT.EMP;中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院但如果登录用户访问属于用户模式本身的表,那么可但如果登录用户访问属于用户模式本身的表,那么可以省略表名前面的模式名称。以省略表名前面的模式名称。SELECT * FROM emp;1指定检索字段指定检索字段下面的练习,只显示表的指定字段。下面的练习,只显示表的指定字段。【训练训练1】 显示显示DEPT表的指定字段的查询。表的指定字段的查询。输入并执行查询:输入并执行查询:SELECT deptno,dname FROM dept;中国电信广东公司中国电信广东公司综合部综合部广东省电信规
13、划设计院广东省电信规划设计院显示结果如下:显示结果如下: DEPTNO DNAME- - 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 说明:结果只包含说明:结果只包含2列列deptno和和dname。在语句中给出要显。在语句中给出要显示的列名,列名之间用示的列名,列名之间用“,”分隔。表头的显示默认为全部大分隔。表头的显示默认为全部大写。对于日期和数值型数据,右对齐显示,如写。对于日期和数值型数据,右对齐显示,如deptno列。对于字列。对于字符型数据,左对齐显示,如符型数据,左对齐显示,如dname列。列。中国电信广东公司中国电信广东公司
14、综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习1】显示显示emp表的雇员名称和工资。表的雇员名称和工资。2显示行号显示行号每个表都有一个虚列每个表都有一个虚列ROWNUM,它用来显示结果中记,它用来显示结果中记录的行号。我们在查询中也可以显示这个列。录的行号。我们在查询中也可以显示这个列。【训练训练2】 显示显示EMP表的行号。表的行号。输入并执行查询:输入并执行查询:SELECT rownum,ename FROM emp;中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院结果如下:结果如下: ROWNUM ENAME- - 1 SMITH
15、2 ALLEN 3 WARD 4 JONES 注意:显示的行号是查询结果的行号,数据在数据库注意:显示的行号是查询结果的行号,数据在数据库中是没有行号的。中是没有行号的。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院3显示计算列显示计算列在查询语句中可以有算术表达式,它将形成一个新列,在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次含列名、算术运算符和括号。括号用来改变运算的优先次序。常用的算术运算符包括:序
16、。常用的算术运算符包括:* +:加法运算符。:加法运算符。* -:减法运算符。:减法运算符。* *:乘法运算符。:乘法运算符。* /:除法运算符。:除法运算符。以下训练在查询中使用了计算列。以下训练在查询中使用了计算列。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练3】 显示雇员工资上浮显示雇员工资上浮20%的结果。的结果。输入并执行查询输入并执行查询:SELECT ename,sal,sal*(1+20/100) FROM emp;显示结果为:显示结果为:ENAME SAL SAL*(1+20/100)- - -SMITH 800 960ALL
17、EN 1600 1920说明:结果中共显示了说明:结果中共显示了3列,第列,第3列显示工资上浮列显示工资上浮20%的结果,的结果,它不是表中存在的列,而是计算产生的结果,称为计算列。它不是表中存在的列,而是计算产生的结果,称为计算列。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习2】显示显示EMP表的雇员名称以及工资和津贴的和。表的雇员名称以及工资和津贴的和。 4使用别名使用别名我们可以为表的列起一个别名,它的好处是,可以改变表头的我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计显示
18、。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。算表达式在表头的显示。【训练训练4】 在查询中使用列别名。在查询中使用列别名。输入并执行:输入并执行:SELECT ename AS 名称名称, sal 工资工资 FROM emp;显示结果为:显示结果为:名称名称 工资工资- -SMITH 800ALLEN 1600中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:表头显示的是列别名,转换为汉字显示。在列说明:表头显示的是列别名,转换为汉字显示。在列名和别名之间要用名和别名之间要用AS分隔,如分隔,如ename和它的别名和它的别
19、名“名称名称”之间用之间用AS隔开。隔开。AS也可以省略,如也可以省略,如sal和它的别名和它的别名“工资工资”之间用空格分割。之间用空格分割。注意:如果用空格分割,要区别好列名和别名,前面注意:如果用空格分割,要区别好列名和别名,前面为列名,后面是别名。为列名,后面是别名。别名如果含有空格或特殊字符或大小写敏感,需要使别名如果含有空格或特殊字符或大小写敏感,需要使用双引号将它引起来。用双引号将它引起来。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练5】 在列别名上使用双引号。在列别名上使用双引号。输入并执行查询:输入并执行查询:SELECT
20、ename AS Name, sal*12+5000 AS 年度工资年度工资(加加年终奖年终奖) FROM emp;显示结果为:显示结果为:Name 年度工资年度工资(加年终奖加年终奖)- -SMITH 14600ALLEN 24200 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:其中别名说明:其中别名“Name”有大小写的区别,别名有大小写的区别,别名“年年度工资度工资(加年终奖加年终奖) ”中出现括号,属于特殊符号,所以都需中出现括号,属于特殊符号,所以都需要使用双引号将别名引起。要使用双引号将别名引起。【练习练习3】显示显示DEPT表的内容,
21、使用别名将表头转换成表的内容,使用别名将表头转换成中文显示。中文显示。5连接运算符连接运算符在前面,我们使用到了包含数值运算的计算列,显示在前面,我们使用到了包含数值运算的计算列,显示结果也是数值型的。我们也可以使用字符型的计算列,方结果也是数值型的。我们也可以使用字符型的计算列,方法是在查询中使用连接运算。连接运算符是双竖线法是在查询中使用连接运算。连接运算符是双竖线“|”。通过连接运算可以将两个字符串连接在一起。通过连接运算可以将两个字符串连接在一起。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练6】 在查询中使用连接运算。在查询中使用连接
22、运算。输入并执行查询:输入并执行查询:SELECT ename|job AS 雇员和职务表雇员和职务表 FROM emp;输出结果为:输出结果为:雇员和职务表雇员和职务表-SMITHCLERKALLENSALESMAN中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:在本例中,雇员名称和职务列被连接成为一个说明:在本例中,雇员名称和职务列被连接成为一个列显示。列显示。在查询中可以使用字符和日期的常量,表示固定的字在查询中可以使用字符和日期的常量,表示固定的字符串或固定日期。字符和日期的常量需要用单引号引起。符串或固定日期。字符和日期的常量需要用单引号引起
23、。下一个训练是作为上一个训练的改进。下一个训练是作为上一个训练的改进。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练7】 在查询中使用字符串常量。在查询中使用字符串常量。输入并执行查询:输入并执行查询:SELECTename| IS |job AS 雇员和职务表雇员和职务表 FROM emp;输出结果为:输出结果为:雇员和职务表雇员和职务表-SMITH IS CLERKALLEN IS SALESMAN说明:本练习中将雇员名称、字符串常量说明:本练习中将雇员名称、字符串常量“ IS ”和雇员和雇员职务职务3个部分连接在一起。个部分连接在一起。
24、中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习4】显示显示DEPT表的内容,按以下的形式表的内容,按以下的形式: 部门部门ACCOUNTING所在的城市为所在的城市为NEW YORK 6消除重复行消除重复行如果在显示结果中存在重复行,可以使用的关键字如果在显示结果中存在重复行,可以使用的关键字DISTINCT消除重复显示。消除重复显示。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练8】 使用使用DISTINCT消除重复行显示。消除重复行显示。输入并执行查询:输入并执行查询:SELECT DISTIN
25、CT job FROM emp;结果为:结果为:JOB-ANALYSTCLERKMANAGERPRESIDENTSALESMAN中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:在本例中,如果不使用说明:在本例中,如果不使用DISTINCT关键字,将重复显示关键字,将重复显示雇员职务,雇员职务,DISTINCT关键字要紧跟在关键字要紧跟在SELECT之后。请去掉之后。请去掉DISTINCT关键字,重新执行,并观察显示结果的不同。关键字,重新执行,并观察显示结果的不同。【练习练习5】显示显示EMP表中不同的部门编号。表中不同的部门编号。2.2.2 查询结果
26、的排序查询结果的排序如果要在查询的同时排序显示结果,可以使用如下的语句:如果要在查询的同时排序显示结果,可以使用如下的语句:SELECT 字段列表字段列表 FROM 表名表名 WHERE 条件条件ORDER BY 字段名字段名1 ASC|DESC,字段名字段名2 ASC|DESC.;中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院ORDER BY从句后跟要排序的列。从句后跟要排序的列。ORDER BY 从句出现在从句出现在SELECT语句的最后。语句的最后。排序有升序和降序之分,排序有升序和降序之分,ASC表示升序排序,表示升序排序,DESC表示表示降序排序
27、。如果不指明排序顺序,默认的排序顺序为升序。降序排序。如果不指明排序顺序,默认的排序顺序为升序。如果要降序,必须书写如果要降序,必须书写DESC关键字。关键字。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院1升序排序升序排序 【训练训练1】 查询雇员姓名和工资,并按工资从小到大排序。查询雇员姓名和工资,并按工资从小到大排序。输入并执行查询:输入并执行查询:SELECT ename, sal FROM emp ORDER BY sal;执行结果为:执行结果为:ENAME SAL- -SMITH 800JAMES 950注意:若省略注意:若省略ASC和和DES
28、C,则默认为,则默认为ASC,即升序排序。,即升序排序。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2降序排序降序排序 【训练训练2】 查询雇员姓名和雇佣日期,并按雇佣日期查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。排序,后雇佣的先显示。输入并执行查询:输入并执行查询:SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;结果如下:结果如下:ENAME HIREDATE- -ADAMS 23-5月月 -87SCOTT 19-4月月 -87中国电信广东公司中国电信广东公司综合部综合部广东省
29、电信规划设计院广东省电信规划设计院MILLER 23-1月月 -82JAMES 03-12月月-81FORD 03-12月月-81注意:注意: DESC表示降序排序,不能省略。表示降序排序,不能省略。 3多列排序多列排序可以按多列进行排序,先按第一列,然后按第二列、第三可以按多列进行排序,先按第一列,然后按第二列、第三列列.。 【训练训练3】 查询雇员信息,先按部门从小到大排序,再按查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。雇佣时间的先后排序。输入并执行查询:输入并执行查询:SELECT ename,deptno,hiredate FROM emp ORDER BY dept
30、no,hiredate;中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院结果如下:结果如下:ENAME DEPTNO HIREDATE- - -CLARK 10 09-6月月 -81KING 10 17-11月月-81MILLER 10 23-1月月 -82SMITH 20 17-12月月-80JONES 20 02-4月月 -81FORD 20 03-12月月-81SCOTT 20 19-4月月 -87说明:该排序是先按部门升序排序,部门相同的情况说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。下,再按雇佣时间升序排序。中国电信广东
31、公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院4在排序中使用别名在排序中使用别名如果要对计算列排序,可以为计算列指定别名,然后如果要对计算列排序,可以为计算列指定别名,然后按别名排序。按别名排序。 【训练训练4】 按工资和工作月份的乘积排序。按工资和工作月份的乘积排序。输入并执行查询:输入并执行查询:S E L E C T e m p n o , e n a m e , sal*Months_between(sysdate,hiredate) AS total FROM emp ORDER BY total;中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设
32、计院广东省电信规划设计院执行结果为:执行结果为: EMPNO ENAME TOTAL- - - 7876ADAMS 221526.006 7369 SMITH 222864.661 7900 JAMES 253680.817 7654 MARTIN 336532.484说明:求得雇员工作月份的函数说明:求得雇员工作月份的函数Months_between将在将在后面介绍。后面介绍。sysdate表示当前日期。表示当前日期。【练习练习1】将部门表中的部门名称按字母顺序显示。将部门表中的部门名称按字母顺序显示。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2.
33、3 条件查询 2.3.1 简单条件查询简单条件查询要对显示的行进行限定,可在要对显示的行进行限定,可在FROM从句后使用从句后使用WHERE从从句,在句,在WHERE从句中给出限定的条件,因为限定条件是一个表从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件表达式中可以包含比较运算,达式,所以称为条件表达式。条件表达式中可以包含比较运算,表达式的值为真的记录将被显示。常用的比较运算符列于表表达式的值为真的记录将被显示。常用的比较运算符列于表2-2中。中。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-2 比 较 运 算 符运算符
34、功 能 实 例 ,2000 =.=2000 = 等于 Select * from emp where deptno=10 !=,= 不等于 Select * from emp where deptno!=10 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练1】 显示职务为显示职务为“SALESMAN”的雇员的姓名、的雇员的姓名、职务和工资。职务和工资。输入并执行查询:输入并执行查询:SELECT ename,job,sal FROM emp WHERE job=SALESMAN;执行结果为:执行结果为:ENAME JOB SAL- - -ALLE
35、N SALESMAN 1600WARD SALESMAN 1250MARTIN SALESMAN 1250TURNER SALESMAN 1500中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:结果只显示职务为说明:结果只显示职务为“SALESMAN”的雇员。字符的雇员。字符串和日期型数据的值是包含在单引号中的,如串和日期型数据的值是包含在单引号中的,如SALESMAN,需要用单引号引起。字符的值对大小写敏感,在需要用单引号引起。字符的值对大小写敏感,在emp表中表中存放的职务字符串全部是大写。存放的职务字符串全部是大写。注意:在本练习中,如果注意:在
36、本练习中,如果SALESMAN写成小写或大小写写成小写或大小写混合,将不会有查询结果输出。混合,将不会有查询结果输出。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练2】 显示工资大于等于显示工资大于等于3000的雇员姓名、职务和工资。的雇员姓名、职务和工资。输入并执行查询:输入并执行查询:SELECT ename, job,sal FROM emp WHERE sal=3000;执行结果为:执行结果为:ENAME JOB SAL- - -SCOTT ANALYST 3000KING PRESIDENT 5000FORD ANALYST 3000中
37、国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:结果只显示工资大于等于说明:结果只显示工资大于等于3000的雇员。的雇员。缺省中文日期格式为缺省中文日期格式为DD-MM月月-YY,如,如2003年年1月月10日应该表日应该表示为示为“10-1月月-03”。【训练训练3】 显示显示1982年以后雇佣的雇员姓名和雇佣时间。年以后雇佣的雇员姓名和雇佣时间。输入并执行查询:输入并执行查询:SELECT ename,hiredate FROM emp WHERE hiredate=1-1月月-82;执行结果为:执行结果为:ENAME HIREDATE- -中国电信
38、广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院SCOTT 19-4月月 -87ADAMS 23-5月月 -87MILLER 23-1月月 -82 说明:检查说明:检查hiredate字段的内容,都在字段的内容,都在82年以后。年以后。【练习练习1】显示部门编号为显示部门编号为10的雇员姓名和雇佣时间。的雇员姓名和雇佣时间。 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2.3.2 复合条件查询复合条件查询可以用逻辑运算符构成复合的条件查询,即把两个或可以用逻辑运算符构成复合的条件查询,即把两个或多个条件,用逻辑运算符连接成一个
39、条件。有多个条件,用逻辑运算符连接成一个条件。有3个逻辑运算个逻辑运算符,如表符,如表2-3所示。所示。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-3 逻辑运算符运算符 说 明 实 例 AND 逻辑与,表示两个条件必须同时满足 Select * from emp where sal1000 and sal1000 AND sal1000 AND sal1000 AND 2000。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习1】显示部门显示部门10中工资大于中工资大于1500的雇员。的雇员。2使用逻辑
40、或使用逻辑或下面是使用逻辑或运算的练习。下面是使用逻辑或运算的练习。【训练训练2】 显示职务为显示职务为CLERK或或MANAGER的雇员信息。的雇员信息。输入并执行查询:输入并执行查询:SELECT * FROM emp WHERE job=CLERK OR job=MANAGER;执行结果从略。执行结果从略。说明:检索职务为说明:检索职务为CLERK或或MANAGER的雇员,需要使用的雇员,需要使用OR运算,请自行察看结果。运算,请自行察看结果。注意:条件注意:条件job=CLERK OR job=MANAGER不能写成不能写成job=CLERK OR MANAGER。中国电信广东公司中国
41、电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院3使用逻辑非使用逻辑非下面是使用逻辑非运算的练习。下面是使用逻辑非运算的练习。【训练训练3】 显示部门显示部门10以外的其他部门的雇员。以外的其他部门的雇员。输入并执行查询:输入并执行查询:SELECT * FROM emp WHERE NOT deptno=10;执行结果从略。执行结果从略。说明:执行结果包含部门编号不等于说明:执行结果包含部门编号不等于10的其他部门的的其他部门的雇员,请自行察看结果。雇员,请自行察看结果。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院4使用逻辑或和逻辑与使
42、用逻辑或和逻辑与下面是同时使用逻辑或和逻辑与的复合练习。下面是同时使用逻辑或和逻辑与的复合练习。【训练训练4】 显示部门显示部门10和部门和部门20中工资小于中工资小于1500的雇的雇员。员。输入并执行查询输入并执行查询SELECT * FROM emp WHERE (deptno=10 OR deptno=20) AND sal=、 、等 Select * from emp Where sal=、等 Select*from emp Where sal0;执行结果为:执行结果为: EMPNO ENAME LENGTH(ENAME)- - - 7369 SMITH 5 7566 JONES 5中
43、国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练4】 显示雇员名称中包含显示雇员名称中包含“S”的雇员名称及名称长的雇员名称及名称长度。度。输入并执行查询:输入并执行查询:SELECT empno,ename,length(ename) FROM empWHERE instr(ename, S, 1, 1)0;执行结果为:执行结果为: EMPNO ENAME LENGTH(ENAME)- - - 7369 SMITH 5 7566 JONES 5中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:本例在字段列表和
44、查询条件中分别应用了函数说明:本例在字段列表和查询条件中分别应用了函数length和和instr。Length函数返回函数返回ename的长度。的长度。instr(ename,S1,1)函数返回函数返回ename中从第一个字符位置开始,中从第一个字符位置开始,字符串字符串“S”第一次出现的位置。如果函数返回第一次出现的位置。如果函数返回0,则说明,则说明ename中不包含字符串中不包含字符串“S”;如果函数返回值大于;如果函数返回值大于0,则说,则说明明ename中包含字符串中包含字符串“S”。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习1】显
45、示部门表中部门和所在城市列表,中间以显示部门表中部门和所在城市列表,中间以下划线下划线“_”连接,城市名转换成以大写字母开头。连接,城市名转换成以大写字母开头。2.4.3 日期型函数日期型函数Oracle使用内部数字格式来保存时间和日期,包括世纪、使用内部数字格式来保存时间和日期,包括世纪、年、月、日、小时、分、秒。缺省日期格式为年、月、日、小时、分、秒。缺省日期格式为 DD-MON-YY,如如“08-05月月-03”代表代表2003年年5月月8日。日。SYSDATE是返回系统日期和时间的虚列函数。是返回系统日期和时间的虚列函数。使用日期的加减运算,可以实现如下功能:使用日期的加减运算,可以实
46、现如下功能:* 对日期的值加减一个天数,得到新的日期。对日期的值加减一个天数,得到新的日期。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院* 对两个日期相减,得到相隔天数。对两个日期相减,得到相隔天数。* 通过加小时来增加天数,通过加小时来增加天数,24小时为一天,如小时为一天,如12小时可小时可以写成以写成12/24(或或0.5)。还有如表还有如表2-7所示的日期函数可以使用。所示的日期函数可以使用。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-7 日期函数函 数 功 能 实 例 结 果 months_betw
47、een 返回两个日期间的 月份 months_between (04-11月-05,11-1月-01) 57.7741935 add_months 返回把月份数加到日期上的新日期 add_months(06-2月-03,1) add_months(06-2月-03,-1) 06-3月-03 06-1月-03 next_day 返回指定日期后的星期对应的新日期 next_day(06-2月-03,星期一) 10-2月-03 last_day 返回指定日期所在的月的最后一天 last_day(06-2月-03) 28-2月-03 round 按指定格式对日期进行四舍五入 round(to_date
48、(13-2月-03),YEAR) round(to_date(13-2月-03),MONTH) round(to_date(13-2月-03),DAY) 01-1月-03 01-2月-03 16-2月-03 (按周四舍五入) trunc 对日期按指定方式进行截断 trunc(to_date(06-2月-03),YEAR) trunc(to_date(06-2月-03),MONTH) trunc(to_date(06-2月-03),DAY) 01-1月-03 01-2月-03 02-2月-03 (按周截断) 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训
49、练训练1】 返回系统的当前日期。返回系统的当前日期。输入并执行查询:输入并执行查询:SELECT sysdate FROM dual;返回结果为:返回结果为:SYSDATE -06-2月月-03说明:该查询返回执行该查询时的数据库服务器的系说明:该查询返回执行该查询时的数据库服务器的系统当前时间,日期显示格式为默认格式,如统当前时间,日期显示格式为默认格式,如“06-2月月-03”表表示示03年年2月月6日。日。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练2】 返回返回2003年年2月的最后一天。月的最后一天。输入并执行查询:输入并执行查询:S
50、ELECT last_day(08-2月月-03) FROM dual;返回结果为:返回结果为:LAST_DAY(-28-2月月-03说明:该函数给定参数为某月份的任意一天,返回时说明:该函数给定参数为某月份的任意一天,返回时间为该月份的最后一天。本例中,参数为间为该月份的最后一天。本例中,参数为03年年2月月8号,返号,返回日期为回日期为03年年2月月28日,是该月的最后一天。日,是该月的最后一天。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练3】 假定当前的系统日期是假定当前的系统日期是2003年年2月月6日,求日,求再过再过1000天的日期
51、。天的日期。输入并执行查询:输入并执行查询:SELECT sysdate+1000 AS NEW DATE FROM dual;返回结果为:返回结果为:NEW DATE-04-11月月-05 说明:该查询使用到了日期的加法运算,求经过一定说明:该查询使用到了日期的加法运算,求经过一定天数后的新日期。天数后的新日期。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练4】 假定当前的系统日期是假定当前的系统日期是2003年年2月月6日,显示部门日,显示部门10雇员的雇佣天数。雇员的雇佣天数。输入并执行查询:输入并执行查询:SELECT ename, ro
52、und(sysdate-hiredate) DAYSFROM empWHERE deptno = 10;返回结果为:返回结果为:ENAME DAYS- -CLARK 7913KING 7752MILLER 7685说明:该查询使用日期的减法运算求两个日期的相差天数。说明:该查询使用日期的减法运算求两个日期的相差天数。用用round函数对天数进行四舍五入。函数对天数进行四舍五入。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【练习练习1】显示雇员名称和雇佣的星期数。显示雇员名称和雇佣的星期数。【练习练习2】显示从本年显示从本年1月月1日开始到现在经过的天数日
53、开始到现在经过的天数(当前时间取当前时间取SYSDATE的值的值)。2.4.4 转换函数转换函数Oracle的类型转换分为自动类型转换和强制类型转换。的类型转换分为自动类型转换和强制类型转换。常用的类型转换函数有常用的类型转换函数有TO_CHAR、TO_DATE或或TO_NUMBER,如表如表2-8所示。所示。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-8 类型转换函数函 数 功 能 实 例 结 果 To_char 转换成字符串类型 To_char(1234.5, $9999.9) $1234.5 To_date 转换成日期类型 To_date(1
54、980-01-01, yyyy-mm-dd) 01-1月-80 To_number 转换成数值类型 To_number(1234.5) 1234.5 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院1自动类型转换自动类型转换Oracle可以自动根据具体情况进行如下的转换:可以自动根据具体情况进行如下的转换:* 字符串到数值。字符串到数值。* 字符串到日期。字符串到日期。* 数值到字符串。数值到字符串。* 日期到字符串。日期到字符串。以下是自动转换的训练。以下是自动转换的训练。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院
55、【训练训练1】 自动转换字符型数据到数值型。自动转换字符型数据到数值型。输入并执行查询:输入并执行查询:SELECT 12.5+11 FROM dual;执行结果为:执行结果为:12.5+11- 23.5说明:在本训练中,因为出现说明:在本训练中,因为出现+运算符,说明进行的是运算符,说明进行的是算术运算,所以字符串算术运算,所以字符串12.5被自动转换成数值被自动转换成数值12.5,然后,然后参加运算。参加运算。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练2】 自动转换数值型数据到字符型。自动转换数值型数据到字符型。执行以下查询:执行以下查询
56、:SELECT 12.5|11 FROM dual;结果为:结果为:12.5-12.511说明:在本训练中,因为出现说明:在本训练中,因为出现|运算符,说明进行的运算符,说明进行的是字符串连接运算,数值是字符串连接运算,数值11被自动转换成字符串被自动转换成字符串11,然后,然后参加运算。参加运算。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院2日期类型转换日期类型转换将日期型转换成字符串时,可以按新的格式显示。将日期型转换成字符串时,可以按新的格式显示。如格式如格式YYYY-MM-DD HH24:MI:SS表示表示“年年-月月-日日 小时小时:分钟分钟:
57、秒秒”。Oracle的日期类型是包含时间在内的。的日期类型是包含时间在内的。主要的日期格式字符的含义如表主要的日期格式字符的含义如表2-9所示。所示。中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-9 日期转换格式字符代 码 代表的格式 例 子 AM、PM 上午、下午 08 AM D 数字表示的星期(17) 1,2,3,4,5,6,7 DD 数字表示月中的日期(131) 1,2,3,31 MM 两位数的月份 01,02,12 Y、 YY、 YYY、 YYYY 年份的后几位 3,03,003,2003 RR 解决 Y2K 问题的年度转换 DY 简写的星期
58、名 MON,TUE,FRI, DAY 全拼的星期名 MONDAY,TUESDAY, 中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院表2-9 日期转换格式字符MON 简写的月份名 JAN,FEB,MAR, MONTH 全拼的月份名 JANUARY,FEBRUARY, HH、HH12 12小时制的小时(112) 1,2,3,12 HH24 24小时制的小时(023) 0,1,2,23 MI 分(059) 0,1,2,59 SS 秒(059) 0,1,2,59 ,./-;: 原样显示的标点符号 TEXT 引号中的文本原样显示 TEXT 中国电信广东公司中国电信广
59、东公司综合部综合部广东省电信规划设计院广东省电信规划设计院【训练训练3】 将日期转换成带时间和星期的字符串并显将日期转换成带时间和星期的字符串并显示。示。执行以下查询:执行以下查询:SELECT TO_CHAR(sysdate,YYYY-MM-DD HH24:MI:SS AM DY) FROM dual;结果为:结果为:TO_CHAR(SYSDATE,YYYY-MM-DD HH24-2004-02-07 15:44:48 下午下午 星期六星期六中国电信广东公司中国电信广东公司综合部综合部广东省电信规划设计院广东省电信规划设计院说明:该语句中的第一个参数表示要转换的日期,第二说明:该语句中的第一
60、个参数表示要转换的日期,第二个参数是格式字符串,表示转换后的格式,结果类型为字符个参数是格式字符串,表示转换后的格式,结果类型为字符串。串。“YYYY”为为4位的年份,位的年份,“MM”为两位的月份,为两位的月份,“DD”为为两位的日期,两位的日期,“HH24”表示显示表示显示24小时制的小时小时制的小时,“MI”表示显表示显示分钟,示分钟,“SS”表示显示秒,表示显示秒,“AM”表示显示上午或下午表示显示上午或下午(本本例中为下午例中为下午),“DY”表示显示星期。表示显示星期。“-”、“:”和空格原样和空格原样显示,用于分割日期和时间。转换出来的系统时间为:显示,用于分割日期和时间。转换出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版人力资源项目外包合同模板
- 人力资源服务合同正规格式指南2025
- 天然气购销标准合同
- 云南省昭通市昭阳区苏家院乡中学2024-2025学年初三年级下学期第二次月考试题含解析
- 铜仁学院《生物合成实验》2023-2024学年第二学期期末试卷
- 南阳工艺美术职业学院《急诊医学Ⅰ》2023-2024学年第二学期期末试卷
- 云南省临沧市达标名校2025届初三下学期期末学业质量监测生物试题理试题含解析
- 西安电子科技大学《行为医学》2023-2024学年第一学期期末试卷
- 内蒙古乌海市海南区2024-2025学年初三下学期第八次统练(一模)生物试题含解析
- 上海中医药大学《媒体展示策划》2023-2024学年第二学期期末试卷
- 第3节 第2课时 理想气体状态方程和气体实验定律的微观解释 教学课件
- 2024年大学生信息素养大赛(省赛)练习考试题库(含答案)
- 《中国心力衰竭诊断和治疗指南2024》解读
- 月考分析与总结 课件高二下学期家长会
- DL∕T 1245-2013 水轮机调节系统并网运行技术导则
- 八年级历史下册知识点归纳和专题复习【提纲】
- JJG(交通) 178-2022 拉脱式涂层黏结力测试仪检定规程
- 矿山托管经营合同范本
- GB/T 13305-2024不锈钢中α-相含量测定法
- 2024年高中英语衡水体书法练字字帖
- 工程项目质量风险源识别及管控措施
评论
0/150
提交评论