心湖里的一條小魚——我的Java家園

          沒事就說(shuō)說(shuō)Java;有事就通過Java編程賺點(diǎn)生活費(fèi)。
          posts - 7, comments - 2, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2006年7月16日

          1,一個(gè)比較復(fù)雜的內(nèi)聯(lián)結(jié)查詢:??
          ?? 比如需要查詢雇員超過某個(gè)特定人數(shù)(比如四個(gè)人)的部門ID以及部門人數(shù)的查詢法,還是以Scott用戶下的dept和emp表為例:
          select count(d.deptno) as emp_count,d.deptno from dept d inner join emp e on d.deptno = e.deptno group by d.deptno having count(e.empno)>4;

          這里體現(xiàn)了那連接以及group by和having配合起來(lái)的用法。

          posted @ 2006-07-16 11:19 心湖里的一條魚 閱讀(284) | 評(píng)論 (0)編輯 收藏

          待寫

          posted @ 2006-07-16 11:13 心湖里的一條魚 閱讀(269) | 評(píng)論 (0)編輯 收藏

          2006年7月14日

          1,手工重新編譯視圖:
          ?? alter view emp_dept compile;
          2,手工重新編譯存儲(chǔ)過程和函數(shù);
          ??alter procedure p_prodname compile;
          3,手工重新編譯包:
          ???ALTER PACKAGE acct_mgmt COMPILE BODY;
          ??ALTER PACKAGE acct_mgmt COMPILE PACKAGE;

          posted @ 2006-07-14 15:32 心湖里的一條魚 閱讀(456) | 評(píng)論 (0)編輯 收藏

          約束延期是一個(gè)對(duì)主鍵、唯一鍵等約束進(jìn)行延遲檢查的功能??梢允褂迷摴δ軐⒓s束檢查延遲到事務(wù)提交時(shí),而不是在進(jìn)行DDL操作之后立即進(jìn)行檢查。所以對(duì)約束檢查也有這兩個(gè)選項(xiàng):延遲和立即。
          ?比如對(duì)于表t_test
          ?Name Type???????? Nullable Default Comments
          ---- ------------ -------- ------- --------
          NAME VARCHAR2(12) Y????????????????????????
          AGE? NUMBER(5)??? Y
          ????????????????????????

          通過這個(gè)語(yǔ)句增加一個(gè)延遲檢查的主鍵約束:
          alter table t_test add constraint pk_name primary key (name) DEFERRABLE INITIALLY DEFERRED;

          執(zhí)行如下操作:
          SQL>insert into t_test values ('Tom',32);

          1 row inserted

          SQL> commit;

          Commit complete

          SQL> select * from t_test;

          NAME??????????? AGE
          ------------ ------
          Tom??????? 32

          SQL> insert into t_test values ('Tom',32);

          1 row inserted

          SQL> commit;

          commit

          ORA-02091: 事務(wù)處理已重算
          ORA-00001: 違反唯一約束條件 (SCOTT.PK_NAME)


          這個(gè)唯一約束條件的檢查時(shí)在commit時(shí)候進(jìn)行檢查的,而不是在insert了違反約束條件的值之后馬上進(jìn)行檢查。

          posted @ 2006-07-14 14:41 心湖里的一條魚 閱讀(1328) | 評(píng)論 (1)編輯 收藏

          1,Oracle是可以通過視圖來(lái)修改Base table的。所謂base table就是用來(lái)構(gòu)建視圖的表,也就是視圖的數(shù)據(jù)來(lái)源表。但是這種修改是有條件的。比如:
          ???create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;
          ?? 如果有這個(gè)限制,那么通過視圖
          v_emp 插入數(shù)據(jù)的deptno字段的值必須是10,否則就會(huì)報(bào)“ORA-01402: 視圖 WITH CHECK OPTIDN 違反 where 子句”的異常。

          2,聯(lián)結(jié)視圖:
          ?? create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname?from emp e,dept d where e.deptno in (10,30) and e.deptno = d.deptno;
          ? 將兩個(gè)表的數(shù)據(jù)聯(lián)結(jié)起來(lái),看起來(lái)應(yīng)該是一個(gè)內(nèi)聯(lián)結(jié)(Inner joint)。
          ? 對(duì)于聯(lián)結(jié)視圖(Joint view)的修改規(guī)則稍顯復(fù)雜,設(shè)計(jì)到所謂key_preserved table的概念。通過聯(lián)結(jié)視圖來(lái)修改基表,只有那些key_preserved 的表才能被修改。上述創(chuàng)建視圖語(yǔ)句中emp和dept通過deptno進(jìn)行聯(lián)結(jié)構(gòu)成視圖時(shí),emp就是key_preserved 表,而dept不是。為什么?因?yàn)樵?font face="Courier New">dept1_staff
          中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通過該視圖來(lái)修改emp,而不能修改dept的數(shù)據(jù)。

          3,Oracle視圖非常強(qiáng)大的功能之一在于其可以創(chuàng)建一個(gè)帶有錯(cuò)誤的視圖。比如說(shuō)視圖里的字段在基表里不存在,該視圖仍然可以創(chuàng)建成功,但是非法的且無(wú)法執(zhí)行。當(dāng)基表里加入了該字段,或者說(shuō)某個(gè)字段修改成視圖里的該字段名稱,那么視圖馬上就可以成為合法的。這個(gè)功能很有意思。
          例子:
          ? 創(chuàng)建基表:?create table v_test (name varchar2(32),age number(12));
          ? 創(chuàng)建帶錯(cuò)誤的視圖:
          ?? create force view view_test as select name,age,address from v_test;(注意加上force選項(xiàng))
          ? 由于address字段在v_test里不存在,所以會(huì)報(bào)warning: View created with compilation errors的警告,而且執(zhí)行select * from view_test;時(shí)會(huì)報(bào)“ORA-04063: view "SCOTT.VIEW_TEST" 有錯(cuò)誤”的異常。
          但是如果在v_test里加上address字段,那么視圖就會(huì)合法。
          對(duì)基表進(jìn)行修改:
          ?alter table v_test add (address varchar2(128));

          現(xiàn)在再執(zhí)行select * from view_test;就會(huì)執(zhí)行成功了。

          posted @ 2006-07-14 10:37 心湖里的一條魚 閱讀(3219) | 評(píng)論 (1)編輯 收藏

          看Oracle的英文幫助文檔斷斷續(xù)續(xù)有4年時(shí)間了??傮w感覺是淺顯易懂,沒有多少深?yuàn)W的技術(shù)術(shù)語(yǔ)。所以建議對(duì)Oracle感興趣的哥們最好是看英文幫助文檔。最全面,最權(quán)威。這四年時(shí)間,經(jīng)歷了幾家公司,職位一直做到分管軟件研發(fā)的副總經(jīng)理(當(dāng)然不是很大公司),期間還要寫博士論文和博士答辯,兒子出生,畢業(yè)找工作,買房裝修房子,搬家。呵呵,一想起來(lái)這幾年過的還真是很充實(shí)?,F(xiàn)在是除了車沒有,其他該有的都有了。很滿足滴說(shuō)^_^。
          好了言歸正傳,前幾年寫了近50頁(yè)的Oracle學(xué)習(xí)筆記,在一次裝機(jī)子的過程中全丟了,傷心欲絕,不說(shuō)了。從現(xiàn)在開始,就借BlogJava的地兒,重新開始Oracle筆記的記錄。

          posted @ 2006-07-14 10:19 心湖里的一條魚 閱讀(261) | 評(píng)論 (0)編輯 收藏

          2005年12月30日

          ??????? 以前經(jīng)??磩e人寫B(tài)log,自己當(dāng)看客,現(xiàn)在自己也開始做博客了。首先說(shuō)一下名稱來(lái)源,心湖是我的一個(gè)杜撰,是我用來(lái)指代母校中央那個(gè)小水坑的,那個(gè)小水坑的樣子從圖書館或山上看像一個(gè)心臟的形狀,所以我給她取個(gè)名字叫心湖(好像也是從別人那里聽說(shuō)的,記不清了)。說(shuō)實(shí)話,我對(duì)母校的感情是非常矛盾的,我從她那里受到過傷害,也從她那兒得到過幸福和溫暖。但總是有一種割舍不了的情感,畢竟我和妻子是在這里認(rèn)識(shí)的,她也在這所學(xué)校任教。我希望自己永遠(yuǎn)是心湖里的一條小魚,自由遨游。于是我也將自己的博客取名“心湖的Java家園”。

          posted @ 2005-12-30 16:09 心湖里的一條魚 閱讀(222) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 扎鲁特旗| 南部县| 灵丘县| 泗阳县| 榆林市| 梁山县| 昆明市| 句容市| 平度市| 汕尾市| 岐山县| 金平| 麻栗坡县| 凌海市| 梅河口市| 北票市| 甘德县| 剑阁县| 宁德市| 娱乐| 区。| 甘孜县| 霞浦县| 马关县| 光泽县| 开江县| 锦州市| 胶州市| 姚安县| 永昌县| 辽宁省| 炎陵县| 河北区| 平顺县| 光山县| 峡江县| 洛宁县| 开阳县| 和平县| 蓝山县| 望谟县|