资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章 数据查询,ORACLE 9i,ORACLE 9i,第,2,章 数据查询,2.1,数据库查询语言,SQL,2.2,基本查询和排序,2.3,条件查询,2.4,函数,2.5,高级查询,2.6,阶段训练,2.7,练习,2.1,数据库查询语言,SQL,2.1.1 SQL,语言的特点和分类,SQL,语言有以下的主要特点:,*,SQL,语言可以在,Oracle,数据库中创建、存储、更新、检索和维护数据,其中主要的功能是实现数据的查询和数据的插入、删除、修改等操作。,*,SQL,语言在书写上类似于英文,简洁清晰,易于理解。它由关键字、表名、字段名,表达式等部分构成。,*,SQL,语言属于非过程化的,4GL(,第四代语言,),。,*,SQL,语言按功能可分为,DDL,语言、,DML,语言、,DCL,语言和数据库事务处理语言四个类别。,*,SQL,语言的主要关键字有:,ALTER,、,DROP,、,REVOKE,、,AUDIT,、,GRANT,、,ROLLBACK,、,COMMIT,、,INSERT,、,SELECT,、,COMMENT,、,LOCK,、,UPDATE,、,CREATE,、,NOAUDIT,、,VALIDATE,、,DELETE,、,RENAME,等。,按照,SQL,语言的不同功用,可以进一步对,SQL,语言进行划分。下表给出了,SQL,语言的分类和功能简介。,表,2-1 SQL,语言的分类,2.1.2 SQL,的基本语法,SQL,语言的语法比较简单,类似于书写英文的语句。其语句一般由主句和若干个从句组成,主句和从句都由关键字引导。主句表示该语句的主要功能,从句表示一些条件或限定,有些从句是可以省略的。在语句中会引用到列名、表名或表达式。另外还有如下一些说明:,* 关键字、字段名、表名等之间都要用空格或逗号等进行必要的分隔。,* 语句的大小写不敏感,(,查询的内容除外,),。,* 语句可以写在一行或多行。,* 语句中的关键字不能略写和分开写在两行。,* 要在每条,SQL,语句的结束处添加“;”号。,* 为了提高可读性,可以使用缩进。,* 从句一般写在另一行的开始处。,查询语句是最常见的,SQL,语句,它从给定的表中,把满足条件的内容检索出来。以下是最基本的,SELECT,语句语法。,SELECT,字段名列表,FROM,表名,WHERE,条件,;,SELECT,为查询语句的关键字,后跟要查询的字段名列表,字段名列表用来指定检索特定的字段,该关键字不能省略。,字段名列表代表要查询的字段。,FROM,也是查询语句关键字,后面跟要查询的表名,该关键字不能省略。,WHERE,条件限定检索特定的记录,满足“条件”的记录被显示出来,不满足条件的被过滤掉。,语句查询的结果往往是表的一部分行和列。如果字段名列表使用*,将检索全部的字段。如果省略,WHERE,条件,将检索全部的记录。,【,训练,1】,查询部门,10,的雇员。,输入并执行查询:,SELECT * FROM emp WHERE deptno=10;,结果略。,说明:该查询语句从,emp,表中检索出部门,10,的雇员,条件由,WHERE deptno=10,子句指定。,2.2,基本查询和排序,2.2.1,查询的基本用法,在,Oracle,数据库中,对象是属于模式的,每个账户对应一个模式,模式的名称就是账户名称。在表名前面要添加模式的名字,在表的模式名和表名之间用“,.”,分隔。我们以不同的账户登录数据库时,就进入了不同的模式,比如登录到,STUDENT,账户,就进入了,STUDENT,模式。而在,STUDENT,模式要查询属于,SCOTT,模式的表,就需要写成:,SELECT * FROM SCOTT.EMP;,但如果登录用户访问属于用户模式本身的表,那么可以省略表名前面的模式名称。,SELECT * FROM emp;,1,指定检索字段,下面的练习,只显示表的指定字段。,【,训练,1】,显示,DEPT,表的指定字段的查询。,输入并执行查询:,SELECT deptno,dname FROM dept;,显示结果如下:,DEPTNO DNAME,- -,10 ACCOUNTING,20 RESEARCH,30 SALES,40 OPERATIONS,说明:结果只包含,2,列,deptno,和,dname,。,在语句中给出要显示的列名,列名之间用“,”分隔。,表头的显示默认为全部大写,。,对于日期和数值型数据,,,右,对齐显示,如,deptno,列。,对于字符型数据,,,左,对齐显示,如,dname,列。,【,练习,1】,显示,emp,表的雇员名称和工资。,2,显示行号,每个表都有一个,虚列,ROWNUM,,,它用来显示结果中记录的行号。我们在查询中也可以显示这个列。,【,训练,2】,显示,EMP,表的行号。,输入并执行查询:,SELECT rownum,ename FROM emp;,结果如下:,ROWNUM ENAME,- -,1 SMITH,2 ALLEN,3 WARD,4 JONES,注意:显示的行号是查询结果的行号,数据在数据库中是没有行号的。,3,显示,计算列,在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次序。常用的算术运算符包括:,*,+,:加法运算符。,*,-,:减法运算符。,* *:乘法运算符。,*,/,:除法运算符。,以下训练在查询中使用了计算列。,【,训练,3】,显示雇员工资上浮,20%,的结果。,输入并执行查询,:,SELECT ename,sal,sal*(1+20/100) FROM emp;,显示结果为:,ENAME SAL SAL*(1+20/100),- - -,SMITH 800 960,ALLEN 1600 1920,说明:结果中共显示了,3,列,第,3,列显示工资上浮,20%,的结果,,它不是表中存在的列,而是计算产生的结果,称为计算列。,【,练习,2】,显示,EMP,表的雇员名称以及工资和津贴的和。,4,使用别名,我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。,【,训练,4】,在查询中使用列别名。,输入并执行:,SELECT ename AS,名称, sal,工资,FROM emp;,显示结果为:,名称 工资,- -,SMITH 800,ALLEN 1600,说明:表头显示的是列别名,转换为汉字显示。,在列名和别名之间要用,AS,分隔,,如,ename,和它的别名“名称”之间用,AS,隔开。,AS,也可以省略,,如,sal,和它的别名“工资”之间用空格分割。,注意:,如果用空格分割,,要区别好列名和别名,前面为列名,后面是别名。,别名如果含有空格或特殊字符或大小写敏感,需要使用双引号将它引起来,。,【,训练,5】,在列别名上使用双引号。,输入并执行查询:,SELECT ename AS Name, sal*12+5000 AS ,年度工资,(,加年终奖,) FROM emp;,显示结果为:,Name,年度工资,(,加年终奖,),- -,SMITH 14600,ALLEN 24200,说明:其中别名“,Name”,有大小写的区别,别名“年度工资,(,加年终奖,) ”,中出现括号,属于特殊符号,所以都需要使用双引号将别名引起。,【,练习,3】,显示,DEPT,表的内容,使用别名将表头转换成中文显示。,5,连接运算符,(,注意字符函数,concat,),在前面,我们使用到了包含数值运算的计算列,显示结果也是数值型的。我们也可以使用字符型的计算列,方法是在查询中使用连接运算。,连接运算符是双竖线“,|”,。通过连接运算可以将两个字符串连接在一起。,【,训练,6】,在查询中使用连接运算。,输入并执行查询:,SELECTename|job AS ,雇员和职务表, FROM emp;,输出结果为:,雇员和职务表,-,SMITHCLERK,ALLENSALESMAN,说明:在本例中,雇员名称和职务列被连接成为一个列显示。,在查询中可以使用字符和日期的常量,表示固定的字符串或固定日期。字符和日期的常量需要用单引号引起。下一个训练是作为上一个训练的改进。,?,【,训练,7】,在查询中使用字符串常量。,输入并执行查询:,SELECTename| IS |job AS ,雇员和职务表, FROM emp;,输出结果为:,雇员和职务表,-,SMITH IS CLERK,ALLEN IS SALESMAN,说明:本练习中将雇员名称、字符串常量“,IS ”,和雇员职务,3,个部分连接在一起。,【,练习,4】,显示,DEPT,表的内容,按以下的形式,:,部门,ACCOUNTING,所在的城市为,NEW YORK,6,消除重复行,如果在显示结果中存在重复行,可以使用的关键字,DISTINCT,消除重复显示。,【,训练,8】,使用,DISTINCT,消除重复行显示。,输入并执行查询:,SELECT DISTINCT job FROM emp;,结果为:,JOB,-,ANALYST,CLERK,MANAGER,PRESIDENT,SALESMAN,说明:在本例中,如果不使用,DISTINCT,关键字,将重复显示雇员职务,,DISTINCT,关键字要紧跟在,SELECT,之后。请去掉,DISTINCT,关键字,重新执行,并观察显示结果的不同。,【,练习,5】,显示,EMP,表中不同的部门编号。,2.2.2,查询结果的排序,如果要在查询的同时排序显示结果,可以使用如下的语句:,SELECT,字段列表,FROM,表名,WHERE,条件,ORDER BY,字段名,1 ASC|DESC,字段名,2 ASC|DESC.;,ORDER BY,从句后跟要排序的列。,ORDER BY,从句出现在,SELECT,语句的,最后,。,排序有升序和降序之分,,ASC,表示升序排序,,DESC,表示降序排序。如果不指明排序顺序,默认的排序顺序为升序。如果要降序,必须书写,DESC,关键字。,1,升序排序,【,训练,1】,查询雇员姓名和工资,并按工资从小到大排序。,输入并执行查询:,SELECT ename, sal FROM emp ORDER BY sal;,执行结果为:,ENAME SAL,- -,SMITH 800,JAMES 950,注意:若省略,ASC,和,DESC,,,则默认为,ASC,,,即升序排序。,2,降序排序,【,训练,2】,查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。,输入并执行查询:,SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;,结果如下:,ENAME HIREDATE,- -,ADAMS 23-5,月,-87,SCOTT 19-4,月,-87,MILLER 23-1,月,-82,JAMES 03-12,月,-81,FORD 03-12,月,-81,注意:,DESC,表示降序排序,不能省略。,3,多列排序,可以按多列进行排序,,先按,第一列,,然后,按第二列、第三列,.,。,【,训练,3】,查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。,输入并执行查询:,SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;,结果如下:,ENAME DEPTNO HIREDATE,- - -,CLARK 10 09-6,月,-81,KING 10 17-11,月,-81,MILLER 10 23-1,月,-82,SMITH 20 17-12,月,-80,JONES 20 02-4,月,-81,FORD 20 03-12,月,-81,SCOTT 20 19-4,月,-87,说明:,该排序是先按部门升序排序,部门相同的情况下,,再按雇佣时间升序排序。,4,在排序中使用别名,如果要对,计算列,排序,,可以为计算列指定别名,,,然后按别名排序。,【,训练,4】,按工资和工作月份的乘积排序。,输入并执行查询:,SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp,ORDER BY total;,执行结果为:,EMPNO ENAME TOTAL,- - -,7876ADAMS 221526.006,7369 SMITH 222864.661,7900 JAMES 253680.817,7654 MARTIN 336532.484,说明:求得雇员工作月份的函数,Months_between,将在后面介绍。,sysdate,表示当前日期。,【,练习,1】,将部门表中的部门名称按字母顺序显示。,2.3,条件查询,2.3.1,简单条件查询,要对显示的行进行限定,可在,FROM,从句后使用,WHERE,从句,在,WHERE,从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件表达式中可以包含比较运算,,表达式的,值,为,真,的记录将被显示,。常用的比较运算符列于表,2-2,中。,表,2-2,比 较 运 算 符,【,训练,1】,显示职务为“,SALESMAN”,的雇员的姓名、职务和工资。,输入并执行查询:,SELECT ename,job,sal FROM emp WHERE job=SALESMAN;,执行结果为:,ENAME JOB SAL,- - -,ALLEN SALESMAN 1600,WARD SALESMAN 1250,MARTIN SALESMAN 1250,TURNER SALESMAN 1500,说明:结果只显示职务为“,SALESMAN”,的雇员。,字符串,和,日期型,数据的值是包含在,单引号中,的,如,SALESMAN,,,需要用单引号引起,。字符的值对大小写敏感,在,emp,表中存放的职务字符串全部是大写。,注意:在本练习中,如果,SALESMAN,写成小写或大小写混合,将不会有查询结果输出。,【,训练,2】,显示工资大于等于,3000,的雇员姓名、职务和工资。,输入并执行查询:,SELECT ename, job,sal FROM emp WHERE sal=3000;,执行结果为:,ENAME JOB SAL,- - -,SCOTT ANALYST 3000,KING PRESIDENT 5000,FORD ANALYST 3000,说明:结果只显示工资大于等于,3000,的雇员。,缺省中文日期格式为,DD-MM,月,-YY,,,如,2003,年,1,月,10,日应该表示为“,10-1,月,-03”,。,【,训练,3】,显示,1982,年以后雇佣的雇员姓名和雇佣时间。,输入并执行查询:,SELECT ename,hiredate FROM emp WHERE hiredate=1-1,月,-82;,执行结果为:,ENAME HIREDATE,- -,SCOTT 19-4,月,-87,ADAMS 23-5,月,-87,MILLER 23-1,月,-82,说明:检查,hiredate,字段的内容,都在,82,年以后。,【,练习,1,】,显示部门编号为,10,的雇员姓名和雇佣时间。,2.3.2,复合条件查询,可以用,逻辑运算符,构成,复合的条件查询,,即把两个或多个条件,用逻辑运算符连接成一个条件。有,3,个逻辑运算符,如表,2-3,所示。,表,2-3,逻辑运算符,运算的优先顺序是,NOT,,,AND,,,OR,。,如果要改变优先顺序,可以使用括号。,下面是使用逻辑与运算的练习。,1,使用逻辑与,【,训练,1】,显示工资在,1000,2000,之间,(,不包括,1000,和,2000),的雇员信息。,输入并执行查询:,SELECT ename, job,sal FROM emp WHERE sal1000 AND sal1000 AND sal1000 AND 2000,。,【,练习,1】,显示部门,10,中工资大于,1500,的雇员。,2,使用逻辑或,下面是使用逻辑或运算的练习。,【,训练,2】,显示职务为,CLERK,或,MANAGER,的雇员信息。,输入并执行查询:,SELECT * FROM emp WHERE job=CLERK OR job=MANAGER;,执行结果从略。,说明:检索职务为,CLERK,或,MANAGER,的雇员,需要使用,OR,运算,请自行察看结果。,注意:条件,job=CLERK OR job=MANAGER,不能写成,job=CLERK OR MANAGER,。,3,使用逻辑非,下面是使用逻辑非运算的练习。,【,训练,3】,显示部门,10,以外的其他部门的雇员。,输入并执行查询:,SELECT * FROM emp WHERE NOT deptno=10;,执行结果从略。,说明:执行结果包含部门编号不等于,10,的其他部门的雇员,请自行察看结果。,4,使用逻辑或和逻辑与,下面是同时使用逻辑或和逻辑与的复合练习。,【,训练,4】,显示部门,10,和部门,20,中工资小于,1500,的雇员。,输入并执行查询,SELECT * FROM emp WHERE (deptno=10 OR deptno=20) AND sal0;,执行结果为:,EMPNO ENAME LENGTH(ENAME),- - -,7369 SMITH 5,7566 JONES 5,【,训练,4】,显示雇员名称中包含“,S”,的雇员名称及名称长度。,输入并执行查询:,SELECT empno,ename,length(ename) FROM emp,WHERE instr(ename, S, 1, 1)0;,执行结果为:,EMPNO ENAME LENGTH(ENAME),- - -,7369 SMITH 5,7566 JONES 5,说明:本例在字段列表和查询条件中分别应用了函数,length,和,instr,。,Length,函数返回,ename,的长度。,instr(ename,S1,1),函数返回,ename,中从第一个字符位置开始,字符串“,S”,第一次出现的位置。如果函数返回,0,,则说明,ename,中不包含字符串“,S”,;,如果函数返回值大于,0,,则说明,ename,中包含字符串“,S”,。,【,练习,1】,显示部门表中部门和所在城市列表,中间以下划线“,_”,连接,城市名转换成以大写字母开头。,2.4.3,日期型函数,Oracle,使用内部数字格式来保存时间和日期,包括世纪、年、月、日、小时、分、秒。缺省日期格式为,DD-MON-YY,,,如“,08-05,月,-03”,代表,2003,年,5,月,8,日。,SYSDATE,是返回系统日期和时间的,虚列函数,。,使用日期的加减运算,可以实现如下功能:,* 对日期的值加减一个天数,得到新的日期。,* 对两个日期相减,得到相隔天数。,* 通过加小时来增加天数,,24,小时为一天,如,12,小时可以写成,12/24(,或,0.5),。,还有如表,2-7,所示的日期函数可以使用。,表,2-7,日期函数,【,训练,1】,返回系统的当前日期。,输入并执行查询:,SELECT sysdate FROM dual;,返回结果为:,SYSDATE,-,06-2,月,-03,说明:该查询返回执行该查询时的数据库服务器的系统当前时间,日期显示格式为默认格式,如“,06-2,月,-03”,表示,03,年,2,月,6,日。,【,训练,2】,返回,2003,年,2,月的最后一天。,输入并执行查询:,SELECT last_day(08-2,月,-03) FROM dual;,返回结果为:,LAST_DAY(,-,28-2,月,-03,说明:该函数给定参数为某月份的任意一天,返回时间为该月份的最后一天。本例中,参数为,03,年,2,月,8,号,返回日期为,03,年,2,月,28,日,是该月的最后一天。,【,训练,3】,假定当前的系统日期是,2003,年,2,月,6,日,求再过,1000,天的日期。,输入并执行查询:,SELECT sysdate+1000 AS NEW DATE FROM dual;,返回结果为:,NEW DATE,-,04-11,月,-05,说明:该查询使用到了日期的加法运算,求经过一定天数后的新日期。,【,训练,4】,假定当前的系统日期是,2003,年,2,月,6,日,显示部门,10,雇员的雇佣天数。,输入并执行查询:,SELECT ename, round(sysdate-hiredate) DAYS,FROM emp,WHERE deptno = 10;,返回结果为:,ENAME DAYS,- -,CLARK 7913,KING 7752,MILLER 7685,说明:该查询使用日期的减法运算求两个日期的相差天数。用,round,函数对天数进行四舍五入。,【,练习,1】,显示雇员名称和雇佣的星期数。,【,练习,2】,显示从本年,1,月,1,日开始到现在经过的天数,(,当前时间取,SYSDATE,的值,),。,2.4.4,转换函数,Oracle,的类型转换分为自动类型转换和强制类型转换。常用的类型转换函数有,TO_CHAR,、,TO_DATE,或,TO_NUMBER,,,如表,2-8,所示。,表,2-8,类型转换函数,1,自动类型转换,Oracle,可以自动根据具体情况进行如下的转换:,* 字符串到数值。,* 字符串到日期。,* 数值到字符串。,* 日期到字符串。,以下是自动转换的训练。,【,训练,1】,自动转换字符型数据到数值型。,输入并执行查询:,SELECT 12.5+11 FROM dual;,执行结果为:,12.5+11,-,23.5,说明:在本训练中,因为出现,+,运算符,,说明进行的是,算术运算,,所以字符串,12.5,被自动转换成数值,12.5,,然后参加运算。,【,训练,2】,自动转换数值型数据到字符型。,执行以下查询:,SELECT 12.5|11 FROM dual;,结果为:,12.5,-,12.511,说明:在本训练中,因为出现,|,运算符,,说明进行的是,字符串连接运算,,数值,11,被自动转换成字符串,11,,然后参加运算。,2,日期类型转换,将日期型转换成字符串时,可以按新的格式显示。,如格式,YYYY-MM-DD HH24:MI:SS,表示“年,-,月,-,日 小时,:,分钟,:,秒”。,Oracle,的日期类型是包含时间在内的,。,主要的日期格式字符的含义如表,2-9,所示。,表,2-9,日期转换格式字符,表,2-9,日期转换格式字符,【,训练,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,下午 星期六,说明:该语句中的第一个参数表示要转换的日期,第二个参数是格式字符串,表示转换后的格式,结果类型为字符串。“,YYYY”,为,4,位的年份,“,MM”,为两位的月份,“,DD”,为两位的日期,“,HH24”,表示显示,24,小时制的小时,“MI”,表示显示分钟,“,SS”,表示显示秒,“,AM”,表示显示上午或下午,(,本例中为下午,),,“,DY”,表示显示星期。“,-”,、“,:”,和空格原样显示,用于分割日期和时间。转换出来的系统时间为:,2004,年,2,月,7,日,(,星期六,),下午,15,点,44,分,48,秒。,还可以按其他的格式显示。以下查询中插入中文的年月日,,其中原样显示部分,区别于,外层的,单引号,,需要用,双引号引起,。,【,训练,4】,将日期显示转换成中文的年月日。,输入并执行查询:,SELECT TO_CHAR(sysdate,YYYY,年,MM,月,DD,日,) FROM dual;,执行结果为:,TO_CHAR(SYSDAT,-,2003,年,11,月,18,日,说明:双引号中的中文字“年”、“月”、“日”原样显示,单引号为字符串的界定标记,区别于双引号,不能混淆。,【,训练,5】,将雇佣日期转换成字符串并按新格式显示。,输入并执行查询:,SELECTename, to_char(hiredate, DD Month YYYY) HIREDATE,FROM emp;,执行结果为:,ENAME HIREDATE,- -,SMITH 17 12,月,1980,ALLEN 20 2,月,1981,说明:,Month,表示月份的特殊格式,如“,12,月”。年度用,4,位显示。,对于数字型的日期格式,可以用数字或全拼格式显示,即在格式字符后面添加,TH,或,SP,。,TH,代表序列,,SP,代表全拼,。,【,训练,6】,以全拼和序列显示时间。,执行以下查询:,SELECT SYSDATE,to_char(SYSDATE,yyyysp),to_char(SYSDATE,mmspth),to_char(SYSDATE,ddth) FROM dual;,执行结果为:,SYSDATE TO_CHAR(SYSDATE,YYYYSP) TO_CHAR( TO_C,- - - -,07-2,月,-04 two thousand four second 07th,说明:“,two thousand four”,为全拼表示的,2004,年;“,second”,为全拼序列表示的,2,月;“,07th”,为用序列表示的,7,号。,在格式字符中,前两个字符代表显示结果的大小写。如果格式中的前两个字符是大写,则输出结果的全拼也为大写。如果格式中的前两个字符是小写,则输出结果的全拼也为小写。如果格式中的前两个字符的第一个字符是大写,第二个字符是小写,则输出结果的全拼也为大写开头,后面为字符小写。,【,训练,7】,时间显示的大小写。,步骤,1,:执行以下查询:,SELECT SYSDATE,to_char(SYSDATE,yyyysp) FROM dual;,结果为:,SYSDATE TO_CHAR(SYSDATE,YYYYSP),- -,07-2,月,-04 two thousand four,步骤,2,:执行以下查询:,SELECT to_char(SYSDATE,Yyyysp) FROM dual;,结果为:,SYSDATE TO_CHAR(SYSDATE,YYYYSP),- -,Two Thousand Four,步骤,3,:执行以下查询:,SELECT SYSDATE,to_char(SYSDATE,YYyysp) FROM dual;,结果为:,SYSDATE TO_CHAR(SYSDATE,YYYYSP),- -,TWO THOUSAND FOUR,说明:步骤,1,输出全拼小写的年度,步骤,2,输出全拼的以大写开头的年度,步骤,3,输出全拼大写的年度。,【,练习,1】,显示,2008,年的,8,月,8,日为星期几。,3,数字类型转换,将数字型转换成字符串时,也可以按新的格式显示。格式字符含义如表,2-10,所示。,表,2-10,数值转换符,【,训练,8】,将数值转换成字符串并按新格式显示。,执行以下查询:,SELECT TO_CHAR(123.45,0000.00), TO_CHAR(1234
展开阅读全文