T_Emp (职工表)
dept_id      P_deptid           dept_name
001           0                   公司A
002           001                 软件一部
003           002                 开发组
004           002                 测试组
005           001                 品管部
T_Emp (职工表)
emp_id       dept_id             emp_name
001           001                小曹
002           003                小刘
003           003                 小胡
005           004                老张
006           005                老关  a、写出查询软件一部及其下属部门的所有员工的SQL语句;
b、写出向职工表中插入部门编号:111,员工编号:888,姓名:小李的职工数据,部门表中没有部门编号111的部门,部门表的部门编号是职工表的部门编号的外键;
c、写出用树形结构展现部门表数据的SQL语句。
设有关系EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资、所在部门号,以及关系DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。
1.请通过SQL语句创建表EMP、DEPT。
2.试用SQL语句完成以下查询:列出各部门中工资不低于600元的职工的平均工资。
3.写出“查询001号职工所在部门名称”的关系代数表达式。
4.请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10%。

解决方案 »

  1.   

    a、写出查询软件一部及其下属部门的所有员工的SQL语句;
    with
    district as 
    (
        --  获得第一个结果集,并更新最终结果集
        select dept_id from T_Emp where dept_name
    = N'软件一部'
        union all
            select dept_id fromT_Emp a, district b
                   where a.parent_id = b.id
    )
    select * from [职工表]  where dept_id in (select dept_id  from  district)
      

  2.   

    with
    district as 
    (
        --  获得第一个结果集,并更新最终结果集
        select dept_id from T_Emp where dept_name
    = N'软件一部'
        union all
            select dept_id fromT_Emp a, district b
                   where a.parent_id = b.dept_id )
    select * from [职工表]  where dept_id in (select dept_id  from  district)