加上单引号’’,尾空格在比较中被忽略。 例: WHERE OrderDate>#96-1-1# 也可以表示为: WHERE OrderDate>Datevalue(‘1/1/96’) 使用 NOT 表达式求反。 例:查看96年1月1日以后的定单 WHERE Not OrderDate<=#1/1/96# 2 范围(BETWEEN 和 NOT BETWEEN) BETWEEN …AND…运算符指定了要
搜索的一个闭区间。 例:返回96年1月到96年2月的定单。 WHERE OrderDate Between #1/1/96# And #2/1/96# 3 列表(IN ,NOT IN) IN 运算符用来匹配列表中的任何一个值。IN子句可以代替用OR子句连接的一连串的条件。 例:要找出住在 London、Paris或Berlin的所有客户 SELECT CustomerID, CompanyName, ContactName, City FROM Customers WHERE City In(‘London’,’ Paris’,’ Berlin’) 4 模式匹配(LIKE) LIKE运算符检验一个包含字符串数据的字段值是否匹配一指定模式。 LIKE运算符里使用的通配符 通配符 含义 ? 任何一个单一的字符 * 任意长度的字符 # 0~9之间的单一数字 [字符列表] 在字符列表里的任一值 [!字符列表] 不在字符列表里的任一值 - 指定字符范围,两边的值分别为其上下限 例:返回邮政编码在(171)555-0000到(171)555-9999之间的客户 SELECT CustomerID ,CompanyName,City,Phone FROM Customers WHERE Phone Like ‘(171)555-####’ LIKE运算符的一些样式及含义 样式 含义 不符合 LIKE ‘A*’ A后跟任意长度的字符 Bc,c255 LIKE’5[*]’ 5*5 555 LIKE’5?5’ 5与5之间有任意一个字符 55,5wer5 LIKE’5##5’ 5235,5005 5kd5,5346 LIKE’[a-z]’ a-z间的任意一个字符 5,% LIKE’[!0-9]’ 非0-9间的任意一个字符 0,1 LIKE’[[]’ 1,* 三 .用ORDER BY子句排序结果 ORDER子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。ORDER子句通常放在SQL语句的最后。 ORDER子句中定义了多个字段,则按照字段的先后顺序排序。 例: SELECT ProductName,UnitPrice, UnitInStock FROM Products ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。 例:下面的语句产生与上列相同的效果。 SELECT ProductName,UnitPrice, UnitInStock FROM Products ORDER BY 1 DESC , 2 DESC,3 四 .运用连接关系实现多表查询 例:找出同一个城市中供应商和客户的名字 SELECT Customers.CompanyName, Suppliers.ComPany.Name FROM Customers, Suppliers WHERE Customers.City=Suppliers.City 例:找出产品库存量大于同一种产品的定单的数量的产品和定单 SELECT ProductName,OrderID, UnitInStock, Quantity FROM Products, [Order Deails] WHERE Product.productID=[Order Details].ProductID AND UnitsInStock>Quantity 另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN 语法: FROM table1 INNER JOIN table2 ON table1.field1 comparision table2.field2 其中comparision 就是前面WHERE子句用到的比较运算符。 SELECT FirstName,lastName,OrderID,CustomerID,OrderDate&