oracle数据库,查询到的结果怎样修改

oracle数据库,查询到的结果怎样修改,第1张

查询到的结果可用for update来修改。

如:

select  from emp;

查询到以下数据

此时语句可改写:

select  from emp for update;

然后点击如图图标:

此时可以修改表中内容,如将empno为8888的改成4444。按图中所示进行 *** 作即可。

nvl( ) 函数

语法:

NVL(eExpression1, eExpression2);

参数:

eExpression1, eExpression2。

如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。

eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 NULL。

NVL( string1, replace_with)。

功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值。

引申一下,此NVL的作用与SQLserver 中的 ISNULL( string1, replace_with) 一样。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数。

例:NVL(TO_CHAR(numeric_column), 'some string') 其中numeric_column代指某个数字类型的值。

例:nvl(yanlei777,0) > 0。

NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 则取 0值。

通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值。

扩展资料:

nvl函数例子:

select nvl(sum(tdwxhl),1)

from tb_jhde t。

就表示如果sum(tdwxhl) = NULL 就返回 1。

另一个有关的有用方法。

declare i integer。

select nvl(sum(tdwxhl),1) into i from tb_jhde t where zydm=-1这样就可以把获得的合计值存储到变量。i中,如果查询的值为null就把它的值设置为默认的1。

oracle中:

select nvl(rulescore,0) from zwjc_graderule where rulecode='FWTD';

如果记录中不存在rulecode ='FWTD'的数据则查不出数据。

select nvl(rulescore,0) into rule_score from zwjc_graderule where rulecode='FWTD';会报查不到数据的错。

select nvl(sum(rulescore),0) from zwjc_graderule where rulecode='FWTD';

如果记录中不存在rulecode ='FWTD'的数据还是可以得到一行列名为nvl(rulescore,0),值为0的数据。

select nvl(sum(rulescore),0) rule_score from zwjc_graderule where rulecode='FWTD'; 不会报错。

oracle数据库中函数较多,而且每个函数都有自己的用法,所以要根据具体的函数查询具体的使用方法,比如:

decode(条件,值1,返回值1,值2,返回值2,值n,返回值n,缺省值)

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

使用方法:

1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual;

--取较小值

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

例如:

变量1=10,变量2=20

则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

2、此函数用在SQL语句中,功能介绍如下:

Decode函数与一系列嵌套的

IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i

个compare项匹配,就返回第i 个对应的value

。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL

compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。

oracle数据库中函数怎么使用

创建函数(SQL窗口)

create or replace function get_stu_grade(stu_grade number) return number as

begin

declare standard_grade number;

begin

standard_grade:=stu_grade - 60;

if standard_grade < 0 then

return 0;

end if;

return 1;

end;

end get_stu_grade;

Oracle数据库 *** 作时如何使用LOWER()、UPPER()函数

Oracle LOWER() 和 UPPER()函数的使用方法一列返回行不区分大小写这是常见的做法,使列不区分大小写,以确保您所希望返回所有行。SELECT FROM COURSESWHERE LOWER(education_delivery_method) = 'classroom' 您可以使用Oracle的UPPER() or LOWER() 函数来在你的SQL选择格式列SELECTUPPER(FIRSTNAME) AS "FIRSTNAME",LASTNAMEFROM STUDENTSWHERE RowNum < 11 格式一列使用上下功能它可以使用与串()一起下的Oracle UPPER() or LOWER()函数函数来完成不同类型的格式。 SELECTUPPER(SUBSTR(LASTNAME,1,1)) || LOWER(SUBSTR(LASTNAME,2,29))FROM STUDENTSWHERE RowNum < 11更新一组行的变化情况它可以使用一个更新语句Oracle的 UPPER() or LOWER()函数一起使用,以改变“案“的一组行。 UPDATE STUDENTSSET LASTNAME = UPPER(LASTNAME)

数据库中的 NVL() 方法怎么用 ?

nvl(字段名,'判断字段如果为空的话这里填你想要替换的值')

nvl(字段,'NA')

意思如果字段为空则输出NA的字符串

数据库,用month()函数,怎样表达?

sql视图的话这样

select from 学生 where month(出生年月)=9

设计视图的话这样,表名你不用管,那是我自己的表名

SQL中如何调用一个函数啊

可以为函数的参数指定一个字符串

比如

SELECT [dbo][w_GetProdColor]('test')

也可以用字段作为参数,其实跟系统函数用法是一样的

SELECT [dbo][w_GetProdColor](列名)

FROM 表名

SQL中的CONVERT函数的用法是什么 15分

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID Style 格式

100 或者 0 mon dd yyyy hh:miAM (或者 PM)

101 mm/dd/yy

102 yymmdd

103 dd/mm/yy

104 ddmmyy

105 dd-mm-yy

106 dd mon yy

107 Mon dd, yy

108 hh:mm:ss

109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110 mm-dd-yy

111 yy/mm/dd

112 yymmdd

113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)

114 hh:mi:ss:mmm(24h)

120 或者 20 yyyy-mm-dd hh:mi:ss(24h)

121 或者 21 yyyy-mm-dd hh:mi:ssmmm(24h)

126 yyyy-mm-ddThh:mm:ssmmm(没有空格)

130 dd mon yyyy hh:mi:ss:mmmAM

131 dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())CONVERT(VARCHAR(10),GETDATE(),110) CONVERT(VARCHAR(11),GETDATE(),106)CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

