隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155532
          • 排名 - 390

          最新評論


          -- Author:Winty(天堂露珠)
          -- Date:2009-6-14
          use test;
          -- 創建表
          CREATE TABLE Student(
              sid VARCHAR(20),
              sname VARCHAR(50),
              cid VARCHAR(20),
              PRIMARY KEY(sid)
          );

          CREATE TABLE Course(
              cid VARCHAR(20),
              cname VARCHAR(50),
              PRIMARY KEY(cid)
          );

          INSERT INTO Student values('S001','張三','C100');
          INSERT INTO Student values('S002','李四','C200');
          INSERT INTO Student values('S003','王五','C300');
          -- C000是Course表中沒有的
          INSERT INTO Student values('S004','趙六','C000');

          INSERT INTO Course values('C100','操作系統');
          INSERT INTO Course values('C200','編譯原理');
          INSERT INTO Course values('C300','網絡安全');
          -- C400是Student表中沒有引用的
          INSERT INTO Course values('C400','軟件技術');


          -- 笛卡爾積
          SELECT * FROM Student , Course;
          /*
          結果
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C100 | 操作系統 |
          | S003 | 王五  | C300 | C100 | 操作系統 |
          | S004 | 趙六  | C000 | C100 | 操作系統 |
          | S001 | 張三  | C100 | C200 | 編譯原理 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C200 | 編譯原理 |
          | S004 | 趙六  | C000 | C200 | 編譯原理 |
          | S001 | 張三  | C100 | C300 | 網絡安全 |
          | S002 | 李四  | C200 | C300 | 網絡安全 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          | S004 | 趙六  | C000 | C300 | 網絡安全 |
          | S001 | 張三  | C100 | C400 | 軟件技術 |
          | S002 | 李四  | C200 | C400 | 軟件技術 |
          | S003 | 王五  | C300 | C400 | 軟件技術 |
          | S004 | 趙六  | C000 | C400 | 軟件技術 |
          +------+-------+------+------+----------+
          */


          -- 自然連接:NATURAL JOIN
          SELECT * FROM Student NATURAL JOIN Course;
          /*
          結果:
          +------+------+-------+----------+
          | cid  | sid  | sname | cname    |
          +------+------+-------+----------+
          | C100 | S001 | 張三  | 操作系統 |
          | C200 | S002 | 李四  | 編譯原理 |
          | C300 | S003 | 王五  | 網絡安全 |
          +------+------+-------+----------+
          */


          -- 內連接:INNER JOIN
          SELECT * FROM Student s INNER JOIN Course c ON s.cid=c.cid;
          /*
          結果:
          +------+------+-------+----------+
          | cid  | sid  | sname | cname    |
          +------+------+-------+----------+
          | C100 | S001 | 張三  | 操作系統 |
          | C200 | S002 | 李四  | 編譯原理 |
          | C300 | S003 | 王五  | 網絡安全 |
          +------+------+-------+----------+
          */

          -- 與使用INNER JOIN結果類似,但包含重復列(cid)
          SELECT * FROM Student s , Course c WHERE s.cid=c.cid;
          /*
          結果:
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          +------+-------+------+------+----------+
          */


          -- 左外連接: LEFT OUTER JOIN
          SELECT * FROM Student AS s LEFT JOIN Course AS c ON s.cid=c.cid;
          /*
          結果:
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          | S004 | 趙六  | C000 | NULL | NULL     |
          +------+-------+------+------+----------+
          */


          -- 右外連接: RIGHT OUTER JOIN
          SELECT * FROM Student s RIGHT JOIN Course c ON s.cid=c.cid;
          /*
          結果:
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          | NULL | NULL  | NULL | C400 | 軟件技術 |
          +------+-------+------+------+----------+
          */


          -- FULL OUTER JOIN:用左右連接實現
          SELECT * FROM Student AS s LEFT JOIN Course AS c ON s.cid=c.cid
          UNION
          SELECT * FROM Student s RIGHT JOIN Course c ON s.cid=c.cid;
          /*
          結果
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          | S004 | 趙六  | C000 | NULL | NULL     |
          | NULL | NULL  | NULL | C400 | 軟件技術 |
          +------+-------+------+------+----------+
          */

          -- 交叉連接:CROSS JOIN
          -- 與SELECT * FROM Student
          SELECT * FROM Student CROSS JOIN Course;
          /*
          結果
          +------+-------+------+------+----------+
          | sid  | sname | cid  | cid  | cname    |
          +------+-------+------+------+----------+
          | S001 | 張三  | C100 | C100 | 操作系統 |
          | S002 | 李四  | C200 | C100 | 操作系統 |
          | S003 | 王五  | C300 | C100 | 操作系統 |
          | S004 | 趙六  | C000 | C100 | 操作系統 |
          | S001 | 張三  | C100 | C200 | 編譯原理 |
          | S002 | 李四  | C200 | C200 | 編譯原理 |
          | S003 | 王五  | C300 | C200 | 編譯原理 |
          | S004 | 趙六  | C000 | C200 | 編譯原理 |
          | S001 | 張三  | C100 | C300 | 網絡安全 |
          | S002 | 李四  | C200 | C300 | 網絡安全 |
          | S003 | 王五  | C300 | C300 | 網絡安全 |
          | S004 | 趙六  | C000 | C300 | 網絡安全 |
          | S001 | 張三  | C100 | C400 | 軟件技術 |
          | S002 | 李四  | C200 | C400 | 軟件技術 |
          | S003 | 王五  | C300 | C400 | 軟件技術 |
          | S004 | 趙六  | C000 | C400 | 軟件技術 |
          +------+-------+------+------+----------+
          */


          -- UNION
          SELECT * FROM Student WHERE sid='S001'
          UNION
          SELECT * FROM Student WHERE sid='S002';
          -- 與此等價
          SELECT * FROM Student WHERE sid='S001' OR sid='S002';
          /*
          結果
          +------+-------+------+
          | sid  | sname | cid  |
          +------+-------+------+
          | S001 | 張三  | C100 |
          | S002 | 李四  | C200 |
          +------+-------+------+
          */

          posted on 2009-06-17 22:31 天堂露珠 閱讀(225) 評論(0)  編輯  收藏 所屬分類: Database

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 同心县| 乡宁县| 离岛区| 白朗县| 茌平县| 甘洛县| 黔西县| 仪陇县| 神木县| 新安县| 永嘉县| 外汇| 中卫市| 元谋县| 武鸣县| 霞浦县| 墨脱县| 分宜县| 广汉市| 建平县| 来宾市| 晋宁县| 石景山区| 泾阳县| 桦南县| 尤溪县| 绥宁县| 大渡口区| 大厂| 故城县| 桐梓县| 天水市| 吉林省| 长兴县| 长沙市| 日照市| 南漳县| 浦江县| 丰镇市| 凤山市| 腾冲县|