1. 程式人生 > 資料庫 >MySQL筆記 3 過濾

MySQL筆記 3 過濾

SQL學習指南 筆記

1 條件型別

1.1 相等條件

SELECT pt.name product_type, p.name product
FROM product p INNER JOIN product_type pt
ON p.product_type_cd = pt.product_type_cd
WHERE pt.name = 'Customer Accounts'

在這裡插入圖片描述

1.2 範圍條件

SELECT emp_id, fname, lname, start_date
FROM employee
WHERE start_date < '2007-01-01';

在這裡插入圖片描述
between操作符

/*範圍的上下限是閉合的*/
SELECT emp_id, fname, lname, start_date
FROM employee
WHERE start_date BETWEEN '2002-01-01' AND '2003-01-01';

在這裡插入圖片描述
字串範圍

SELECT cust_id, fed_id
FROM customer
where cust_type_cd = 'I'
and fed_id BETWEEN '500-00-0000' AND '999-99-9999'

在這裡插入圖片描述

1.3 成員條件

/*有限值集合*/
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
WHERE product_cd IN ('CHK','SAV','CD', 'MM');

在這裡插入圖片描述
使用子查詢

/*'CHK','SAV','CD', 'MM'的product_type_cd列都為'ACCOUNT' */
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
where product_cd in (SELECT product_cd FROM product
	WHERE product_type_cd = 'ACCOUNT');

1.4 匹配條件

在這裡插入圖片描述
在這裡插入圖片描述

select lname
from employee
where lname like '_a%e%'

在這裡插入圖片描述
在這裡插入圖片描述
使用正則表示式

/*lname以F或G打頭的*/
SELECT emp_id, fname, lname
from employee
WHERE lname REGEXP '^[FG]';

2 null:4個字母的關鍵字

使用null時,需要記住:

  • 表示式可以為 null, 但不能等於 null
  • 兩個 mill 值彼此不能判斷為相等
SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id IS NULL;

在這裡插入圖片描述

/*不能等於 null*/
SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id = NULL;

在這裡插入圖片描述
查詢所有不是 Helen Fleming (employee ID為6)所管理的僱員

SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id != 6;

僱 員 Michael Smith ,他 的superior_emp_id 列為 null (因為他是銀行的高層人物)沒有列出來

SELECT emp_id, fname, lname, superior_emp_id
FROM employee
WHERE superior_emp_id != 6 OR superior_emp_id IS NULL;

在這裡插入圖片描述