mysql——查詢語句——單表查詢——(示例)


一、基本查詢語句

select的基本語法格式如下:

select 屬性列表 from 表名和視圖列表

[ where 條件表達式1 ]

[ group by 屬性名1 [ having 條件表達式2 ] ]

[ order by 屬性名2 [ asc | desc ] ]


屬性列表參數表示需要查詢的字段名;

表名和視圖列表參數表示從此處指定的表或者視圖中查詢數據,表和視圖可以有多個;

條件表達式1參數指定查詢條件;

屬性名1參數指按照該字段的數據進行分組;

條件表達式2參數滿足該表達式的數據才能輸出;

屬性名2參數指按照該字段中的數據進行排序;排序方式由asc和desc這兩個參數指出;

asc參數表示升序,這是默認參數,desc表示降序;(升序表示從小到大)

對記錄沒有指定是asc或者desc,默認情況下是asc;



如果有where子句,就按照“條件表達式1”指定的條件進行查詢;如果沒有where子句,就查詢所有記錄;




如果有group by子句,就按照“屬性名1”指定的字段進行分組,如果group by后面帶having關鍵字,那么只有

滿足“條件表達式2”中知道的條件才能輸出。group by子句通常和count()、sum()等聚合函數一起使用;




如果有order by子句,就按照“屬性名2”指定的字段進行排序,排序方式由asc和desc兩個參數指出;默認情況下是asc;

前提准備:

create table student(  sid varchar(50),
                       sname varchar(50),
                       sage  varchar(50),
                       ssex  varchar(50)
                    );

insert into student( sid,sname,sage,ssex ) values('1','zhaolei','1990-01-01','nan');

insert into student values('2','qiandian','1990-12-21','nan');
insert into student values('3','sunfeng','1990-05-20','nan');
insert into student values('4','liyun','1990-08-06','nan');

insert into student values('5','zhoumei','1991-12-01','nv'),
                          ('6','wulan','1992-03-01','nv'),
                          ('7','zhenzu','1989-07-01','nv'),
                          ('8','wangju','1990-01-20','nv');

select * from student;

 

 

一、查詢所有字段

(1)、列出表的所有字段

(2)、使用 ‘ * ’ 查詢所有字段:select * from 表名;

select sid,sname,sage,ssex from student;

select * from student;

 

 

二、查詢指定字段

查詢數據時,可以在select語句的‘屬性列表’中列出  所有查詢的指定字段。這種方式可以指定需要查詢的字段,而不需要查詢出所有的字段;

 

查詢出來的字段的順序與select中給出的字段的排列順序相同。

select sid,sname,ssex,sage from student;

 

 

示例02:

select sid,sname from student;

 

 

 

 

三、查詢指定記錄

即按照條件進行查詢:  where   條件表達式;

 

查詢的結果必須滿足查詢條件。

where子句可以用來指定查詢條件

語法格式:where 條件表達式


其中條件表達式參數指定select語句的查詢條件;


where子句常用的查詢條件又很多種,如下表示:


比較                   =<><=>=、……

指定范圍               between andnot between and

指定集合               innot in

匹配字符               likenot like

是否為空值             is nullis not null

多個查詢條件           andor

 

執行語句:

select * from student where sid = '1';

 

 

四、帶in關鍵字的查詢

in關鍵字可以判斷某個字段的值是否在指定的集合中。

語法格式:[not] in (元素1,元素2,……元素n);

注釋:各個元素之間用逗號隔開

 

執行語句:

select * from student where sid in ('2','3','5')

select * from student where sid not in ('2','3','5')

 

 

 

五、帶between and的范圍查詢

between and關鍵字可以判斷某個字段的值是否在指定范圍內。


語法格式:[not] between 取值1 and 取值2;

其中not是可選參數,加上not表示不在指定范圍內滿足條件;

“取值1”表示范圍的起始值;“取值2”表示范圍的終止值;

 

執行語句:

select * from student where sid BETWEEN '2' and '5';

select * from student where sid not BETWEEN '2' and '5';

 

 

 

六、帶like的字符匹配查詢


like關鍵字可以匹配字符串是否相等。

語法格式:[not] like '字符串';


not是可選參數,加上not表示與指定的字符串不匹配時滿足條件;

字符串表示指定用來匹配的字符串,該字符串必須添加單引號或者雙引號。

字符串參數的值可以是一個完整的字符串,也可以是包含%或者_的通配符;


%可以代表任意長度的字符串,長度可以為0,

