最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL多表聯(lián)合查詢、連接查詢、子查詢的實現(xiàn)

 更新時間:2023年07月25日 10:24:16   作者:小賈-同志  
本文主要介紹了MySQL多表聯(lián)合查詢、連接查詢、子查詢的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

 【1】連接查詢

連接查詢的意義: 在用戶查看數(shù)據(jù)的時候,需要顯示的數(shù)據(jù)來自多張表.

內(nèi)連接查詢

內(nèi)連接查詢是最常見的連接查詢,內(nèi)連接查詢可以查詢兩張或兩張以上的表

內(nèi)連接:[inner] join:從左表中取出每一條記錄,去右表中與所有的記錄進行匹配: 匹配必須是某個條件在左表中與右表中相同最終才會保留結果,否則不保留.

基本語法:左表 [inner] join 右表 on 左表.字段 = 右表.字段;on表示連接條件: 條件字段就是代表相同的業(yè)務含義(如my_student.c_id和my_class.id)

當兩個表中存在相同意義的字段的時候,就可以通過該字段來連接查詢這兩個表,當該字段的值相同時就可以查出該記錄。

內(nèi)連接可以沒有連接條件: 沒有on之后的內(nèi)容,這個時候系統(tǒng)會保留所有結果。

例:

select a.id,a.name,a.sex,b.country,b.city,b.street 
from student a 
join addr b 
on a.addrid=b.addrid;

外連接查詢

以某張表為主,取出里面的所有記錄, 然后每條與另外一張表進行連接: 不管能不能匹配上條件,最終都會保留: 能匹配,正確保留; 不能匹配,其他表的字段都置空NULL。

左連接

left join: 左外連接(左連接), 以左表為主表基本語法: from 左表 left join 右表 on 左表.字段 = 右表.字段;

左表不管能不能匹配上條件,最終都會保留:能匹配,正確的保留; 若不能匹配,右表的字段都置NULL。

例:

select a.id,a.name,a.addrid,b.country,b.city
from student a left join addr b
on a.addrid=b.addrid;

右連接

right join: 右外連接(右連接), 以右表為主表基本語法: from 左表 right join 右表 on 左表.字段 = 右表.字段;右表不管能不能匹配上條件,最終都會保留:能匹配,正確的保留; 若不能匹配,左表的字段都置NULL。

例:

select a.id,a.name,a.addrid,b.country,b.city
from student a right join addr b
on a.addrid=b.addrid;

【2】聯(lián)合查詢

聯(lián)合查詢聯(lián)合查詢結果是將多個select語句的查詢結果合并到一塊因為在某種情況下需要將幾個select語句查詢的結果合并起來顯示。比如現(xiàn)在需要查詢兩個公司的所有員工的信息,這就需要從甲公司查詢所有員工信息,再從乙公司查詢所有的員工信息,然后將兩次的查詢結果進行合并。可以使用union和union all關鍵字進行操作

語法格式如下:

select 語句1
union[union 選項]
select 語句2
union|[union 選項]
select 語句n

其中union選項有兩個選項可選

  • all:表示無論重復都輸出
  • distinct: 去重(整個重復)(默認的)
select *from addr
union all
select *from addr;

select id,addrid 
from addr 
union all 
select id,addrid 
from student;

聯(lián)合查詢只要求字段一樣, 跟數(shù)據(jù)類型和順序無關

select id,addrid,sex,score 
from student 
union all 
select sex,addrid,id,score 
from student;

聯(lián)合查詢的意義:

  • 查詢同一張表,但是需求不同 如查詢學生信息, 男生身高升序, 女生身高降序
  • 多表查詢: 多張表的結構是完全一樣的,保存的數(shù)據(jù)(結構)也是一樣的.

聯(lián)合查詢order by的使用

在聯(lián)合查詢中: order by不能直接使用(不能出現(xiàn)兩次),需要對查詢語句使用括號才行;

