工具: HeidiSQL
count(...)
CRUD:
ws: select權限
wi: insert, update, delete權限
NULL
(表示「不確定」、「未知」或「沒有」)USE 資料庫名稱
SELECT
: 指定需要的欄位
*
: 全部FROM
: 指定 column, table
資料庫2.表格名稱
%
餘數, MOD
餘數, *
乘, /
除, DIV
除整數, +
加, -
減SELECT ename, salary AS "MonthSalary",
salary * 12 AS "AnnualSalary",
(salary * 12 ) + (salary DIV 2) "AnnualFullSalary"
FROM cmdev.emp
where
=
, !=
, >
, >=
, <
, <=
, 其中<=>
與=
的差異在於NULL
的判斷NOT
非], 2. [&&
, AND
而且], 3. [||
, OR
或, XOR
互斥]
()
先算, 由左到右, 1 > 2 > 3 (NOT較少用)BETWEEN 指定較小的值 AND 指定較大的值
: 範圍比較IN(...)
: 成員比較IS
: 是IS NOT
: 不是LIKE
: 像<=>
除外),判斷一般資料的條件設定,要用邏輯運算子判斷,以下兩種判斷法範例:SELECT Name, LifeExpectancy
FROM country
WHERE LifeExpectancy IS NULL
SELECT Name, LifeExpectancy
FROM country
WHERE LifeExpectancy <=> NULL
%
: 0到多個任何字元_
: 一個任何字元SELECT
FROM
WHERE {欄位|資料|運算式} LIKE '樣版'
ORDER BY {欄位||運算式||位置編號} [ASC(預設)|DESC] [,...]
LIMIT
: 指定回傳數量
LIMIT 5
: 後面一個數字,從最前面拿5筆LIMIT 5, 5
: 後面兩個數字,起始點, 數量; 從第六筆開始拿(不包含第五筆),往後拿五筆SELECT empno, ename, salary
FROM cmdev.emp
ORDER BY salary DESC
LIMIT 3;
DISTINCT
: 資料庫會特別執行回傳紀錄是否重複的檢查資料型態: 數值, 字串, 日期/時間, 空值(使用NULL
), 布林值
INTERVAL
語法 日期or時間 +/- INTERVAL 數字 單位
LOWER(字串)
: [字串]轉為小寫UPPER(字串)
: [字串]轉為大寫LPAD(字串1, 長度, 字串2)
, RPAD(字串1, 長度, 字串2)
: 如果[字串1]的長度小於指定的[長度],就在[字串1]左邊/右邊使用[字串2]補滿
LTRIM(字串)
, RTRIM(字串)
: 移除[字串]左邊/右邊的空白TRIM(字串)
: 移除[字串]左、右的空白REPEAT(字串, 個數)
: 重複[字串]指定的[個數]REPLACE(字串1, 字串2, 字串3)
: 將[字串1]中的[字串2]替換為[字串3]LEFT(字串, 長度)
, RIGHT(字串, 長度)
: 傳回[字串]左邊/右邊指定[長度]的內容SUBSTRING(字串, 位置)
:SUBSTRING(字串, 位置, 長度)
:CONCAT(參數 [,…])
:傳回所有參數連接起來的字串CONCAT_WS(分隔字串, 參數 [,…])
:傳回所有參數連接起來的字串,參數之間插入指定的[分隔字串]SELECT ename, hiredate
ADDDATE(hiredate, 30),
ADDDATE(hiredate, INTERVAL 30 DAY)
FROM cmdev.emp e;
IF
, CASE...WHEN ...THEN
查詢並計算資料的統計分析資訊
SELECT
SUM(Population) PopSum,
AVG(Population) PopAvg,
MAX(Population) PopMax,
MIN(Population) PopMin,
COUNT(*) Amount
FROM country
SELECT FROUP_CONCAT(DISTINCT Region)
FROM country
WHERE Continent = 'Europe'; /* 排除重複的資料後,紙回傳6個區域名稱連接在一起的紀錄 */
使用多個表格
通稱內部結合,分成寫在 WHERE
後面與 FROM
後面
SELECT country.Code, country.Capital, city.Name
FROM country, city
WHERE country.Capital = city.ID
SELECT a.name, a.Population
FROM country a
SELECT country.Code, country.Capital, city.Name
FROM country JOIN city ON Capital = city.ID
「內部結合」的查詢,一定要符合「結合條件」的資料才會出現
「內部結合」: 包含部門名稱的員工資料,可是沒有分派部門的員工就不用出現了
「外部結合」: 包含部門名稱的員工資料,沒有分派部門的員工也要出現
1. LEFT OUTER JOIN: 以左邊的表格為主
1. RIGHT OUTER JOIN: 以右邊的表格為主
1. 語法範例:sql SELECT empno, ename, e.deptno, d.dname FROM cmdev.emp e LEFT/RIGHT OUTER JOIN cemdev.dept d ON e.deptno = d.deptno
SELECT 與 SELECT 結合
1.語法:sql SELECT Region, Name, Papulation FROM country WHERE Region = 'Southeast Asia' AND Population < 2000 UNION SELECT Region, Name, Population FROM country WHERE Region = 'Eastern Asia' AND Population < 1000