Day7 SQL常用命令續(xù)集

1松嘶、連接查詢join...on

連接查詢適用于當(dāng)需要的結(jié)果來自多張表時。
內(nèi)連接:inner join翠订,查詢兩表中完全匹配的數(shù)據(jù);
左外連接:left outer join港谊,查詢兩表中完全匹配的數(shù)據(jù)橙弱,以及左表特有的數(shù)據(jù);
左外連接:left outer join斜筐,查詢兩表中完全匹配的數(shù)據(jù)蛀缝,以及右表特有的數(shù)據(jù);
完全外連接:full outer join屈梁,查詢兩表中完全匹配的數(shù)據(jù),以及左表特有的數(shù)據(jù)煞抬,還有右表特有的數(shù)據(jù);

示例:

select * from StudentInfo as si inner join ClassInfo as ci on si.cid=ci.cId--查
詢表StudentInfo中cid與表ClassInfo中cId完全匹配的所有列,as:為表取別名战坤,StudentInfo
as si就是為表Student取別名為si
select * from ClassInfo as ci left join StudentInfo as si on ci.cId=si.cid--查
詢表ClassInfo中cId與表StudentInfo中cid完全匹配的,以及ClassInfo特有的所有列,

2残拐、聚合函數(shù)

聚合函數(shù)用于對行數(shù)據(jù)進行合并,一般是對數(shù)字類型的列進行操作慈省,一條查詢中可以寫多個聚合函數(shù)(null不參與運算)眠菇。
常用聚合函數(shù):sum(求和)、avg(求平均值)笑窜、count(計數(shù))登疗、max(求最大值)、min(求最小值)断傲。

sum示例:計算表StudentInfo中列cid的和智政,并取別名為sum

select SUM(cid) as sum from StudentInfo

avg示例:計算表StudentInfo中列cid的平均值

select AVG(cid) from StudentInfo

count示例:計算StudentInfo表中一共多少行续捂,如果存在某行的值全為null,則不計數(shù)

select COUNT(*) from StudentInfo 

max示例:查詢表StudentInfo的列cid的最大值

select MAX(cid) from StudentInfo

min示例:查詢表StudentInfo的列cid的最小值

select MIN(cid) from StudentInfo

3劫拗、開窗函數(shù)over()

開窗函數(shù)和聚合函數(shù)結(jié)合使用矾克,用于將聚合結(jié)果還原至原數(shù)據(jù),便于將聚合結(jié)果與原數(shù)據(jù)進行對比酒繁。
開窗函數(shù)還可以和排名函數(shù)ROW_NUMBER()結(jié)合使用。

結(jié)合聚合函數(shù)示例:計算表StudentInfo的列cid的平均值欲逃,并利用開窗函數(shù)與原cid進行對比

select *,AVG(cid) over() from StudentInfo

結(jié)果:

結(jié)合排名函數(shù)示例:將表StudentInfo中sGendre=1的數(shù)據(jù)進行排序稳析,并且進行排號

select *,ROW_NUMBER() over(order by sId desc) as rowindex from 
StudentInfo where sGender=1

結(jié)果:

4彰居、分組group by

聚合函數(shù)一般結(jié)合分組使用撰筷,進行分組內(nèi)的數(shù)據(jù)統(tǒng)計;分組依據(jù)值相同的示例在一組抬闯,在結(jié)果列中只能出現(xiàn)分組依據(jù)列和聚合列关筒。
ps:group by與where共存時,group by寫where后面睡榆。

單一列依據(jù)分組示例:將表studentInfo按照sGender進行分組袍榆,并計算每組數(shù)量

select sGender,count(*) from StudentInfo group by sGender--分組將屏蔽除分組依據(jù)以
外的其他列,故結(jié)果集中只能顯示分組依據(jù)列宿崭、聚合函數(shù)列

結(jié)果:

多列分組示例:將表StudentInfo按照sGender和cid進行分組才写,并計算每組數(shù)量

select sGender,cid,count(*) from StudentInfo group by sGender,cid
select * from StudentInfo

結(jié)果:

5琅摩、分組結(jié)果篩選having

示例:將表StudentInfo按照cid進行分組,并且計算每組數(shù)量蜕劝,篩選出數(shù)量大于1的組

select cid,count(*) from StudentInfo group by cid having COUNT(*)>1

6、聯(lián)合查詢union

聯(lián)合查詢:將多個查詢的結(jié)果集合并成一個結(jié)果集暑始。
聯(lián)合要求:
結(jié)果集列數(shù)一致婴削;
對應(yīng)列的類型一致。

