
查询到的结果可用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数据库怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)