8设有关系EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。(回答下列题目)(20)
1. 列出各部门中工资不低于600元的职工的平均工资。(10)
2. 请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%。(10)
1.SELECT DNO, AVG (SALARY)
FROM EMP
WHERE SALARY=600
GROUP BY DNO
2.UPDATE EMP
 SET SALARY=SALARY*1.1
 WHERE ENO IN
  (SELECT ENO
 FROM EMP, DEPT
 WHERE EMP.DNO=DEPT.DNO
 AND DNAME='销售部'
 AND SALARY600;
或者
UPDATE EMP
SET SALERY = SALERY * 1.1
FROM EMP A,ENO B
WHERE A.DNO = B.DNO
AND B.DNAME='销售部'
AND B.SALARY600;
6设职工---社团数据库有三个基本表:(20)
职工(职工号,姓名,年龄,性别);
社会团体(编号,名称,负责人,活动地点);
参加(职工号,编号,参加日期);
其中:
1)职工表的主键为职工号。
2)社会团体表的主键为编号;主键为负责人,被参照表为职工表,对应属性为职工号。
3)参加表的职工号和编号为主键;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。
试用SQL语句表达下列操作:
1)定义职工表、社会团体表和参加表,并说明其主键和参照关系。
2)建立下列两个视图。
社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);
参加人情况(职工号,姓名,社团编号,社团名称,参加日期)
3)查参加唱歌队或篮球队的职工号和姓名。
4)求参加人数超过100人的社会团体的名称和负责人。
答:
1  CREAT TABLE 职工(职工号 CHAR10NOT NULL ,
             姓名 CHAR8NOT NULL
             年龄 SMALLINT
             性别 CHAR2),
     CONSTRAINT C1_PK PRIMARY KEY(职工号); 
CREAT TABLE 社会团体(编号 CHAR8NOT NULL , 
名称 CHAR12NOT NULL
负责人 CHAR8),
活动地点 VARCHAR50),
CONSTRAINT C2_PK  PRIMARY KEY(职工号)
CONSTRAINT C2 FOREIGN KEY(负责人)REFERENCES职工 (职工号));
CREAT TABLE 参加(职工号 CHAR8),
编号 CHAR8),
参加日期 DATA
CONSTRAINT C3_PK PRIMARY KEY(职工号,编号),
CONSTRAIN C3 FOREIGN KEY(职工号)REFERENCES职工(职工号));
2
CREAT VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)
AS  SELECT 编号,名称,负责人,姓名,性别
FROM 社会团体,职工
WHERE 社会团体.负责人=职工.职工号;
CREAT VIEW参加人情况(职工号,姓名,社团编号,参加日期)
AS SELECT参加.职员号,姓名,社会团体.编号,名称,参加日期                  FROM 职工,社会团体,参加
WHERE 职工.职工号=参加.职工号AND 参加.编号=社会团体.编号;
3)  SELECT 职工号,姓名
  FROM 职工,社会团体,参加
  WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号
    AND 社会团体.名称 IN'唱歌队''篮球队');
   
4) SELECT 社会团体.名称,职工.姓名 
    FROM 职工,社会团体,参加
  WHERE 社会团体.编号=参加.编号 AND 社会团体.负责人=职工.职工号
GROUP BY 参加.编号 HAVING COUNT(参加.编号)>100
8设工程—零件数据库中有四个基本表:18分)
供应商(供应商代码,姓名,所在城市,);
工程(工程代码,工程名,负责人,预算);
零件(零件代码,零件名,规格,产地,颜);
供应零件(供应商代码,工程代码,零件代码,数量)
试用SQL语句完成下列操作:
1) 查预算在50000~100000元之间的工程的信息,并将结果按预算降序排列。
2 ) 出使用上海产的零件的工程名称。
3)  将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并将零件P6的产地改为S3供货商的所在城市。
4)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。
1.SELECT*
FROM 工程
WHERE 预算 BETWEEN 50000 AND 100000  (或者 WHERE 预算>= 50000  AND 
预算<= 1000000)
ORDER BY 预算 DESC
2.SELECT 工程名
FROM 供应商,供应零件,工程sql查询面试题及答案
WHERE 供应商.供应商代码=供应零件.供应商代码AND
供应零件.工程代码=工程.工程代码 AND 
供应商.所在城市='上海'
3.UPDATE 供应零件
SET 供应商代码='S3'
WHERE 供应商代码='S5' AND 工程代码='J4'  AND 零件代码='P6';
UPDATE零件
SET产地 = B. 所在城市
FROM 零件 A, 供应商 B
WHERE A. 零件代码 = 'P6'
AND B. 供应商代码 = 'S3';
4.DELETE
FROM    供应零件
WHERE    供应商代码='S2';
DELETE
FROM      供应商
WHERE    供应商代码='S2';
4. 数据库部分
1、存储过程与触发器必须讲,经常被面试到?
create procedure insert_Student
(    _name varchar(50),
  _age int ,
out _id  int
)
begin
    insert into student value(null,_name,_age);
    select max(stuId) into _id from student;
end;
call insert_Student('wfz',23,@id);
select @id;
mysql> create trigger update_Student BEFORE update on student FOR EACH ROW
-> select * from student;
触发器不允许返回结果
create trigger update_Student BEFORE update on student FOR EACH ROW 
insert into  student value(null,'zxx',28);
mysql的触发器目前不能对当前表进行操作
create trigger update_Student BEFORE update on student FOR EACH ROW 
delete from articles  where id=8;
这个例子不是很好,最好是用删除一个用户时,顺带删除该用户的所有帖子
这里要注意使用OLD.id
其实我认为触发器用处还是很多的,不应该不用,而应该常用。比如校内网、开心网、Facebook,你发一个日志,自动通知好友,其实就是在增加日志时做一个后触发,再向通知表中写入条目。因为触发器效率高。而UCH没有用触发器,效率和数据处理能力都很低。呵呵,个人意见。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。