隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156400
          • 排名 - 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 天堂露珠 閱讀(230) 評論(0)  編輯  收藏 所屬分類: Database

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


          網站導航:
           
          主站蜘蛛池模板: 新源县| 天台县| 西平县| 巩留县| 黎平县| 黑河市| 枣强县| 嘉祥县| 东平县| 江门市| 湄潭县| 洪洞县| 福建省| 黄石市| 平乐县| 惠州市| 新兴县| 梧州市| 池州市| 昆山市| 肃北| 堆龙德庆县| 颍上县| 广宗县| 门源| 琼海市| 东兴市| 中阳县| 乃东县| 阳谷县| 福州市| 云南省| 龙门县| 松江区| 永顺县| 安康市| 自贡市| 右玉县| 资兴市| 平乐县| 太白县|