一、实验名称
基于Mysql的SQL应用
二、实验目的
要求学生熟练掌握Mysql平台下SQL指令的应用,完成对基本表、视图创建、删除、数据插入、查询、更新和删除等数据管理工作。
三、实验要求
1、基本硬件配置:英特尔Pentium III 以上,大于4G内存;
2、软件要求:Mysql;
3、时间:1课时;
4、撰写实验报告并按时提交。
四、实验内容
Table emp(empno: 职工号;ename:职工姓名;Job:工作;Mgr:部门领导;Hiredate:聘用日期;Sal:月薪;Comm: 月津贴;deptno: 部门编号)
Table dept(Deptno:部门编号;Dname部门名称;Loc部门所在地;sumsalary:总薪资;persons职工人数)
请用‘dbcreate.sql’导入实验所用数据库。
Group 1: 用命令“Select”查询相关数据:
1.检索所有的职工姓名与年薪
2.检索所有的工作和相应的部门编号
3.检索工作是salesman的员工姓名;
4.检索员工津贴comm为null或comm小于300的员工姓名和津贴值;
5.检索所有职员的姓名和所在部门名称;
6.检索所有员工及其相关领导的姓名。
7.查询聘用日期早于他们的领导的雇员姓名。
8.检索在任何位置有字母“A”的员工姓名;
9.检索名字没有字母串‘%R’的员工姓名;
10.检索所有员工姓名的前三个字母;
11.查询部门2所有的经理、部门3所有clerks以及所有其他所有工资超过2000元的员工姓名;
12.查询所有manager岗位而非3号部门的员工姓名;
13.检索所有员工的姓名、职位和工资,按职位降序排列;
14.检索所有员工的姓名、年收入(sal+comm) * 12(要求重命名),按升序显示;
15.检索1号部门所有员工的人数和平均年薪;
16.检索每个部门的名称和人数。
17.检索每一种工作的最低工资和工作。
18.查询各个部门经理职位(manager)的员工最低工资。
19.查询各部门员工人数、平均工资、平均参加工作的天数;
20.检索最低工资在1500元的工作岗位;
21.检索至少有两个人的部门名称和人数;
22.检索与SCOTT的工作岗位相同的所有员工的姓名;
23.检索所有工资高于Smith的工资的员工姓名和所在部门;
24.检索所有工资高于整个公司平均工资的员工的姓名和工资;
25.检索所有工资高于1号部门所有职工工资水平的员工姓名和工资(>any或>all);
26.检索所有工资高于1号部门某职工工资水平的员工姓名和工资(>any或>all);
27.查询与3号部门某个员工工作岗位相同的员工姓名和工资;
28.检索所有部门名称和所有员工,包括那些没有任何员工的部门。
29.创建一个包括1号部门员工所有信息的视图。
Group 2请使用你的账户创建两个表,包括属性、数据类型、主键和外键。
ddept (deptno, dname loc)
deptno:integer;dname: varchar (20); loc: varchar (30);
primary key:deptno;
eemp (empno, ename,job,hiredate,salary,comm,deptno)
empno: integer;ename: varchar(20);job:varchar(20),hiredate:datetime, salary:double; comm:double;deptno: integer, not null;
Primary key:empno;forign keys:deptno reference ddept(deptno),mgr reference EEmp(empno)。
见下题 mgr好像没给类型所以没加
Group 3: 完成以下操作:
1. 通过alter table添加一个check约束(comm在1和3000之间);
2. 向表eemp中插入至少5条员工记录;
3. 从eemp中删除名为“SMITH”的记录;
4. 创建部门研究信息视图,包括empno、ename、salary和comm。
5. 将所有员工的工资提高20%。
Group 4: 综合设计
根据某个应用的需求,创建一个新的数据库。其中至少包括3个表,每个表至少定义4个合理的属性,分别具有适合的数据类型,并确定表的主键。然后,根据您设计的数据库,将每个表中至少插入4行数据。
- 实验心得
用source快速导入文件。
如果只用了sum等聚合,没用group by会只输出1行记录。