请高手帮我写几个oracle主从表的怎删改差,主表和从表的都要,主表的id是主键,从表的ID是外键。
请高手帮我写几个oracle主从表的怎删改差,主表和从表的都要,主表的id是主键,从表的ID是外键。写好了最好能解释下...
请高手帮我写几个oracle主从表的怎删改差,主表和从表的都要,主表的id是主键,从表的ID是外键。写好了最好能解释下
展开
2个回答
展开全部
设主表A主键K,从表B外键K 1、查询 Select A.*,B.* from A,B where A.K=B.K(+); 2、删除 先删除从表的记载,再删除主表的记载。 3、修正 若修正内容不触及主键和外键,则可以随意修正; 需求修正主键和外键,按以下步骤处置: a. 要先在主表中添加一行(主键)正确的记载; b. 修正从表的外键; c. 删除主表中(主键)错误的记载。
有很多人说 oracle的检索顺序是从后往前的, 可是我却觉得不是这么复杂的,oracle的查询优化器,会辨别对各段停止估量,哪段先检索,哪段停止关联... 我以为你这个sql select * from a where (id=1 or id =2 or id =3 or id=4) and id=4 在优化后,前一段 (id=1 or id =2 or id =3 or id=4) 应该就不会被执行了。 详细未测试。
=4是最高的 假如你id树立了索引就更好假如你的列确定就更好
特别推荐的网络问题执行下列命令语句 sqlplus / as sysdba <<EOF create tablespace test datafile '/data/test01.dbf' size 10240M; quit; EOF 经过ps -ef|grep sqlplus命令失掉下面所执行的命令的进程id为:12345 (1)关于v$process 执行上面的SQL是查不到相关的信息: select * from v$process where spid='12345';由于这个spid字段对应的并不是我们用ps命令从零碎中查询到的进程id,而是这个进程执行的以后SQL的进程id,也就是下面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所对应的进程id,假如想经过用ps命令从零碎中查询到的进程id检查对应的信息,那么必需运用上面语句: select spid,sid,process,sql_address from v$session where process='12345' 下面sql中的process就是经过ps检查的进程id,而spid就是外面的sql语句所对应的进程id。还可以经过下面的sql_address 检查正在执行的SQL语句内容: select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';
有很多人说 oracle的检索顺序是从后往前的, 可是我却觉得不是这么复杂的,oracle的查询优化器,会辨别对各段停止估量,哪段先检索,哪段停止关联... 我以为你这个sql select * from a where (id=1 or id =2 or id =3 or id=4) and id=4 在优化后,前一段 (id=1 or id =2 or id =3 or id=4) 应该就不会被执行了。 详细未测试。
=4是最高的 假如你id树立了索引就更好假如你的列确定就更好
特别推荐的网络问题执行下列命令语句 sqlplus / as sysdba <<EOF create tablespace test datafile '/data/test01.dbf' size 10240M; quit; EOF 经过ps -ef|grep sqlplus命令失掉下面所执行的命令的进程id为:12345 (1)关于v$process 执行上面的SQL是查不到相关的信息: select * from v$process where spid='12345';由于这个spid字段对应的并不是我们用ps命令从零碎中查询到的进程id,而是这个进程执行的以后SQL的进程id,也就是下面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所对应的进程id,假如想经过用ps命令从零碎中查询到的进程id检查对应的信息,那么必需运用上面语句: select spid,sid,process,sql_address from v$session where process='12345' 下面sql中的process就是经过ps检查的进程id,而spid就是外面的sql语句所对应的进程id。还可以经过下面的sql_address 检查正在执行的SQL语句内容: select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';
展开全部
设主表A主键K,从表B外键K
1、查询 Select A.*,B.* from A,B where A.K=B.K(+);
2、删除 先删除从表的记录,再删除主表的记录。
3、修改 若修改内容不涉及主键和外键,则可以随意修改;
需要修改主键和外键,按以下步骤处理:
a. 要先在主表中增加一行(主键)正确的记录;
b. 修改从表的外键;
c. 删除主表中(主键)错误的记录。
1、查询 Select A.*,B.* from A,B where A.K=B.K(+);
2、删除 先删除从表的记录,再删除主表的记录。
3、修改 若修改内容不涉及主键和外键,则可以随意修改;
需要修改主键和外键,按以下步骤处理:
a. 要先在主表中增加一行(主键)正确的记录;
b. 修改从表的外键;
c. 删除主表中(主键)错误的记录。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询