對mysql數(shù)據(jù)的進(jìn)一步操作查詢。
mysql的條件 ? ?使用where子句對表中的數(shù)據(jù)篩選烦绳,結(jié)果為true的行會出現(xiàn)在結(jié)果集中
語法:?select * from ?表名 ? where ?條件丈积; ( 在這里聲明*代
消除重復(fù)行: ?select ? distincea ?字段名 ? ?from ? 表名
模糊查詢:是針對眾多的數(shù)據(jù)中針對單條數(shù)據(jù)的快速查詢方法 ??
like
%表示任意多個任意字符
_表示一個任意字符
語法:select ? * ? from ?表名 ?where(條件) ?字段名 ? like ?‘被查詢的條件’
范圍性的查詢:有兩種 ? ?1是:in 在一個非連續(xù)性的范圍內(nèi)查詢
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2是: betwee (條件)and ?(條件) ?連續(xù)性的范圍查詢
mysql的運(yùn)算優(yōu)先級:小括號>not>比較運(yùn)算>邏輯運(yùn)算(and比or先運(yùn)算赤拒,如果同時出現(xiàn)并希望先算or跟继,需要結(jié)合()使用)
聚合:為了快速得到統(tǒng)計(jì)數(shù)據(jù) ? ??count(*)表示計(jì)算總行數(shù) ? ??max(列)表示求此列的最大值 ? ? ??min(列)表示求此列的最小值 ? ??sum(列)表示求此列的和 ? ??sum(列)表示求此列的和 ? ? avg(列)表示求此列的平均值?
按照字段分組裙顽,表示此字段相同的數(shù)據(jù)會被放到一個組中 ?分組后亭珍,只能查詢出相同的數(shù)據(jù)列敷钾,對于有差異的數(shù)據(jù)列無法出現(xiàn)在結(jié)果集中 ? ?可以對分組后的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),做聚合運(yùn)算
語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
分組后的數(shù)據(jù)篩選
語法:
select 列1,列2,聚合... from 表名 ?group by 列1,列2,列3... ? having 列1,...聚合...
having后面的條件運(yùn)算符與where的相同
排序 ?:為了方便查看數(shù)據(jù)肄梨,可以對數(shù)據(jù)進(jìn)行排序
語法:
select * from 表名 ?order by ?列1 asc|desc,列2 asc|desc,...
注:(默認(rèn)按照列值從小到大排列
asc從小到大排列阻荒,即升序
desc從大到小排序,即降序)
獲取部分行 ?:當(dāng)數(shù)據(jù)量過大時众羡,在一頁中查看數(shù)據(jù)是一件非常麻煩的事情侨赡,這時候就用到了獲取部分行
語法
select * from 表名 ? limit start,count
從start開始,獲取count條數(shù)據(jù)
start索引從0開始
mysql關(guān)系:外鍵 ??如果一張表中有一個非主鍵的字段指向了別一張表中的主鍵纱控,就將該字段叫做外鍵辆毡。(一張表中可以有多個外鍵。)
使用外鍵的前提:
1. 表儲存引擎必須是innodb甜害,否則創(chuàng)建的外鍵無約束效果舶掖。
2. 外鍵的列類型必須與父表的主鍵類型完全一致。
? ?3. 外鍵的名字不能重復(fù)尔店。
? ?4. 已經(jīng)存在數(shù)據(jù)的字段被設(shè)為外鍵時眨攘,必須保證字段中的數(shù)據(jù)與父表的主鍵數(shù)據(jù)對應(yīng)起來。
鏈接查詢:?當(dāng)需要對有關(guān)系的多張表進(jìn)行查詢時嚣州,需要使用連接join
語法:select ? 屬性 ?from ?子表 ? inner ?join ?父表 ?on ? 子表.屬性=父表.屬性
連接查詢分類如下:
表A inner join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中
左鏈接: 表A left join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中鲫售,外加表A中獨(dú)有的數(shù)據(jù),未對應(yīng)的數(shù)據(jù)使用null填充
右鏈接: ? 表A right join 表B:表A與表B匹配的行會出現(xiàn)在結(jié)果中该肴,外加表B中獨(dú)有的數(shù)據(jù)情竹,未對應(yīng)的數(shù)據(jù)使用null填充