Mysql數據庫查詢語句DQL(Data Query Language)—— 基本查詢

基本語法形式:

Select 【all|distinct】字段或表達式列表 【from 子句】 【where 子句】 【group by 子句】 【having 子句】 【order by 子句】 【limit 子句】;

 

字段或表達式列表

(1)字段,來源於表,依賴於from子句

(2)表達式是類似這樣的一個內容:8,8+3,now()

示例:select 8,8+3,now(),concat(‘aa’,’bb’);

Concat()函數時mysql中的系統函數,用於連接多個字符串

(3)每個輸出項(字段或表達式列表)都可以設定一個別名。形式爲:

字段或表達式列表  as  別名

 

All和distinct

用於設定select出來的數據,是否消除“重複行”,默認值是all(不消除)

Distinct:消除重複行

 

from 子句

表示select部分取得數據的數據源---表

通常,後面接表名,如 from tab 或from tab1,tab2

也可能是一些數據來源

 

where 子句

(1)對from子句中的數據源的數據進行篩選的條件設定,依賴於from子句

(2)通常都需要使用各種“運算符”。

  算術運算符:+  -  *  /  %

  比較運算符:>  >= <  <=  = <>  ==  !=

  邏輯運算符:and  or  not

示例:select * from tab where not(sex=‘女’);

(3)where true 表示全部取出。Where false 表示什麼也不取

(4)is運算符:空值與布爾值的判斷

   XXis null:判斷某個字段是“null”值----就是沒有值;

XX is not null: 判斷某個字段不是“null”值

XX is true:判斷某個字段爲真(true)

XX is false:判斷某個字段爲假(false):0  0.0  ‘’ null

布爾值是tinyint(1)這個類型的別名,本質上,判斷這個數字是不是爲0

(5)between運算符:範圍判斷

 用於判斷某個字段的數據值是否在某個給定的範圍----適用於數字類型

語法:

  XX  between 值1 and 值2;

含義:XX字段的值在給定“值1”與”值2“之間

(6)in運算符:給定確定數據的範圍判斷

語法:

  XX  in (值1,值2,值3…);

含義:表示字段XX的值爲所列出的這些值(零散無規律)中的一個。

(7)like運算符:對字符串進行模糊查詢

語法:

  XXlike ’要查找的內容‘;

含義:

實現對字符串的某種特徵信息的模糊查找,依賴於2個特殊的符號:

%:代表任何個數的任何字符

_:代表任何一個字符

示例:

  namelike ’安%‘;

如果要找到字段中含有%的行,使用轉義。示例:XX like ’%\%%‘; 表示XX中含有百分號這個字符的所有行

 

group by 子句

形式:group by 字段1 【desc |asc】,字段2【desc|asc】,……

說明:(1)分組是對已經找出的數據進行分組

(2)該分組結果,指定排序方式desc(倒序)asc(升序)

(3)通常就一個字段

(4)分組後,就只有以下幾種可用的組信息(即可出現在select中)

     1)分組依據本身的信息,就是該分組依據的字段名

     2)每一組的數量信息:用count(*)獲得

     示例:selectpinpai,count(*) as 數量 from product group by pinpai;

    3)原來數據中的“數值類型字段的聚合信息”,包括如下幾個:

       Max(字段名)  最大值        min(字段名)  最小值

       Avg(字段名)   平均值       sum(字段名)  總和值

   均爲系統內部函數

 

having 子句

與where完全一樣,對分組的結果進行篩選(分組之後的數據)

示例:select pinpai,count(*) as 數量 from product group by pinpai having count(*)>2;

 

 

order by 子句

對查詢到的數據進行排序以輸出結果,多個字段的排序,在前一個排序的基礎上,對相等值以後續字段排序

形式:order by字段1 【desc |asc】,字段2【desc|asc】,……

 

limit 子句

對查詢到的數據,按指定的行取出來:從第幾行開始取多少行

形式:limit 起始行號,要取出的行數;

簡寫:limit 行數;(相當於起始行號從0開始算起)

 

 

總結:

1.在形式上,select很多子句可省略,但是如果出現,其順序不能打亂,必須按照給定的順序寫出

2.where子句依賴於from子句:即沒有from 不能有where

3.having子句依賴於group by 子句:即沒有groupby 不能有having

4.select中的字段依賴於from子句

5.內部執行過程:從from的數據源獲得所有數據,然後where子句對這些數據篩選,之後再使用group by對篩選出的數據進行分組,接下來使用having子句對這些分組進行篩選,然後纔可以order by 和limit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章