Mysql中的select查詢操作

2021-07-30 18:09:02 字數 3810 閱讀 6030

mysql中的select查詢操作

一、基本介紹

對於資料庫而言,最常用的sql語句就是select語句了。它的用途是從乙個或多個表中檢索資訊。為了使用select檢索表資料,必須至少給出兩條資訊——想查詢什麼,以及從什麼地方查詢。

二、select基本操作演示

首先建立乙個資料表book

create table `book` (

`book_id` bigint(20) not null auto_increment comment '圖書id',

`name` varchar(100) not null comment '圖書名稱',

`number` int(11) not null comment '館藏數量',

primary key (`book_id`)

) engine=innodb auto_increment=1004 default charset=utf8 comment='圖書表'

之後向資料表中插入一些資料,如下:

1、檢索單個列

語句:select name from book

結果如下:

上述語句利用 select語句從book表中檢索乙個名為name的列。所需的列名在select關鍵字之後給出, from關鍵字指出從其中檢索資料的表名。需要注意的是:如果沒有明確排序查詢結果(則返回的資料的順序沒有特殊意義。返回資料的順序可能是資料被新增到表中的順序,也可能不是。只要返回相同數目的行,就是正常的。如上的一條簡單select語句將返回表中所有行。資料沒有過濾 (過濾將得出結果集的乙個子集), 也沒有排序。

2、檢索多個列

語句:select name,number from book

結果如下:

要想從乙個表中檢索多個列,使用相同的select語句。唯一的不同是必須在select關鍵字後給出多個列名,列名之間必須以逗號分隔。

3、檢索所有列

語句:select * from book

結果如下:

select語句可以檢索所有的列而不必逐個列出它們。這可以通過在實際列名的位置使用星號( *)萬用字元來達到。

注意:一般,除非你確實需要表中的每個列,否則最好別使用*萬用字元。雖然使用萬用字元可能會使你自己省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應用程式的效能。

4、檢索出值不同的行

語句:select distinct number from book

結果如下:

假如使用select number from book語句,則查詢結果如下:

可見distinct關鍵字的作用是指示mysql只返回不同的值。

注意:不能部分使用distinct distinct關鍵字應用於所有列而不僅是前置它的列。如果給出查詢語句是select distinct name,number from book,則有除非兩個資料的name和number都相同,否則所有行都將被檢索出來。如下:

5、限制顯示結果數

語句:select name from book limit 2

結果如下:

select語句返回所有匹配的行,它們可能是指定表中的每個行。為了返回第一行或前幾行,可使用limit子句。limit 2指示mysql返回不多於2行。

語句:select name from book limit 2,2

結果如下:

limit 2, 2指示mysql返回從第2行開始的後面2行。第乙個數為開始位置,第二個數為要檢索的行數。所以, 帶乙個值的limit總是從第一行開始,給出的數為返回的行數。帶兩個值的limit可以指定從行號為第乙個值的位置開始。為了避免混淆,mysql 5支援limit的另一種替代語法。 即使用如下形式:limit 4 offset 3。意為從行3開始取4行,就像limit 3, 4一樣。

注意:檢索出來的第一行為行0而不是行1。因此, limit 1, 1將檢索出第二行而不是第一行。

6、使用完全限定的表名

語句:select book.name from book

結果如下:

我們可以使用完全限定的名字來引用列(同時使用表名和列字),這在有些時候十分有用。我們還可以使用完全限定的名字來引用表名。如:select book.name from liberty.book,其中liberty指定了book表所在的資料庫。

三、select排序檢索資料

1、單列排序資料

語句:select name,number from book order by number 

結果如下:

上述結果顯示以字母順序排序資料,預設為公升序排序(即從小到大)。

2、按多個列排序

語句:select * from book order by number,book_id 

結果如下:

為了按多個列排序,只要指定列名,列名之間用逗號分開即可。排序時首先按照number進行排序,當number相同時,顯示順序按照book_id進行排序。

3、指定排序方向

語句:select * from book order by book_id desc 

結果如下:

可以使用order by子句以降序(從z到a)順序排序。為了進行降序排序,必須在order by後指定desc關鍵字。與desc相反的關鍵字是asc ( ascending),在公升序排序時可以指定它。但實際上,預設排序就是公升序的。

注意:desc關鍵字只應用到直接位於其前面的列名。例如如下語句:

select * from book order by number desc,book_id

結果如下:

如果想在多個列上進行降序排序, 必須對每個列指定desc關鍵字。而且在字典 ( dictionary)排序順序中,大寫的「a」被視為與小寫的「a」相同,這是mysql(和大多數資料庫管理系統)的預設行為。

4、查詢最大或最小

語句:select * from book order by number desc limit 1

結果如下:

上述語句查出了所有book資料中number值最大的乙個。同樣可以查出最小的,只要去掉desc即可。

注意:在給出order by子句時,應該保證它緊跟from子句之後。如果使用limit,它必須位於order by之後。否則將產生錯誤訊息

慢查詢 找出mysql中超時的select語句

第一步 進入mysql介面 查詢多少秒 才屬於慢查詢。show variables like long query time 第二步 更改這個時間值 如 select語句執行超過1秒就屬於慢查詢範圍 set long query time 1 可以修改慢查詢時間 第三步 把慢查詢的sql記錄到我們的...

MySQL筆記 select多表查詢

前面的筆記已經記錄了select單錶查詢與子查詢,此筆記記錄sql99標準的多表連線查詢。一 sql92與sql99的連線查詢 sql99標準連線查詢語法 select col1,col2 from table1,table2 table3,where condition 如 select t1.t...

MySql(四)Select條件查詢

select條件查詢的格式如下 select 查詢列表 from 表名where 篩選條件 根據篩選條件可以分為以下幾類 1.按照條件按表示式進行篩選 常用條件運算子如下 2.按照邏輯表示式進行篩選 邏輯運算子的主要作用 用於連線條件表示式 and or not 3.模糊查詢 like betwee...