练习1_sql语句答案.doc
文本预览下载声明
习题1
请根据给出的数据库表结构来回答相应问题:
DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13));
EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
SAL FLOAT, COMM FLOAT, DEPTNO INT);
BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT);
SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);
其中表中包含如下数据:
DEPT表:
EMP表:
SALGRADE表:
BONUS表: 无数据
根据上面描述完成下面问题:
(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)
DDL
写出上述表的建表语句。此外,在DEPT上创建名为”PK_DEPT”的主键约束,在EMP表上创建名为” PK_EMP”的主键约束以及指向表DEPT的外键约束” FK_DEPTNO”。
命令:
create table dept
(DEPTNO INT CONSTRAINT PK_DEPT primary key,
DNAME varchar(14),
LOC varchar(13)
)
create table EMP
( EMPNO INT CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR INT,
HIREDATE DATE,
SAL FLOAT,
COMM FLOAT,
DEPTNO INT CONSTRAINT FK_DEPTNO FOREIGN KEY REFERENCES dbo.dept(DEPTNO)
)
create table BONUS
(
ENAME VARCHAR(10),
JOB VARCHAR(9),
SAL INT,
COMM INT)
create table SALGRADE
( GRADE INT,
LOSAL INT,
HISAL INT)
DML
给出相应的INSERT语句来完成题中给出数据的插入。
命令:insert into SALGRADE (GRADE,LOSAL,HISAL)VALUES(1,1,1)
将所有员工的工资上浮10%.然后查询员工姓名、薪水、补助。(emp.sal为工资,m为补助)
命令:update emp set sal=sal*1.1
Select ename,sal,comm from emp
结果:
单表查询
查看EMP表中部门号为10的员工的姓名,职位,参加工作时间,工资。
命令:select ename,job,hiredate,sal from emp where deptno=10
结果:
查所有已有的职位,要求去除重复项。
命令: SELECT DISTINCT JOB FROM EMP
结果:
计算每个员工的年薪,并取列名为Salary of Year(emp.sal为员工的月薪),要求输出员工姓名,年薪。
命令:select ename,sal*12 as salary of year from emp
结果:
查询每个员工每个月拿到的总金额(emp.sal为工资,m为补助)。(提示:isnull(ex1,ex2)表示如果ex1为空则返回ex2select ename,isnull(sal+comm,sal) as total from emp
结果:
显示职位是主管(manager)的员工的姓名,工资。
命令:select ename,sal from emp where job=manager
结果:
显示第3个字符为大写O的所有员工的姓名及工资。
命令:select ename,sal from emp where ename like __O%
结果:
显示职位为销售员(SALESMAN)或主管(MANAGER)的员工的姓名,工资,职位。
命令:select ename,sal,job from emp where job=salesman or job=manager
结果:
显示所有没有补助的员工的姓名。
命令:select ename from emp where comm is null
结果:
显示有补助的员工的姓名,工资,补助。
命令:select ename from emp where comm is not null
结果:
排序显示所有员工的姓名,工资(按工资降序方式)。
命令:select ename,
显示全部