1、WHERE
SELECT prod_name,prod_price
FROM Products
WHERE prod_price=3.19;
ORDER BY prod_price;
WHERE prod_price IS NULL--返回没有价格的产品
注意:通过过滤或非过滤时,不会返回结果为NULL值的行,因为未知有特殊的含义,数据库不知道他们是否匹配。
过滤数据时,一定要验证被过滤列中含有NULL的行确实出现在返回的数据中。
2、AND /OR /IN /NOT
WHERE vend_id='dll01' AND prod_price<=4;
ORDER BY prod_price;
WHERE子句可以包含任何数目的AND和OR操作符,允许两者结合一进行复杂、高级的过滤,AND操作符的优先级高于OR,可使用圆括号对操作符进行明确分组。
WHERE vend_id IN ('dll01','brs01');--IN完成与OR相类似的功能
在很多合法的选项时,IN的语法更清楚、直观;与其他AND和OR组合使用IN,求值顺序更容易管理;IN一般比一组OR执行的更快;IN的最大优点是可以包含其他的SELECT语句,能更动态地建立WHERE语句。
SELECT prod_name
FROM Products
WHERE NOT vend_id='dll01'
ORDER BY prod_name;
在复杂的子句中,NOT非常有用,例如在与IN操作符联合使用时,NOT可以非常简单地找出与条件列表不匹配的行。
3、通配符
通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜素。
百分号%通配符:表示任何字符出现任意次数,代表搜素模式中给定位置的0、1或多个字符,但不含匹配为NULL的行。
SELECT prod_id,prod_name
FROM Products
WHERE prod_name LIKE '%Fis%h%';
下划线_通配符:用途与%相同,但只能匹配单个字符。
WHERE prod_name LIKE '_inch teedy bear';
方括号[]通配符:用来指定一个字符集,它必须匹配指定位置(通配符位置)的一个字符。
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%';--匹配所有字符以J或M起头的联系人,若相反,可表示为'[^JM]%'
使用通配符的技巧:
通配符搜素一般比前面讨论的其他搜素要耗费更长的处理条件
a.不要过度使用通配符
b.尽量不要把他们用在搜素模式的开始处(这样最慢)
c.仔细注意通配符的位置(否则不会返回想要的数据)