SQL數(shù)據(jù)查詢

關(guān)系數(shù)據(jù)庫SQL之基本數(shù)據(jù)查詢:子查詢衷畦、分組查詢、模糊查詢

字?jǐn)?shù)1843閱讀1707評論10喜歡115

前言

上一篇關(guān)系數(shù)據(jù)庫常用SQL語句語法大全主要是關(guān)系型數(shù)據(jù)庫大體結(jié)構(gòu),本文細(xì)說一下關(guān)系型數(shù)據(jù)庫查詢的SQL語法著摔。

SQL數(shù)據(jù)查詢

語法回顧

SELECT [ALL|DISTINCT] <目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…? [WHERE<條件表達(dá)式>]? [GROUPBY<列名> [HAVING<條件表達(dá)式>]]? [ORDERBY<列名> [ASC|DESC]…]

SQL查詢語句的順序:SELECT、FROM藤违、WHERE、GROUP BY纵揍、HAVING顿乒、ORDER BY。SELECT骡男、FROM是必須的淆游,HAVING子句只能與GROUP BY搭配使用傍睹。

準(zhǔn)備工作

1.創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表

2.插入基本數(shù)據(jù)

3.本文以SQL Server為例介紹

-- 創(chuàng)建學(xué)生表CREATETABLEStudents(IdintNOTNULLPRIMARYKEY,Namevarchar(20)NOTNULL,Classvarchar(15)NOTNULL,? ? Gendervarchar(10)NULL,? ? AgeintNULL,? ? Phonevarchar(15)NULL,? ? [Address]varchar(100)NULL)-- 創(chuàng)建課程表CREATETABLECourses(IdintNOTNULLPRIMARYKEYIDENTITY(1,1),Namevarchar(50)NOTNULL);-- 創(chuàng)建成績表CREATETABLEScores(IdintPRIMARYKEYIDENTITY(1,1),SIdintNOTNULL,? ? CIdintNOTNULL,? ? Gradesdecimal(5,2)NOTNULL,? ? IsPassedbitNOTNULL);-- 插入學(xué)生表基礎(chǔ)數(shù)據(jù)INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016001,'小明','一班','男',20,'18817716611','北京');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016002,'小龍','一班','男',19,'18817716622','天津');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016003,'小王','二班','男',20,'18817716633','北京');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016004,'婷婷','一班','女',17,'18817716644','濟(jì)南');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016005,'張三','一班','男',19,'18817716655','北京');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016006,'小趙','一班','男',20,'18817716666','北京');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016007,'麗麗','二班','女',18,'18817716677','北京');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016008,'花花','一班','女',19,'18817716688','沈陽');INSERTINTOStudents (Id,Name,Class,Gender,Age,Phone,[Address])VALUES(2016009,'靜靜','二班','女',20,'18817716699','北京');-- 插入課程表基礎(chǔ)數(shù)據(jù)INSERTINTOCourses(Name)VALUES('語文');INSERTINTOCourses(Name)VALUES('數(shù)學(xué)');INSERTINTOCourses(Name)VALUES('英語');-- 插入成績表基礎(chǔ)數(shù)據(jù)INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016001,1,120,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016001,2,70,0);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016001,3,89,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016002,1,90,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016002,2,88,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016002,3,96,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016003,1,112,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016003,3,102,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016004,1,80,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016004,2,86,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016004,3,47,0);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016005,1,87,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016005,2,96,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016005,3,68,0);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016006,2,95,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016006,3,100,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016007,1,87,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016007,2,57,0);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016007,3,130,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016008,1,89,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016008,3,66,0);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016009,1,97,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016009,2,104,1);INSERTINTOScores(SId,CId,Grades,IsPassed)VALUES(2016009,3,68,1);

簡單查詢

簡單查詢只需要SELECT隔盛、FROM、WHERE3個關(guān)鍵字即可實現(xiàn)拾稳。

SELECT *FROMStudents;SELECT *FROMStudentsWHEREClass='一班';SELECT *FROMStudentsWHEREClass='一班'ANDAge =20;

簡單查詢結(jié)果

別名/更名

語法

SELECT 字段名1[AS] 別名 [,字段名1AS別名]…FROM<表名>

AS可以省略

當(dāng)別名中含有非字母和下劃線時或者是關(guān)鍵字時吮炕,需要加上單/雙引號

示例

SELECTIdAS'學(xué)號',Name'姓名',ClassClassNameFROMStudents;

別名/更名

子查詢(嵌套查詢)

子查詢也稱嵌套查詢,是指一個SELECT查詢語句可以嵌入另一個SELECT查詢語句之中访得。SQL中允許多級嵌套龙亲,子查詢在實際使用中非常多。

連接查詢:涉及兩個及以上的表查詢?yōu)檫B接查詢悍抑。

--查詢二班學(xué)生成績SELECT *FROMScoresWHERESIdIN(SELECTIdFROMStudentsWHEREClass='二班')

子查詢

聚合函數(shù)查詢

聚合函數(shù):是一個值的集合為輸入鳄炉,返回單個值的函數(shù)。

SQL預(yù)定義了5個聚集函數(shù):AVG(平均值)搜骡、MIN(最小值)拂盯、MAX(最大值)、SUM(求和)记靡、COUNT(計數(shù))谈竿。

具體的數(shù)據(jù)庫還會預(yù)定義一些其他常用的函數(shù),比如字符串相聚合函數(shù)摸吠、時間聚合函數(shù)……空凸。

SELECTAVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id)FROMStudents;

聚合函數(shù)查詢

分組查詢

