close

這是線上平台課程的筆記內容,就是讓自己方便複習用。

老師講課的進度掌握得很好,教得也很淺寫易懂。

線上平台課程內有提供 SQL套件,如果有興趣的朋友一定要去支持老師的課程。

這樣才能取得老師提供的套件包做練習使用。

如果有想要知道老師的課程,再詢問我。


CH5  中間Select語句

ORDER BY

ORDER BY他可以允許修改結果的返回。

平常我們列出資料的時候,資料就會依照他在資料庫內的順序排列。

這樣真的要找也是蠻累的。

 

而這邊就是要透過一點方法,來修改一下排序。讓他依照我們的想法做。

SELECT <欄位>

FROM <table_name>

ORDER BY 欄位1、欄位2 … ASC/DESC

 

ASC 順下去排列,DESC反過來排列。昇序/降序,預設都是ASC

 

尋找國家,並依照個這個欄位順下去排列。

SELECT DISTINCT country

FROM suppliers

ORDER BY country DESC;

SELECT DISTINCT country

FROM suppliers

ORDER BY country ASC;

這邊我們加入CITY來進行練習。

(會依前者的順序先排列,在來排列後者)

SELECT DISTINCT country,city

FROM suppliers

ORDER BY country ASC, city DESC;

 

接著要求unitprice DESC排列,productnameASC排列。

這邊的要求是有順序的,要先以錢最貴的為優先排序。

接著錢的部分排序好之後,在依照名稱排序下去。

SELECT productname,unitprice

FROM products

ORDER BY unitprice DESC,productname ASC;

*若是順序錯了,你會看到不一樣的結果。


MIN/MAX 功能

SELECT MIN(欄位)

FROM <table_name>

WHERE <條件>;

 

SELECT MAX(欄位)

FROM <table_name>

WHERE <條件>;

 

第一個義大利的訂單。

表示要找的是最小的一個日期

SELECT MIN(orderdate)

FROM orders

WHERE shipcountry='Italy';

 

Canada最後一個訂單的發貨日期呢?

SELECT MAX(shippeddate)

FROM orders

WHERE shipcountry='Canada';


AVG SUM 的使用。 平均值&加總

SELECT AVG(欄位)

FROM <table_name>

WHERE <條件>;

 

SELECT SUM(欄位)

FROM <table_name>

WHERE <條件>;

 

寄往巴西的訂單,平均運費是多少。

SELECT AVG(freight)

FROM orders

 

WHERE shipcountry='Brazil';

要找出Tofu(productid=14)有多少商品數量的訂單

SELECT SUM(quantity)

FROM order_details

WHERE productid=14;


匹配模式   Like

SELECT <欄位>

FROM <table_name>

WHERE <欄位> like <參數>;

% 這邊很重要,%表示為任意字元,也表示為1個或者更多字元。

 

例如:

WHERE suppliername LIKE ‘A%i’

 

%bob% 這表示要找到這個欄位的參數中包含bob的字元。

A% 表示欄位的資料找到A開頭的。

%b 表示欄位的資料找到B結尾的。

A%B  表示欄位的資料找到A開頭B結尾的。

 

尋找Customer當中,名字是以D開頭的。

SELECT companyname,contactname

FROM customers

WHERE contactname LIKE 'D%' ;

 

除了%外,還有一個代表另一字元的字_

下底線他只能代表任何1個任一字元。並不能代表多個。

_a%

 

找到廠商名稱當中,第二、三字元當中有or的公司名稱。

SELECT companyname

FROM suppliers

WHERE companyname LIKE '_or%' ;


使用別名Alias ,重新命名列。

 

SELECT 欄位1 AS alias_name

FROM <table_name>;

 

這個東西我們可以用在運算時的呈現。

SELECT unitprice * quantity AS TotalSpent

FROM order_details;

這邊我們可以看到,顯現出來的列的名稱,就改為TotalSpent

接著我們還可以用這個AS出來的列作一些排列運算。

SELECT unitprice * quantity AS TotalSpent

FROM order_details

ORDER BY Totalspent DESC;


限制控制返回紀錄的數量 LIMIT

SELECT 欄位

FROM <table_name>;

LIMIT 數量;

 

我們來找最昂貴的三個訂單。

SELECT orderid,unitprice*quantity AS TotalSpent

From order_details

ORDER BY TotalSpent DESC

LIMIT 3;


NULL值,要怎麼處理。

NULL表示一個已經撤銷的,或者它們也不知道那是甚麼。

但是記住,NULL不等於0 也不是空值。它只是未知

 

可以用一些條件搜尋未知值,或者缺少值的。

SELECT 欄位

FROM <table_name>

WHERE column is NULL

 

或者不是的

SELECT 欄位

FROM <table_name>

WHERE column is NOT NULL

 

有多少客戶沒有區域價值。

SELECT COUNT(*)

FROM customers

WHERE region IS NULL;

 

找到客戶當中,region欄位是NULL的筆數。

關於供應商suppliers有多少是有區域價值的。

SELECT COUNT(*)

FROM suppliers

WHERE region IS NOT NULL;

 

<本篇完>

 


第一篇:  IT讀書室-SQL語法學習- postgre安裝與匯入

第二篇:  IT讀書室-SQL語法學習- SELECT查詢

第三篇:  IT讀書室-SQL語法學習- WHERE條件

第四篇:  IT讀書室-SQL語法學習- 中間的SELECT語句

 


如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 IT001 的頭像
    IT001

    IT001

    IT001 發表在 痞客邦 留言(0) 人氣()