国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫MySQL(五):多表查詢

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)庫MySQL(五):多表查詢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

多表查詢

多表關系

項目開發(fā)中,在進行數(shù)據(jù)庫表結構設計時,會根據(jù)業(yè)務需求及業(yè)務模塊之間的關系,分析并設計表結構,由于業(yè)務之間相互關聯(lián),所以各個表結構之間也存在則會各種聯(lián)系。

一對多/多對一

  • 案例:部門與員工的關系
  • 關系:一個部門對應多個員工,一個員工對應一個部門
  • 實現(xiàn):在多的一方建立外鍵,指向一的一方的主鍵

多對多

  • 案例:學生與課程的關系
  • 關系:一個學生可以選修多門課程,一門課程也可以供多個學生選擇
  • 實現(xiàn):建立第三張中間表,中間表至少包含兩個外鍵,分別關聯(lián)兩方主鍵

一對一

  • 案例:用戶與用戶詳情的關系
  • 關系:一對一關系,多用于單表拆分,將一份表的基礎字段放在一張表中,其他詳情字段放在另一張表中,以提升操作效率
  • 實現(xiàn):在任意一方加入外鍵,關聯(lián)另外一方的主鍵,并且設置外鍵為唯一UNIQUE

笛卡爾積

A集合和B集合的所有組合情況;在多表查詢中,需要消除無效的笛卡爾積,只保留兩張表關聯(lián)部分的數(shù)據(jù)。

select * from tableA , tableB where tableA.字段 = tableB.字段

內連接

查詢兩張表交集部分的數(shù)據(jù),即下圖中綠色部分的數(shù)據(jù)

//隱式內連接
select 字段列表 from tableA , tableB where 條件列表;

//顯式內連接
select 字段列表 from tableA [inner] join tableB on 連接條件;

左外連接

查詢左表的所有數(shù)據(jù)和兩張表交集部分的數(shù)據(jù)。

右外連接

查詢右表的所有數(shù)據(jù)和兩張表交集部分的數(shù)據(jù)。

//左外連接
select 字段列表 from tableA left [outner] join tableB on 連接條件;

//右外連接
select 字段列表 from tableA right [outner] join tableB on 連接條件

-- 左外連接和右外連接是可以相互替換的,在需要在SQL語句中調整表結構的先后順序即可。在日常開發(fā)中更偏向于左外連接。

自連接

自己連接自己,把一張表連接查詢多次。

select 字段列表 from tableA 別名A join tableA 別名B on 連接條件 ... ;
-- 自連接查詢中,必須要為表起別名,要不然不清楚所指定的的條件、返回的字段屬于哪一張表的字段

聯(lián)合查詢

把多次查詢的結果合并起來,形成一個新的查詢結果集

select 字段列表 from 表A ...
	union [all]
	select 字段列表 from 表B ... ;
--! 如果多條查詢語句查詢出來的結果、字段數(shù)量不一致,在進行union [all]聯(lián)合查詢時,將會報錯。

# union 可以去除重復記錄結果
# union all 合并操作效率更高 

子查詢

在SQL語句中嵌套SELECT語句,稱為嵌套查詢/子查詢。SQL中允許多重嵌套。

標量子查詢
  1. 子查詢返回的結果是單個值(數(shù)字、字符串、日期等)
  2. 常用操作符:==、<>>、>=、<、<=
列子查詢
  1. 子查詢返回的結果是一列,可以是多行。
  2. 常用操作符:IN、NOT IN、ANYSOME、ALL
操作符 描述
IN 在指定的集合范圍之內,多選一
NOT IN 不在指定的集合范圍之內
ANY/SOME 子查詢返回列表中,有任意一個滿足即可
ALL 子查詢返回列表的所有值都必須滿足
行子查詢
  1. 子查詢返回的結果是一行,可以是多列
  2. 常用操作符:==、<>、>>=、<、<=
  3. 把返回的一行記錄中的多個字段的組合看作一個結果,等同于標量子查詢
表子查詢
  1. 子查詢返回的結果是多行多列。
  2. 常用操作符:IN
代碼示例
select * from emp where dept_id = (select id from dept where name = '銷售部');

select * from emp 
	where dept_id = (select id from dept where name = '銷售部' or name ='市場部');

select * from emp 
	where (salary, managerid) = (select salary, managerid from emp where name = '張無忌');

select * from emp 
	where (job, salary) in (select job, salary from emp where name='鹿仗客' or name = '宋遠橋');

select e.*, d.* 
	from (select * from emp where entrydate > '2006-01-01') e 
	left join dept d on e.dept_id = d_id;

數(shù)據(jù)庫MySQL(一):基礎知識
數(shù)據(jù)庫MySQL(二):DDL數(shù)據(jù)定義語言
數(shù)據(jù)庫MySQL(三):DML、DQL、DCL
數(shù)據(jù)庫MySQL(四):表中字段約束和外鍵約束
數(shù)據(jù)庫MySQL(五):多表查詢
數(shù)據(jù)庫MySQL(六):事務文章來源地址http://www.zghlxwxcb.cn/news/detail-718598.html

到了這里,關于數(shù)據(jù)庫MySQL(五):多表查詢的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【JaveWeb教程】(22) MySQL數(shù)據(jù)庫開發(fā)之多表查詢:內連接、外連接、子查詢 詳細代碼示例講解(最全面)

    【JaveWeb教程】(22) MySQL數(shù)據(jù)庫開發(fā)之多表查詢:內連接、外連接、子查詢 詳細代碼示例講解(最全面)

    1.1.1 數(shù)據(jù)準備 SQL腳本: 1.1.2 介紹 多表查詢:查詢時從多張表中獲取所需數(shù)據(jù) 單表查詢的SQL語句:select 字段列表 from 表名; 那么要執(zhí)行多表查詢,只需要使用逗號分隔多張表即可,如: select 字段列表 from 表1, 表2; 查詢用戶表和部門表中的數(shù)據(jù): 此時,我們看到查詢結果中包

    2024年01月22日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫——多表操作

    MySQL數(shù)據(jù)庫——多表操作

    在日常的數(shù)據(jù)庫使用過程中,我們處理的數(shù)據(jù)不只是單張表,而是需要我們同時處理多個表的數(shù)據(jù),那么今天我將為大家分享關于MySQL的多表操作。 在學習多表操作之前,我們需要知道有哪些多表關系:一對一關系、一對多關系/多對一關系、多對多關系。 一對一關系是指一

    2024年02月14日
    瀏覽(21)
  • MySQL數(shù)據(jù)庫——MySQL WHERE:條件查詢數(shù)據(jù)

    在 MySQL 中,如果需要有條件的從數(shù)據(jù)表中查詢數(shù)據(jù),可以使用?WHERE?來指定查詢條件。 使用 WHERE 的語法格式如下: WHERE 查詢條件 查詢條件可以是: 帶比較運算符和邏輯運算符的查詢條件 帶 BETWEEN AND 的查詢條件 帶 IS NULL 的查詢條件 帶 IN

    2024年02月03日
    瀏覽(29)
  • MySQL數(shù)據(jù)庫實驗三 MySQL查詢

    一、實驗項目: MySQL查詢。 二、實驗目的 掌握MySQL的查詢操作。 三、實驗內容 (一): 1、查詢lineitem表中商品編號(productid)和單價(unitprice),要求消除重復行。 2、計算lineitem表中每條記錄的商品金額。 3、顯示orders表單筆高于200元的客戶號(userid)、成交金額(total

    2024年02月11日
    瀏覽(22)
  • 數(shù)據(jù)庫多表查詢

    數(shù)據(jù)庫多表查詢

    1、創(chuàng)建表格 2、插入數(shù)據(jù) 3.查詢student表的所有記錄 4.查詢student表的第2條到4條記錄 5.從student表查詢所有學生的學號(id)、姓名(name)和院系(department)的信息 6.從student表中查詢計算機系和英語系的學生的信息 7.從student表中查詢年齡18~22歲的學生信息 由于表中沒有年齡1

    2024年01月16日
    瀏覽(95)
  • MySQL數(shù)據(jù)庫基礎之MySQL查詢基礎

    MySQL數(shù)據(jù)庫基礎之MySQL查詢基礎

    從今天開始,本系列內容就帶各位小伙伴學習數(shù)據(jù)庫技術 。數(shù)據(jù)庫技術是Java開發(fā)中必不可少的一部分知識內容。也是非常重要的技術。本系列教程由淺入深, 全面講解數(shù)據(jù)庫體系。 非常適合零基礎的小伙伴來學習。 全文大約【 1212】 字,不說廢話,只講可以讓你學到技術、

    2024年02月06日
    瀏覽(31)
  • MySQL數(shù)據(jù)庫——MySQL SELECT:數(shù)據(jù)表查詢語句

    在?MySQL 中,可以使用 SELECT 語句來查詢數(shù)據(jù)。查詢數(shù)據(jù)是指從數(shù)據(jù)庫中根據(jù)需求,使用不同的查詢方式來獲取不同的數(shù)據(jù),是使用頻率最高、最重要的操作。 SELECT 的語法格式如下: 其中,各條子句的含義如下: {*|字段列名} 包含星號通配符的字段列表,表示所要查詢字段的

    2024年02月05日
    瀏覽(232)
  • 數(shù)據(jù)庫多表查詢作業(yè)

    數(shù)據(jù)庫多表查詢作業(yè)

    創(chuàng)建數(shù)據(jù)庫 插入數(shù)據(jù) 1.查詢student表的所有記錄 2.查詢student表的第2條到4條記錄 3.從student表查詢所有學生的學號(id)、姓名 (name)和院系(department)的信息 4.從student表中查詢計算機系和英語系的學生的信息 5.從student表中查詢年齡18~22歲的學生信息 6.從student表中查詢每個院

    2024年02月16日
    瀏覽(16)
  • 數(shù)據(jù)庫基礎——7.多表查詢

    數(shù)據(jù)庫基礎——7.多表查詢

    這篇文章來講一下數(shù)據(jù)庫中的多表查詢 目錄 1. 一個案例引發(fā)的多表連接 1.1 案例說明 1.2 笛卡爾積(或交叉連接)的理解 1.3 案例分析與問題解決 2. 多表查詢分類講解 2.1 等值連接 vs 非等值連接 2.1.1等值連接 2.1.2 非等值連接 2.2 自連接 vs 非自連接? 2.3 內連接 vs 外連接? 3.實

    2024年02月06日
    瀏覽(18)
  • MySQL數(shù)據(jù)庫,聯(lián)合查詢

    MySQL數(shù)據(jù)庫,聯(lián)合查詢

    目錄 1. 聯(lián)合查詢 1.1 內查詢 1.2 外查詢 1.3 自連接 1.4 子查詢 1.5 合并查詢 聯(lián)合查詢,簡單的來講就是多個表聯(lián)合起來進行查詢。這樣的查詢在我們實際的開發(fā)中會用到很多,因此會用 笛卡爾積 的概念。 啥是笛卡爾積?兩張表經(jīng)過笛卡爾積后得到的新表的列數(shù)是兩表列數(shù)之和

    2023年04月23日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包