第五章 簡單的資料查詢

2021-07-09 10:33:25 字數 4643 閱讀 9676

查詢基本結構

•概念–查詢(dql)是資料庫中最為常用和複雜的一種sql結構,學會編寫查詢sql是程式設計師必須具備的能力。

–要從資料庫中查詢資料,我們要使用sql的select語句。標準select查詢由select子句、from子句、where子句、order by子句組成。

–標準結構

select  [distinct

]  from 

表名[where 

過濾條件

][order

by 列1,列

2…]

•查詢操作的分類

–投影操作

•指定查詢結果中能顯示哪些列

–選擇操作

•指定哪些行出現在結果中

–排序操作

•指定查詢的結果以什麼樣的順序顯示

投影操作

•概念–投影操作是查詢語句裡必須有的子句,關鍵字則為select。它將選擇對錶中哪些列進行操作,這些列將出現在結果中。

•標準結構

select 列1,

列2 from 表名

•列表名的幾種書寫方法:

如果我們選擇某個表中的多個列,那麼列名之間用逗號分隔開;

如果是單個列,只需要列出該列的列名即可;

如果選擇所有的列,可以簡單地用「*」號帶代替列名列表。

•表字首

select

t_student

.姓名

from

t_student

•列別名

–使用別名,可以使sql語句和返回的資料更容易讀懂、更容易理解。在多個表有同樣的列名的時候,使用別名更容易區分。

–在列名或表名用as關鍵字來提供別名,語法如下:

select

列a as a,

列bas b,

列c as c

from

表名as t

–當使用表的別名時,可以在同一sql語句中的列名使用別名,例如:

select t.列

aas a, t.

列b as b, t.

列c as c

from

表as t

•計算列

–在資料庫管理系統中,我們也可以執行返回計算列的select查詢。返回計算列意味著資料不存在於資料庫中,但是可以從資料庫中的資料構造或者計算得來。

–舉例•將每個學生年齡加上10歲顯示

select

年齡+10 from

t_student

•投影列也可以用字串連線,mysql中字串連線用concat函式,如

select concat(

姓名,』-』,

年齡) from

t_student

•排除重複資料

–資料庫表的同列中,經常有相同值多次出現。有時,我們需要確保返回唯一的資料行。這時我們需要使用distinct關鍵字來排除重複的行資料。

–標準結構

select distinct

列1 from 表名

select distinct

性別from

t_student

結果只有2條資料,重複的資料不顯示。

•返回限定行數的查詢

–在mysql中可以限制查詢的行數,並制定從第幾行開始到第幾行結束。

–標準結構

select 列1,

列2 from

t_student

limit

開始序號

, 返回的行數

–如果用1個引數,則表示從第一行開始返回指定行數的結果。

–如果用2個引數,則表示從指定行開始返回指定行數的結果。

注意:limit

序號是從

0開始。

limit

只能用於

mysql中。

選擇操作:

•單條件選擇操作

–where子句應用搜尋條件於select查詢獲得的資料,搜尋條件可以採用不同的形式,但是條件的值都是布林值。在此情況下,我們只對「列c = 值」為真的行感興趣。如果條件為真,行就被返回;如果為假或者unknown(因為null值的存在),則被忽略。

–標準結構

select 列1

, 列2from

表where 列3

= 值–舉例

•查詢姓名為張三同學的所有資訊

select

* from

t_student

where

姓名=『張三』

比較運算子:

運算子含義用於檢測值是否於另乙個值相等

用於檢測值是否不等於另乙個值

與!=類似

與!=類似

如果第乙個運算元大於第二個運算元則為真

用於檢測第乙個運算元是否大於或者等於第二個運算元

如果第乙個運算元小於第二個運算元則為真

用於檢測第乙個運算元是否小於或者等於第二個運算元

•多條件選擇操作

–組合where 條件

•and:並且

•or:或者

–標準結構

select列a,

列bfrom

表where

條件1 (and

或者 or)條件2

–舉例•查詢年齡在18歲以下或25歲以上的同學資訊。

select * from

t_student

where

年齡<18or

年齡》25

查詢年齡在18-25歲之間的女生資訊。

select * from

t_student

where

年齡》=18and

年齡<=25and

性別='女'

•執行範圍測試(between)

–乙個範圍搜尋,大於等於下限,並且小於等於上限。

–標準結構

select列a,

列b from

表 where 列

c between 下限

and 上限

–舉例•查詢年齡在18到25歲之間的學生資訊

select * from

t_student

where

年齡 between18 and 20

•定義集合關係(in或not in)

–在指定的某幾個值中進行搜尋

–標準結構

select列a,

列b from

表where

列c in (

值集合)

–舉例•查詢年齡在18、20、22歲三個年齡段的學生資訊

select * from

t_student

where

年齡 in(18,20,22)

•模糊查詢(like)

–模糊查詢是一種比較實用的過濾方式,利用萬用字元來實現模糊查詢。

–標準結構

select

列a, 列b

from

表 where列c

like 模式

–萬用字元

•「_」萬用字元

–表示任何單個字元

•「%」萬用字元

–表示包含零個或多個任意字元

•模糊查詢(like)

–舉例

•查詢名字為兩個字的學生資訊

select * from

t_student

where

姓名 like'__'

•查詢姓張的學生資訊

select * from

t_student

where

姓名 like 『張%'

•處理空值資料

–在資料庫中判斷某列是否為空不能用=null,而應該用is null或is notnull。使用其他任何比較運算子來匹配null得到的都是false的結果,比如null=null也是返回false。

–舉例

select * from

t_student

where

性別 is null

排序操作:

•概念–排序操作是指當查詢的結果投影出來後以哪一列或及列的順序進行排列。如果不指定則以資料庫預設順序排列。

•標準結構

–單列排序

select

列a, 列b,

列cfrom

表order by列a

•其中,order by子句指定列a用於對資料排序,列a的值可以是字母、數字、時間等。

–多列排序

select

列a, 列b,

列cfrom

表order by列a

,列b,

列c...

在orderby子句後指定多個列名時,是根據後面列名的順序確定優先順序。

基本查詢

sql的執行順序

•要學好查詢sql就必須掌握sql的執行順序,目前我們已經學習了select、fromwhere、order by這幾個關鍵字的用法,他們組成了基本查詢sql的結果,下面是他們的執行順序。

•第一步:執行from

•第二步:where條件過濾

•第三步:執行select投影列

第四步:執行order by 排序

第五章 簡單的資料查詢 總結

資料庫的查詢操作基本分為三類 投影操作,選擇操作,排序操作 查詢的基本結構 select from 表名 where 過濾條件 投影操作 select 列名列表 from 表名 列名列表幾種書寫方式 如果選擇某個表中的多個列,那麼列名之間用逗號隔開 如果是單個列,只需要該列的列名即可 如果選擇所有的...

第五章 多表查詢

本章主要講解內連線,inner join子句將乙個表中的行於其他標表中的行進行匹配,並允許從兩個表中查詢包含列的行紀錄,一般出現在from子句之後。desc employee desc department select e.fname,e.lname,d.name from employee e ...

第五章 呈現資料

在指令碼中重定向輸出 建立自己的重定向 列出開啟的檔案描述符 阻止命令輸出 建立臨時檔案 兩種顯示指令碼輸出的方法 linux系統將每個物件當做檔案處理。這裡包括輸入和輸出程序。linux用檔案描述符 file descriptor 來標識每個物件。檔案描述符是乙個非負整數,可以唯一標識會話中開啟的...