注:蓝色字体说明是第二种做法。
一、基本查询
例1 从职工关系中检索所有工资值。
Select 工资 from 职工表
例2 检索仓库关系中的所有元组。
Select * from 仓库表
二、条件查询
例3 检索工资多于1230元的职工号。
Select 职工号 from 职工表 where 工资>1230
例4 检索哪些仓库有工资多于1210的职工。
Select distinct仓库号 from 职工表 where 工资>1210
例5 给出在仓库“WH1”或“WH2”工作,并且工资少于1250的职工号。
做法1:Select 职工号 from 职工表 ;
where 工资<1250 and (仓库号="WH1" or 仓库号="WH2")
做法2:Select 职工号 from 职工表 where 工资<1250 and 仓库号 in ("WH1","WH2")
例6 找出工资多于1230元的职工号和他们所在的城市。
select 职工号,城市 ;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号 and 工资>1230
例7 检索出工资在1220元到1240元范围内的职工信息。
做法1:select * from 职工表 where 工资 between 1220 and 1240
做法2:select * from 职工表 where 工资 >=1220 and 工资<= 1240
例8 从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。
做法1:select * from 供应商表 where 供应商名 like "%公司"
做法2:select * from 供应商表 where "公司" $ 供应商名
例9 找出不在北京的全部供应商信息。
select * from 供应商表 where 地址<>"北京"
例10 找出尚未确定供应商的订购单。
select 订购单号 from 订购单表 where 供应商号 is null
例11 列出已经确定了供应商的订购单信息。
select * from 订购单表 where 供应商号 is not null
三、多表查询
例12 找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
select 职工号,城市 ;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号 and 面积>400
例13 哪些城市至少有一个仓库的职工工资为1250元?
select 城市 from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号 and 工资=1250
例14 查询所有职工的工资都多于1210元的仓库的信息。
select 仓库表.*;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号;
group by 职工表.仓库号 having min(工资)>1210
例15 求北京和上海的仓库职工的工资总和。
select sum(工资) as 总和 from 职工表,仓库表 ;
where 职工表.仓库号=仓库表.仓库号 and 城市 in ("北京","上海")
四、嵌套查询
例16 哪些城市至少有一个仓库的职工工资为1250元?
方法1:
select 城市 from 仓库表,职工表;
where 仓库表.仓库号 = 职工表.仓库号 AND工资=1250
方法2:
select 城市 from 仓库表 where 仓库号 in;
(select 仓库号 from 职工表 where 工资=1250)
方法2:
SELECT 仓库表.城市;
FROM 查询练习!仓库表 INNER JOIN 查询练习!职工表 ;
ON 仓库表.仓库号 = 职工表.仓库号;
WHERE 职工表.工资 = 1250
例17 查询所有职工的工资都多于1210元的仓库的信息。
select * from 仓库表;
where 仓库号 in ;
(select 仓库号 from 职工表 group by 仓库号 having min(工资)>1210)
例18 找出和职工E4挣同样工资的所有职工。
select 职工号 from 职工表 where 工资=;
(select 工资 from 职工表 where 职工号="E4") and 职工号<>"E4"
例19 求北京和上海的仓库职工的工资总和。
方法1: select sum(工资) as 总和 from 职工表;
where 仓库号 in (select 仓库号 from 仓库表 where 城市 in ("北京","上海"))
方法2: select sum(工资) as 总和 from 职工表, 仓库表;
where 职工表.仓库号 = 仓库表.仓库号 AND城市 in ("北京","上海")
方法3: SELECT SUM(职工表.工资) AS 工资总和;
FROM 查询练习!仓库表 INNER JOIN 查询练习!职工表 ;
ON 仓库表.仓库号 = 职工表.仓库号;
WHERE 仓库表.城市 IN ("北京","上海")
例20 求所有职工的工资都多于1210元的仓库的平均面积。
select avg(面积) from 仓库表 where 仓库号 in ;
(select 仓库号 from 职工表 group by 仓库号 having min(工资)>1210)
例21 检索那些仓库中还没有职工的仓库的信息。
select * from 仓库表 where 仓库号 no