第3課 排序檢索資料

2021-10-24 18:26:05 字數 3150 閱讀 9987

第3課 排序檢索資料

1.排序資料

使用sql語句檢索的資料是沒有特定順序的,在不指定排序的情況下,資料一般會按照其在表**現的順序顯示。

為了按自己指定的方式排序顯示資料,可以使用order by 關鍵字。

無排序資料:

有排序資料(預設為公升序):

注意:在指定一條 order by 子句時,應該保證它是select語句中的最後一條語句。如果它不是最後一條子句,將會報錯。

也可以使用非檢索列進行排序:

select prod_name from products

order

by vend_id;

2.按照多個列進行排序要按多個列排序,只需要指定要檢索的列名,然後以逗號分隔即可。

類似於excel中的多列排序,先對指定的第一列進行排序,第一列內容相同時,再按第二列排序,以此類推。

3.按照列的位置進行排序

除了能用列名進行排序外,order by還可以使用列的相對位置進行排序。

要注意的是,這裡的位置並不是列名在**中的位置,而是在檢索中的相對位置,即是select關鍵字之後列名所在的位置。

這裡就是按照prod_price(2),prod_name(3)進行排序。

mysql中的起始位置基本上都是從1開始,而不是從0開始。

4.指定排序方向

order by 子句預設為公升序(asc),如果想使用降序,將需要在子句後面指明降序(desc);asc也可以使用ascending代替,desc可以使用descending代替。

#以**對產品進行降序排列

當對多個列都進行降序排序時,需要在每個列名後面指定desc。

只對prod_price列指定desc時,僅僅prod_price列是降序,而prod_name列(在同**)內仍是公升序:

對參與排序的所有列指定desc:

5.課後練習

(1)編寫sql語句,從customers中檢索所有顧客的名稱(cust_name),並按從z到a的順序顯示結果。

select cust_name from customers

order

by cust_name desc

;

(2)編寫sql語句,從orders表中檢索顧客id(cust_id)和訂單號(order_num),並先按顧客id進行檢索,再按訂單日期(order_date)倒序排列。

select cust_id,order_num from orders

order

by cust_id,order_date desc

;

(3)編寫sql語句,顯示orderitems表中的數量(quantity)及**(item_price),按數量由多到少,**由高到低排序。

select quantity,item_price from orderitems

order

by quantity desc

,item_price desc

;

(4)下面的sql語句有什麼問題?(嘗試在不執行的情況下指出。)

select vend_name,

from vendors

order vend_name desc;

#(1)單列檢索時,列名後面不要加逗號

#(2)排序的關鍵字是order by ,而不是order

select vend_name

from vendors

order

by vend_name desc

;

3 排序檢索資料

3.1 排序資料 使用order by 子句 select prod name from products order by prod name 注意 使用order by 子句時,應該保證它是select語句中的最後一條子句。3.2 按多個列排序 select prod id,prod name,...

SQL必知必會 第2課 檢索資料

從乙個或多個表中檢索資訊。為了使用select檢索表資料,必須至少給出兩條資訊 想選擇什麼,以及從什麼地方選擇。如果沒有明確排序查詢結果,則返回的資料沒有特定的順序。多條sql語句必須以分號 分隔。不區分大小寫。一般來說可以對關鍵字大寫,對列名和表名小寫。若要從乙個表中檢索多個列,必須在select...

排序檢索資料

select prod name from products 這樣直接檢索出的單個列,並沒有特定的順序 關聯式資料庫設計理論認為,如果不明確規定順序排序,則不應該假定檢索出的資料的順序有任何意義 為了明確的進行排序可使用order by 字句 order by字句出現的位置必須是select語句中最...