这几章都只讲了一个事情,就是如何进行有条件限制地查找数据。
第四章没太多好讲的,简单讲一个重点就好。
SELECT field1,field2,[fieldn] FROM my_table;
SQL语句不区分大小写,因此
SELECT与select是相同的。同样,写成Select也没有关系。
许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有
列和表名使用小写,这样做使代码更易于阅读和调试。
分号不要忘记。
SELECT* FROM my_table;
一般,除非你确实需要表中的每个列,否则最
好别使用*通配符。虽然使用通配符可能会使你自己省事,不
用明确列出所需列,但检索不需要的列通常会降低检索和应
用程序的性能。
此关键字指示MySQL,只返回不同的值。
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为
了返回第一行或前几行,可使用LIMIT子句。
在select
语句的最后,加上
LIMIT start, cols
或者:
LIMIT cols OFFSET start
几个注意点:
比如 LIMIT 1,2 表明最多查第2行和第三行
使用完全限定的名字来引用列(同时使用表名和列字)。在后面的多表联查会用到。
这一章内容也比较简单,主要就讲了排序。
子句(clause) SQL语句由子句构成,有些子句是必需的,而
有的是可选的。一个子句通常由一个关键字和所提供的数据组
成。子句的例子有SELECT语句的FROM子句,我们在前一章看到过这个子
句。
如:
意思就是将学生的分数按从低到高排列,分数相同的学生按名字排序。
SELECT id,score
FROM student_score
ORDER BY score,name;
为了进行降序排序,
必须指定DESC关键字。
下面的SQL的功能就是让学生的分数从高到低排序了。
SELECT id,score
FROM student_score
ORDER BY score DESC,name;
下面的SQL就是只找出分数最高的学生的信息。
SELECT id,name
FROM student_score
ORDER BY score DESC;
LIMIT 1;
后面讲到其他子句的时候,还会在讲到子句的顺序。
在FROM
子句后面,加上WHERE
子句来过滤数据。
WHERE子句的位置 在同时使用ORDER BY和WHERE子句时,应
该让ORDER BY位于WHERE之后,否则将会产生错误(关于ORDER
BY的使用,请参阅第5章)。
=
!=
(<>
)<
<=
>=
BETWEE
如:
SELECT num FROM test WHERE num BETWEEN 1 AND 3;
几个注意点:
=
匹配字符串的时候,字符串用单引号’'包裹,此匹配不区分大小写。(可以根据MySQL的配置去改)。where name != 'tiger'
想过滤出那些名字不是tiger的记录,但是那么name字段为null的记录没有筛选出来!本章讲授如何组合WHERE子句以建立功能更强的更高级的搜索条件。 我们还将学习如何使用NOT和IN操作符。
操作符(operator) 用来联结或改变WHERE子句中的子句的关键
字。也称为逻辑操作符(logical operator)。
为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加
条件。
SELECT [filed] FROM tb WHERE [field1满足的条件] AND [...] AND [...] …… AND [...];
OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行。
WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂
和高级的过滤。
在综合使用 AND
、OR
的时候,一句话,多加括号使得计算顺序明确。
任何时候使用具有AND和OR操作
符的WHERE子句,都应该使用圆括号明确地分组操作符。不要
过分依赖默认计算次序。
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。
SELECT idtest,num
FROM test
WHERE num IN (1,2);
上面的功能完全可以使用OR代替。
WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所
跟的任何条件,在WHERE子句中使用。
MySQL支持使用NOT对IN、BETWEEN和
EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件
取反有很大的差别。
如:
SELECT idtest,num FROM test WHERE num NOT IN (1,2);
通配符(wildcard) 用来匹配值的一部分的特殊字符。
搜索模式(search pattern)① 由字面值、通配符或两者组合构
成的搜索条件。
为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,
后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
%表示任何字符出现任意次数。
比如LIKE %ab%
就是检索任何包含’ab‘的字符串。
尾空格可能会干扰通配符匹配。
下划线只匹配单个字符而不是多个字符,不能多也不能少。