資料表查詢操作常用命令
1.表查詢資料
1> 查詢資料表中所有資料 語法:select * from 表名;
2> 查詢指定欄位的顯示 語法:select 欄位1,欄位2,… from 表名;
3> as 別名 在查詢時,預設結果顯示的欄位和表中欄位名相同,可以通過別名來修改顯示的樣式. 語法:select 欄位1 as 別名,欄位2 別名,… from 表名;
4> 消除重複資料 在查詢資料時,查詢結果可能會有很多重複的資料,如果不想重複,可以使用 distinct 來實現去重. 語法:select distinct 欄位名 from 表名;
5> 帶條件查詢 where 子句 查詢資料時,需要根據不同的需求設定條件。 通過 where 子句來設定查詢條件. 語法:select distinct 欄位名 from 表名 where 條件; —where 條件可以使用運算子操作: (1)比較運算子
- 等於: =
- 大於: >
- 大於等於: >=
- 小於: <
- 小於等於: <=
- 不等於: != 或 <>
(2)邏輯運算子
- and
- or
- not
(3)模糊查詢 like
- % 表示任意多個任意字元
- _ 表示一個任意字元
(4)範圍查詢
- in 表示在一個非連續的範圍內 , 可以使用 or 實現
- between … and … 表示在一個連續的範圍內,可以使用 and 實現 “`
(5)空判斷 null 在資料庫中,允許在資料新增是沒有資料,使用空值來表示。 空值不等於0,也不等於‘’,需要使用特殊的判斷方式.
- 判斷空值 is null
- 判斷非空值is not null
(6)查詢結果排序 排序使用 order by 子句 asc(預設) 升序 / desc 降序 語法:select * from 表名 order by 列1 asc/desc [,列2 asc/desc,…]
多欄位排序 可以對多個欄位進行排序,只需將欄位的排序方式依次寫在 order by 後面即可,欄位間使用逗號分隔
(7)分頁查詢 查詢資料庫時,由於資料較多,在顯示過程中不可能將資料全部顯示。 可以使用分頁查詢,只顯示指定的一部分資料. 語法:select from 表名 limit start=0,count *
- 從start開始,獲取count條資料
- start預設值為0
- 需要獲取資料的前n條的時候可以直接寫 limit n
- 查詢第 N 頁 M 條資料,可以通過公式算出:(N - 1) * M
(8)聚合函式 在MySQL中提供了一些定義好的函式,利用這些函式提供對資料的統計功能。 常用的聚合函式:
- sun() 作用型別:數字 描述:對指定列中的所有非空值求總和;
- avg() 作用型別:數字 描述:對指定列中的所有非空值求平均值;
- min() 作用型別:數字、字元、datatime 描述:返回指定列中的最小數字、最早的日期或者最小的字串;
- max() 作用型別:數字、字元、datatime 描述:返回指定列中的最大數字、最近的日期或者最大的字串;
- count() 作用型別:任意基於行的資料型別 描述:統計結果集合中全部記錄行的數量
(9) 分組 分組就是將相同資料放到一起進行處理。 單純的分組是沒有意義的,需要配合聚合函式一起使用。 語法: select 分組的欄位名,聚合函式… from 表名 group by 分組欄位名 having 分組後的條件
- 多欄位分組 可以對多個欄位進行分組,需要注意的是多欄位時,只有對應欄位完全相同,才能分為同一組
- group_concat(欄位名) 作用:根據分組結果,使用group_concat()來獲取分組中指定欄位的集合
- having條件子句 having 作用和 where 類似,用來去分組資料進行篩選
- 分組彙總with rollup 作用:會在分組下方,加一行,顯示彙總
2.多表查詢資料
在資料庫操作中,資料往往不是存在一張表中的,同一個專案中,根據設計正規化,資料可能分散在不同的多張表中,這時查詢資料時,就需要多表查詢。
1> 普通多表查詢(無意義) 作用:直接將表放在from後面,進行讀取 語法:select 表名.欄位 … from 表名1,表名2…
2>多表查詢連線條件 在多表個表進行查詢時,表與表之間應該是有有關係的,一般會以外來鍵的形式來建立表間的關係。 語法:select 表名1.查詢欄位名,表名2.查詢欄位名 from 表名1,表名2 where 表名1.欄位名 = 表名2.欄位名;
3> 表別名 在多表操作時,由於表的名字比較長,在寫SQL語句時非常不方便。可以在查詢時,給表起個別名,代替表名來操作 語法: select 別名.欄位名… from 表1 as 表1別名,表2 表2別名… [條件]
4> 內連線查詢 作用:查詢的結果為兩個表匹配到的資料 語法: select * from 表1 inner join 表2 on 表1.列 運算子 表2.列;
注意:資料庫預設的連線方式就是內連線查詢, inner join 可以不顯示的寫出來。 連線條件使用 on 進行指定。儘量不要使用 where,where在其它連線方式時,指定的連線條件無效。
5>左連線查詢 作用:查詢的結果為根據左表中的資料進行連線,如果右表中沒有滿足條件的記錄,則連線空值。 語法: select * from 表1 left join 表2 on 表1.列 運算子 表2.列; <在實際工作中,右連線使用的非常少,因為左連線完全可以替代右連線,在連線過程中,只需要調整表的順序即可。>
6> 子查詢 作用:作用:在一個 select 語句中,嵌入了另外一個 select 語句, 那麼被嵌入的 select 語句稱之為子查詢語句 語法: select * from 表1 where 條件 運算子 (select 查詢);
- 標量子查詢 作用:子查詢返回的結果是一個數據(一行一列) 語法:主查詢 where 條件 比較運算子 (列子查詢)
- 列級子查詢 作用:子查詢返回的結果是一列(一列多行) 語法:主查詢 where 條件 in (列子查詢)
- 行級子查詢 作用:子查詢返回的結果是一行(一行多列) 語法:主查詢 where (欄位1,2,…) = (行子查詢)
7> 自動連線查詢 作用:在查詢資料時,只有一張表,查詢時使用自己連線自己。 語法: select * from 表1 inner join 表1 on 表1.列 運算子 表1.列 where 條件