數(shù)據(jù)查詢?nèi)腴T

數(shù)據(jù)查詢?nèi)腴T

什么是數(shù)據(jù)查詢

數(shù)據(jù)庫(kù)的查詢是對(duì)數(shù)據(jù)表中現(xiàn)有的數(shù)據(jù)進(jìn)行逐行篩選的工作,它按照要求從符合查詢條件的記錄中把指定的字段值提取出來,形成一個(gè)結(jié)果呈現(xiàn)給用戶。

簡(jiǎn)單查詢

select 命令在SQL語(yǔ)句中使用頻率是最高的。在select語(yǔ)句中包含大量的子句,用于完成不同的查詢功能,如排序(OPDER BY)、條件(WHERE)、分組(GROUP BY)等

基本語(yǔ)句

select命令的最基本的語(yǔ)法如下

select select_list
from table_name
[WHEREsearch_condition]
[ORDER BY order_expression[ASC|DESC]]
[LIMIT [offset] rowcount]

語(yǔ)法說明

select_list :用戶要查詢的字段列表,“**” 代表所有字段

table_name : 用戶要查詢信息的表(表或視圖)。

where : 查詢的篩選條件開始關(guān)鍵字。

search_condition: 查詢條件的內(nèi)容。

order_expression: 按照那些字段進(jìn)行排序

asc: 表明是升序

Desc: 將結(jié)果按照降序排序

limit: 限制每次查詢出來的數(shù)據(jù)字?jǐn)?shù)

基本應(yīng)用

select 全麥查詢

用戶有時(shí)需要查看當(dāng)前表內(nèi)的所有內(nèi)容,分析表的信息內(nèi)容是,可以采用下面的方式查看學(xué)生表中所有的數(shù)據(jù)

示例:

select* from StudentInfo

select 選擇列查詢

select id,studemtNmae,age from StuddentInfo

查詢中的別名

當(dāng)直接使用select查詢后,由于在設(shè)計(jì)數(shù)據(jù)庫(kù)是使用的是都是英文的字段名,而且有的字段名不是很好理解,對(duì)用戶來說不夠直觀。

使用AS關(guān)鍵字為字段定義別名

語(yǔ)法:

select 字段名1 AS 別名,字段名2 AS 別名 .... FROM 表名

使用空格為字段定義別名

語(yǔ)法

select 字段名1 別名,字段名2 別名 ... FROM 表名

條件查詢

使用where子句限制查詢結(jié)果

全表查詢雖然能夠?qū)⑺械臄?shù)據(jù)查詢出來,但是這樣操作也有一定的弊端,如果表的數(shù)據(jù)量非常大,則會(huì)消耗掉大量的內(nèi)存和系統(tǒng)資源,而且一般的全表查詢結(jié)果,對(duì)于用戶來說作用不是很大,有時(shí)候只需要查看某些閑著條件內(nèi)的數(shù)據(jù),因此需要按照條件進(jìn)行數(shù)據(jù)的查詢。

單條件查詢

單條件查詢是指在where語(yǔ)句后面只有一個(gè)條件,

例如,要查詢年齡在21歲以上的學(xué)生信息

select id,StudentName,Age from StudentInfo where Age >21;

多條件符合查詢

有時(shí)候條件可能不僅僅是一條,可能是多個(gè)條件的組合。在這種情況下就需要使用到上一張中的邏輯運(yùn)算符來組合多個(gè)條件,邏輯運(yùn)算符有:“NOT” 、“AND”、“OR”。

示例:

select id,StudentName,Age,Gender from StudentInfo where Age =20 AND Gender='女';

使用Distinct 消除重復(fù)行

在查詢某列數(shù)據(jù)的時(shí)候,可能返回的結(jié)果中存在重復(fù)的值,而用戶對(duì)于重復(fù)的值可能只需要知道一個(gè)即可。