使用GROUP BY子句可進(jìn)行分組查詢

注意:分組查詢的時候要在GROUP BY子句后面跟上所有查詢字段的列表

--根據(jù)班級分組查詢各班平均年齡、最大 年齡寸痢、最小年齡呀洲、年齡總和、班級人數(shù)SELECTClass,AVG(Age),MAX(Age),MIN(Age),SUM(Age),COUNT(Id)FROMStudentsGROUPBYClass;

分組查詢

HAVING子句

如果需要在分組前的數(shù)據(jù)進(jìn)行限制,可以使用HAVING子句

HAVING子句只能與GROUP BY搭配使用

--根據(jù)班級分組查詢各班平均年齡并且班級人數(shù)大于3人SELECTClass,AVG(Age)FROMStudentsGROUPBYClassHAVINGCOUNT(Id)>3;

HAVING子句

HAVING子句和WHERE的區(qū)別

WHERE語句在GROUP BY語句之前道逗,SQL會在分組之前計算WHERE語句丛楚;

HAVING語句在GROUP BY語句之后,SQL會在分組之后計算HAVING語句憔辫。

模糊查詢

語法

SELECT 字段列表FROM表名WHERE字段LIKE'<通配符>'

模糊查詢是通過關(guān)鍵字LIKE和通配符實現(xiàn)的

_:任何單個字符(一個'_'只匹配一個字符趣些,多個字符就使用多個_)

%:包含零個或更多字符的任意字符串(匹配任意內(nèi)容)

[]:指定范圍的字符(只匹配[]內(nèi)的字符)

[ ^]:不在指定范圍的字符(只匹配除[]內(nèi)的字符)

SQL中通配符可以混合使用

單個字符匹配

SELECT *FROMStudentsWHERENameLIKE'小_';SELECT *FROMStudentsWHEREPhoneLIKE'188177166__';

模糊查詢-單個字符匹配

任意字符匹配

SELECT *FROMStudentsWHEREPhoneLIKE'188177166__';SELECT *FROMStudentsWHEREPhoneLIKE'%';SELECT *FROMStudents;

這三條SQL語句查詢結(jié)果都相同只針對此表,原因是瞎貓碰上死耗子贰您。(數(shù)據(jù)少坏平,剛好查詢的結(jié)果是全部的內(nèi)容)

模糊查詢-任意匹配

范圍內(nèi)查詢

-- 查詢所有手機(jī)號碼結(jié)尾兩位包含1和2的信息SELECT *FROMStudentsWHEREPhoneLIKE'188177166[12][12]';

模糊查詢-范圍內(nèi)查詢

不在范圍內(nèi)查詢

-- 查詢所有手機(jī)號碼結(jié)尾兩位不包含1、3锦亦、5舶替、7的信息SELECT *FROMStudentsWHEREPhoneLIKE'188177166[^1357][^1357]';

模糊查詢-不在范圍內(nèi)查詢

關(guān)于SQL查詢就到這里告一段落,后面會更新相關(guān)內(nèi)容杠园。

如果你覺得有問題顾瞪,歡迎和你一起探討。

本文采用知識共享署名-相同方式共享 4.0 國際許可協(xié)議進(jìn)行許可抛蚁。

基于簡書上的作品創(chuàng)作陈醒。 可轉(zhuǎn)載、引用瞧甩,但需經(jīng)本人同意后署名作者且注明文章出處钉跷,并以相同方式共享。

知識共享許可協(xié)議

關(guān)系數(shù)據(jù)庫常用SQL語句語法大全 - 簡書

seayxu?www.reibang.com →

關(guān)系數(shù)據(jù)庫SQL之高級數(shù)據(jù)查詢:去重復(fù)肚逸、組合查詢爷辙、連接查詢、虛擬表 - 簡書

seayxu?www.reibang.com →

MS SQL Server中數(shù)據(jù)表朦促、視圖膝晾、函數(shù)/方法、存儲過程是否存在判斷及創(chuàng)建 - 簡書

seayxu?www.reibang.com →

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末务冕,一起剝皮案震驚了整個濱河市血当,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洒疚,老刑警劉巖歹颓,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異油湖,居然都是意外死亡巍扛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門乏德,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撤奸,“玉大人吠昭,你說我怎么就攤上這事‰使希” “怎么了矢棚?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長府喳。 經(jīng)常有香客問我蒲肋,道長,這世上最難降的妖魔是什么钝满? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任兜粘,我火速辦了婚禮,結(jié)果婚禮上弯蚜,老公的妹妹穿的比我還像新娘孔轴。我一直安慰自己,他們只是感情好碎捺,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布路鹰。 她就那樣靜靜地躺著,像睡著了一般收厨。 火紅的嫁衣襯著肌膚如雪晋柱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天帽氓,我揣著相機(jī)與錄音趣斤,去河邊找鬼俩块。 笑死黎休,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玉凯。 我是一名探鬼主播势腮,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漫仆!你這毒婦竟也來了捎拯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤盲厌,失蹤者是張志新(化名)和其女友劉穎署照,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吗浩,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡建芙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了懂扼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禁荸。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡右蒲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赶熟,到底是詐尸還是另有隱情瑰妄,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布映砖,位于F島的核電站间坐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏邑退。R本人自食惡果不足惜眶诈,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓜饥。 院中可真熱鬧逝撬,春花似錦、人聲如沸乓土。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趣苏。三九已至狡相,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間食磕,已是汗流浹背尽棕。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留彬伦,地道東北人滔悉。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像单绑,于是被迫代替她去往敵國和親回官。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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