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

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

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

    posts - 110,  comments - 152,  trackbacks - 0

    第12章 聯結表

    聯結表多個表直接通過關系形成的。數據庫設計里面我們努力的把信息分解到多個表里面,表直接通過關系來聯系。
    看例子,這里不給表關系了,想想應該能看個大概:

    1.

    SELECT vend_name,prod_name,prod_price 
    FROM Vendors INNER JOIN Products 
    WHERE Vendors.vend_id = Products.vend_id;

    注意:Where語句是關鍵,沒有這個約束得到的只能是個笛卡爾積。

    2.

    SELECT cust_name,cust_contact 
    FROM Customers,Orders,OrderItems 
    WHERE Customers.cust_id = Orders.cust_id 
    AND OrderItems.order_num =Orders.order_num 
    AND prod_id ='RGA01';

    這個等價于下面這條SQL

    SELECT cust_name,cust_contact 
    FROM Customers 
    WHERE cust_id  IN ( SELECT cust_id 
                        FROM Orders
                        WHERE order_num IN (SELECT order_num 
                                            FROM OrderItems 
                                            WHERE prod_id='RGAO1' ));

    注意:關聯可以發生在多個表直接,表的數量沒有限制。但是,聯結表越多性能下降越快。
    大家可以是試試,聯結性能遠高于嵌套查詢。

     

    第13章 創建高級聯結

     

    自聯結:

    SELECT c1.cust_id , c1.cust_name,c1.cust_contact  
    FROM  Customers AS c1,Customers AS c2 
    WHERE c1.cust_name = c2.cust_name 
    AND c2.cust_contact ='Jim Jones';

    外部鏈接:左外部鏈接(左鏈接,left outer join ... on ,*=  ) 和 右外部鏈接(右鏈接,right out join ... on , =*); 這個應該N熟悉了。

     

    第14章 組合查詢

    1.組合查詢一般用在兩個地方:
    在單個查詢中,從不同的表類似的返回結構數據。
    對單個表執行多個查詢,按照單個查詢返回數據。

    2.其實where組合可以視為一種組合查詢。

    3.Union關鍵字,用于關聯兩個select查詢。但是每個查詢必須包含完全相同的列,表達式或聚集函數(不過各列的次序是不要求相同的)

    4.Union會從查詢結果中去除重復的結果,這個where組合的效果是一樣的。如果不愿意這樣,可以使用Union All 來關聯查詢。一般而言,Union都可以通過where來替代,但是Union All 有點特色,where替代不了。

    5.某些DBMS還提供了其他的類似Union的關鍵字,如Except(Minus):檢索第一個表中存在,而第二個表中不存在的行;Intersect:檢索兩個表中都存在的行,可用聯結來取代。

     

    第15章 插入數據

    日常開發中用的比較多,而且一般用的比較簡單。

    1.最基本的插入:Insert Into ... Values...

    2.插入檢索出來的數據:

    INSERT INTO Customers(cust_id,cust_contact,cust_email,cust_name)
     SELECT cust_id,cust_contact,cust_email,cust_name 
    FROM CustNew;

    注意:對應列的列名不要求一樣,但是類型至少是兼容的。
    SELECT子句可以使用Where加以修飾。

    3.從一個表復制到另一個表

    SELECT * INTO CustCopy FROM Customers;

    而Mysql寫法:

    CREATE TABLE CustCopy AS 
    SELECT * FROM Customers;

    這樣適合更合適表達這樣的意思。

     

    第16章 更新和刪除數據

    幾個好習慣:

    1.更新和刪除操作一定要記得設置合適的Where子句;

    2.實際操作前只好通過Select驗證Where子句是否正確。

    因為Sql里面是沒有undo操作的。

     

    第17章 創建和操作表

    1.創建表: CREATE TABLE tablename;
       刪除表: DROP TABLE tablename;
       更新表: ALERT TABLE tablename;
    具體的需要查詢手冊。

    2.重命名表:
    DB2, Mysql,Oracle和PostgreSQL可以使用RENAME語句;而SQL Server 和Sybase可以使用sp_rename存儲過程。

    3.復雜的更新表操作一般過程如下

    a.安裝新的列規范重建立新表,復制舊表數據到新表,并檢查新表所包含的數據
    b.重明白舊表,用舊表名字重命名新表,更加需要重新創建觸發器,存儲過程,索引和外鍵。



    平凡而簡單的人一個,無權無勢也無牽無掛。一路廝殺,只進不退,死而后已,豈不爽哉!
    收起對“車”日行千里的羨慕;收起對“馬”左右逢緣的感嘆;目標記在心里面,向前進。一次一步,一步一腳印,跬步千里。
    這個角色很適合現在的


    posted on 2007-11-28 14:36 過河卒 閱讀(917) 評論(0)  編輯  收藏 所屬分類: DataBase/Sql
    文章來自: http://www.blogjava.com/ponzmd/ (彭俊-過河卒) 轉貼請聲明!
    訪問統計:
    主站蜘蛛池模板: 久久久亚洲精品国产| heyzo亚洲精品日韩| 亚洲 自拍 另类小说综合图区| 国产免费看JIZZ视频| 国产一级高清免费观看| 少妇亚洲免费精品| 亚洲JIZZJIZZ妇女| 亚洲精品无码mⅴ在线观看| 天堂在线免费观看中文版| www免费黄色网| 香蕉大伊亚洲人在线观看| 亚洲一卡二卡三卡| 美腿丝袜亚洲综合| 青青草国产免费久久久91| 青柠影视在线观看免费高清| 国产精品免费在线播放| 精品一区二区三区免费观看| 一级毛片高清免费播放| fc2成年免费共享视频18| 日韩精品无码免费一区二区三区| 无码囯产精品一区二区免费| 国产免费丝袜调教视频| 国内永久免费crm系统z在线| 在线精品一卡乱码免费| 四虎永久成人免费| 亚洲精品tv久久久久久久久| 午夜私人影院免费体验区| 色久悠悠婷婷综合在线亚洲| 免费大黄网站在线观看| 亚洲国产高清美女在线观看| 亚洲伊人久久大香线蕉影院| 一级成人a做片免费| 大地资源二在线观看免费高清| 亚洲av午夜福利精品一区 | 一色屋成人免费精品网站| 99久久国产精品免费一区二区| 在线免费不卡视频| 亚洲一线产区二线产区精华| 日本免费污片中国特一级| 无人在线观看免费高清| 亚洲一级特黄大片无码毛片|