例如要查詢學(xué)生表中登記的學(xué)生都有那些班級(jí)的,只需要知道這些班級(jí)編號(hào)即可。因?yàn)橐粋€(gè)辦理一定存在多名同學(xué),所以使用之前的查詢方式,返回的班級(jí)編號(hào)結(jié)果一定有很多重重復(fù)的行,這些重復(fù)的行值只需要消除成1個(gè),select 語(yǔ)句中的 Distinct關(guān)鍵字就是用來解決這個(gè)問題的

示例:

select DISTINCT classID   FROM  studentinfo

使用LIMIT限定查詢返回行

當(dāng)表中的數(shù)據(jù)量比較多的時(shí)候,用戶只需要看到前面的幾行就能達(dá)到查詢的目的,這時(shí)用LIMIT 關(guān)鍵字可以限制返回的查詢結(jié)構(gòu)的行數(shù).LIMIT限定查詢一般和數(shù)據(jù)查詢排序結(jié)合使用,對(duì)比排序后的數(shù)據(jù)取前面一定量的結(jié)果。

語(yǔ)法

LIMIT[位置偏移量] 行數(shù)

位置偏移量: 用于只是MYSQL從哪一行開始顯示,是一個(gè)可選參數(shù),如果不指定該參數(shù),將會(huì)從結(jié)果集的第一條記錄開始(從零開始計(jì)數(shù));

行數(shù):只是返回的記錄條數(shù)

例如:現(xiàn)在我們要顯示studentInfo表的前四條記錄,命令如下:

select id,studentName,Gender,Age from studentInfo LIMIT 4;

注意:

LIMIT 語(yǔ)句時(shí)MYSQL 特有的功能。Oracle 、SQL Server 限定查詢返回行使用的時(shí)其他語(yǔ)句。

處理Null值

MySQL中經(jīng)常有些字段值為Null。Null是一種 比較特殊的情況,如果直接通過sql語(yǔ)句查詢Null是查詢不到的結(jié)果都是0條,用字段名=Null和字段名 !=Null 判斷結(jié)果是錯(cuò)誤的。

所以MySQL提供了一個(gè)專門針對(duì)Null查詢的關(guān)鍵字就是 isNull 和 is not Null.

使用Order by 進(jìn)行查詢排序

表中數(shù)據(jù)是按照添加的物理順序存放的,但是在查詢的時(shí)候,我們會(huì)需要按照某個(gè)規(guī)則來對(duì)結(jié)果進(jìn)行順序的排序然后在顯示,這是就需要用到Select命令中的排列子句來幫忙實(shí)現(xiàn)了。

單列排序

單列排序是指按照表中的某一列進(jìn)行排序,即ORDER BY 子句后面只有一個(gè)列名。比如我們向根據(jù)學(xué)生的年齡從小往大或從大往小 來排列查詢的結(jié)果。

示例:

select id,studentName,Gender,Age from studentInfo  ORDER BY Age ASC  -- 升序的方式進(jìn)行查詢
select id,studentName,Gender,Age from studentInfo   ORDER BY Age  DESC -- 降序的方式進(jìn)行查詢

注意:

(1) :在數(shù)據(jù)庫(kù)中默認(rèn)是以升序進(jìn)行排序的,所以ASC可以略去不寫

(2) :在數(shù)據(jù)中,Null值比所有的值都要小

多列排序

多列排序時(shí),order by 子句后面跟多個(gè)字段,字段之間用逗號(hào)隔開,每個(gè)字段后面都可以跟ASC或DESC 。多列偶愛徐的基本運(yùn)算過程時(shí):數(shù)據(jù)庫(kù)引擎會(huì)按照第一個(gè)字段以及升、降序規(guī)則排序查詢結(jié)果,如果查詢結(jié)果里在這個(gè)字段上有重復(fù)值,則對(duì)這些存在重復(fù)的數(shù)據(jù)行按照第二個(gè)排列字段及其升、降序規(guī)則進(jìn)行排序,以此類推

案例

select id,studentName,Gender,Age from studentInfo  ORDER BY Age DESC,Gender ASC
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容