目錄
數(shù)據(jù)庫增刪改查SQL語句
MySQL數(shù)據(jù)庫指令
1.查詢數(shù)據(jù)庫
2.創(chuàng)建數(shù)據(jù)庫
3.刪除數(shù)據(jù)庫
4.選擇數(shù)據(jù)庫
創(chuàng)建表table ?
查看所有表
創(chuàng)建表
查看指定表的結(jié)構(gòu)
刪除表
數(shù)據(jù)庫命令進行注釋
增刪改查(CRUD)詳細(xì)說明
增加
SQL庫提供了關(guān)于時間的函數(shù):now()?
查詢
查詢表作列與列之間進行運算
查詢指定某列作為別名,使用關(guān)鍵字as
進行查詢數(shù)據(jù)去重操作,使用關(guān)鍵字distinct
查詢結(jié)果排序
指定條件查詢 where
范圍查找區(qū)別:between A and B ?(前閉后閉)
查詢某個具體的數(shù)值:使用in來表示
模糊查找某個字符:使用like
?分頁查詢,使用limit來查詢
查詢結(jié)果作為表新增的數(shù)據(jù)
SQL查詢結(jié)果進行字符串截?。簊ubstring?
SQL查詢結(jié)果進行字符串拼接:concat
SQL查詢結(jié)果進行字符大寫:upper
SQL查詢結(jié)果進行保留小數(shù)點位數(shù):round()
聚合查詢
數(shù)據(jù)求和:sum
計算平均值:avg?
求某列的最大值和最小值 :max \ min
分組查詢:group by
條件過濾:having \ where
計算表中行的數(shù)量:count?
多表查詢:join? ? on?
左外連接:left join? 表? ?on?
右外連接:right?join? 表? ?on?
合并多表查詢結(jié)果:union \ union all?
數(shù)據(jù)庫索引
查看索引
?創(chuàng)建索引
刪除索引?
窗口排序函數(shù)
1.row_number()函數(shù):連續(xù)不重復(fù)
2.rank()函數(shù):重復(fù)不連續(xù)
3.dense_rank()函數(shù):重復(fù)且連續(xù)
4.ntile(n)函數(shù):平均分組
數(shù)據(jù)庫增刪改查SQL語句
userlogin為表的名字
增:insert??into? userlogin??values ('5','5');
刪:delete? from??userlogin??where? username ='3';
改:update? userlogin??set? username ='3'??where??pwd??='2';
查:select??*??from? userlogi;
注意點:查詢語句中的通配符 * 盡量不要使用,原因:數(shù)據(jù)量大時會降低查詢效率,使用列名代替*,平時養(yǎng)成好習(xí)慣
MySQL數(shù)據(jù)庫指令
1.查詢數(shù)據(jù)庫
show databases;(多個數(shù)據(jù)庫用復(fù)數(shù))
2.創(chuàng)建數(shù)據(jù)庫
create database 數(shù)據(jù)庫名 charset ?utf8; ???
?(數(shù)據(jù)庫名由字母、數(shù)字、下劃線組成,數(shù)字不能在最前面)
注意:此處為database,后面沒有s,創(chuàng)建數(shù)據(jù)庫增加 charset utf8 可以使數(shù)據(jù)庫插入中文,否則插入中文會報錯
報錯案例:
3.刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名;
4.選擇數(shù)據(jù)庫
use 數(shù)據(jù)庫名;
創(chuàng)建表table ?
注意點(創(chuàng)建表前先選中具體某個數(shù)據(jù)庫)
查看所有表
show tables;
創(chuàng)建表
create ?table 表名(列名 類型,列名 類型,列名 類型);
注意點:類型有int,varchar(),decimal(m,n) ??m指有m位有效數(shù)字,n指在小數(shù)點后有n位數(shù)字
查看指定表的結(jié)構(gòu)
desc 表名;
刪除表
drop ?table 表名;
數(shù)據(jù)庫命令進行注釋
在SQL中可以使用“--空格+描述”來表示注釋說明
增刪改查(CRUD)詳細(xì)說明
增加
Insert? into 表名 (id,name,age) values(1, ‘小紅’,111) ???注意點:插入字符串時記得用分號’?’隔開
注意點:一次插入多個記得用逗號,隔開
SQL庫提供了關(guān)于時間的函數(shù):now()?
?
查詢
Select * from 表名;
Select 列名,列名 from 表名;
查詢表作列與列之間進行運算
select? 列名,?列名+列名+列名? from? 表名;
查詢指定某列作為別名,使用關(guān)鍵字as
進行查詢數(shù)據(jù)去重操作,使用關(guān)鍵字distinct
查詢結(jié)果排序
對查詢的結(jié)果需要進行排序時,可以使用order by asc(asc 可以默認(rèn)不寫) 即order by?
對結(jié)果進行升序操作(由小到大):order by
對結(jié)果進行降序操作(由大到?。簅rder by desc
?注意點:(orde by 可以后面接別名,比如計算總和時,前面有as total ,后面可以order by total),Where 不能后面接別名
指定條件查詢 where
條件查詢,可以直接拿兩個列進行比較
示例:查詢 語文成績大于數(shù)學(xué)成績的學(xué)生名單
select? name from table? where chinese > math;
范圍查找區(qū)別:between A and B ?(前閉后閉)
查詢某個具體的數(shù)值:使用in來表示
模糊查找某個字符:使用like
?分頁查詢,使用limit來查詢
舉例:查詢表前3條數(shù)據(jù)(此時默認(rèn)從第一頁查詢)
?如果想自定義從某一頁查詢,就使用offset
查詢結(jié)果作為表新增的數(shù)據(jù)
SQL查詢結(jié)果進行字符串截?。簊ubstring?
用法:substring(字符串,截取起始位置,截取字符數(shù))
SQL查詢結(jié)果進行字符串拼接:concat
用法:concat(字符串1,字符串2,字符串3,......)
SQL查詢結(jié)果進行字符大寫:upper
?用法:upper(字符串)
SQL查詢結(jié)果進行保留小數(shù)點位數(shù):round()
使用 Round() 函數(shù),如 Round(number,2) ,其中參數(shù)2表示保留小數(shù)點后兩位有效數(shù)字,四舍五入到兩位小數(shù)。
ROUND(3.141592653, 2) 結(jié)果為3.14
聚合查詢
數(shù)據(jù)求和:sum
sum求和只針對數(shù)字有效,無法對字符串進行求和,在對列進行求和時會自動跳過結(jié)果為null的行
計算平均值:avg?
avg能夠計算某一列的平均值,使用方法和sum一樣
avg還能搭配表達(dá)式一起使用
求某列的最大值和最小值 :max \ min
分組查詢:group by
?分組查詢會把相同的列分在同一組中。
比如說如果需要計算某一個崗位的工資就需要把每一個崗位分在同一個組中,再來計算這個崗位的平均工資
條件過濾:having \ where
where: 過濾指定的行
having: 過濾分組,與group by 連用
注意:group by? 子句進行分組以后,需要對分組結(jié)果再進行條件過濾時,不能使用?where?語句,而需要用having
計算表中行的數(shù)量:count?
select ?count(*) from 表名;
注意:當(dāng)涉及到多個數(shù)據(jù)計算時,使用count記得使用分組group by
多表查詢:join? ? on?
從多個表中查詢不同列數(shù)據(jù)時,此時就需要使用多表查詢語句join on
語句用法:select *from 表1 join 表2 on 條件1 join? 表3 on 條件2
示例:
select * from student? join? score on student.id = score.id? join? course on course.id = score.course_id;
先考慮? 左表? 和? 中表 進行外連接,得到一個表“臨時”,再拿這個“臨時”表和? 右表? 進行外連接
左外連接:left join? 表? ?on?
left join? ---- 左連接,以左邊表的列為主,取兩列的交集,如果右表中沒有與左表匹配的記錄,那么對應(yīng)的列將填充為 NULL 值
左外連接:表1 left join 表2 on 連接條件,右邊表(表2)返回與連接條件完全匹配的數(shù)據(jù),左邊表(表1)除了返回與連接條件匹配的數(shù)據(jù)以外,不匹配的數(shù)據(jù)也會返回;
右外連接:right?join? 表? ?on?
right join? ---- 右連接,以右邊表的列為主,取兩列的交集,如果左表中沒有與右表匹配的記錄,那么對應(yīng)的列將填充為 NULL 值
右外連接:表1 right join 表2 on 連接條件,左邊表(表1)返回與連接條件完全匹配的數(shù)據(jù),右邊表(表2)除了返回與連接條件匹配的數(shù)據(jù)以外,不匹配的數(shù)據(jù)也會返回
合并多表查詢結(jié)果:union \ union all?
union 可以把多個表的查詢結(jié)果進行合并,前提條件是多個結(jié)果列必須得一一對應(yīng)。
union:對兩個查詢結(jié)果進行并集操作,自動進行去重,不包括重復(fù)行,即去掉重復(fù)結(jié)果后再顯示
union all? : 對兩個查詢結(jié)果進行并集操作,不會進行去重,包括重復(fù)行,即所有查詢結(jié)果都會顯示
數(shù)據(jù)庫索引
查看索引
show index from 表名;
?創(chuàng)建索引
create? index 索引名? on? 表名(列名);
?
刪除索引?
drop index 索引名 on 表名;
窗口排序函數(shù)
row_number():連續(xù)不重復(fù);? ? 例:1234567
rank() :重復(fù)不連續(xù); 例:1222567
dense_rank():重復(fù)且連續(xù); 例:1222345
ntile():平均分組; 例:1122334
1.row_number()函數(shù):連續(xù)不重復(fù)
特點:?row_number()函數(shù)可以為每條記錄添加遞增的順序數(shù)值序號,即使值完全相同也依次遞增序號,不會重復(fù)。
語法:row_number() over(partition by fieldname order by fieldname desc/asc)
Select name,times ,money,ROW_NUMBER() over(PARTITION by name ORDER BY money desc) num
From syc
Group by name,times
partition by 用來限定排序的范圍,如果不寫,則直接在全表中排序。在over中設(shè)定以某一列排序,注意,這里的order by,與sql語句中的order by并不沖突,序列按照 over中的 order by排序,但是整個結(jié)果集,依然按照sql中的order by排序;
2.rank()函數(shù):重復(fù)不連續(xù)
特點:?rank()函數(shù)也是返回每條記錄的排名序號,但當(dāng)值相同時,序號也將相同,同時跳躍排序(比如:第一名、第一名、第三名)
語法:rank() over(partition by fieldname order by fieldname desc/asc)
selkect *, rank() over( order by score desc) num
from sc
where cno ='01’or cno=‘02’
3.dense_rank()函數(shù):重復(fù)且連續(xù)
特點:?dense_rank()函數(shù)進行排序時,也會將值相同的數(shù)據(jù)賦予同一個序號,但與rank()函數(shù)不同的是,dense_rank()函數(shù)為重復(fù)且連續(xù)排序(比如第一名、第一名、第二名)。
語法:dense_rank() over(partition by fieldname order by fieldname desc/asc)
select *, dense_rank() over( ORDER BY score desc) num
from sc
where cno ='01'or cno='02'
4.ntile(n)函數(shù):平均分組
特點:?ntile(n)函數(shù)會將數(shù)據(jù)分為n組,自動進行分組 (每組數(shù)量大致相等,若無法均分為n組,則每組的記錄數(shù)不能大于它上一組的記錄數(shù)),每組將會分配同一個序號(組號為1-n)。
語法:ntile(n) over(order by fieldname desc/asc)
select *, ntile(4) over( ORDER BY score asc) num
from sc
where cno ='01'or cno='02'
窗口函數(shù)參考文章:https://blog.csdn.net/momomuabc/article/details/127902127文章來源:http://www.zghlxwxcb.cn/news/detail-489337.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??https://blog.csdn.net/haifeng112612/article/details/114977365文章來源地址http://www.zghlxwxcb.cn/news/detail-489337.html
到了這里,關(guān)于MySQL數(shù)據(jù)庫增刪改查及聚合查詢SQL語句學(xué)習(xí)匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!