下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第7章 SQL语言基础2本章内容SQL语句分类数据查询(SELECT)数据操纵(INSERT、UPDATE、DELETE)MERGE语句事务控制SQL函数3本章要求熟练掌握数据查询的各种应用熟练掌握数据操纵的各种应用掌握事务处理掌握SQL函数应用47.1 SQL语言概述70年代初,发表大型共享数据库数据的关系模型1974年SQL语言被提出70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制实现了SQL语言1979年,ORACLE公司首先提供商用的SQL1986年,美国ANSI采用SQL作为关系数据库管理系统的标准语言1987年,ISO采纳SQL语言为关系数据库的标准语言I
2、SO相继颁布SQL-89、SQL-92、SQL-99标准Oracle 11g数据库遵循SQL-99标准5SQL语言特点SQL语言采用集合操作方式,对数据的处理是成组进行的,而不是一条一条处理。执行SQL语句时,每次只能发送并处理一条语句。执行SQL语句时,用户只需知道其逻辑含义,而不需关心SQL语句的具体执行步骤。使用SQL语句时,既可采用交互方式执行,也可将SQL语句嵌入到高级语言中执行。6SQL语言的分类数据操纵语言(Data Manipulation Language ,DML)数据定义语言(Data Definition Language ,DDL)数据控制语言(Data Contro
3、l Language ,DCL)7SQL语言的分类数据操纵语言用于处理数据库中的数据内容INSERT、UPDATE、DELETESELECTCALLMERGECOMMIT、ROLLBACK8SQL语言的分类数据定义语言用于创建和定义数据库对象,并将对对象的定义保存到数据字典中CREATE,ALTER,DROPRENAME TRUNCATE注意:每一条DDL语句执行后,Oracle都将提交当前事务9SQL语言的分类数据控制语言用于修改数据库结构的操作权限GRANTREVOKE10SQL语言规范SQL关键字、对象名和列名不区分大小写,既可以使用大写格式,也可以使用小写格式,或者混用大小写格式。字符
4、值和日期值区分大小写。编写SQL语句时,语句文本很短,可以将语句文本放在一行上;如果语句文本很长,可以将语句文本分布到多行上,并且可以通过使用跳格和缩进提高代码的可读性。117.2 使用SELECT语句检索数据查询是用来取得满足特定条件的信息查询语句可以从一个或多个表中,根据指定的条件选取特定的行和列查询是SQL语言的核心12 SELECT语句的结构SELECT ALL | DISTINCT * | expression | column1_name , column2_name , . FROM table1_name | ( subquery ) alias , table2_name |
5、 ( subquery ) alias , . WHERE condition GROUP BY expression ,. HAVING condition ,. UNION | INTERSECT | MINUS ORDER BY expression ASC | DESC , . FOR UPDATE OF schema. table_name | view column NOWAIT 13数据查询基础基本语法:empnoenamejobmgrhiredatesal7369SMITHCLERK790217-12月-19808007499ALLENSALESMAN769820-2月 -19
6、8116007521WARDSALESMAN769822-2月 -19811250emp查询结果empnoenamesal7369SMITH8007499ALLEN16007521WARD1250查询SELECT empno, ename, salFROM scott.emp;14基本查询empdept返回15无条件查询查询所有列查询dept表中所有数据所有列查询指定列查询dept表中所有部门的编号和部门名称 使用算术表达式查询emp表中所有雇员的编号及其80的工资select * from dept;select deptno,dname from dept;select empno,sal
7、*0.8 from emp;16无条件查询使用字符常量查询结果中加入“Name is”字符串使用函数查询emp表中所有员工的编号及其姓名(大写)select empno,Name is:, ename from emp;select empno,UPPER( ename) from emp;17改变列标题查询emp表中的员工名、薪水及工种使用连接字符串消除重复行无条件查询select ename employeename,sal AS salary ,job from emp;select ename | | month salary= | sal as monthy from emp;Sel
8、ect ALL ename from emp;select DISTINCT ename from emp;18有条件查询查询满足条件的元组,通过WHERE 子句实现WHERE条件中常用的运算符号运算符号谓词比较大小=, , =, =, ,!=确定范围BETWEEN AND,NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE空值IS NULL,IS NOT NULL多重条件AND,OR19关系运算 查询在10部门的员工的编号、姓名及工资查询工资在1500元以上的员工编号、姓名和工资select empno,ename,sal from emp where
9、 deptno = 10;有条件查询select empno ,ename ,sal from emp where sal1500;20确定范围谓词BETWEEN AND与NOT BETWEEN AND查询工资在1500至3000元之间的员工信息查询工资在1500以下或3000元以上的员工信息select * from emp where sal between 1500 and 3000select * from emp where sal not between 1000 and 2000有条件查询21确定集合谓词IN可以用来查找属性值属于指定集合的元组查询编号为10和30部门的员工编号、
10、姓名及其部门编号查询工资不是1000也不是3000的员工编号、姓名及其部门编号有条件查询select empno,ename,deptno from emp where deptno in (10,30);select empno,ename,deptno from emp where sal not in (1000,3000);22字符匹配%代表任意长字符串_代表任意单个字符查询员工姓名第一个字符为“S”的员工编号、姓名和部门编号ESCAPE:定义转义字符查询员工姓名中包含“_”的员工信息select empno,ename,deptno from emp where ename like
11、 S%;select * from emp where ename like %x_% escape x;有条件查询23空值操作涉及空值查询时使用IS NULL或 IS NOT NULLIS不能用=替代查询奖金不为空的雇员信息查询奖金为空的雇员信息select empno,ename,sal,deptno from emp where comm is not null;select empno,ename,sal,deptno from emp where comm is null;有条件查询24逻辑操作用逻辑运算符NOT、AND和OR联结多个查询条件优先级:NOT、AND、OR(用括号改变优
12、先级)IN谓词实际上是多个OR运算的缩写查询奖金不为空并且工资在1500元以上的员工信息查询工资在1500元以上Salesman或Clerk工种的员工信息有条件查询select empno,ename,sal,deptno from empwhere comm is not null and sal 1500;select ename, job, sal from empwhere ( job=SALESMAN or job=CLERK) and sal1500;25思考下面命令哪行将出错?下面哪些运算符不可以用于SQL语句中的数学公式?A. + B. (C. D. E. * F. /SELE
13、CT first_name | |last_namefull nameFROM emp;错误:空格是文本,文本必须使用单引号括起来;如果列别名包含空格或大小写混合需要使用双引号括起来;26查询排序单列排序ASC: 升序 (缺省);DESC: 降序查询员工信息,按工资升序排列纪录查询员工信息,按工资降序排列纪录SELECT empno,ename,sal FROM emp ORDER BY sal;SELECT empno,ename,sal FROM emp ORDER BY sal DESC;27多列排序 首先按照第一个列或表达式进行排序;当第一个列或表达式的数据相同时,以第二个列或表达式进
14、行排序,以此类推 查询员工信息,按部门升序排列,每个部门内按工资降序排列SELECT * FROM emp ORDER BY deptno,sal DESC;查询排序28举例:查询员工信息,按年薪升序排列按表达式排序 使用别名排序 使用列位置编号排序 列名或表达式名称很长,使用位置排序可以缩短排序语句的长度SELECT empno,ename,sal FROM emp ORDER BY sal*12;SELECT empno,sal*12 salary FROM emp ORDER BY salary;SELECT empno,sal*12 salary FROM emp ORDER BY 2
15、;查询排序29分组查询聚合函数单列分组查询多列分组查询使用HAVING子句限制返回组30查询统计聚合函数函数格式功能AVGAVG(DISTINCT|ALL )计算一列值的平均值(要求数值列)COUNTCOUNT(DISTINCT|ALL * )统计元组个数COUNTCOUNT(DISTINCT|ALL )统计一列中非空值的个数MAXMAX(DISTINCT|ALL )求一列值中的最大值MINMIN(DISTINCT|ALL )求一列值中的最小值SUMSUM(DISTINCT|ALL )计算一列值的总和(要求数值列)31注意除了COUNT(*)函数外,其他的统计函数都不考虑返回值或表达式为NUL
16、L的情况。聚集函数只能出现在目标列表达式、ORDER BY子句、HAVING子句中,不能出现在WHERE子句和GROUP BY子句中。默认对所有的返回行进行统计,包括重复的行;如果要统计不重复的行信息,则可以使用DISTINCT选项。如果对查询结果进行了分组,则聚集函数的作用范围为各个组,否则聚集函数作用于整个查询结果。32查询10号部门的员工总人数、平均工资和最高最低工资查询员工的平均奖金和奖金总和查询员工信息表中所有部门数聚合函数使用SELECT count(*),avg(sal),max(sal),min(sal) FROM emp WHERE deptno=10;SELECT avg(
17、comm),sum(comm) FROM emp ;SELECT count(DISTINCT deptno) FROM emp;33EMP每个部门的平均薪水 2916.6667 2175 1566.6667 DEPTNO SAL- - 10 2450 10 5000 10 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO AVG(SAL) - - 10 2916.6667 20 2175 30 1566.6667将查询结果表按某一列或多列值分组,值相等的为一组。分组查询34语法
18、GROUP BY子句用于指定分组列或分组表达式集合函数用于对分组进行统计HAVING子句用于限制分组的返回结果WHERE子句是对表中的记录进行过滤,而HAVING子句是对分组后形成的组进行过滤在分组查询中,SELECT子句后面的所有目标列或目标表达式要么是分组列,要么是分组表达式,要么是集合函数 SELECT column, group_function, FROM tableWHERE conditionGROUP BY group_by_expressionHAVING group_conditionORDER BY columnASC|DESC; 分组查询35单列分组查询将查询出来的记录
19、按照某一个指定的列进行分组查询每个部门部门号、员工人数及其平均工资多列分组查询在GROUP BY子句中指定了两个或多个分组列查询每个部门不同工种的员工人数和平均工资SELECT deptno,count(*),avg(sal) FROM emp GROUP BY deptno;SELECT deptno,job,count(*),avg(sal) FROM emp GROUP BY deptno,job;分组查询 DEPTNO COUNT(*) AVG(SAL)- - - 10 3 2916.66667 20 5 2175 30 6 1566.66667DEPTNO JOB COUNT(*)
20、AVG(SAL)- - - - 10 CLERK 1 1300 10 MANAGER 1 2450 10 PRESIDENT 1 5000 20 CLERK 2 950 20 ANALYST 2 3000 20 MANAGER 1 2975 30 CLERK 1 950 30 MANAGER 1 2850 30 SALESMAN 4 140036使用HAVING子句限制返回组只有满足条件的组才会返回查询部门平均工资高于1500的部门号、部门人数及平均工资分组查询SELECT deptno,count(*),avg(sal) FROM emp GROUP BY deptno HAVING avg
21、(sal)1500;37思考EMPLOYEES表结构如下:Emp_idnumber(4) not nullLast_namevarchar2(30) not nullFirst_namevarchar2(30) not nullDept_idnumber(2) -工作部门编号Job_catvarchar2(30)-工作类别Salary number(8,2)-工资查询最低工资低于5000并且最高工资高于14000的部门号以及该部门的最低工资和最高工资。显示各个部门的每个工作类别中支付的最高工资。select dept_no, max(salary), min(salary) from empl
22、oyeesgroup by dept_idhaving max(salary)14000 and min(salary)5000;Select dept_id,job_cat,max(salary) from employeesGroup by job_cat,dept_id;38TOP-N分析TOP-N分析查询一个列中最大或最小的n个值:销售量最高的十种产品是什么?销售量最差的十种产品是什么?最大和最小值的集合是TOP-N分析所关心的39TOP-N分析(续)查询最大的几个值的TOP-N分析:SELECT column_list, ROWNUM FROM (SELECT column_list
23、 FROM table ORDER BY TOP-N_column )WHERE ROWNUM = N;40TOP-N分析举例查询工资最高的三名员工:SELECT ROWNUM as RANK, ename, salFROM (SELECT ename, sal FROM emp ORDER BY sal DESC )WHERE ROWNUM = 3;417.3 数据操纵插入数据修改数据删除数据42插入单行记录语法注意INTO子句中没有指明任何列名,则VALUES子句中列值的个数、顺序、类型必须与表中列的个数、顺序、类型相匹配。INTO子句中指定了列名,则VALUES子句中提供的列值的个数、顺
24、序、类型必须与指定列的个数、顺序、类型按位置对应。向表或视图中插入的数据满足表的完整性约束。字符型和日期型数据在插入时要加单引号。INSERT INTO table_name|view_name (column1,column2) VALUES(value1,values, ) 插入数据43利用子查询插入数据语法示例统计各部门的部门号、部门最高工资和最低工资,并将统计结果写入到已创建的表emp_salary中INSERT INTO table_name|view_name(column1,column2,)subquery;INSERT INTO emp_salary SELECT deptn
25、o,max(sal),min(sal) FROM emp GROUP BY deptno 向emp表插入一条纪录,其员工名为FAN,员工号为1235,其它信息与SCOTT的员工信息相同INSERT INTO emp SELECT 1235,FAN m,deptno FROM emp WHERE ename=SCOTT;插入数据44向多个表中插入数据语法INSERT ALL|FIRST WHEN condition1 THEN INTO table1 WHEN condition2 THEN INTO table2 ELSE INTO tablen subquery;ALL表示一条记录可以同时插
26、入到多个满足条件的表中FIRST表示一条记录只会插入到第一个满足条件的表中补充:插入数据45示例将emp表中员工信息按部门号的不同分别复制到已创建的emp10、emp20、emp30和emp_other表中INSERT FIRST WHEN deptno=10 THEN INTO emp10 WHEN deptno=20 THEN INTO emp20 WHEN deptno=30 THEN INTO emp30 ELSE INTO emp_other SELECT * FROM emp;将emp表中员工信息按部门号的不同分别复制到已创建的emp10、emp20、emp30和emp_other
27、表中。同时将工资低于2000的员工信息复制到lowsal表中,工资高于4000的复制到highsal表中,介于2000到3000的复制到middlesal表中INSERT ALL WHEN deptno=10 THEN INTO emp10 WHEN deptno=20 THEN INTO emp20 WHEN deptno=30 THEN INTO emp30 WHEN deptno=40 THEN INTO emp_other WHEN sal4000 THEN INTO highsal ELSE INTO middlesal SELECT * FROM emp;46修改数据基本语法修改单
28、条记录UPDATE table_name|view_name SET column1=value1,column2=value2 WHERE conditionUPDATE emp SET m=200 WHERE empno=7844;47修改多条记录利用子查询修改记录 UPDATE emp SET sal=sal+150 WHERE deptno=20; UPDATE emp SET sal=300+ (SELECT avg(sal) FROM emp WHERE deptno=10) WHERE deptno=30; 修改数据48删除数据基本语法删除单条记录删除多条记录带有子查询的删除操作
29、DELETE FROM table|view WHERE condition DELETE FROM emp WHERE empno=7844; DELETE FROM emp WHERE deptno=10;DELETE FROM emp WHERE sal(SELECT sal FROM emp WHERE empno=7900); 49利用TRUNCATE删除数据TRUNCATE与DELETE区别释放存储空间不写入日志文件,因此执行效率较高,但该操作不可回滚。 TRUNCATE TABLE table_name删除数据50MERGE语句使用MERGE语句,可以对指定的两个表执行合并操作,
30、其语法如下:MEGER INTO table1_nameUSING table2_name ON join_conditionWHEN MATCHED THEN UPDATE SET .WHEN NOT MATCHED THEN INSERT . VALUES .517.7 事务处理事务概述事务(Transaction)是由一系列相关的SQL语句组成的最小逻辑工作单元。事务是数据库并发控制和恢复技术的基本单位原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)原子性、一致性原子性:就是事务应作为一个工作单元,事务处理完成,所有的
31、工作要么都在数据库中保存下来,要么完全回滚,全部不保留一致性:事务完成或者撤销后,都应该处于一致的状态隔离性、永久性隔离性多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时,不合理的存取和不完整的读取数据永久性事务提交以后,所做的工作就被永久的保存下来事务并发处理会产生的问题 丢失更新当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。丢失更新假设产品的当前库存60,现有两个事务:T1购入400个,T2卖出40顺序事务步骤存储的值1T1读在库数量
32、602T2读在库数量603T1在库数量=60+4004T2在库数量=60-405T1写在库数量460(将被丢失)6T2写在库数量20正常执行过程假设产品的当前库存60,现有两个事务:T1购入400个,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T2读在库数量4605T2在库数量=460-406T2写在库数量420问题脏读当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。T2使用T1未提交数据假设产品的当前库存60,现有两个事务:T1购入400个,在没有提
33、交前撤消了该操作,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T2读在库数量460(读未提交数据)5T2在库数量=460-406T1rollback606T2写在库数量420正常执行过程假设产品的当前库存60,现有两个事务:T1购入400个,在没有提交前撤消了该操作,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T1RollBack605T2读在库数量606T2在库数量=60-407T2写在库数量20脏读会话AUpdate emp set sal=2000 where enam
34、e=SCOTT;会话BSelect sal from emp where ename=scott;数据库事务数据库事务由以下的部分组成:一个或多个DML 语句一个 DDL 语句一个 DCL 语句数据库事务以第一个 DML 语句的执行作为开始以下面的其中之一作为结束:COMMIT 或 ROLLBACK 语句DDL 或 DCL 语句(自动提交)用户会话正常结束系统异常终了事务设置show mitset mit on;Commit事务提交命令。在Oracle中,在内存中将为每个客户机建立工作区,客户机对数据库进行操作处理的事务都在工作区内完成,只有在输入commit命令后,工作区内的修改内容才写入到
35、数据库上,称为物理写入.这样可以保证在任意的客户机没有物理提交修改以前,别的客户机读取的后台数据库中的数据是完整的、一致的.COMMIT和ROLLBACK语句的优点使用COMMIT 和 ROLLBACK语句,可以: 确保数据完整性。数据改变被提交之前预览。将逻辑上相关的操作分组。当执行了Commit语句之后,会确认事务变化、结束事务、删除保存点、释放锁。当使用commit语句后,其他会话将可以看到事务变化后的新数据ORACLE事务控制-回退段ORACLE为了适应事务控制设置了回退段这一数据库对象.系统利用回退段来确保诸如读一致性、数据库恢复等管理功能。ORACLE在缺省情况下,读数据不加锁,通
36、过回退段(Rollback Segment)保证用户不读脏数据和可重复读.表空间中的数据按段来组织,数据段、索引段、暂存段和回退段,回退段是一块磁盘存储区域,回退段可以由用户创建,但只能由系统进程使用。ORACLE事务控制-回退段事务的执行过程(采用日志和回退段双重记录事务活动):进入回退段,写入回退信息从数据段读入缓冲区,SQL处理记载日志文件提交,写更改结果到磁盘 回退,写回退信息到磁盘 事务第一条更新语句事务结束NYUpdate t set col=0 where col=123;commit;数据库首先把该语句的整个操作包括数据0与123写入日志缓冲区然后把123和一些信息写入回滚段最
37、后把0修改到数据缓冲区当发出提交命令时,如果日志缓冲区内容没有写入日志文件则必须写入日志文件,回滚段把该事务标记为已经提交,数据缓冲区中的这个事务也标记为已提交如果回退这个事务,则数据库将回滚段中123读出写回数据缓冲区,这个回退变化也被写入日志文件自动提交事务当执行DDL语句时会自动提交事务,当执行DCL语句(grant revoke)当退出SQL*Plus时将某一事务设为只读事务Set transaction read only只读事务,不生成回滚信息,在整个事务中就不能有修改操作注意是针对当前事务,不是另一个事务Set transaction read only | read write
38、通过rollback取消设定只读事务只读事务只允许执行查询操作,而不允许执行任何DML操作事务。当使用只读事务可以确保取得特定的时间点的数据。例如:假定企业需要在每天16点统计最近24小时的销售信息,而不统计当天16点之后的销售信息,那么用户可以使用只读事务。在设置了只读事务之后,尽管其他事务可能会提交新事务,但只读事务不会取得新的数据变化。示例会话A:Set transaction read only;会话B:Update emp set sal=3000 where ename=SMITH;会话A:Select sal from emp where ename=SMITH;73Oracle
39、事务处理 事务提交用户显式执行COMMIT命令执行特定操作时系统自动提交。 事务回滚事务全部回滚 :ROLLBACK事务部分回滚SAVEPOINT XROLLBACK TO X74SQL INSERT INTO dept VALUES(50,CS,dalian);SQL INSERT INTO dept VALUES(60,PHY,shenyang);SQL SAVEPOINT A;SQL UPDATE dept SET loc=beijing WHERE deptno = 60;SQL SAVEPOINT B;SQL INSERT INTO dept VALUES(70,MA,shangha
40、i);SQL ROLLBACK TO SAVEPOINT A;SQL COMMIT;控制事务保存点 B保存点 ADELETEINSERTUPDATEINSERTCOMMITTime 事务ROLLBACK to SAVEPOINT BROLLBACK to SAVEPOINT AROLLBACKUPDATE.SAVEPOINT update_done;Savepoint created.INSERT.ROLLBACK TO update_done;Rollback complete.回滚到保留点使用 SAVEPOINT SAVEPOINTname语句在当前事务中创建保存点。使用 ROLLBACK
41、 TO SAVEPOINTname 语句回滚到创建的保存点。用于取消部分事务事务进程自动提交在以下情况中执行:DDL 语句。DCL 语句。不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。会话异常结束或系统异常会导致自动回滚。提交或回滚前的数据状态改变前的数据状态是可以恢复的其他用户不能看到当前用户所做的改变,直到当前用户结束事务。DML语句所涉及到的行被锁定, 其他用户不能操作。提交后的数据状态数据的改变已经被保存到数据库中。改变前的数据已经丢失。所有用户可以看到结果。锁被释放, 其他用户可以操作涉及到的数据。所有保存点被释放。COMMIT;Commit comple
42、te.提交数据改变数据提交改变DELETE FROM empWHERE empno = 8358;1 row deleted.INSERT INTO deptVALUES (50, SALE, NULL);1 row inserted.数据回滚后的状态使用 ROLLBACK 语句可使数据变化失效:数据改变被取消。修改前的数据状态可以被恢复。锁被释放。DELETE FROM emp;22 rows deleted.ROLLBACK;Rollback complete.语句级回滚单独 DML 语句执行失败时,只有该语句被回滚。Oracle 服务器自动创建一个隐式的保留点。其他数据改变仍被保留。用户
43、应执行 COMMIT 或 ROLLBACK 语句结束事务。837.5 SQL函数SQL函数分类数值函数字符函数日期函数转换函数其他函数SQL 函数函数输入参数1参数2参数n函数执行输出结果两种 SQL 函数函数单行函数多行函数单行函数单行函数:操作数据对象接受参数返回一个结果只对一行进行变换每行返回一个结果可以转换数据类型可以嵌套参数可以是一列或一个值function_name (arg1, arg2,.)单行函数转换字符数值日期通用单行函数字符函数字符函数LOWERUPPERINITCAPCONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE大小写控制函数
44、字符控制函数函数结果大小写控制函数这类函数改变字符的大小写。LOWER(SQL Course)UPPER(SQL Course)INITCAP(SQL Course)sql courseSQL COURSESql Course大小写控制函数显示员工 Higgins的信息:SELECT empno, ename, deptnoFROM empWHERE ename = higgins;no rows selectedSELECT empno, ename, deptnoFROM empWHERE LOWER(ename) = higgins;CONCAT(Hello, World)SUBSTR(
45、HelloWorld,1,5)LENGTH(HelloWorld)INSTR(HelloWorld, W)LPAD(salary,10,*)RPAD(salary, 10, *)TRIM(H FROM HelloWorld)HelloWorldHello106*2400024000*elloWorld函数结果字符控制函数这类函数控制字符:SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, a) Contains a?FROM employeesW
46、HERE SUBSTR(job_id, 4) = REP;字符控制函数213123数字函数ROUND: 四舍五入ROUND(45.926, 2)45.93TRUNC: 截断TRUNC(45.926, 2)45.92MOD: 求余MOD(1600, 300)100SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1)FROM DUAL;ROUND 函数DUAL 是一个伪表,可以用来测试函数和表达式。123321SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-2)FROM DUAL
47、;TRUNC 函数123231日期Oracle 内部使用数字存储日期: 世纪,年,月,日,小时,分钟,秒。默认的日期格式是 DD-MON-RR.可以只指定年的后两位在20世纪存放21世纪的日期。 同样可以在21世纪存放20世纪的日期。SELECT last_name, hire_dateFROM employeesWHERE last_name like G%;日期函数SYSDATE 返回:日期时间日期的数学运算在日期上加上或减去一个数字结果仍为日期。两个日期相减返回日期之间相差的天数。可以用数字除24来向日期中加上或减去小时。日期的数学运算SELECT last_name, (SYSDATE
48、-hire_date)/7 AS WEEKSFROM empWHERE deptno = 30;日期函数两个日期相差的月数MONTHS_BETWEENADD_MONTHSNEXT_DAYLAST_DAYROUNDTRUNC 向指定日期中加上若干月数指定日期的下一个日期本月的最后一天日期四舍五入 日期截断函数描述转换函数隐性显性数据类型转换隐式数据类型转换Oracle 自动完成下列转换:VARCHAR2 or CHAR源数据类型目标数据类型VARCHAR2 or CHARNUMBERDATENUMBERDATEVARCHAR2VARCHAR2隐式数据类型转换表达式计算中, Oracle 自动完成
49、下列转换:VARCHAR2 or CHAR源数据类型目标数据类型VARCHAR2 or CHARNUMBERDATE显式数据类型转换NUMBERCHARACTERTO_CHARTO_NUMBERDATETO_CHARTO_DATETO_CHAR 函数对日期的转换格式:必须包含在单引号中而且大小写敏感。可以包含任意的有效的日期格式。可以使用 fm 去掉多余的空格或者前导零。日期之间用逗号隔开。TO_CHAR(date, format_model)YYYY日期格式的元素YEARMMMONTHDYDAY2004TWO THOUSAND AND FOUR02MONMONDAYJULYMONJULDD02TO_CHAR 函数对日期的转换SELECT last_name, TO_CHAR(hire_date, fmDD Month YYYY)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于生成式人工智能的智能教学系统在物理实验中的应用教学研究课题报告
- 2025年化妆品细胞成分十年技术报告
- 2025贵州茅台酒厂(集团)技术开发有限公司第二次社会招聘(10人)笔试历年参考题库附带答案详解
- 2025贵州安顺市紫云自治县惠信物业管理有限责任公司招聘1人笔试历年参考题库附带答案详解
- 2025贵州亚疆建筑工程有限公司招聘4人笔试历年参考题库附带答案详解
- 2025西安水务(集团)有限责任公司应聘人员综合笔试历年参考题库附带答案详解
- 2025莆田市秀屿区石南轮渡有限公司招聘船长(编外合同制)2名笔试历年参考题库附带答案详解
- 2025秋季四川成都轨道交通集团有限公司“蓉漂人才荟”专场校园招聘15人笔试历年参考题库附带答案详解
- 2025福建福州建工福厝置业有限责任公司第二批招聘10人笔试历年参考题库附带答案详解
- 2025年福建联通10010客服中心招聘100人笔试历年参考题库附带答案详解
- 2026云南黄金矿业集团股份有限公司第一次招聘工作人员13人笔试参考题库及答案详解
- 2026广东广州市海珠区凤阳街道第二批招聘雇员3人笔试模拟试题及答案详解
- (2026年)如何做好艾滋病患者的全程管理课件
- AI在生物质能源与材料中的应用
- 眉山市东坡区招聘社区网格员真题附答案详解
- 前列腺问题常见表现阐释及护理建议
- 2026春小学美术冀美版(2024)三年级下册教案(附目录)
- 2026年小学生科学实验技能竞赛试题试卷考试及答案
- 2026年生物制药研发技术职称考试题库
- 老子清廉思想课件
- 充电桩工程施工方案 (一)
评论
0/150
提交评论