随便弄了条数据
--建表
create table score (id int,yw int,sx int,yy int,avg_score int);
--插入数据
insert into score values (1,90,80,88,null);
commit;
--建立函数
create FUNCTION avgscore
(v_id in int)
return int
is
i_temp int;
begin
select round((yw+sx+yy)/3) into i_temp from score where id=v_id;
return i_temp;
end;
--执行查询,调用函数avgscore
select avgscore(id) from score;
--也可以
select avgscore(1) from dual;
那个1就是你想查的学号的id
你自己看看吧
设关系R和S的属性个数分别为r和s则(RxS) *** 作结果的属性个数为_____,元组个数为____。
属性: r+s 这个看来你是毫无疑问了
元组:RxS-->元组的每个分量是有序排列。你分析得有道理,不是rs, 我觉得应该用迪卡尔乘积RXS写法来表示(不管2个集合里面有多少元素,RXS就是代表RXS的笛卡尔积)。
如果非要追究到详细的行数,这题只能无解。
1 B 在二维表中行是记录,列是字段。在关系中行是元组,列是属性。
2A
3D
4A
5B
6C
7B
8C
9C 没有“通用”
10C
集合运算
这是一种二目运算,一共有四种四种运算符:并,差,交,笛卡尔积;
语法:
查询语句
[UNION | UNIONALL | INTERSECT | MINUS]
查询语句
UNION(并集)
返回若干个查询结果,但是重复的不显示
Eg:SELECT FROM dept
UNION
SELECTFROM dept WHERE deptno = 10;
注:查询 *** 作编写的过程中尽量使用UNION , UNION ALL代替 OR,提高查询速度;
例:
查询工作是销售和clerk的;
SELECT
FROM emp WHEREjob = ‘saleman’ or job = ‘clerk’;
另一种方式:
SELECT FROMemp WHERE job = ‘SALESMAN’
UNION
SELECT FROMemp WHERE job = ‘CLERK’;
UNION ALL(并集)
返回若干个查询结果,但是重复的也显示
Eg:SELECT FROM dept
UNION ALL
SELECTFROM dept WHERE deptno = 10;
MINUS(差集)
返回若干个结果中不同的部分;
Eg:SELECT FROM dept
MINUS
SELCTFROM dept WHERE deptno = 10;
INTERSECT(交集)
显示查询结果中相同的部分;
Eg:SELECT FROM dept
INTERSECT
SELCTFROM dept WHERE deptno = 10;
————————————————
数据字段被设置允许空,
默认值起作用
所,
插入数据时指定字段值,
其值肯定null
还有,
数据库字段运算,
null与任何值运算结都null,
点要切记
使用isnull函数指定其值null情况下取值:
update
tableName
set
num
=
isnull(num,
0)
+
接收数
where
id=XXX
也使用case
when来进行条件判断取值:
update
tableName
set
num
=
(
case
when
num
is
null
then
0
when
num
>
0
then
num
else
小于等于0情况下值
end
)
+
接收数
where
id=XXX
以上就是关于Oracle 数据库中,列之间计算的问题!最好给个列之间混合运算的例子。全部的内容,包括:Oracle 数据库中,列之间计算的问题!最好给个列之间混合运算的例子。、(学习中被鄙视)关于数据库 笛卡儿积的计算、Access数据库问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)