select *from student 
where sex="woman" 
order by score
union
select *from 
student where sex="man" 
order by score;

這種情況是會報錯的。因為語句中不允許出現(xiàn)兩個order by。

select *from student where sex="woman" 
union
select *from student where sex="man" order by score;

如果是上邊這樣只出現(xiàn)一次他的意義就是等合并完成之后再進行排序就沒有任何意義了,因為又把前邊sex分好的類打亂了

(select *from student 
where sex="woman" 
order by score )
union
(select *from 
student where sex="man" 
order by score;)

這種方式的目的是為了讓兩個結果集先分別order by,然后再對兩個結果集進行union。但是你會發(fā)現(xiàn)這種方式雖然不報錯了,但是兩個order by并沒有產(chǎn)生最后的效果,所以應該改成如下:

select *from
(select *from student 
where sex="woman" 
order by score)student
union
select *from
(select *from student 
where sex="man" 
order by score)student ;

也就是說,order by不能直接出現(xiàn)在union的子句中,但是可以出現(xiàn)在子句的子句中。

【3】子查詢

通常我們在查詢的SQL中嵌套查詢,稱為子查詢。子查詢通常會使復雜的查詢變得簡單,但是相關的子查詢要對基礎表的每一條數(shù)據(jù)都進行子查詢的動作,所以當表單中數(shù)據(jù)過大時,一定要慎重選擇

帶in關鍵字的子查詢

使用in關鍵字可以將原表中特定列的值與子查詢返回的結果集中的值進行比較如果某行的特定列的值存在,則在select語句的查詢結果中就包含這一行。

例:查詢成績大于80的學生的所有信息,先在子查詢中查出成績大于80的結果集,然后將原成績表中的成績與結果集進行比較,如果存在,就輸出這條學生的記錄。

select *
from student 
where score in
(select score from student where score>80);

帶比較運算符的子查詢

如果可以確認子查詢返回的結果只包含一個單值,那么可以直接使用比較運算符連接子查詢。經(jīng)常使用的比較運算符包括等于(=)、不等于(<>或!=)、小于(<)、大于(>)、小于等于(<=)和大于等于(>=)。

select *
from student 
where score> 
(select score 
from scholarship
where dengji=1);

查詢獎學金等級為1的學生信息

帶exists的子查詢

exists: 是否存在的意思, exists子查詢就是用來判斷某些條件是否滿足(跨表),exists是接在where之后exists返回的結果只有0和1.

例:如果存在成績大于90的人則列出整個表的記錄

select *
from student 
where exists
(select *from student where score>90);

帶any關鍵字的子查詢

any關鍵字表示滿足其中的任意一個條件,使用any關鍵字時,只要滿足內(nèi)層查詢語句結果的的任意一個,就可以通過該條件來執(zhí)行外層查詢語句。

select *
from student 
where addrid<any
(select addrid 
from addr);

帶all關鍵字的子查詢

all和any剛好是相反的,all關鍵字表示滿足所有結果,使用all關鍵字,要滿足內(nèi)層查詢語句的所有結果,才可以通過該條件來執(zhí)行外層查詢語句。

select *
from student 
where addrid>all
(select addrid 
from addr);

到此這篇關于MySQL多表聯(lián)合查詢、連接查詢、子查詢的實現(xiàn)的文章就介紹到這了,更多相關MySQL多表聯(lián)合查詢、連接查詢、子查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!                                                          

