- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章SQL進階查詢.ppt
數位教材-資料庫系統設計與應用 關聯式查詢 關聯查詢 因為資料庫設計與正規化的原因,單一資料庫表格的查詢似乎比較少,反而因為正規化把在單一表格分割成兩個或兩個以上的表格,所以原本可以在原單一表格中查詢到的資料,現在必須透過兩個或兩個以上的表格查詢才能得到,這種跨表格的查詢稱為關聯查詢。 卡笛生乘積(Cartesian Product) 卡笛生乘積實際上就是一種無條件的關聯,這種操作往往會產生大量的資料列,其結果並沒有太大的意義。因此在相關的關聯操作時,往往會加上限制條件,再進行關聯運算。 兩個表格的“卡笛生乘積”形式 SELECT 欄位名11, 欄位名12,…, 欄位名1m , 欄位名21, 欄位名22,…, 欄位名2n, FROM 表格名1, 表格名2 等值關聯(Equal Join) SELECT … FROM 表格名1, 表格名2 WHERE 表格名1.欄位名1 = 表格名2.欄位名2; 非等值關聯 非等值關聯就是指關聯條件中不使用“ = ”運算子的關聯運算。非等值關聯能夠使用的比較運算子包括 != 、 、 、= 、= 、 BETWEEN… AND 和 LIKE 等。 自身關聯 自身關聯可以把一個表格看成兩個完全相同的表格 (副本),然後再對這兩個表格在相關欄位上進行關聯,其關聯方式與多表格關聯完全相同。 表格自身關聯 SELECT … FORM 表格名 表格別名1, 表格名 表格 別名2 WHERE 表格別名1.欄位名1 = 表格別名2.欄位名2; 其中:欄位名1 和 欄位名2 標記自關聯表中的兩個不同欄位,這兩個欄位要求有相同的資料型態和寬度。 子查詢 所謂子查詢是指在 WHERE 子句或 HAVING 子句的條件中出現的查詢。相對地,稱包含子查詢的查詢為父查詢或主查詢。因為子查詢使得一系列簡單查詢可以構成複雜的查詢,因此子查詢也稱為嵌套查詢。 子查詢-SELECT…FROM…WHERE SELECT … FROM 表格名 WHERE 欄位名或欄位運算式 比較運算子 (SELECT … FROM 表格名 WHERE 條件 ); 單一記錄值子查詢 此類子查詢只傳回單一記錄值,因此所有邏輯運算子 (如 >,=,< 等等) 都可以用。 多記錄值子查詢 此類子查詢傳回不是單一值而是一組資料列。這種查詢必須用多值比較運算子與主查詢相連繫。 [NOT] IN 表示 [不] 屬於某集合中成員的關係 [NOT IN 格式] SELECT ... FROM 表格名1 WHERE 表格名1.欄位名1 NOT IN (SELECT 表格名2.欄位名2 FROM 表格名2 WHERE 表格名2.欄位名3 = 運算式); 多欄位子查詢 子查詢中不但可以查出一個欄位的值,還可以查多個欄位。子查詢傳回欄位的個數及型態必須要與主查詢欄位的個數和型態匹配。 相關子查詢 相關子查詢是指子查詢的 WHERE 條件子句中有引用主查詢的查詢列。反之我們稱之不相關子查詢。 子查詢的其他用法 在 UPDATE 敘述中提供更新的值,或是為 WHERE 子句中提供進行比較的值。 UPDATE 表格名 SET (欄位名1, 欄位名2, …) = (SELECT 欄位名1, 欄位名2,… FROM 表格名 WHERE 條件 ) WHERE 欄位名或欄位運算式 比較運算子 (SELECT 欄位名 FROM 表格名 WHERE 條件); 在 DELETE 敘述的 WHERE 子句中提供進行比較的值。 DELETE FROM 表格名 WHERE 欄位名或欄位運算式 比較運算子 (SELETE 欄位名 FROM 表格名 WHERE 條件 ) ; 在 INSERT 敘述中提供插入的資料列
文档评论(0)