Head First SQL 第二章

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

========================================================================================





SELECT date_nameFROM black_bookWHERErating IN ('innovative', 'fabulous', 'delightful', 'pretty good');'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章