例: SELECT * FROM TABLE1 WHERE ID=43 TAABLE1----->数据表名称
① 比较 where > < =
② 相等和不等 where = != <> ③ 大于小于 where > < x ④ 范围(BETWEEN AND) where COLUMN_NAME between 1220 and 1240 ⑤ NOT 排除 where COLUMN_NAME NOT ⑥ IN 在范围内 where COLUMN_NAME IN ⑦ AND OR where AND
查询满足某些条件的数据并排序 SELECT FROM WHERE 表达式 ORDER BY 简单的计算 COUNT() 记数 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值
超联接查询
超连接:首先保证一个表中满足条件的元组都在结果表中,然后将满足联接条件的元组与另一个表的元组进行联接,不满足的联接条件的则将应来自另一表的属性值为空。 SQL中超联接的运算符号是“*=”和“=*”,其中“*=”是左联接,“=*”为右联接。 VF不支持超联结运算符(“*=”和“=*”),但VF提供专门的语法格式 SELECT….. FROM TABLE INNER|LEFT|RIGHT|FULL JOIN TABLE ON JION WHERE
INNER JOIN 等价于 JOIN ,为普通联接,在VF中称为内部联接 LEFT JOIN 为左联接 RIGHT JION 为右联接 FULL JION 全联接 ON 连接条件
内部联接,只有满足条件的记录才出现在结果中 SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 JOIN 职工; ON 仓库.仓库号=职工.仓库号 等价于 SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 INNER JOIN 职工; ON仓库.仓库号=职工.仓库号
SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 ,职工; WHERE仓库.仓库号=职工.仓库号
左联接,即除满足联接条件的记录出现在查询结果外,第一个表中不满足条件的记录也出现在查询结果中 SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 LEFT JOIN 职工; ON 仓库.仓库号=职工.仓库号
SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 RIGHT JOIN 职工; ON 仓库.仓库号=职工.仓库号
全联接,将满足条件的记录显示,两个表中不满足的都显示出来 SELECT 仓库.仓库号,城市,面积,职工号,工资; FROM 仓库 FULL JOIN 职工; ON 仓库.仓库号=职工.仓库号 多表联结 嵌套查询 问题: 查找那些城市至少有一个仓库的职工工资为1250元 分析: 表面上看好象是在从仓库表里查询城市字段,但其实使用了两个表仓库和职工表,并且条件来自另一个表。检索仓库表中的数据,但是依赖职工表中的字段值。这时使用SQL的嵌套查询比较方便。
解题思路: 用人工的方式查询所要的记录
相当于现在要查询的数据是 SELECT 城市 FROM 仓库 WHERE 仓库 IN ("WH1","WH2") 用嵌套查询此题 SELECT 城市 FROM 仓库 WHERE 仓库 IN ; (SELECT 仓库号 FROM 职工 WHERE 工资=1250) 1. 查询出满足要求的字段值 2. 两个表所关联的字段 3. 使用 IN 运算 (IN运算相当于数学集合中的∈) 问题: 查询所有职工的工资都多于1210元的仓库信息 分析: 要查询的是每个仓库的职工的工资都要多于1210元,有一个人的工资不满足这个条件,这个仓库的相关信息都不会显示出来。 是不是可以这样查询,只要找到仓库职工的小于等于1210元,然后把他们排除到,剩下的就是我们所要的数据。 SELECT * FROM 仓库 WHERE 仓库号 NTO IN (SELECT 仓库号 FROM 职工 WHERE 工资<=1210)
作对了吗? 有没有排除那些没有职工的仓库信息。 SELECT * FROM 仓库 WHERE 仓库号 NOT IN (SELECT 仓库号 FROM 职工 WHERE 工资<=1210) AND 仓库号 IN (SELECT 仓库号 FROM 职工 )
posted on
2008-02-22 06:46Rhina 阅读(
...) 评论(
...)
编辑
收藏