隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156353
          • 排名 - 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

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


          網站導航:
           
          主站蜘蛛池模板: 文水县| 泊头市| 宣汉县| 东海县| 阜南县| 麻城市| 五莲县| 阿瓦提县| 唐河县| 河西区| 茂名市| 甘德县| 高青县| 衡南县| 同德县| 临沧市| 凌源市| 五台县| 九江县| 汝城县| 汉川市| 临泽县| 天等县| 定陶县| 当阳市| 杭州市| 洛浦县| 安西县| 北海市| 朝阳市| 渝中区| 宁德市| 贵德县| 旌德县| 黔南| 东阿县| 墨脱县| 曲阳县| 蒙城县| 英德市| 加查县|