MySQL中的各種查詢問(wèn)題
更新時(shí)間:2024年01月11日 16:04:11 作者:Mr-X~
這篇文章主要介紹了MySQL中的各種查詢問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
MySQL中的各種查詢
基礎(chǔ)查詢
條件查詢
#語(yǔ)法:select 查詢列表 from 表名 where 篩選條件; #分類: # 一.按條件表達(dá)式篩選,條件運(yùn)算符:> < = != <> >= <= # 二.按邏輯表達(dá)式篩選,邏輯運(yùn)算符:&& || ! and or not # 三.模糊查詢:like between and in is null # like一般和通配符搭配使用,%通配符表示任意多個(gè)字符包含0個(gè)字符 # _通配符表示任意單個(gè)字符
排序查詢
#語(yǔ)法: # select 查詢列表 from 表名 # [where 篩選條件] # order by 排序列表 [asc|desc] #其中asc表示升序排列,desc表示降序排列,如果不寫默認(rèn)是asc升序排列
常見(jiàn)函數(shù)查詢
分組查詢
#語(yǔ)法 # select 分組函數(shù),列(要求是出現(xiàn)在group by后面的列) # from 表 # [where 篩選條件] # group by 分組的列表 # [order by 子句] #常見(jiàn)的分組函數(shù) # sum求這組總和,avg求這組平均值,max求這組最大值,min求這組最小值,count計(jì)算這組數(shù)據(jù)總的個(gè)數(shù)
連接查詢
#創(chuàng)建表并插入數(shù)據(jù) create table a_table( a_id int, a_name varchar(20), a_age int ); create table b_table( b_id int, b_name varchar(20), b_age int ); insert into a_table values(1,"張大麻子",19), (2,"張二麻子",18), (7,"王大壯",19), (8,"劉鐵柱",20); insert into b_table values(1,"五個(gè)核桃",18), (2,"鐵牛",20), (4,"劉大柱子",19), (5,"母夜叉子",20);
內(nèi)連接
# 內(nèi)連接 # 關(guān)鍵字 inner join on # 其中inner關(guān)鍵字可以省略 # 篩選條件放在where后面,連接條件放在on后面,提高分離性 # 內(nèi)連接的結(jié)果只取兩個(gè)表的交集部分
外連接
#語(yǔ)法: # left (outer) join on # right (outer) join on #外連接中的outer關(guān)鍵字可以省略 #全外連接mysql不支持,暫時(shí)不必掌握 #外連接分為左外連接和右外連接,左外連接左邊的表是主表,右外連接右邊的表是主表 #外連接與內(nèi)連接不同的是:內(nèi)連接只會(huì)取兩個(gè)表的交集部分,而外連接會(huì)顯示出主表中的全部記錄,而另外一個(gè)非主表只會(huì)顯示出符合搜索條件的 # 記錄,其它的會(huì)用null代替
交叉連接
# 語(yǔ)法: # cross join #交叉連接其實(shí)就是求兩個(gè)表的笛卡爾積 #如果a表有m條記錄,b表有n條記錄,那么交叉連接之后,總的記錄就有m*n條
子查詢
#如果在一個(gè)sql查詢語(yǔ)句中出現(xiàn)了另外一個(gè)sql查詢語(yǔ)句,這就叫做子查詢 # 子查詢出現(xiàn)的位置,記住兩個(gè)就可以了,一個(gè)是where后面,另一個(gè)是from后面,其中標(biāo)量子查詢和列子查詢都可以在where的后面,而表子查 詢必須是在from的后面,并且需要給這個(gè)表起別名 #按結(jié)果集的行列數(shù)不同,子查詢可以分為 # 標(biāo)量子查詢(結(jié)果集只有一行一列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)具體的數(shù)值) # 列子查詢(結(jié)果集有多行一列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)有多個(gè)值的集合) # 行子查詢(結(jié)果集只有一行多列) # 表子查詢(結(jié)果集有多行多列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)表) #其中列子查詢必須要配合操作符使用,都有什么操作符呢? # in/not in 等于列表中的任意一個(gè)或不等于列表中的任意一個(gè) # any/some 此操作符必須要結(jié)合< > = !=等操作符使用,比如<any(列子查詢語(yǔ)句)表示:只要小于列子查詢結(jié)果的其中一個(gè)就行了,也即是 只要小于最大的就行了 # all 此操作符也必須要結(jié)合< > = !=等操作符使用,比如<all(列子查詢語(yǔ)句)表示:必須小于列子查詢結(jié)果中的所有值,也即是必須要小于 最小的
標(biāo)量子查詢的例子如下圖:
列子查詢的例子如下圖:
表子查詢的例子如下圖:
聯(lián)合查詢
# 關(guān)鍵字union # 聯(lián)合查詢可以將多條查詢語(yǔ)句的結(jié)果合并成一個(gè)結(jié)果 # 聯(lián)合查詢要求查詢結(jié)果的列數(shù)以及列的順序都要保持一致 # 使用union關(guān)鍵字默認(rèn)去重,如果使用union all則可以包含重復(fù)項(xiàng)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql實(shí)時(shí)備份實(shí)現(xiàn)方法
這篇文章主要介紹了Mysql實(shí)現(xiàn)實(shí)時(shí)備份,需要的朋友可以參考下2016-02-02Mysql中Row size too large (> 8126)&n
本文主要介紹了Mysql中Row size too large (> 8126) 錯(cuò)誤的問(wèn)題解決,原因?qū)嵅迦氲男袛?shù)據(jù)可能太大了,超過(guò)了設(shè)定的闕值,下面就來(lái)看一下如何解決2024-07-07mysql 存儲(chǔ)過(guò)程中變量的定義與賦值操作
昨天我們講了mysql存儲(chǔ)過(guò)程創(chuàng)建修改與刪除,下面我們這篇教程是講關(guān)于mysql存儲(chǔ)過(guò)程中變量的定義賦值操作哦。2010-05-05MySQL復(fù)制架構(gòu)的搭建及配置過(guò)程
這篇文章主要介紹了MySQL復(fù)制架構(gòu)的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02MySQL判別InnoDB表是獨(dú)立表空間還是共享表空間的方法詳解
這篇文章主要給大家介紹了關(guān)于MySQL判別InnoDB表是獨(dú)立表空間還是共享表空間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09