這是線上平台課程的筆記內容,就是讓自己方便複習用。
老師講課的進度掌握得很好,教得也很淺寫易懂。
線上平台課程內有提供 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排列,productname以ASC排列。
這邊的要求是有順序的,要先以錢最貴的為優先排序。
接著錢的部分排序好之後,在依照名稱排序下去。
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語句
如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。
留言列表