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后面
========================================================================================