SQL---DML---WHERE过滤数据のAND,OR,IN,NOT的高级过滤
2011-09-12 12:54
701 查看
AND操作符
用在WHERE子句中,用来指示检索满足所有给定条件的行。
例:
SELECT prod_id,prod_price,prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price<= 4;
OR操作符
用在WHERE子句中,用来表示检索匹配任一给定条件的行。
例:
SELECT prod_id,prod_price,prod_name
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ;
圆括号
SQL在处理OR操作符前,优先处理AND操作符。圆括号具有较AND操作符或OR操作符更高的计算次序。
任何时候使用具有AND操作符和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是想要的顺序。
例:
SELECT prod_name,prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
AND prod_price >=10;
IN操作符
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN操作符完成的是和OR相同的功能。
IN操作符的优点:
在使用长的合法选项清单时,IN操作符的语法更清楚且更直观;
在使用IN时,计算的次序更容易管理;
IN操作符一般比OR操作符清单执行更快;
IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
例:
SELECT prod_name,prod_price
FROM Products
WHERE vend_id IN('DLL01','BRS01')
ORDER BY prod_name;
NOT操作符
NOT操作符只有一个功能,就是否定它之后所跟的任何条件。
在简单的WHERE子句中,使用NOT确实没有什么优势,但在更复杂的句子中,NOT是非常有用的,例如,在IN操作符联合使用的时候,NOT使找出与条件列表不匹配的行非常有效。MySQL中,NOT多用于否定EXISTS,其他的如果要使用,查阅相关手册。
用在WHERE子句中,用来指示检索满足所有给定条件的行。
例:
SELECT prod_id,prod_price,prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price<= 4;
OR操作符
用在WHERE子句中,用来表示检索匹配任一给定条件的行。
例:
SELECT prod_id,prod_price,prod_name
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ;
圆括号
SQL在处理OR操作符前,优先处理AND操作符。圆括号具有较AND操作符或OR操作符更高的计算次序。
任何时候使用具有AND操作符和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是想要的顺序。
例:
SELECT prod_name,prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
AND prod_price >=10;
IN操作符
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN操作符完成的是和OR相同的功能。
IN操作符的优点:
在使用长的合法选项清单时,IN操作符的语法更清楚且更直观;
在使用IN时,计算的次序更容易管理;
IN操作符一般比OR操作符清单执行更快;
IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
例:
SELECT prod_name,prod_price
FROM Products
WHERE vend_id IN('DLL01','BRS01')
ORDER BY prod_name;
NOT操作符
NOT操作符只有一个功能,就是否定它之后所跟的任何条件。
在简单的WHERE子句中,使用NOT确实没有什么优势,但在更复杂的句子中,NOT是非常有用的,例如,在IN操作符联合使用的时候,NOT使找出与条件列表不匹配的行非常有效。MySQL中,NOT多用于否定EXISTS,其他的如果要使用,查阅相关手册。
相关文章推荐
- 07 数据过滤 - and、or、not、in
- SQL-基础学习2--ORDER BY ,DESC,WHERE, BETWEEN,AND ,OR ,IN ,NOT
- MySQL学习足迹记录05--数据过滤--AND,OR,NOT,IN
- Mysql| 组合where子句过滤数据(AND,OR,IN,NOT)
- 数据运算+-*/,比较运算符==!=,赋值运算,逻辑运算and,or,not,成员运算in,not in,身份运算is is not,位运算&|,运算符的优先级
- SQL---DML---WHERE过滤数据のLIKE过滤
- SQL高级语句-BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
- ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- sql关系型运算符优先级高到低为:not >and> or
- 关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
- linq to sql where 多条件 or and
- sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
- sql --it is not contained in either an aggregate function or the GROUP BY clause.
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary log
- SQL语句优化一例 row_number not in or
- SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by
- ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- SQL 3. 高级数据过滤 - 4 多值检测