MySQL中的各種查詢(xún)問(wèn)題
更新時(shí)間:2024年01月11日 16:04:11 作者:Mr-X~
這篇文章主要介紹了MySQL中的各種查詢(xún)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
MySQL中的各種查詢(xún)
基礎(chǔ)查詢(xún)




條件查詢(xún)
#語(yǔ)法:select 查詢(xún)列表 from 表名 where 篩選條件; #分類(lèi): # 一.按條件表達(dá)式篩選,條件運(yùn)算符:> < = != <> >= <= # 二.按邏輯表達(dá)式篩選,邏輯運(yùn)算符:&& || ! and or not # 三.模糊查詢(xún):like between and in is null # like一般和通配符搭配使用,%通配符表示任意多個(gè)字符包含0個(gè)字符 # _通配符表示任意單個(gè)字符


排序查詢(xún)
#語(yǔ)法: # select 查詢(xún)列表 from 表名 # [where 篩選條件] # order by 排序列表 [asc|desc] #其中asc表示升序排列,desc表示降序排列,如果不寫(xiě)默認(rèn)是asc升序排列

常見(jiàn)函數(shù)查詢(xún)

分組查詢(xún)
#語(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ù)




連接查詢(xún)
#創(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條

子查詢(xún)
#如果在一個(gè)sql查詢(xún)語(yǔ)句中出現(xiàn)了另外一個(gè)sql查詢(xún)語(yǔ)句,這就叫做子查詢(xún) # 子查詢(xún)出現(xiàn)的位置,記住兩個(gè)就可以了,一個(gè)是where后面,另一個(gè)是from后面,其中標(biāo)量子查詢(xún)和列子查詢(xún)都可以在where的后面,而表子查 詢(xún)必須是在from的后面,并且需要給這個(gè)表起別名 #按結(jié)果集的行列數(shù)不同,子查詢(xún)可以分為 # 標(biāo)量子查詢(xún)(結(jié)果集只有一行一列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)具體的數(shù)值) # 列子查詢(xún)(結(jié)果集有多行一列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)有多個(gè)值的集合) # 行子查詢(xún)(結(jié)果集只有一行多列) # 表子查詢(xún)(結(jié)果集有多行多列,其實(shí)這個(gè)子語(yǔ)句就相當(dāng)于一個(gè)表) #其中列子查詢(xún)必須要配合操作符使用,都有什么操作符呢? # in/not in 等于列表中的任意一個(gè)或不等于列表中的任意一個(gè) # any/some 此操作符必須要結(jié)合< > = !=等操作符使用,比如<any(列子查詢(xún)語(yǔ)句)表示:只要小于列子查詢(xún)結(jié)果的其中一個(gè)就行了,也即是 只要小于最大的就行了 # all 此操作符也必須要結(jié)合< > = !=等操作符使用,比如<all(列子查詢(xún)語(yǔ)句)表示:必須小于列子查詢(xún)結(jié)果中的所有值,也即是必須要小于 最小的
標(biāo)量子查詢(xún)的例子如下圖:

列子查詢(xún)的例子如下圖:


表子查詢(xún)的例子如下圖:

聯(lián)合查詢(xún)
# 關(guān)鍵字union # 聯(lián)合查詢(xún)可以將多條查詢(xún)語(yǔ)句的結(jié)果合并成一個(gè)結(jié)果 # 聯(lián)合查詢(xún)要求查詢(xún)結(jié)果的列數(shù)以及列的順序都要保持一致 # 使用union關(guān)鍵字默認(rèn)去重,如果使用union all則可以包含重復(fù)項(xiàng)


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用mss2sql工具將SqlServer轉(zhuǎn)換為Mysql全記錄
上篇文章我們講訴了在mssql數(shù)據(jù)轉(zhuǎn)換成mysql數(shù)據(jù)中,用Navicat Premium導(dǎo)入數(shù)據(jù)很完美,但是創(chuàng)建表的時(shí)候數(shù)據(jù)類(lèi)型轉(zhuǎn)換不是很完美,本文我們來(lái)講訴下用mss2sql工具來(lái)創(chuàng)建表,順便說(shuō)下導(dǎo)入數(shù)據(jù)2014-08-08
mysql數(shù)據(jù)庫(kù)中g(shù)etshell的方式總結(jié)
MySQL版本大于5.0,MySQL 5.0版本以上會(huì)創(chuàng)建日志文件,我們通過(guò)修改日志文件的全局變量,就可以GetSHELL,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫(kù)中g(shù)etshell的方式,需要的朋友可以參考下2022-07-07
MySQL數(shù)據(jù)脫敏的實(shí)現(xiàn)方法
本文主要介紹了MySQL數(shù)據(jù)脫敏的實(shí)現(xiàn)方法,包括字符替換、加密等方法,通過(guò)工具類(lèi)和數(shù)據(jù)庫(kù)服務(wù)整合,確保敏感信息在查詢(xún)結(jié)果中被掩碼處理,感興趣的可以了解一下2025-08-08
mysql 連接出現(xiàn)Public Key Retrieval is n
在MySQL連接中出現(xiàn)“Public Key Retrieval is not allowed”錯(cuò)誤,通常是因?yàn)樵谑褂冒踩捉幼謱樱⊿SL)連接時(shí)遇到了問(wèn)題,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下2024-03-03
關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾掉重復(fù)數(shù)據(jù)
這篇文章主要介紹關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾重復(fù)數(shù)據(jù),比如線上庫(kù)有6個(gè)表存在重復(fù)數(shù)據(jù),其中2個(gè)表比較大,96萬(wàn)+和30萬(wàn)+,因?yàn)橹疤幚磉^(guò)相同的問(wèn)題,就直接拿來(lái)了上次的Python去重腳本,腳本很簡(jiǎn)單,就是連接數(shù)據(jù)庫(kù),查出來(lái)重復(fù)數(shù)據(jù),循環(huán)刪除,需要的朋友可以參考下2021-09-09

