MySQL-9復(fù)雜操作-查詢

1.數(shù)據(jù)查詢

基本語(yǔ)法select 字段列表/* from 表名 [where 條件];

完整語(yǔ)法select [select 選項(xiàng)] 字段列表 [字段別名] / * from 數(shù)據(jù)源 [where 條件子句][group by 子句] [having 子句] [order by 子句] [limit 子句];

--1.select選項(xiàng) :select 對(duì)產(chǎn)出來(lái)的結(jié)果的處理方式

????????all(默認(rèn))晃听,保留所有的結(jié)果 select * from 表名 === select all * from 表名

? ? ? ? destinct扒接,去重 查出來(lái)的結(jié)果伐弹,將重復(fù)給去除(只發(fā)生在所有字段都相同的情況下)

distinct 的使用

2.字段別名 :當(dāng)數(shù)據(jù)進(jìn)行查詢時(shí)寨躁,有時(shí)候名字并不一定滿足需求(多表查詢是吼鱼,會(huì)有同名字段)劈伴,需要對(duì)字段名進(jìn)行重命名 :既別名

--1.as? :字段名 as 別名

--2.字段名 別名

添加查詢時(shí)添加別名的兩種方式

3.數(shù)據(jù)源

數(shù)據(jù)源即為 數(shù)據(jù)來(lái)源劲藐,關(guān)系行數(shù)據(jù)庫(kù)的來(lái)源都是數(shù)據(jù)表:本質(zhì)上只要保證數(shù)據(jù)類(lèi)似二維表愈污,都可以作為數(shù)據(jù)源

數(shù)據(jù)源 分為多種,既單表數(shù)據(jù)源涨缚、多表數(shù)據(jù)源轧粟、查詢語(yǔ)句

--1.單表數(shù)據(jù)源:select * from 表名

--2.多表數(shù)據(jù)源:select * from 表名1,表名2脓魏,表名3...........;

表1 my_default 7條數(shù)據(jù)
表2 king_class 2條數(shù)據(jù)

select * from 表1兰吟,表2;

多表數(shù)據(jù)源 14條數(shù)據(jù)

從一張表中 取出一條記錄,去另外一張表中匹配所有記錄茂翔,且全部保留:(記錄數(shù)和字段數(shù))混蔼,將這種結(jié)果 稱之為笛卡爾集 既一種交叉連接?

笛卡爾集一般并沒(méi)有什么卵用,耗費(fèi)相當(dāng)多資源 珊燎,需要盡量避免出現(xiàn)笛卡爾集

--3.子查詢 數(shù)據(jù)的來(lái)源是一條查詢語(yǔ)句(查詢語(yǔ)句的結(jié)果是一張二維表)

select * from (select 語(yǔ)句) as 表名 ; 相當(dāng)于將括號(hào)內(nèi)select 語(yǔ)句 的查詢結(jié)果起一個(gè)別名(as 表名)

子查詢1
子查詢2

4.where 子句?

where 子句用來(lái)判斷數(shù)據(jù)惭嚣,篩選數(shù)據(jù)

where 子句返回結(jié)果 0或者1 false or true

????????????基本運(yùn)算符:> ,< ,>= 等等

? ? ? ? ? ? 邏輯運(yùn)算符:&&(and)遵湖,|| (or) ,! (not)

? ? ? ? ? ? 模糊查詢 :like , %表示任意多個(gè)字符 ,_表示一個(gè)任意字符

? ? ? ? ? ? select * from students where name like '黃%'? (表示查詢姓黃的學(xué)生)

? ? ? ? ? ? select * from students where name like '黃_'? (查詢姓黃并且名字是一個(gè)字的學(xué)生)

? ? ? ? ? ? select * from students where name like “黃%” or name like "%靜" (查詢姓黃或叫靜的學(xué)生)

? ? ? ? ? ? 范圍查詢:between .......and..........(在...區(qū)間)(當(dāng)存在多個(gè)and 時(shí) 晚吞,將優(yōu)先匹配between and)延旧,in/not in??


where 是唯一一個(gè)直接從磁盤(pán)獲取數(shù)據(jù)的時(shí)候就開(kāi)始判斷的條件,從磁盤(pán)取出一條記錄槽地,則開(kāi)始進(jìn)行where 判斷迁沫,判斷結(jié)果成立則加載進(jìn)內(nèi)存,如果不成立則放棄(從源頭保證盡可能避免的無(wú)效數(shù)據(jù)占用內(nèi)存)捌蚊;而其他的判斷集畅,都是后期對(duì)內(nèi)存進(jìn)行的判斷

--1.集合 in( )

利用多個(gè)或找出符合條件的數(shù)據(jù)


利用集合in ( ) 完成查找

--2.between A and B (在 A 到 B 之間)

其中 between 本身是閉區(qū)間 且 左邊的值必須小于右邊的值

在某范圍區(qū)間 的實(shí)現(xiàn)

5.Group by 子句 (根據(jù)某個(gè)字段進(jìn)行分組,相同的放一組缅糟,不同的放不同的組)

Group by 只會(huì)將同類(lèi)型數(shù)據(jù)進(jìn)行分組挺智,且只展示該組第一個(gè)數(shù)據(jù)?

在新MySQL 中 group by 字段 必須被 select 約束?

按照字段分組,表示此字段相同的數(shù)據(jù)會(huì)被放在一個(gè)組中

分組后窗宦,只能查詢出相同的數(shù)據(jù)列赦颇,對(duì)于有差異的數(shù)據(jù)列無(wú)法出現(xiàn)在結(jié)果集中

可以對(duì)分組后的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),做聚合運(yùn)算

--1.基礎(chǔ)語(yǔ)法

select 列1迫摔,列2沐扳,聚合.......from 表名 group by 列1,列2句占,列3.沪摄。。

select male as male ,count(*) from my_stu group by male;
基礎(chǔ)使用1
基礎(chǔ)使用2
group by 約束字段 male纱烘,age 并未被 select 嚴(yán)格聲明 導(dǎo)致報(bào)錯(cuò)
同理報(bào)錯(cuò)2

--2.having? 對(duì)分組的結(jié)果進(jìn)行篩選

select male as male,count(*) from my_stu group by male having male = 0;
select male as male,count(*) from my_stu group by having count(*)>2;
約束別名


where 和 having 的區(qū)別

where 對(duì) from 后面指定的表進(jìn)行篩選 杨拐,屬于篩選原始數(shù)據(jù)

having 對(duì)group by? 的結(jié)果進(jìn)行篩選


--3.分組的意義是為了統(tǒng)計(jì)數(shù)據(jù)(按照分組字段 進(jìn)行數(shù)據(jù)統(tǒng)計(jì))

SQL 提供了一系列的統(tǒng)計(jì)函數(shù):

count () :統(tǒng)計(jì)分組后的記錄數(shù)

? ? ? ? ? ? 里面可以使用兩種參數(shù): * 代表統(tǒng)計(jì)記錄,字段名代表統(tǒng)計(jì)對(duì)應(yīng)的字段 (null? 不進(jìn)行統(tǒng)計(jì))

select count(*) from my_stu;

max():統(tǒng)計(jì)最大值

min ():最小值

avg():平均值

sum():和

使用示例1
使用示例2

--4.分組的排序

group by 字段 [asc/desc]?分組 會(huì)自動(dòng)排序擂啥,根據(jù)分組字段哄陶, 默認(rèn)升序asc ,需要降序desc需要聲明出

對(duì)分組排序的結(jié)果 合并之后的整體結(jié)果進(jìn)行排序? 而不是對(duì)于分組內(nèi)部的數(shù)據(jù)進(jìn)行排序

--5. 多字段分組 哺壶,先班級(jí)屋吨,后男女

當(dāng)前表所有字段
其中主鍵id為邏輯主鍵 子增長(zhǎng)

查詢每個(gè)班級(jí) 對(duì)應(yīng)性別下有多少人 先按照班級(jí)排序 后按照性別排序

select class_id,male,count(*) from my_stu group by class_id,male;

以班級(jí)為條件 查詢性別 總數(shù),并以先班級(jí)后性別排序
以班級(jí)id為條件查詢每班性別總數(shù)山宾,并以先性別 后 班級(jí)排序

--6.group_concat() 函數(shù)

可以對(duì)分組的結(jié)果中某個(gè)字段進(jìn)行 字符串鏈接(保留該組所有的某個(gè)字段)

group_concat() 函數(shù)的使用
group_concat 其他兩種使用方法

--7.回溯統(tǒng)計(jì) with rollup

任何一個(gè)分組后 都會(huì)有一個(gè)小組 至扰, 最后都需要向上級(jí)分組進(jìn)行一次匯報(bào)統(tǒng)計(jì):(根據(jù)當(dāng)前分組的字段)

這就是回溯統(tǒng)計(jì):回溯統(tǒng)計(jì)時(shí),會(huì)將分組字段至空

單字段分組 回溯統(tǒng)計(jì)??

既 查詢每一個(gè)班級(jí)资锰,然后按照班級(jí)排序 完成后進(jìn)行一次回溯

單字段分組 回溯統(tǒng)計(jì)?

多字段分組 回溯統(tǒng)計(jì)

既 先按照班級(jí)分組 班級(jí)又按照性別分組 ------->既性別會(huì)按照班級(jí)統(tǒng)計(jì)一次( x3 )敢课,而班級(jí)會(huì)單獨(dú)統(tǒng)計(jì)一次,

既:第一層分組 會(huì)有一次回溯 ,第二次分組 需要考慮 上一層分組的組數(shù)? 直秆。濒募。。圾结。瑰剃。。疫稿。培他。鹃两。遗座。直到最后一層分組

多字段分組 回溯統(tǒng)計(jì)

6.order by 子句

order by 排序 ,根據(jù)某個(gè)字段進(jìn)行升序或者降序排序,依賴校對(duì)集(大小寫(xiě)等)

基本語(yǔ)法:

order by 字段1 [asc/desc],字段2[asc/desc]..............?其中 asc 是升序(默認(rèn)操作) desc是降序

order by 基本使用

多字段排序 :先根據(jù)某個(gè)字段進(jìn)行排序俊扳,然后在排序好的內(nèi)部途蒋,再按照某個(gè)數(shù)據(jù)再進(jìn)行一次排序

多字段排序,先按照class_id 升序排列 再按照 male 降序排列?
都按照升序排列
班級(jí)降序排列馋记, male 升序排列

7.limit子句?

是一種限制結(jié)果的子句:可以用來(lái)限制數(shù)量 多用于分頁(yè)

way1:只用來(lái)限制數(shù)據(jù)量 limit 數(shù)據(jù)量

select * from my_stu limit 2;

way2:限制起始位置 & 限制長(zhǎng)度 多用于分頁(yè) 既從指定的位置開(kāi)始 向后找多少條數(shù)據(jù)

select * from my_stu limit 2,2;

兩個(gè)參數(shù)分別對(duì)應(yīng)偏移量和長(zhǎng)度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末号坡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梯醒,更是在濱河造成了極大的恐慌宽堆,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茸习,死亡現(xiàn)場(chǎng)離奇詭異畜隶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)号胚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)籽慢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人猫胁,你說(shuō)我怎么就攤上這事箱亿。” “怎么了弃秆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵届惋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我菠赚,道長(zhǎng)脑豹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任锈至,我火速辦了婚禮晨缴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘峡捡。我一直安慰自己击碗,他們只是感情好筑悴,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著稍途,像睡著了一般阁吝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械拍,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天突勇,我揣著相機(jī)與錄音,去河邊找鬼坷虑。 笑死甲馋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迄损。 我是一名探鬼主播定躏,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芹敌!你這毒婦竟也來(lái)了痊远?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤氏捞,失蹤者是張志新(化名)和其女友劉穎碧聪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體液茎,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逞姿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豁护。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哼凯。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖楚里,靈堂內(nèi)的尸體忽然破棺而出断部,到底是詐尸還是另有隱情,我是刑警寧澤班缎,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布蝴光,位于F島的核電站,受9級(jí)特大地震影響达址,放射性物質(zhì)發(fā)生泄漏蔑祟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一沉唠、第九天 我趴在偏房一處隱蔽的房頂上張望疆虚。 院中可真熱鬧,春花似錦、人聲如沸径簿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)篇亭。三九已至缠捌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間译蒂,已是汗流浹背曼月。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柔昼,地道東北人哑芹。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岳锁,于是被迫代替她去往敵國(guó)和親绩衷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容