关系数据库语言SQL课后练习(四)

您所在的位置:网站首页 sql语句定义外码 关系数据库语言SQL课后练习(四)

关系数据库语言SQL课后练习(四)

2024-07-17 08:17| 来源: 网络整理| 查看: 265

文章目录 一、题干二、解题步骤1.用CREATE TABLE语句创建上述3个表,需指出主键和外键。2.检索超过50岁的男职工的工号和姓名。3.假设每个职工只能在一个公司工作,检索工资超过1 000元的男性职工工号和姓名。4.假设每个职工可在多个公司工作,检索至少在编号为C4和C8的公司兼职的职工工号和姓名。5.检索在联华公司工作、工资超过1 000元的男性职工的工号和姓名。6.假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和工资总数,显示(E≠},NUM,SUM_SALARY),分别表示工号、公司数目和工资总数。7.工号为E6的职工在多个公司工作,试检索至少在E6职工兼职的所有公司工作的职工工号。8.检索联华公司中低于本公司平均工资的职工工号和姓名。9.在每一公司中为50岁以上的职工加薪100元(若职工为多个公司工作,可重复加)。10.在EMP表和WORKS表中删除年龄大于60岁的职工有关元组。 总结

一、题干

设数据库中有3个关系: 职工表EMP(E#,ENAME,AGE,SEX,ECITY),其属性分别表示职工工号、姓名、年龄、性别 和籍贯。 工作表WORKSfZ#,雠,SALARY),其屙I生分别表示职工工号、工作的公司编号和工资。 公司表COMP(C#,CNAME,CITY),其属性分别表示公司编号、公司名称和公司所在城市。

二、解题步骤 1.用CREATE TABLE语句创建上述3个表,需指出主键和外键。

代码如下:

CREATE TABLE EMP (E# CHAR(4)NOT NULL, ENAME CHAR(8)NOT NULL, AGE SMALLINT, SEX CHAR(1), ECITY CHAR(20), PRIMARY KEY(E#)); CREATE TABLE C:OMP (C# CHAR(4)NOT NULL, CNAME CHAR(20)NOT NULL, CITY CHAR(20), PRIMARY KEY(C#)); CREATE TABLE WORKS (E# CHAR(4)NOT NULL, C# CHAR(4)NOT NULL, SALARY SMALLINT, PIuMARY KEY(E#,C#), FOREIGN KEY(E#)REFERENCES EMP(E#), FOREIGN KEY(C#)REFERENCES COMP(C#)); 2.检索超过50岁的男职工的工号和姓名。

代码如下:

(SELECT E#,ENAME FROMEMP WHERE AGE>50 AND SEX=’M’; 3.假设每个职工只能在一个公司工作,检索工资超过1 000元的男性职工工号和姓名。

代码如下:

(SELECT E#,ENAME FROMEMP WHERE AGE>50 AND SEX=’M’; 4.假设每个职工可在多个公司工作,检索至少在编号为C4和C8的公司兼职的职工工号和姓名。

代码如下:

SELECT A.E#,A.ENAME FROM EMPA,WORKS B,WORKS C WHERE A.E#=B.E# AND B.E#=C.E# AND B.C#=’C4’AND C.C#=’C8’; 5.检索在联华公司工作、工资超过1 000元的男性职工的工号和姓名。

代码如下:

SELECT A.E#,A.ENAME FROM EMPA,WORKS B,COMP C WHERE A.E#=B.E#AND B.C#=C.# AND CNAME=’联华公司’AND SALARY>1000 AND SEX='M’; 6.假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和工资总数,显示(E≠},NUM,SUM_SALARY),分别表示工号、公司数目和工资总数。

代码如下:

SELECT E#,COUNT(C#)AS NUM,SUM(SALARY)AS SUM—SALARY FROM WORKS GROUP BY E#; 7.工号为E6的职工在多个公司工作,试检索至少在E6职工兼职的所有公司工作的职工工号。

代码如下:

SELECT X.E# FROM WORKS X WHERE NOT EXISTS (SELECT * FROM WORKS Y WHERE E#=’E6’ AND NOT EXISTS (SELECT * FROM WORKS Z WHERE Z.E#=X.E#AND Z.C#=Y.C#)); 8.检索联华公司中低于本公司平均工资的职工工号和姓名。

代码如下:

SELECT A.E#,A.ENAME FROM EMPA,WORKS B,COMP C WHERE A.E#=B.E#AND B.C#=C.C# AND CNAME=’联华公司’ AND SALARY50); 10.在EMP表和WORKS表中删除年龄大于60岁的职工有关元组。 DELETE FROM WORKS WHERE E# IN(SELECT E# FROM EMP WHERE AGE>60); DELETE FROM EMP WHERE AGE>60; 总结

本篇已经是SQL基础练习的最后一道练习题啦,往后笔者会更新嵌入SQL的主语言练习以及项目资源的分享,大家打好基础多加练习,一起加油!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3