婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Oracle數(shù)據(jù)庫(kù)中的級(jí)聯(lián)查詢(xún)、級(jí)聯(lián)刪除、級(jí)聯(lián)更新操作教程

Oracle數(shù)據(jù)庫(kù)中的級(jí)聯(lián)查詢(xún)、級(jí)聯(lián)刪除、級(jí)聯(lián)更新操作教程

熱門(mén)標(biāo)簽:慧營(yíng)銷(xiāo)crm外呼系統(tǒng)丹丹 開(kāi)發(fā)外呼系統(tǒng) 哪個(gè)400外呼系統(tǒng)好 地圖標(biāo)注養(yǎng)老院 山東crm外呼系統(tǒng)軟件 愛(ài)客外呼系統(tǒng)怎么樣 哈爾濱電話機(jī)器人銷(xiāo)售招聘 百度地圖標(biāo)注途經(jīng)點(diǎn) 圖吧網(wǎng)站地圖標(biāo)注

級(jí)聯(lián)查詢(xún)
在ORACLE 數(shù)據(jù)庫(kù)中有一種方法可以實(shí)現(xiàn)級(jí)聯(lián)查詢(xún)

select *    //要查詢(xún)的字段
from table    //具有子接點(diǎn)ID與父接點(diǎn)ID的表 
start with selfid=id  //給定一個(gè)startid(字段名為子接點(diǎn)ID,及開(kāi)始的ID號(hào))
connect by prior selfid=parentid  //聯(lián)接條件為子接點(diǎn)等于父接點(diǎn),不能反

這個(gè)SQL主要用于菜單的級(jí)聯(lián)查詢(xún),給一個(gè)父接點(diǎn)可以查出所有的子接點(diǎn)。及子接點(diǎn)的子接點(diǎn),一查到底,很實(shí)用。不過(guò)呢這個(gè)程序只能在oracle里面用,我目前還不知道在其它數(shù)據(jù)庫(kù)里是怎么調(diào)用的。等我找到了,再貼出來(lái)與大家分享。
這個(gè)程序,估計(jì)好多人看不明白,其實(shí)放了這么久我也一時(shí)沒(méi)看明白,重新測(cè)了一下,補(bǔ)充說(shuō)明一下,不然我下次又看不懂了。
以一個(gè)windows系統(tǒng)的菜單為例。我那一個(gè)這樣的表menu。
說(shuō)明:
mid:菜單的ID號(hào)
mname:菜單名稱(chēng)
mpid:菜單的
quickey:快捷鍵
validate:權(quán)限表(存放userid,或者角色id)

如果我想知道在“文件”菜單下有那些子菜單的話。我就可以這樣用這個(gè)SQL程序:

select * from menu
start with mid=1  
connect by prior mid=mpid;

這樣就可以把 “文件”里的子菜單全部列出來(lái)了。當(dāng)然實(shí)際應(yīng)用不會(huì)這么簡(jiǎn)單,如附加其實(shí)條件,尤其是權(quán)限管理,這時(shí)根據(jù)你的系統(tǒng)要求,是對(duì)個(gè)個(gè)驗(yàn)證,還是對(duì)角色驗(yàn)證,把這些人的ID放在validate這個(gè)字段里,組成一個(gè)字符串,N個(gè)ID用逗號(hào)隔開(kāi),(注意,在往數(shù)據(jù)庫(kù)保存時(shí)要注意對(duì)字符串處理一下,截取掉最后一個(gè)逗號(hào)這樣可以節(jié)省很多麻煩)

select * from menu
where validate in(……)
and mid in(
 select mid from menu //這里不能用*號(hào)了。
 start with mid=1  
 connect by prior mid=mpid;
)

最后再補(bǔ)充一點(diǎn)關(guān)于隨機(jī)查詢(xún)的代碼

select * from user order by sys_guid()

級(jí)聯(lián)刪除