關(guān)鍵字:
union:將多個結(jié)果集的數(shù)據(jù)進行合并嗤朴,并且消除重復(fù)行虫溜,按照第一列從小到大排序;
union all:將多個結(jié)果集進行合并吱雏,但不消除重復(fù)行瘾境,也不排序;
except:差集得滤,A except B表示A結(jié)果集中的數(shù)據(jù)但不包括B結(jié)果集中的數(shù)據(jù)盒犹;
intersect:交集,結(jié)果集中都有的數(shù)據(jù)沮协。

union示例:

select cId from ClassInfo union select sId from StudentInfo

結(jié)果:

union all示例:

select cId from ClassInfo union all select sId from StudentInfo

結(jié)果:

except示例:

select cId from ClassInfo except select sId from StudentInfo

結(jié)果:

intersect示例:

select cId from ClassInfo intersect select sId from StudentInfo

結(jié)果:

7、快速備份

向未有表備份:select 列名 into 備份表名 from 源表名晨雳。
(備份表如果不存在將新建表餐禁,表的結(jié)構(gòu)完全一致,但是不包含約束帮非,如果想只包含結(jié)構(gòu)不包含數(shù)據(jù),可以加個top 0)
示例:將表ClassInfo的結(jié)構(gòu)和數(shù)據(jù)快速備份到表test1筑舅,將自動新建表test1

select * into test1 from ClassInfo

向已有表備份:insert into 備份表名 select 列名 from 源表名。
示例:向已有表test2中備份表ClassInfo的列cTitle

insert into test2(cTitle) select cTitle from ClassInfo

8版仔、內(nèi)置函數(shù)

8.1误墓、類型轉(zhuǎn)換函數(shù)

cast(expression as date_type):將任意類型轉(zhuǎn)到任意類型
convert(date_type ,expression[,style]):將任意類型轉(zhuǎn)到任意類型,如果目標(biāo)類型是字符串蝉揍,則style可以設(shè)置樣式
示例:將89.0000轉(zhuǎn)換成89.0

select CAST(89.0000 as decimal(4,1))
select CONVERT(decimal(4,1),89.0000)
8.2畦娄、字符串函數(shù)

ascii:求字符的ascii碼值弊仪;
char:根據(jù)ascii碼轉(zhuǎn)到字符;
left:自左開始往右截取字符串驳癌;
right:自右開始往左截取字符串役听;
substring:從任意位置開始截取字符串典予,函數(shù)參數(shù):字符串、開始索引瘤袖、截取數(shù)量(索引從1開始);
len:返回字符串的長度艾扮;
lower:轉(zhuǎn)小寫占婉;
upper:轉(zhuǎn)大寫泡嘴;
ltrim:去除左側(cè)空格逆济;
rtrim:去除右側(cè)空格;

示例:
8.3滞磺、日期函數(shù)

getDate:獲取當(dāng)前日期時間莱褒;
dateAdd:日期加;
dateDiff:日期差广凸;
datePart:取日期的某部分
year:取年谅海;
month:取月;
day:取日扭吁。
(返回值都是int類型)

示例:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侥袜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浦旱,更是在濱河造成了極大的恐慌九杂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甥捺,死亡現(xiàn)場離奇詭異裳擎,居然都是意外死亡鹿响,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門妈倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绸贡,“玉大人毅哗,你說我怎么就攤上這事捧挺。” “怎么了翅睛?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵黑竞,是天一觀的道長很魂。 經(jīng)常有香客問我,道長遏匆,這世上最難降的妖魔是什么拉岁? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任惰爬,我火速辦了婚禮,結(jié)果婚禮上陵叽,老公的妹妹穿的比我還像新娘丛版。我一直安慰自己,他們只是感情好胖替,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布豫缨。 她就那樣靜靜地躺著,像睡著了一般燃箭。 火紅的嫁衣襯著肌膚如雪舍败。 梳的紋絲不亂的頭發(fā)上敬拓,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天乘凸,我揣著相機與錄音累榜,去河邊找鬼。 笑死冀偶,一個胖子當(dāng)著我的面吹牛渔嚷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播形病,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼漠吻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绍傲?” 一聲冷哼從身側(cè)響起耍共,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杠纵,沒想到半個月后钩骇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡银亲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年群凶,在試婚紗的時候發(fā)現(xiàn)自己被綠了哄辣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赠尾。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡气嫁,死狀恐怖够坐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情元咙,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布甲棍,位于F島的核電站感猛,受9級特大地震影響奢赂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膳灶,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一袖瞻、第九天 我趴在偏房一處隱蔽的房頂上張望拆吆。 院中可真熱鬧,春花似錦枣耀、人聲如沸捞奕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽院促。三九已至斧抱,卻和暖如春渐溶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茎辐。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工拖陆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人依啰。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓孔飒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桂对。 傳聞我的和親對象是個殘疾皇子鸠匀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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