首页 > 代码库 > sql高级篇

sql高级篇

1、select top

mysql中:

select * from persons limit 5;

相当于oracle中的:

select * from persons <=5;

在翻页中经常用到的:

select * from persons limit 5,10;

2、like

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SELECT * FROM Websites WHERE name LIKE ‘G%‘;按G开头的收索(%G就是按G结尾的,模糊查询就是%G%)

%为通配

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]

[!charlist]
不在字符列中的任何单一字符

下面的 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]‘;

3、IN

in 操作符允许您在 WHERE 子句中规定多个值

下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:

SELECT * FROM Websites WHERE name IN (‘Google‘,‘菜鸟教程‘);

4、between

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值

下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:

SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20;

如需显示不在上面实例范围内的网站,请使用 NOT BETWEEN:

下面的 SQL 语句选取alexa介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:

SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND NOT country IN (‘USA‘, ‘IND‘);

带有文本值的 BETWEEN 操作符实例

下面的 SQL 语句选取 name 以介于 ‘A‘ 和 ‘H‘ 之间字母开始的所有网站:

SELECT * FROM Websites WHERE name BETWEEN ‘A‘ AND ‘H‘;

下面的 SQL 语句选取 date 介于 ‘2016-05-10‘ 和 ‘2016-05-14‘ 之间的所有访问记录:

SELECT * FROM access_log WHERE date BETWEEN ‘2016-05-10‘ AND ‘2016-05-14‘;

 

请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

因此,请检查您的数据库是如何处理 BETWEEN 操作符!

sql高级篇