Oracle在外鍵的刪除上有NO ACTION(類(lèi)似RESTRICT)、CASCADE和SET NULL三種行為。
下面以學(xué)生-班級(jí)為例說(shuō)明不同情況下的外鍵刪除,學(xué)生屬于班級(jí),班級(jí)的主鍵是學(xué)生的外鍵。
-- 班級(jí)表  

CRATE TABLE TB_CLASS 
( 
 ID NUMBER NOT NULL, --班級(jí)主鍵 
 NAME VARCHAR2(50), --班級(jí)名稱(chēng) 
 CONSTRAINT PK_TB_CLASS PRIMARY KEY (ID) 
); 

 
-- 學(xué)生表  

CREATE TABLE TB_STUDENT 
( 
 ID  NUMBER NOT NULL, --學(xué)生主鍵 
 NAME  VARCHAR2(50),  --學(xué)生姓名 
 CLASS_ID NUMBER,   --學(xué)生所屬班級(jí),外鍵 
 
 --主鍵約束 
 CONSTRAINT PK_TB_STUDENT PRIMARY KEY (ID), 
 
 --外鍵約束 
 --設(shè)置級(jí)聯(lián)刪除為NO ACTION 
 CONSTRAINT FK_TB_STUDENT_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES TB_CLASS (ID) 
); 

 
-- 添加班級(jí)數(shù)據(jù)  

INSERT INTO TB_CLASS (ID, NAME) VALUES (1, '一班'); 
INSERT INTO TB_CLASS (ID, NAME) VALUES (2, '二班'); 
INSERT INTO TB_CLASS (ID, NAME) VALUES (3, '三班'); 

 
-- 添加學(xué)生數(shù)據(jù) 

INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (1, '小明', 1); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (2, '小剛', 1); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (3, '小王', 1); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (4, '二明', 2); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (5, '二剛', 2); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (6, '二王', 2); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (7, '大明', 3); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (8, '大剛', 3); 
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (9, '大王', 3); 

初始班級(jí)數(shù)據(jù)

初始學(xué)生數(shù)據(jù)

NO ACTION:

NO ACTION指當(dāng)刪除主表中被引用列的數(shù)據(jù)時(shí),如果子表的引用列中包含該值,則禁止該操作執(zhí)行。
現(xiàn)在學(xué)生外鍵級(jí)聯(lián)刪除是NO ACTION,執(zhí)行刪除班級(jí)操作。

--刪除三班 

DELETE FROM TB_CLASS WHERE ID=3; 

Oracle會(huì)提示違反完整性約束,如圖所示。

如果想要?jiǎng)h除三班,必須先刪除三班的學(xué)生。
--刪除三班學(xué)生 

DELETE FROM TB_STUDENT WHERE CLASS_ID=3; 

--刪除三班 

DELETE FROM TB_CLASS WHERE ID=3; 

SET NULL:

SET NULL指當(dāng)刪除主表中被引用列的數(shù)據(jù)時(shí),將子表中相應(yīng)引用列的值設(shè)置為NULL值。SET NULL有個(gè)前提就是外鍵引用列必須可以設(shè)置為NULL。
把學(xué)生表(TB_STUDENT)的外鍵刪除行為改為SET NULL。ORACLE似乎沒(méi)有MODIFY CONSTRAINT操作,只能先刪除外鍵,然后創(chuàng)建新的。

--刪除學(xué)生表(TB_STUDENT)表的外鍵 

ALTER TABLE TB_STUDENT DROP CONSTRAINT FK_TB_STUDENT_CLASS_ID; 

--刪除添加ON DELETE SET NULL外鍵  

 
復(fù)制代碼 代碼如下:

ALTER TABLE TB_STUDENT ADD CONSTRAINT FK_TB_STUDENT_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES TB_CLASS (ID) ON DELETE SET NULL; 

--刪除一班 
DELETE FROM TB_CLASS WHERE ID=1; 

由于外鍵的ON DELETE是SET NULL,所以當(dāng)刪除一班時(shí),一班學(xué)生的CLASS_ID被設(shè)置為NULL,如圖所示。

CASCADE

CASCADE指當(dāng)刪除主表中被引用列的數(shù)據(jù)時(shí),級(jí)聯(lián)刪除子表中相應(yīng)的數(shù)據(jù)行。
把學(xué)生表(TB_STUDENT)的外鍵刪除行為改為CASCADE。

--刪除TB_STUDENT表上的NO ACTION外鍵 

ALTER TABLE TB_STUDENT DROP CONSTRAINT FK_TB_STUDENT_CLASS_ID; 

--刪除添加ON DELETE CASCADE外鍵  

ALTER TABLE TB_STUDENT ADD CONSTRAINT FK_TB_STUDENT_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES TB_CLASS (ID) ON DELETE CASCADE; 

 
--刪除二班 

DELETE FROM TB_CLASS WHERE ID=2; 

由于外鍵的ON DELETE是CASCADE,所以當(dāng)刪除二班時(shí),二班下的學(xué)生也會(huì)被刪除。


級(jí)聯(lián)更新

Oracle本身并不支持外鍵的級(jí)聯(lián)更新,不過(guò)可以按照如下方法達(dá)到級(jí)聯(lián)更新的效果。
首先要先了解Oracle延遲約束和非延遲約束。非延遲約束就是在修改記錄的時(shí)候會(huì)立刻進(jìn)行約束條件的查看,是否因?yàn)檫`反了某些約束條件而不能執(zhí)行修改。延遲約束不會(huì)在剛進(jìn)行修改的時(shí)候進(jìn)行約束查看,只有提交的時(shí)候才會(huì)檢查。Oracle的級(jí)聯(lián)更新就是使用這個(gè)特性來(lái)實(shí)現(xiàn)的。
Oracle的外鍵默認(rèn)是非延遲約束,修改學(xué)生的外鍵為延遲約束。

--刪除學(xué)生表(TB_STUDENT)上的已有外鍵 

ALTER TABLE TB_STUDENT DROP CONSTRAINT FK_TB_STUDENT_CLASS_ID; 

--添加延遲約束外鍵 

ALTER TABLE TB_STUDENT ADD CONSTRAINT FK_TB_STUDENT_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES TB_CLASS (ID) ON DELETE CASCADE DEFERRABLE; 

設(shè)置觸發(fā)器,當(dāng)班級(jí)表(TB_CLASS)的主鍵改變了,就更新學(xué)生表(TB_STUDENT)的外鍵(CLASS_ID)。

CREATE OR REPLACE TRIGGER TGR_TB_CLASS_UPDATE 
AFTER UPDATE OF ID ON TB_CLASS 
FOR EACH ROW 
BEGIN 
 IF :OLD.ID>:NEW.ID THEN 
 UPDATE TB_STUDENT SET CLASS_ID=:NEW.ID WHERE CLASS_ID=:OLD.ID; 
 END IF; 
END; 

注意:
Oracle外鍵級(jí)聯(lián)更新方法可以用于外鍵和外鍵引用的主鍵在不同表上。不過(guò)會(huì)經(jīng)常遇到以下情況,就是在數(shù)據(jù)庫(kù)中保存具有層級(jí)關(guān)系的數(shù)據(jù)時(shí),表的外鍵引用同一個(gè)表的主鍵。這時(shí)候無(wú)法用觸發(fā)器實(shí)現(xiàn)級(jí)聯(lián)更新。

您可能感興趣的文章:
  • oracle數(shù)據(jù)庫(kù)的刪除方法詳解
  • Oracle刪除數(shù)據(jù)報(bào)ORA 02292錯(cuò)誤的巧妙解決方法
  • oracle 數(shù)據(jù)按主鍵刪除慢問(wèn)題的解決方法
  • Oracle刪除重復(fù)的數(shù)據(jù),Oracle數(shù)據(jù)去重復(fù)
  • Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復(fù)詳解
  • 徹底刪除Oracle數(shù)據(jù)庫(kù)的方法
  • oracle查詢(xún)重復(fù)數(shù)據(jù)和刪除重復(fù)記錄示例分享
  • oracle數(shù)據(jù)庫(kù)添加或刪除一列的sql語(yǔ)句
  • oracle 批量刪除表數(shù)據(jù)的幾種方法

標(biāo)簽:甘肅 青島 承德 開(kāi)封 固原 和田 周口 武漢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle數(shù)據(jù)庫(kù)中的級(jí)聯(lián)查詢(xún)、級(jí)聯(lián)刪除、級(jí)聯(lián)更新操作教程》,本文關(guān)鍵詞  Oracle,數(shù)據(jù)庫(kù),中的,級(jí)聯(lián),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle數(shù)據(jù)庫(kù)中的級(jí)聯(lián)查詢(xún)、級(jí)聯(lián)刪除、級(jí)聯(lián)更新操作教程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Oracle數(shù)據(jù)庫(kù)中的級(jí)聯(lián)查詢(xún)、級(jí)聯(lián)刪除、級(jí)聯(lián)更新操作教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    美女www一区二区| 久久精品国产精品青草| 欧美精品一区二区三区在线 | 日韩不卡免费视频| 亚洲一区在线观看网站| 99国产精品久久久久久久久久| 久久精品亚洲麻豆av一区二区| 日本中文字幕一区| 色婷婷精品久久二区二区蜜臀av| 欧美极品美女视频| 成人免费视频一区| 亚洲国产高清aⅴ视频| 丁香婷婷深情五月亚洲| 欧美日韩免费观看一区二区三区| 亚洲综合久久av| 在线不卡a资源高清| www久久精品| 蜜桃精品在线观看| 国产一区三区三区| 国产精品视频一二三| 麻豆国产精品官网| 国产精品美女久久久久久2018 | 成人精品视频一区| 中文字幕乱码久久午夜不卡| 亚洲一区二区三区四区在线观看| 成人av免费在线播放| 亚洲乱码国产乱码精品精可以看| 日韩av电影免费观看高清完整版 | ...中文天堂在线一区| 制服丝袜日韩国产| 欧美日韩日本视频| 成人福利在线看| 亚洲精品少妇30p| 3d成人h动漫网站入口| 大白屁股一区二区视频| 亚洲成人一二三| 91麻豆免费观看| 日本亚洲免费观看| 天涯成人国产亚洲精品一区av| 亚洲视频一区二区免费在线观看| 亚洲欧洲日韩av| 欧美精品vⅰdeose4hd| 国产aⅴ综合色| 青青草97国产精品免费观看无弹窗版| 99re成人在线| 麻豆精品国产91久久久久久| 久久久www成人免费无遮挡大片 | 成人av在线电影| 一区二区三区欧美| 国产精品第五页| 亚洲免费在线播放| 亚洲免费观看在线视频| 久久亚洲综合色| 欧美一级夜夜爽| 不卡的电影网站| 成人国产精品免费观看动漫| 玖玖九九国产精品| 一区二区三区蜜桃| 亚洲国产精品国自产拍av| 色综合色综合色综合| 精品亚洲aⅴ乱码一区二区三区| 亚洲另类在线视频| 欧美片网站yy| 美女在线视频一区| 亚洲欧美日韩国产手机在线| 欧美不卡在线视频| 成人高清视频免费观看| 国产毛片精品视频| 视频一区视频二区在线观看| 一本大道久久a久久综合| av电影一区二区| 久久国产精品免费| 欧美日韩在线精品一区二区三区激情| 粉嫩av一区二区三区| 视频一区欧美日韩| 亚洲国产电影在线观看| 亚洲乱码一区二区三区在线观看| va亚洲va日韩不卡在线观看| 日本91福利区| 久久久精品综合| 欧美激情一区在线观看| 中文字幕一区二区三区精华液| 国产精品女主播av| 亚洲精选视频在线| 国产福利一区在线| 豆国产96在线|亚洲| 5月丁香婷婷综合| 在线不卡的av| 国产精品热久久久久夜色精品三区| 久久精品一级爱片| 国产精品国产精品国产专区不片| 国产精品成人免费| 久久久久久免费网| 亚洲一区二区三区四区在线观看| 国内精品久久久久影院薰衣草| 国产电影一区二区三区| 欧美日韩性生活| 欧美久久一二区| 亚洲欧洲精品一区二区三区不卡| 日韩国产在线观看一区| 久久99精品久久久久久国产越南| 一区二区在线观看视频| 国产精品99久久久久久久vr| 国产大片一区二区| 成人精品电影在线观看| 91啪亚洲精品| 亚洲精品一区二区精华| 三级欧美韩日大片在线看| 六月丁香综合在线视频| 成人丝袜18视频在线观看| 欧美日韩国产一区二区三区地区| 欧美肥妇bbw| 精品剧情在线观看| 综合自拍亚洲综合图不卡区| 亚洲免费在线观看视频| www.爱久久.com| 国产精品全国免费观看高清 | 国产精品亚洲视频| 99久久99久久综合| 日韩一区二区精品| 久久免费视频一区| 一区二区在线看| 91精品办公室少妇高潮对白| 欧美成人女星排行榜| 91精品国产色综合久久不卡蜜臀 | 色香蕉成人二区免费| 91九色最新地址| 亚洲一区二区视频在线观看| 欧美综合一区二区三区| 亚洲毛片av在线| 国产成人av资源| 国产精品欧美久久久久一区二区| 欧美精品一区二区三区视频| 蜜臀a∨国产成人精品| 精品国产91洋老外米糕| 美女视频免费一区| ww久久中文字幕| 99国产精品久久| 亚洲国产视频在线| 欧美高清www午色夜在线视频| 青青草原综合久久大伊人精品优势| 欧美性猛片xxxx免费看久爱| 首页国产欧美日韩丝袜| 久久九九影视网| 国产91对白在线观看九色| 亚洲免费资源在线播放| 欧美久久高跟鞋激| 激情综合五月天| 一区二区三区中文字幕精品精品| 欧美日本一道本在线视频| 蜜臀av在线播放一区二区三区| 日韩小视频在线观看专区| fc2成人免费人成在线观看播放 | 日本黄色一区二区| 午夜激情久久久| 国产精品久99| 91精品国产日韩91久久久久久| 国产一区日韩二区欧美三区| 亚洲精品乱码久久久久久黑人 | 自拍偷拍国产亚洲| 日韩欧美第一区| 色综合视频一区二区三区高清| 日本成人在线电影网| 一区二区三区四区视频精品免费 | 国产成人小视频| 国产91精品一区二区麻豆亚洲| 亚洲黄色免费电影| 国产视频在线观看一区二区三区| 欧美日韩成人在线| 99久久er热在这里只有精品15| 乱中年女人伦av一区二区| 一区二区三区中文免费| 国产欧美一区二区精品性色超碰| 欧美日韩精品一区二区三区蜜桃 | 亚洲精品水蜜桃| 久久精品人人做人人爽人人| 日韩欧美一级二级三级| 欧美日韩国产免费| 欧美性猛片aaaaaaa做受| 91蜜桃视频在线| 91蜜桃在线免费视频| 国产福利一区二区| 亚洲国产成人va在线观看天堂| 日韩欧美色综合网站| 在线观看视频欧美| 日韩1区2区3区| 六月丁香婷婷色狠狠久久| 国产高清成人在线| 在线亚洲一区二区| 日韩欧美国产午夜精品| 日本一区二区成人| 一区二区三区在线观看国产| 日韩av电影免费观看高清完整版| 蜜臀av一级做a爰片久久| 久久se这里有精品| 不卡一区在线观看| 色婷婷av久久久久久久| 欧美视频一区二区三区| 欧美顶级少妇做爰| 欧美一区二区视频在线观看 |