(6)查询2006年5月1日到2006年6月1日期间,图书的借阅情况
Select * from 借阅 where 借阅日期
between ‘2006/05/01’ and ‘2006/06/01’
4、设教学数据库中有四个关系:
教师(教师编号,教师姓名,联系电话) 课程(课程号,课程名,教师编号)
学生(学号,学生姓名,年龄,性别,专业) 选课(学号,课程号,成绩)
(1)创建学生表和选课表,要求:指定每个表的主关键字、外部关键字和check约束。 (2)将所有学生的“高等数学”课程的成绩增加10分。 Update选课 set成绩=成绩+10 where课程号in (
select课程号 from 课程 where课程名=’高等数学’
(3)将课程表的查询和修改权限授给teacher用户,同时允许转授给其它用户。 Grant select,update on 课程 to teacher with grant option (4)查询男生所学课程的课程号和课程名。
Selec 课程号,课程名 FROM 学生,选课,课程
Where学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 性别=’男’
或Selec 课程号,课程名 FROM 课程 where课程号 in ( Select 课程号 from 选课 where 学号 in ( Select学号 from 学生 where 性别=’男’))
(5)查询所有姓王的教师所授课程的课程号和成绩(按课程号排序)。
Select 选课.课程号, 成绩 from 教师,课程,选课 where 教师姓名like ‘王%’ And 教师.教师编号=课程.教师编号 and 课程.课程号=选课.课程号 order by 课程号
(6)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人 数,查询结果按人数降序排列。
Select 课程号 ,count(学号) 人数 from 选课
group by课程号 having count(*)>10 order by 人数 desc (7) 检索所有姓“李”的学生的姓名和年龄
Select 学生姓名,年龄 from 学生 where 学生姓名 like ‘李%’ (8)求男生的最高成绩
Select max(成绩) from 选课 where 学号 in (select 学号 from 学生 Where 性别=’男’)
5、已知有关系:仓库(仓库号,城市,面积)
职工(仓库号,职工号,工资)
订购单(职工号,供应商号,订购单号,订购日期) 供应商(供应商号,供应商名,地址)
(1)创建订购单表,要求:数据类型及长度自定义,并指定其主码和外码
Create table 订购单表(职工号 char(10) foreign key references职工,供应商号 char(10) foreign key references供应商,
订购单号 char(10) primary key, 订购日期 datetime)
(2)修改职工表,增加一个职工名(可变长字符型,最长为20)字段 Alter 职工表 add 职工名 varchar(20) (3)向订购单表中增加一条记录,记录值为:
(’ZG0001’,‘GY0001’, ‘DD0001’,‘2006/06/12’)
Insert into 订购单表 values (’ZG0001‘,‘GY0001’, ‘DD0001’,‘2006/06/12’) (4)给低于所有职工平均工资的职工提高10%的工资。
UPDATE 职工 SET 工资=工资*1.1 WHERE 工资< (SELECT AVG(工资) FROM 职工) (5)删除所有目前没有任何订购单的供应商。
DELETE FROM 供应商 WHERE 供应商号 NOT IN
(SELECT 供应商号 FROM 订购单)
(6)将职工表的查询权授给USER用户,并允许其转授给其他人
Grant select on职工表 to USER with grant option (7)检索出向供应商S3发过订购单的职工的职工号和仓库号。
SELECT 职工号,仓库号 FROM 职工 WHERE 职工号 IN
( SELECT 职工号 FROM 订购单 WHERE 供应商号=’S3’ )
(8)检索出目前没有任何订购单的供应商信息。
SELECT * FROM 供应商 WHERE NOT EXISTS
( SELECT * FROM 订购单 WHERE 供应商号=供应商.供应商号 )
(9)检索出和职工E1、E3都有联系的北京的供应商信息。
SELECT * FROM 供应商 WHERE 供应商号 IN
( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E1’ ) AND 供应商号 IN
( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E3’ )
(10)检索出目前和华通电子公司有业务联系的每个职工的工资。
SELECT 职工号,工资 FROM 职工 WHERE 职工号 IN
(SELECT 职工号 FROM 订购单 WHERE 供应商号 IN
(SELECT 供应商号 FROM 供应商 WHERE 供应商名=’华通电子公司’))
(11) 检索出与工资在1220元以下的职工没有联系的供应商的名称。
SELECT 供应商名 FROM 供应商 WHERE 供应商号 IN
(SELECT 供应商号 FROM 订购单 WHERE 职工号 NOT IN
(SELECT 职工号 FROM 职工 WHERE 工资 < 1220))
(12) 检索出向S4供应商发出订购单的仓库所在的城市。
SELECT 城市 FROM 仓库 WHERE 仓库号 IN
(SELECT 仓库号 FROM 职工 WHERE 职工号 IN
(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))
(13)检索出在上海工作并且向S6供应商发出了订购单的职工号。 SELECT 职工号 FROM 职工 WHERE 仓库号 IN
(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’) AND 职工号 IN (SELECT 职工号 FROM 订购单 WHERE 供应商号=’S6’))
(14)检索出在广州工作并且只向S6供应商发出了订购单的职工号。 SELECT 职工号 FROM 职工 WHERE 仓库号 IN
(SELECT 仓库号 FROM 仓库 WHERE 城市=’广州’) AND 职工号 IN
(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S6’) AND 职工号 NOT IN (SELECT 职工号 FROM 订购单 WHERE 供应商号!=’S6’)
(15)检索出由工资多于1230元的职工向北京的供应商发出的订购单号。 SELECT 订购单号 FROM 订购单 WHERE 职工号 IN
(SELECT 职工号 FROM 职工 WHERE 工资>1230) AND 供应商号 IN (SELECT 供应商号 FROM 供应商 WHERE 地址=’北京’) (16)检索出有最大面积的仓库信息。
SELECT * FROM 仓库 WHERE 面积=(SELECT MAX(面积) FROM 仓库) (17)检索出向S4供应商发出订购单的那些仓库的平均面积。
SELECT AVG(面积) FROM 仓库 WHERE 仓库号 IN (SELECT 仓库号 FROM 职工 WHERE 职工号 IN
(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))
(18)检索出每个城市的供应商个数。
SELECT 地址,COUNT(*) FROM 供应商 GROUP BY 地址 (19)检索出和面积最小的仓库有联系的供应商的个数。
SELECT COUNT(*) FROM 供应商 WHERE 供应商号 IN
(SELECT 供应商号 FROM 订购单 WHERE 职工号 IN
(SELECT 职工号 FROM 职工 WHERE 仓库号 IN
(SELECT 仓库号 FROM 仓库 WHERE 面积=
(SELECT MIN(面积) FROM 仓库))))
(20)插入一个新的供应商元组(S9,智通公司,沈阳)。
INSERT INTO 供应商 VALUES(‘S9’,’智通公司’,’沈阳’) (21)删除由在上海仓库工作的职工发出的所有订购单。
DELETE FROM 订购单 WHERE 职工号 IN
(SELECT 职工号 FROM 职工 WHERE 仓库号 IN
(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’)