P53: SELECT 語句、更好的 SELECT:
在數據庫裏面有非常多的信息,我們要搜索,應該使用如下句式
SELECT * FROM my_contacts
WHERE first_name = ‘Anne’;
這樣會返回所有 first_name 列是 Anne 的行。 * 是告訴RDBMS 返回表中所有的列。
====================================================================
單引號是特殊字符,如果要單獨使用單引號,要在前面加上 反斜槓
INSERT INTO my_contacts
(location)
VALUES
('Grover\'s Mill');
不要使用雙引號,雙引號會作爲其他編程語言的引號使用。
==================================================================
單獨查詢部分列,而不顯示全部列:
SELECT drink_name, main, second
FROM easy_drinks
WHERE main = 'soda';
這樣只顯示三個列,drink_name main second
然後查找 main 裏面是 soda 的。
例如之前的例子:
====================================================================
結合查詢:
同時查詢兩個條件該怎麼辦?
使用 AND
查詢甜甜圈:
SELECT location
FROM doughnut_ratings
WHERE type = 'plain glazed'
AND
rating = 10;
這樣同時找出了符合兩個條件的選項~
注意這裏只顯示 location
=================================================================
注意使用 “大於” 運算符:
篩選飲料:
SELECT drink_name
FROM easy_drinks
WHERE main = ‘soda’
AND
amount > 1;
當然還有
= 等號
和
<> 不等號
以及
<= 和 >=
同時也可以對文本數據套用比較運算符。
對文本數據套用比較運算符,返回首字母 ’L’ 之後 ‘M’ 之前的飲料:
SELECT drink_name
FROM drink_info
WHERE
drink_name >= ‘L’
AND
drink_name < ’M’
同理還有 OR 查詢:
OR 結合查詢,返回任何符合條件之一的記錄:
SELECT drink_name
FROM easy_drinks
WHERE main = ‘cherry juice’
OR
second = ‘cherry juice’;
注意不要搞混了。P98:
用 IS NULL 找到 NULL
SELECT drink_name
FROM drink_info
WHERE
calories IS NULL
不能使用 = NULL,因爲 NULL 不等於 NULL
=====================================================================
節省時間,使用 LIKE
SELECT * FROM my_contacts
WHERE location LIKE ‘%CA’
這裏再單引號中放入百分比符號,就是在 location 列中查找所有以 CA 結尾的值。
%是一個通配符,指的是任意數量的未知字符。
_也是一個通配符,指的是一個未知字母。
SELECT first_name FROM my_contacts
WHERE first_name LIKE ‘_im’;
==========================================================================
BETWEEN 可以代替 >= AND <=
SELECT drink_name FROM drink_info
WHERE
calories BETWEEN 30 AND 60;
代替了
SELECT drink_name FROM drink_info
WHERE
calories >= 30
AND
calories <= 60;
注意 只能是:
小數字 BETWEEN 大數字
===========================================================================
代替多個 OR ,用 IN 來表示:
SELECT date_name
FROM black_book
WHERE
rating IN ('innovative', 'fabulous', 'delightful', 'pretty good');'
也可以用 NOT IN 查找不在裏面的:
SELECT date_name
FROM black_book
WHERE
rating NOT IN ('innovative', 'fabulous', 'delightful', 'pretty good');'
NOT還有用法:
SELECT drink_name FROM drink_info
WHERE NOT carbs BETWEEN 3 AND 5;
SELECT date_name from black_book
WHERE NOT date_name LIKE '%A'
AND NOT date_name LIKE 'B%';
NOT要跟在WHERE後面
========================================================================================