<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Oracle9i的簡化SQL語法

    Posted on 2007-09-07 15:31 semovy 閱讀(223) 評論(0)  編輯  收藏 所屬分類: Oracle數(shù)據(jù)庫方面

    Oracle9i的簡化SQL語法

    Oracle對Oracle9i SQL 做了一些很重要的改進(jìn),包括一些令人興奮的新特點(diǎn),支持1:5的數(shù)量級和ISO99中的SQL標(biāo)準(zhǔn)。作為Oracle的補(bǔ)充,它包括以下新的TABLE JOIN的句法結(jié)構(gòu):

    CROSS IN——它在兩個表格中創(chuàng)建了一個卡迪爾列,就象是在Oracle8i中沒寫WHERE時那樣。

    NATURAL JOIN——這是一個很有用的Oracle9i的句法,它通過從WHERE子句中移動連接標(biāo)準(zhǔn)來改善SQL的穩(wěn)定性

    USING子句——它可以通過名字來具體指定連接

    ON子句——這個句法允許在兩個表格中為連接具體指定欄目的名頭
    LEFT OUTER JOIN——它返回表格中左邊的行和右邊的數(shù)值,如果沒有搭配的行的話,則返回零

    RIGHT OUTER JOIN——它返回表格中右邊的行和左邊的數(shù)值,如果沒有搭配的行的話,則返回零

    FULL OUTER JOIN——它返回的是兩個表格中所有的行,用零填滿每一個空格。這在Oracle8i中則沒有相應(yīng)的此種句法

    大多數(shù)改進(jìn)都是為了讓那些非Oracle的請求以快速的進(jìn)入Oracle數(shù)據(jù)庫而引進(jìn)的,并且必須記住這些只是句法上的不同,ISO99標(biāo)準(zhǔn)并沒有給Oracle9i SQL帶來任何新的功能。

    The CROSS JOIN
    在Oracle中,CROSS JOIN產(chǎn)生了一個“卡迪爾的產(chǎn)物(Cartesian product)”,就象是在連接兩個表格時忘記加入一個WHERE子句一樣
    select last_name,dept_id
    from emp,depts;

    在Oracle9i中,我們使用CROSS JOIN 來達(dá)到相同的結(jié)果
    select last_name.dept_id
    from emp
    CROSS JOIN dept;

    NATURAL JOIN


    我喜歡NATURAL JOIN的原因在于它能夠通過在兩個表格中配對的欄目的名頭來自動的檢查join。它同時還簡化了Oracle9i SQL,由于where子句僅僅只能過濾謂語,當(dāng)然,NATURAL JOIN要求在每一個表格中的欄目的名字相同。很有意思的是,這種特性甚至在沒有主要的或是外來的關(guān)鍵詞作為參考是也能起作用

     

    Oracle8i,
    Select book_title, sum(quantity)
    From book, sales
    Where book.book_id = sales.book_id
    group by book_title;

    Oracle9i
    Select book_title, sum(quantity)
    from book
    natural join sales
    group by book_title;

    USING子句
    假如幾個欄目有同樣的名字,而你又不想用所有的這些欄目來連接的時候,你就可以用USING子句。在USING子句中所列的欄目的句子中不會有任何的修飾詞,包括where子句也不會有
    Oracle8i
    select dept_id, city
    from departments, locations
    where departments.location_id = location.location_id;

    Oracle9i
    select department_name, city
    from departments
    JOIN locations
    USING (location_id);

    ON子句
    ON子句被用于當(dāng)在兩個表格中的欄目名字不搭配時來連接表格。而連接條件就是where子句中的過濾條件
    Oracle8i
    select department_name, city
    from department, location
    where department.location_id = location.loc_id;

    Oracle9i
    select department_name, city
    from department d
    JOIN location l
    ON (d.location_id = l.id);

    易變的連接
    易變的連接就是兩個以上的表格被連接所用的。ISO SQL 1999標(biāo)準(zhǔn)通常假設(shè)表格從左至右連接,連接的條件是能夠?yàn)楝F(xiàn)在的連接或以前的與左邊的連接相關(guān)聯(lián)的欄目提供參考。
    Oracle8i
    select emp_id, city_name, dept_name
    from location l, department d, emp e
    where d.location_id = l.location_id
    and d.department_id = e.department_id;

    Oracle9i
    select emp_id, city_name, dept_name
    from locations l
    JOIN departments d ON (d.location_id = l.location_id)
    JOIN employees e ON (d.department_id = e.department_id);


    新的OUTER JOIN句法

     

    ISO99標(biāo)準(zhǔn)把復(fù)雜的加號從Oracle outer join中拿出去,并使得outer join SQL更容易理解。

    LEFT OUTER JOIN
    在LEFT OUTER JOIN中,會返回所有左邊表格中的行,甚至在被連接的表格中沒有可配對的欄目的情況下也如此。在下邊的例子中,返回了所有雇員的姓,甚至包括了那些沒有分配到部門的雇員。
    Oracle8i
    select last_name, dept_id
    from emp e, dept d
    where e.department_id = d.department_id(+);

    Oracle9i
    select last_name, dept_id
    from emp
    LEFT OUTER JOIN Dept
    ON e.dept_id = d.dept_id;

    RIGHT OUTER JOIN
    在RIGHT OUTER JOIN中返回的是表格中所有右邊的行,甚至在被連接的表格中沒有可配對的欄目的情況下也如此。在這個例子中,返回了所有部門的ID,包括那些沒有一個雇員的的部門。
    Oracle8i
    select last_name, d.dept_id
    from employees e, departments d
    where e.department_id(+) = d.department_id;

    Oracle9i
    select last_name, d.dept_id
    from employees e
    RIGHT OUTER JOIN departments d
    ON (e.department_id = d.department_id);


    總結(jié)

    ISO99標(biāo)準(zhǔn)是Oracle改進(jìn)SQL工具的另一個例子。NATURAL JOIN LEFT OUTER JOIN 和 RIGHT OUTER JOIN是這些改進(jìn)中最受歡迎的,它們分別簡化了SQL句法以及消除了對于復(fù)雜句法(比如+)的需要。

    主站蜘蛛池模板: 色老板亚洲视频免在线观| 国产免费内射又粗又爽密桃视频 | 亚洲一区在线观看视频| 女人张开腿等男人桶免费视频| 青青免费在线视频| 久久综合日韩亚洲精品色| 成人av免费电影| 好男人资源在线WWW免费| 亚洲小说图片视频| 亚洲日韩精品无码专区网站| 99爱在线观看免费完整版 | 三年片在线观看免费观看大全一| 亚洲一区二区三区高清在线观看| 亚洲综合精品网站在线观看| 91免费在线播放| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 成人免费无码大片a毛片软件 | 无码国产精品一区二区免费vr| 亚洲情A成黄在线观看动漫软件| 亚洲免费日韩无码系列| 国产乱子精品免费视观看片| 人人公开免费超级碰碰碰视频| 亚洲精品日韩专区silk| 不卡一卡二卡三亚洲| 成熟女人特级毛片www免费| 久久免费看少妇高潮V片特黄| 精品亚洲国产成人av| 亚洲成人黄色在线观看| 久久亚洲国产成人影院网站| 黄网址在线永久免费观看 | 国产又黄又爽胸又大免费视频 | 亚洲第一成年人网站| 国产亚洲色婷婷久久99精品91| 最近的免费中文字幕视频| 女人隐私秘视频黄www免费| 亚洲国产精品无码观看久久| 亚洲理论在线观看| 亚洲乱码一区二区三区在线观看 | 亚洲高清有码中文字| 亚洲最大成人网色| 亚洲精品你懂的在线观看|