国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL查詢入門(中篇)

2024-08-31 00:58:18
字體:
來源:轉載
供稿:網友
引言
在前篇文章中(SQL查詢入門(上篇),我對數據庫查詢的基本概念以及單表查詢做了詳細的解釋,本篇文章中,主要說明SQL中的各種連接以及使用范圍,以及更進一步的解釋關系代數法和關系演算法對在同一條查詢的不同思路。

多表連接簡介
在關系數據庫中,一個查詢往往會涉及多個表,因為很少有數據庫只有一個表,而如果大多查詢只涉及到一個表的,那么那個表也往往低于第三范式,存在大量冗余和異常。

因此,連接(Join)就是一種把多個表連接成一個表的重要手段.

比如簡單兩個表連接學生表(Student)和班級(Class)表,如圖: 
  

SQL查詢入門(中篇)

     進行連接后如圖:

    

SQL查詢入門(中篇)

     然后通過on后面的限制條件,只選擇那些StudentClassID和ClassID相等的列(上圖中劃了綠色的部分),最終,得到選擇后的表的子集

    

SQL查詢入門(中篇)

雖然上面連接后的表并沒有什么實際意義,但這里僅僅作為DEMO使用:-)

關系演算
上面笛卡爾積的概念是關系代數中的概念,而我在前一篇文章中提到還有關系演算的查詢方法.上面的關系代數是分布理解的,上面的語句推導過程是這樣的:“對表Student和Class進行內連接,匹配所有ClassID和StudentClassID相等行,選擇所有的列”

而關系演算法,更多關注的是我想要什么,比如說上面同樣查詢,用關系演算法思考的方式是“給我找到所有學生的信息,包括他們的班級信息,班級ID,學生ID,學生姓名”

用關系演算法的SQL查詢語句如下:

復制代碼 代碼如下:


SELECT *
FROM [Class] c
,
[Student] s
where c.ClassID=s.StudentClassID


當然,查詢后返回的結果是不會變的:

SQL查詢入門(中篇)

SQL查詢入門(中篇)



當我想執(zhí)行這樣一條查詢:給我取得所有學生的姓名和他們所屬的班級:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 竹溪县| 额敏县| 雅安市| 南宫市| 贺兰县| 信宜市| 临泽县| 淮北市| 洞头县| 增城市| 珠海市| 孝感市| 米脂县| 江安县| 宝鸡市| 惠来县| 福建省| 屯昌县| 青田县| 七台河市| 盐池县| 朝阳县| 三台县| 鄂伦春自治旗| 仪陇县| 昌都县| 泉州市| 项城市| 左贡县| 开鲁县| 寿阳县| 万源市| 探索| 高尔夫| 曲沃县| 台北县| 金溪县| 大厂| 通榆县| 额尔古纳市| 阿拉善盟|