Mysql学习笔记3
空值检查
NULL 空值,它与字段包含0、空字符串或仅仅包含空值不同。WHERE子句中 IS NULL 可以用来检查具有空值的列。
where子句中可包含任意数目的and和or操作符。and的计算优先级要高于or,
如,需要列出价格在10美元以上且由1002或1003制造的所有产品。如下sql语句:
SELECT pro_name,pro_price FROM products WHERE vend_id = 1002 OR vend _id = 1003 AND prod_price >= 10;
达不到上述要求,它实际上是查询的是vend_id为1002的任意产品或1003价格在10美元以上的产品.
正确的sql应该是使用圆括号明确的分组相应的操作符:
SELECT pro_name,pro_price FROM products WHERE (vend_id = 1002 OR vend _id = 1003) AND prod_price >= 10;
用通配符进行过滤
搜索模式(search pattern) 由字面值、通配符或两者组合构成的搜索条件. 如’jack%’.
谓词: 在SQL中,谓词就是返回值为真值的函数。
对于通常的函数来说,返回值有可能是数字、字符串或者日期等,但是谓词的返回值都是真值(true/false/unknown)。这是谓词和函数的最大区别。
SQL中的谓词主要有 LKIE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS
根据mysql的配置方式,搜索模式可以区分大小写或不区分.
通配符% 匹配0个或多个字符,不能匹配NULL;通配符_ 只匹配单个字符.
用正则表达式进行搜索
使用关键字REGEXP
可以使用^和$定位符(anchor)来匹配整个列值,起到like的作用.如like ‘1000’.即只匹配值是1000的.
使用binary关键字,区分大小写.如 where name regexp binary ‘jack’.
使用| 进行or匹配,如 where name regexp ‘jack|tom|jion’.
测试----省略from子句进行测试
如 select ‘hello’ regexp ‘[0-9]’ ; select trim(‘ a bc ’); select 6+7;select now();返回当前日期和时间.