###11.3
五、SELECT TOP 子句
用于规定要返回的记录的数目
对于拥有数千条记录的大型表来说,是非常有用的
###注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
SQL Server / MS Access 语法
SELECT TOP number/percent column_name(s) FROM table_name;
MySQL 语法
SELECT column_name(s) FROM table_name LIMIT number;
Oracle 语法
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
eg. 从 "Websites" 表中选取头两条记录
SELECT * FROM Websites LIMIT 2;
运行结果
调取后两行
SELECT * FROM Websites order by id desc LIMIT 2;
运行结果
六、LIKE 操作符
用于在 WHERE 子句中搜索列中的指定模式。
语法
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
eg. 选取 name 以字母 "G" 开始的所有网站
SELECT * FROM Websites WHERE name LIKE 'G%';
运行结果
##"%" 符号用于在模式的前后定义通配符(默认字母)
选取 name 以字母 "k" 结尾的所有客户
SELECT * FROM Websites WHERE name LIKE '%k';
运行结果
选取 name 包含模式 "oo" 的所有客户
SELECT * FROM Websites WHERE name LIKE '%oo%';
运行结果
通过使用 NOT 关键字,可以选取不匹配模式的记录。
下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户
SELECT * FROM Websites WHERE name NOT LIKE '%oo%';
运行结果
通配符
通配符可用于替代字符串中的任何其他字符。
在 SQL 中,通配符与 LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] | 不在字符列中的任何单一字符 |
使用 % 通配符
选取 url 以字母 "https" 开始的所有网站:
SELECT * FROM Websites WHERE url LIKE 'https%';
运行结果
选取 url 包含模式 "oo" 的所有网站:
SELECT * FROM Websites WHERE url LIKE '%oo%';
SELECT * FROM Websites WHERE url LIKE '%oo%';
运行结果
使用 _ 通配符
选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户:
SELECT * FROM Websites WHERE name LIKE '_oogle';
运行结果
选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站:
SELECT * FROM Websites WHERE name LIKE 'G_o_le';
运行结果
使用 [charlist] 通配符
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
eg 选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
运行结果
eg 选取 name 以 A 到 H 字母开头的网站
SELECT * FROM Websites WHERE name REGEXP '^[A-H]';
运行结果
选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites WHERE name NOT REGEXP '^[A-H]';
或
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
七、IN 操作符
IN 操作符允许在 WHERE 子句中规定多个值。
语法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
eg 选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:
SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程');
运行结果
11.3 我觉得效率有点低
希望明天继续加油!!!