一、主体不同

1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。

二、特点不同

1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。

2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。

三、功能不同

1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的 *** 作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。

2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。

参考资料来源:百度百科-Oracle存储过程

参考资料来源:百度百科-数据库函数

说明:数字函数的输入参数和返回值都是数字类型,并且多数函数精确到38位。可以在sql语句中直接使用,也可以在pl/sql块中使用。

精确到36位的函数:

Cos

cosh

exp

ln

log

sin

sinh

sqrt

tan

tanh

精确到30位的函数:

Acos

asin

atan

atan2

概述

今天主要分享下Oracle数据库分组函数group by 、 rollup、cude、grouping 、grouping sets的常用用法,以下以Oracle自带schema做演示。

1、group by的使用

--根据DEPTNO和JOB进行分组。求相同DEPTNO,相同JOB的员工工资总和。

SELECT EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY EDEPTNO,EJOB ORDER BY EDEPTNO;

2、group by 配合rollup的使用

rollup()--可以使用一个或者多个参数。意思是从右向左进行数据的汇总统计,并生成一行,rollup是个统计函数。

以下是根据分组情况进行统计,最终进行全部汇总。

(1)简单的使用rollup--生成一行新数据。(要生成新的一行数据,还可以使用UNION ALL)

SELECT DDUMMY FROM DUAL D GROUP BY ROLLUP(DDUMMY);

(2)先根据EDEPTNO,EJOB进行分组,然后从右向左

SELECT EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY ROLLUP(EDEPTNO,EJOB) ORDER BY EDEPTNO;

针对以上的使用ROLLUP的结果的理解:

a:首先根据GROUP BY EDEPTNO,EJOB查询出9条数据(除4,8,12,13外),在根据rollup的定义,从右向左,对ROLLUP中的参数进行小计

首先根据JOB(对所有的JOB进行汇总),汇总出4,8,12行,在根据EDEPTNO(对所有的DEPTNO进行汇总),汇总出第十三行数据。

(3) 特殊情况

SELECT EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY ROLLUP(EJOB,EDEPTNO) ORDER BY EDEPTNO;

理解:首先根据GROUP BY EDEPTNO,EJOB查询出前九条数据,其次对EDEPTNO进行汇总,但是必须考虑JOB,也就是相同的JOB,的所有的工资总和,所以出现下面五条数据。

3、group by 配合cube的使用

SELECT EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY CUBE(EDEPTNO,EJOB) ORDER BY EDEPTNO;

理解:CUBE会对条件中的每一个条件进行单独的汇总:即对单独的列进行汇总

GROUP BY CUBE(EDEPTNO,EJOB)首先根据:GROUP BY EDEPTNO,EJOB查询数据,其次对EJOB进行汇总(不考虑DEPTNO,单独汇总,而ROLLUP是在同一个DEPTNO下面)再对EDEPTNO进行汇总,最后全部汇总。

cube(a,b) 统计列包含:(a,b)、(a)、(b)、()

cube(a,b,c) 统计列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()

4、GROUPING 的使用

GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。

SELECT GROUPING(EDEPTNO), EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY ROLLUP(EDEPTNO,EJOB) ORDER BY EDEPTNO;

可以使用decode或者case函数进行转换这种不友好的显示:

SELECT

CASE WHEN grouping(EDEPTNO) = 1

THEN '总计'

ELSE EDEPTNO || ''

END AS 部门,

CASE WHEN grouping(EJOB) = 1 AND grouping(EDEPTNO) = 0

THEN '小计'

ELSE EJOB

END AS 工作种类,

SUM(ESAL) FROM EMP E GROUP BY ROLLUP(EDEPTNO,EJOB)

ORDER BY EDEPTNO;

SELECT DECODE(GROUPING(EDEPTNO), 1, '总计', EDEPTNO) AS 部门,

CASE

WHEN GROUPING(EJOB) = 1 AND GROUPING(EDEPTNO) = 0 THEN

'小计'

ELSE

EJOB

END AS 工作种类,

SUM(ESAL)

FROM EMP E

GROUP BY ROLLUP(EDEPTNO, EJOB)

ORDER BY EDEPTNO;

5、grouping sets提供了指定汇总集合条件的功能

根据EDEPTNO,EJOB分别汇总数据。

SELECT EDEPTNO,EJOB,SUM(ESAL) FROM EMP E GROUP BY GROUPING SETS(EDEPTNO,EJOB);

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

Oracle 提供两种加密方式:

a)加密 API 例如包 和 dbms_crypto 使用这些包,可以构建我们自己的基础架构,对数据进行加密。 这种方法的灵活性最强,但是构建和管理却相当复杂。

b)透明的数据加密是 Oracle 数据库 ;使用该特性后,就不必手动进行密码管理了。

数据库管理密码,但是正如名称所指,加密是透明的——数据仅仅以加密的方式存储而已。在Oracle10g中出现了dbms_crypto替代了之前的dbms_obfuscation_toolkit,DBMS_CRYPTO增加了若干新的加密算法、哈希算法。

DBMS_CRYPTO还撤销了对于public组的执行权限。

以上就是关于oracle数据库,查询到的结果怎样修改全部的内容,包括:oracle数据库,查询到的结果怎样修改、在oracle数据库中nvl()是什么函数、刚安装好oracle数据库怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10136207.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存