相關文章

  • InnoDB存儲引擎中的表空間詳解

    InnoDB存儲引擎中的表空間詳解

    這篇文章主要介紹了InnoDB存儲引擎中的表空間詳解,表空間內(nèi)部,所有頁按照區(qū)extent為物理單元進行劃分和管理,extent由64個物理連續(xù)的頁組成,表空間可以理解為由一個個物理相鄰的extent組成,需要的朋友可以參考下
    2023-09-09
  • linux系統(tǒng)中使用openssl實現(xiàn)mysql主從復制

    linux系統(tǒng)中使用openssl實現(xiàn)mysql主從復制

    在MySQL的主從復制中,其傳輸過程是明文傳輸,并不能保證數(shù)據(jù)的安全性,今天我們就來討論下linux系統(tǒng)中使用openssl實現(xiàn)mysql主從復制,有需要的小伙伴可以參考下
    2016-11-11
  • mysql用戶創(chuàng)建與授權的簡單實例

    mysql用戶創(chuàng)建與授權的簡單實例

    MySQL等主流數(shù)據(jù)庫的最高權限一般是root用戶,有時我們需要提供數(shù)據(jù)庫的賬號和密碼以使用某些服務,下面這篇文章主要給大家介紹了關于mysql用戶創(chuàng)建與授權的相關資料,需要的朋友可以參考下
    2022-03-03
  • mysql查詢當天的數(shù)據(jù)

    mysql查詢當天的數(shù)據(jù)

    這篇文章主要介紹了mysql查詢當天的數(shù)據(jù),第一種數(shù)量小的時候用,數(shù)據(jù)量稍微起來巨慢,第二種速度快,但是最好配合復合索引來查,避免全表掃描,需要的朋友可以參考下
    2023-08-08
  • MySQL數(shù)據(jù)庫索引與事務從基礎到實踐指南

    MySQL數(shù)據(jù)庫索引與事務從基礎到實踐指南

    本文全面介紹了MySQL索引與事務的關鍵知識,索引通過提升查詢效率,降低寫操作開銷,確保數(shù)據(jù)一致性,合理創(chuàng)建和維護索引,選擇合適的隔離級別,是優(yōu)化數(shù)據(jù)庫性能和保障數(shù)據(jù)一致性的關鍵,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MySQL慢日志輸出問題及快速解決方法

    MySQL慢日志輸出問題及快速解決方法

    文章介紹了MySQL慢日志輸出問題的原因和解決方法,慢日志記錄了執(zhí)行時間超過設定閾值的SQL語句,但有時即使查詢時間小于閾值,未使用索引的查詢也會被記錄,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 超詳細MySQL8.0.22安裝及配置教程

    超詳細MySQL8.0.22安裝及配置教程

    這篇文章主要介紹了超詳細MySQL8.0.22安裝及配置教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • mysql表分區(qū)的方式和實現(xiàn)代碼示例

    mysql表分區(qū)的方式和實現(xiàn)代碼示例

    通俗地講表分區(qū)是將一個大表,根據(jù)條件分割成若干個小表,下面這篇文章主要給大家介紹了關于mysql表分區(qū)的方式和實現(xiàn)代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • MySql 5.7.21免安裝版本win10下的配置方法

    MySql 5.7.21免安裝版本win10下的配置方法

    這篇文章主要介紹了MySql 5.7.21免安裝版本win10下的配置方法,本文圖文并茂給大家介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • MySQL用戶與權限的管理詳解

    MySQL用戶與權限的管理詳解

    這篇文章主要介紹了MySQL用戶與權限的管理,詳細分析了mysql用戶密碼、權限設置與使用相關操作原理及注意事項,需要的朋友可以參考下
    2019-07-07

最新評論

栾城县| 吕梁市| 会同县| 平和县| 都兰县| 闸北区| 卢氏县| 兴义市| 五河县| 广丰县| 连平县| 台前县| 商丘市| 弋阳县| 泽州县| 云安县| 宁乡县| 黄山市| 沙河市| 清涧县| 自治县| 宁城县| 米脂县| 墨玉县| 开平市| 历史| 怀来县| 红桥区| 河南省| 永善县| 绥滨县| 宁强县| 绵阳市| 成安县| 晋州市| 黄浦区| 南丹县| 嵊州市| 贡嘎县| 邵武市| 启东市|