select top子句对于拥有数千条记录的大型表来说,是非常有用的。
注释:并非所有的数据库系统都支持 SELECT TOP 子句。
SELECT TOP number|percent column_name(s) FROM table_name;
SELECT column_name(s) FROM table_name LIMIT number;
实例:返回前五条数据
SELECT * FROM Persons LIMIT 5;
Oracle语法
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
实例
SELECT * FROM Persons WHERE ROWNUM <=5;
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
mysql> SELECT * FROM Websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 5000 | USA | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+下面的 SQL 语句从 "Websites" 表中选取头两条记录:
SELECT * FROM Websites LIMIT 2;
在 Microsoft SQL Server 中还可以使用百分比作为参数。
下面的 SQL 语句从 "Customers" 表中选取前面 50% 的记录:
SELECT TOP 50 PERCENT * FROM Websites;
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow| http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:
SELECT * FROM Websites WHERE name LIKE 'G%';
提示:"%" 符号用于在模式的前后定义通配符(缺省字母)。您将在下一章中学习更多有关通配符的知识。
下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户:
SELECT * FROM Websites WHERE name LIKE '%k';
下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户:
SELECT * FROM Websites WHERE name LIKE '%oo%';
通过使用 NOT 关键字,您可以选取不匹配模式的记录。
下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户:
SELECT * FROM Websites WHERE name NOT LIKE '%oo%';
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用一下通配符:
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] |
不在字符列中的任何单一字符 |
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
SELECT * FROM Websites
WHERE url LIKE 'https%';
下面的 SQL 语句选取 url 包含模式 "oo" 的所有网站:
SELECT * FROM Websites
WHERE url LIKE '%oo%';
SELECT * FROM Websites
WHERE name LIKE '_oogle';
下面的 SQL 语句选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站:
SELECT * FROM Websites
WHERE name LIKE 'G_o_le';
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';
下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
SELECT column_name(s) FROM table_name
WHERE column_name IN (value1,value2,...);
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:
SELECT * FROM Websites
WHERE name IN ('Google','菜鸟教程');
SELECT column_name(s) FROM table_name
WHERE column_name BETWEEN value1 AND value2;
在本教程中,我们将使用 RUNOOB 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow| http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:
SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;
SELECT * FROM Websites
WHERE alexa NOT BETWEEN 1 AND 20;
下面的 SQL 语句选取alexa介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND NOT country IN ('USA', 'IND');
下面的 SQL 语句选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站:
SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';
下面的 SQL 语句选取 name 不介于 'A' 和 'H' 之间字母开始的所有网站:
SELECT * FROM Websites
WHERE name NOT BETWEEN 'A' AND 'H';
SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';
请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。
因此,请检查您的数据库是如何处理 BETWEEN 操作符!