本篇文章是参照菜鸟教程,自行做的笔记,如果要详细文章,请参考:https://www.runoob.com/sql/sql-top.html
sql高级教程
SQL SELECT TOP, LIMIT, ROWNUM 子句
1.SQL SELECT TOP 子句
SELECT TOP 子句用于规定要返回的记录的数目。
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;
实例
SELECT *
FROM Persons
LIMIT 5;
Oracle 语法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
实例
SELECT *
FROM Persons
WHERE ROWNUM <=5;
帮你理解一下:因为我之前是学过oracle的,所以下面的这个例子我也懂。oracle和mysql的表述是一回事。都是查询表中前五行数据,当然那个数字你可以根据表的数据自行选择,也就是表中有十条,你可以写(0-10)
SQL SELECT TOP PERCENT 实例
在 Microsoft SQL Server 中还可以使用百分比作为参数。
下面的 SQL 语句从 websites 表中选取前面百分之 50 的记录:
实例
以下操作在 Microsoft SQL Server 数据库中可执行。
SELECT TOP 50 PERCENT * FROM Websites;
ps:我们一般都用mysql和oracle,这个又不是我的数据库,我不演示。总而言之,SQL SELECT TOP(Microsoft SQL Server 数据库), LIMIT(mysql数据库), ROWNUM (oracle数据库)子句这三种语法都是用来返回确定的条数的。
SQL LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SQL LIKE 语法
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
SQL LIKE 操作符实例
下面的 SQL 语句选取 name 以字母 “G” 开始的所有客户:
提示:"%" 符号用于在模式的前后定义通配符(默认字母)。
下面的 SQL 语句选取 name 以字母 “k” 结尾的所有客户:
下面的 SQL 语句选取 name 包含模式 “oo” 的所有客户:
通配符%是指代任意长度的字符串,所以叫通配符啦
SQL 通配符
通配符可用于替代字符串中的任何其他字符。
SQL 通配符
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
现在单独来说明各个通配符
使用 SQL % 通配符
使用 SQL _ 通配符
下面的 SQL 语句选取 name 以一个任意字符开始,然后是 “oogle” 的所有客户:
使用 SQL [charlist] 通配符
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 “G”、“F” 或 “s” 开始的所有网站:
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
总结 :
1. % 替代 0 个或多个字符(很简单)
2. _ 替代一个字符(很简单)
3. [charlist] 字符列中的任何单一字符
如:
这个是选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
这个是选取 name 以 A 到 H 字母开头的网站:SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';
4.[^charlist] 或 [!charlist] 不在字符列中的任何单一字符
如:下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
PS:我暂时别用这个!的,用^。因为我发现^直接改为!没有成功。
我没有正规学过正则表达式。
SQL IN 操作符
IN 操作符
IN 操作符允许您在 WHERE 子句中规定多个值。
SQL IN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
这个 SQL IN 就感觉像or一样,比如
SELECT * FROM Websites WHERE name IN (‘Google’,‘菜鸟教程’);
这句话就相当于 SELECT * FROM Websites WHERE name=‘Google’ or name=‘菜鸟教程’;
SQL BETWEEN 操作符
SQL BETWEEN 操作符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
BETWEEN 操作符实例
NOT BETWEEN 操作符实例
带有 IN 的 BETWEEN 操作符实例
下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
带有文本值的 BETWEEN 操作符实例
下面的 SQL 语句选取 name 以介于 ‘A’ 和 ‘H’ 之间字母开始的所有网站:
带有文本值的 NOT BETWEEN 操作符实例
下面的 SQL 语句选取 name 不介于 ‘A’ 和 ‘H’ 之间字母开始的所有网站:
带有日期值的 BETWEEN 操作符实例
下面的 SQL 语句选取 date 介于 ‘2016-05-10’ 和 ‘2016-05-14’ 之间的所有访问记录:
Pay Attention 请注意
注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。
因此,请检查您的数据库是如何处理 BETWEEN 操作符!