舉例:b%k表示以字母b開頭,以字母k結尾的任意長度的字符串;該字符串可以代表bk,buk,book,break等字符串;

_只能代表單個字符;

舉例:b_k表示以字母b開頭,以字母k結尾的長度為3的字符串。中間的_可以代表任意一個字符串;

 

舉例:select * from employee where name like 'aric';

此處查詢出name='aric'的記錄,這里like相當於=


注意一個漢字是2個字符串,要用2個--

 

執行語句:

select * from student where sname like 'zhao%';

select * from student where sname not like 'zhao%';

 

 

 

 

 

 

七、查詢空值

is null關鍵字可以用來判斷字段的值是否為空值。

語法格式:is [not] null;

 

執行語句:

select * from student where sname is null;

select * from student where sname is not null;

 

 

 

 

 

八、帶and的多條件查詢

 

and關鍵字可以聯合多個條件進行查詢,使用and關鍵字時,只有同時滿足所有查詢條件的記錄才會被查詢出來;


語法格式:條件表達式1 and 條件表達式2 […… and 條件表達式n]

 

執行語句:

 

select * from student where sid < 4 and ssex = 'nan';

 

 

 

 

 九、帶or的多條件查詢

使用or關鍵字時,只要滿足這幾個查詢條件中的一個,這樣的記錄將會被查詢出來,如果不滿足這些查詢條件的任何一個,這樣的記錄將會被排除


語法格式:條件表達式1 or 條件表達式2 [ ……or 條件表達式n ]

 注意:and 和 or 關鍵字一起使用時,and比or要先運算,and關鍵字前后的條件先結合,然后再與or關鍵字的條件結合。

 

執行語句:

select * from student where sid < 4 or ssex = 'nan';

 

 

 

十、查詢結果不重復

 

如果表中的某些字段沒有唯一性約束,這些字段可能存在着重復的值。


select語句中可以使用distinct關鍵字來消除重復的記錄;

語法格式: select distinct 屬性名

 

select distinct ssex from student;

 

 

 

十一、對查詢結果排序

 

使用order by關鍵字對記錄進行排序


語法格式:order by 屬性名 [ asc|desc ]


屬性名參數表示按照該字段進行排序;

asc參數表示按照升序的順序進行排序;

desc參數表示按照降序的順序進行排序;

默認情況下按照asc方式進行排序;

 

舉例:select * from employee order by age desc;

 

注意:如果記錄中存在一條記錄,其age字段的值是空值(null),則這條記錄將會顯示為第一條記錄,因為按照升序排序時,


含空值的記錄將最先顯示,可以理解為空值是該字段的最小值;而按照降序排序時,age字段為空值的記錄將最后顯示

 

 

MYSQL中,可以指定按照多個字段進行排序

舉例:select * from employee order by d_id asc,age desc;

查詢employee表中的所有記錄,按照d_id字段的升序方式和age字段的降序方式進行排序

查詢結果排序時,先按照d_id字段的升序方式進行排序,如果有多個d_id字段的值相同,則這幾個記錄再按照age字段進行降序排列;

 

執行語句:

select * from student order by sid desc;

 

 

 

 

十二、用limit限制查詢結果的數量


limit關鍵字可以指定查詢結果從哪條記錄開始顯示,還可以指定一共可以顯示多少條記錄。

limit關鍵字有兩種使用方式。分別是不指定出事位置和指定初始位置。

 

(1)不指定初始位置

 

limit關鍵字不指定初始位置時,記錄從第一條記錄開始顯示。顯示的記錄條數由limit關鍵字指定

語法格式:limit 記錄數

記錄數參數表示顯示記錄的條數


注釋:如果“記錄數”的值小於查詢結果的總記錄數,將會從第一條記錄開始顯示,顯示指定條數的記錄;

如果“記錄數“的值大於查詢結果的總記錄數,數據庫系統會顯示查詢出的所有記錄


舉例:select * from employee limit 2;

舉例:select * from employee limit 10;

雖然limit關鍵字指定了10條記錄,但是查詢結果中只有4條記錄,因此數據庫系統會顯示全部4條記錄;

 


(2)指定初始位置


limit關鍵字可以指定從哪條記錄開始顯示,並且可以指定顯示多少條記錄


語法格式:limit 初始位置,記錄數

初始位置指定從哪條記錄開始顯示;

記錄數表示顯示記錄的條數;

第一條記錄的位置是0,第二條記錄的位置是1,后面以此類推;

 

執行語句:不指定初始位置

select * from student limit 3;

 

 

 

 

執行語句:指定初始位置

select * from student limit 1,3;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM