初步體會:現在叫飛鷹小學5年2班的學生到操場上排成一對,此時沒有人會認為他們會按照年齡排隊,或者按照身高排隊,或者按照女生在前面男生在後面排隊的。
查詢資料:如果只是使用select語句查詢出特定列的資料,就和讓孩子們排隊差不多,你不知道資料庫資料庫查詢出來的資料是以什麼順序進行排列顯示的。也許是按照當初將資料新增到表中的順序,也許是按照其他的順序。因此如果不明確規定排序順序,那麼就不應該假定檢索出來的資料的書序是有意義的。
不指定排序查詢商品名稱:select prod_name from products;
如果對檢索出來的資料進行排序,如何進行呢?
比如現在叫飛鷹小學5年2班的學生到操場上按照身高從低到高排成一隊。
使用order by子句,order by子句取1個或多個列的名字,以此對檢索出來的資料進行排序。
排序查詢商品名稱:select prod_name from products order by prod_name;
以字母順序進行資料排序,可以和不排序查詢進行比較。
注意事項:看上面結果排序欄位是使用被查詢的字段prod_name,但誤解為排序字段只能使用查詢的字段,可以使用非查詢的列進行資料排序。
比如:select prod_name from products order by prod_price;
在此案例中,使用排序的字段就是非查詢字段,因此排序欄位和被查詢欄位是沒有必然聯絡的,只能和具體業務要求有關係。
首先按照多個列排序和select中查詢多個字段寫法相同,就是在字段中間使用分號分割開來。
比如現在叫飛鷹小學5年2班的學生到操場上身高從低到高排成一隊,如果身高相同,那麼按照年齡從小到大排序。
根據商品**和商品名稱進行排序:select prod_name from products order by prod_price, prod_name;
結果說明:order by後面有多個字段,那麼是有優先順序的。
比如上圖首先使用**排序,**相同使用商品名稱排序,商品名稱再相同那麼mysql使用自己的規則進行排序。但是如果商品**都不同,那麼就會採用商品**進行排序,而商品名稱排序則不會使用!後面的排序字段只是當簽名字段無法進行排序後的補充手段而已,如果前面排序字段可以進行排序,則不需要後面的排序字段發揮作用!
在計算機世界的排序只有從小到大或從大到小的排序,按照**從小到大還能明白,按照時間從小到大排序就可能亂了,按照文字從小到大就崩潰了,人可能會崩潰,但是計算機不會,計算機會按照特定邏輯從小到大。時間早的就小,時間晚的就大。
上面的sql案例中,我們並沒有明確說明是按照從小到大還是從大到小排序。
mysql如何進行排序呢?預設排序方式是公升序排列,使用關鍵字asc;如果進行降序排列,使用關鍵字desc。
查詢情景:查詢商品id、商品**、商品名稱,並且按照商品**進行降序排列。
sql1:檢視下按照商品**公升序排列情況。
sql2:檢視下按照商品**降序排列情況。
通過sql1和sql2可知,兩者查詢出來的順序是截然相反的。
打算用多個字段排序如何進行呢?
查詢情景:查詢商品id、商品**、商品名稱,並且按照商品**進行降序排列,按照商品名稱公升序排列。
結果說明:在多個列上進行降序排列,那麼必須要對每個列指定desc關鍵字;對於公升序操作,可以不用指定asc,預設就是公升序操作。
使用場景:查詢出來某個列中最大值或者最小值。
使用分析:使用order by進行排序,然後使用limit拿出來最大值或者最小值,limit 1即可。
查詢場景:查詢商品表中商品**最高的**是多少。
查詢sql:select prod_price from products order by prod_price desc limit 1;
分析結果:
1.第一條sql使用**字段進行降序排列,得到了目標資料,但是還有很多不想要的資料。
2.第二條sql使用**字段進行降序排列,同時限定返回值是行0,得到目標資料。
6.order by和limit順序
模擬現實:飛鷹小學5年2班的學生,在班級內部按照身高從高到低排成一對,選擇佇列中前5人去操場。
個人分析:沒有深入資料庫了解,排序也是查詢部分,而limit是取值部分,如果取值之前必須進行查詢完成。
MySQL必知必會 檢索資料
select語句返回所有匹配的行,它們可能是指定表中的每個行。為了返回第一行或前幾行,可使用limit子句。下面舉乙個例子 輸入 select prod name from products limit 5 分析 此語句使用select語句檢索單個列。limit 5指示mysql返回不多於5行。此語...
MySQL必知必會 第5章 排序檢索資料
1 order by子句基本介紹 子句 sql語句由子句構成,有些子句是必須的,有些子句是可選的。例如 select語句的from子句 為了明確地排序用select語句檢索出的資料,可使用order by子句 order by子句可以取乙個或多個列的名字,據此對輸出進行排序 可以通過非選擇列進行排序...
sql檢索資料 mysql必知必會閱讀
select name from users select name,password,age from users select from users select distinct name from users 使用distinct之後,只返回不同的值,放在列名前面 可以通過limit子句,返...