国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 大邑县| 六枝特区| 奉化市| 台湾省| 奉节县| 永城市| 图们市| 河西区| 衡东县| 滁州市| 团风县| 腾冲县| 教育| 黑山县| 宁晋县| 隆化县| 鞍山市| 南汇区| 阳城县| 奇台县| 芒康县| 阿拉善盟| 蓬溪县| 曲沃县| 南通市| 九江市| 当阳市| 白朗县| 和田县| 平陆县| 体育| 迁西县| 于田县| 大关县| 丽水市| 新巴尔虎左旗| 大邑县| 崇左市| 理塘县| 汽车| 澄江县|