您的位置:首页 > 数据库

sql 必知必会学习笔记(二)

2011-04-26 12:05 288 查看
三、过滤数据

①、select column1,column2 from table1 where column1=value;

对于value值,有的用单引号,有的不用单引号;单引号用来限定字符串。

用来与字符串类型的列进行比较的值用单引号,用来与数值列进行比较的值不需要用单引号。

<>和!=通常可以互换使用,参照DBMS的文档,看它支持哪一种。

②、select column1,column2 from table1 where column1between A and B;

在ms sql 中between匹配的范围包括A 和B.

③、select column1,column2 from table1 where column1 is null;

检查null时专用。null不同于空格、空字符串,0.

四、高级过滤

组合where子句

①、 select column1,column2 from table1 where column1=value1 and column2 <>value2;

and操作符: 检索满足所有条件的集合。

②、 select column1,column2 from table1 where column1=value1 or column2=value2;

or操作符: 检索匹配任一个条件的集合。

and的操作优先级和比or的优先级高,所以当where子句中同时有and和or时,建议使用小括号给括起来。

③、select column1,column2 from table1 where column1 in (value1,value2);

in取括号中的合法值,合法值之间用逗号分隔,整个合法值都放在小括号之间。字符串用单引号引起来。

in操作符和not操作法完成相同的功能。

in的优点:

♢ 在使用长的选项清单时,用in 更清楚、直观。

♢in操作符一般比or操作符速度快。

♢in的最大优点是可以包括其他select语句,能更动态的建立where子句。

④、select column1,column2 from table1 where column1 not in (value1,value2);

not总与其他操作符一起使用,用来否定其后的条件。

五、用通配符进行过滤

在搜索子句中使用通配符过滤,必须使用like,like之时DBMS,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行匹配;

①、select column1,column2 from table1 where column1 like '%f%y%';

通配符%可以位于搜索模式的任意位置,它匹配任意字符出现任意次数,可以是零个,一个,多个。

当数据库某个字段是固定长度,而存储的数据达不到固定长度时,会在该数据的后边自动填写上空格。

比如char(10)类型的字段,存储了‘abc’,在数据库中实际存储为abc三个字母后边会有七个空格,在使用通配符时,

要记住使用%在字符的最后'abc%'进行匹配

②、select column1,column2 from table1 where column1 like '_bet';

通配符_匹配单个字符。

③、select column1,column2 from table1 where column1 like '[JM]%'

方括号[],用来指定一个字符集,它必须匹配指定位置(通配符所在的位置)的一个字符。

例子中匹配以J或者M开头,后边跟着任意字符的 column1 列。

注:只有ms access、ms sql 、 Sybase Adaptive Server支持,是否支持请查阅DBMS帮助文档。

通配符[]可以使用前缀字符^(脱字号)来否定。[^ab],不是a或者b.

通配符的搜索效率比较低,所以:

♢、不要过分使用通配符。如果其他字符能达到目的,应该使用其他操作符。

♢、确实需要使用通配符时,尽可能不要将 通配符放到搜索模式的开始处,放在开始搜索是最慢的。

♢、仔细注意通配符的位置,放错就会得不到想要的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: