第一题

- 删除classno列
- 修改tel的列名为phone
- 刘六学员信息不存在,删除相关信息
- 删除语文成绩在85到90之间的学生信息
- 删除家庭住址在通州区并且学生成绩不及格的学生信息
- 删除学号为1,3,6, 9的学生。
- 修改学号为5的地址为郑州第八大街和学分88分

第二题
2. 把下面的sql写出来
```sql
/*Table structure for table `course` */
DROP TABLE IF EXISTS `course`; //检测是否存在表`course`,存在删掉,不存在不执行
CREATE TABLE `course` (
`cs_id` int(11) NOT NULL COMMENT '课程编号',
`cs_name` varchar(50) NOT NULL COMMENT '课程名称',
`cs_credit` tinyint(255) unsigned DEFAULT NULL COMMENT '课程学分',
`cs_type` char(12) DEFAULT NULL COMMENT '课程类别',
`cs_depart` char(6) DEFAULT NULL COMMENT '院系名称',
PRIMARY KEY (`cs_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `course` */
insert into `course`(`cs_id`,`cs_name`,`cs_credit`,`cs_type`,`cs_depart`) values (5200313,'数据库原理及应用',4,'核心专业','信工'),(5203314,'计算机导论',4,'通识教育','信工'),(5219314,'数据结构',5,'专业核心','信工'),(5223013,'大学物理',4,'专业基础','信工'),(5227614,'毕业实习',4,'集中实践','信工'),(5230912,'云计算',2,'共同选修','信工'),(5236212,'机器学习',2,'共同选修','信工'),(5237514,'c语言',4,'专业基础','信工'),(5245112,'区块链',2,'任意选修','信工'),(7200422,'知识产权法',2,'任意选修','文法'),(20201833,'概率论',3,'专业基础','基础'),(20202336,'高等数学',6,'专业基础','基础'),(29299131,'劳动教育',1,'集中实践','学务');
1. 查询全部课程的信息
2. 查询信工学院开设的课程名、课程号及学分
3.查询学分超过3学分的课程代码、课程名和开课单位
4.查询学分在2到4之间课程的信息
5.查询课程名称中带“数据”的课程名、课程号及开课单位
6.查询不是信工学院开设的集中实践课的开课单位和课程名称
7.查询信工学院开设的课程的类型有哪些
select * from course;
select cs_name,cs_id,cs_credit from course;
select cs_id,cs_name,cs_depart from course where cs_credit>3;
select * from course where cs_credit between 2 and 4;
select cs_name,cs_id,cs_depart from course where cs_name like '%数据%';
select cs_depart , cs_name from course where cs_depart != '信工' and cs_type='集中实践';
select cs_type from course where cs_depart='信工';
第三题
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`stu_id` bigint(11) unsigned NOT NULL COMMENT '学号',
`stu_name` char(12) NOT NULL COMMENT '姓名',
`stu_sex` enum('男','女') DEFAULT NULL COMMENT '性别',
`stu_age` tinyint(255) unsigned DEFAULT NULL COMMENT '年龄',
`stu_major` char(9) DEFAULT NULL COMMENT '专业',
`stu_college` char(12) DEFAULT NULL COMMENT '学院',
PRIMARY KEY (`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `student`(`stu_id`,`stu_name`,`stu_sex`,`stu_age`,`stu_major`,`stu_college`) values (201804550101,'郭奎','男',22,'计科','信工学院'),(201804550102,'吕宇航','男',18,'计科','信工学院'),(201804550103,'张豪辉','女',19,'计科','信工学院'),(201804550107,'丁志杰','男',17,'金融学','金贸学院'),(201804550109,'范伟','男',19,'金融学','金贸学院'),(201804550116,'张依婷','女',17,'大数据','信工学院'),(201804550120,'张维','男',19,'计科','信工学院'),(201804550121,'朱柳阳','女',20,'计科','信工学院'),(201804550144,'谭兵炎','男',20,'大数据','信工学院'),(201804550153,'杨志强','男',17,'大数据','信工学院');
1.查询计科专业和大数据专业的学生信息
2.查询不是信工学院的学生姓名和学号
3.查询年龄是17,18,19的学生姓名和专业
4.查询信工学院的的专业有哪些
5.查询年龄为空的学生信息
6.查询学生的信息,查询结果按姓名升序排序
select * from stu where stu_major='计科' or stu_major='大数据';
select stu_name,stu_id from stu where stu_college != '信工学院';
select stu_name,stu_major from stu where stu_age in (17,18,19);
select distinct stu_major from stu where stu_college='信工学院';
select * from stu where stu_age is null;
select * from stu order by stu_name asc;
第四题
create table student
(
id int(10) primary key,
name varchar(20) not null,
sex varchar(4),
birth year,
department varchar(20) not null,
address varchar(50)
);
create table score
(
id int(10) primary key,
stu_id int(10) not null,
c_name varchar(20),
grade int(10)
);
insert into student(id,name,sex,birth,department,address)
values(901,'张老大','男',1985,'计算机系','北京市海淀区'),
(902,'张老二','男',1986,'中文系','北京市昌平区'),
(903,'张三','女',1990,'中文系','湖南省永州市'),
(904,'李四','男',1990,'英语系','辽宁省阜新市'),
(905,'王五','女',1991,'英语系','福建省厦门市'),
(906,'王六','男',1988,'计算机系','湖南省衡阳市');
insert into score(id,stu_id,c_name,grade)
values(1,901,'英语',80),
(2,902,'计算机',65),
(3,902,'中文',88),
(4,903,'中文',95),
(5,904,'计算机',70),
(6,904,'英语',92),
(7,905,'英语',94),
(8,906,'计算机',90),
(9,901,'计算机',null),
(10,901,'中文',null),
(11,902,'英语',null);
a) 查询student表的所有记录
b) 查询student表的第2条到4条记录
c) 从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
d) 从student表中查询计算机系和英语系的学生的信息(写出两种答案)
f) 从student表中查询每个院系有多少人
g) 从score表中查询每个科目的最高分
h) 计算每个考试科目的平均成绩
i) 将计算机考试成绩按从高到低进行排序
select * from student;
select * from student limit 2,3;
select id,name,department from student;
select * from student where department='计算机系' or department='英语系';
select id,name,sex,birth,department,address from student where department='计算机系' || department='英语系';
select department , count(*) from student group by department;
select c_name,max(grade) from score group by c_name;
select c_name,avg(grade) from score group by c_name;
select * from score where c_name='计算机' order by grade desc;
第五题
create table tb_emp(
id int primary key auto_increment COMMENT '员工编号',
name varchar(20) COMMENT '员工姓名',
age int COMMENT '员工年龄',
job varchar(20) COMMENT '岗位',
salary int COMMENT '薪水',
entrydate date COMMENT '员工入职时间',
managerid int COMMENT '员工领导编号',
dept_id int COMMENT '员工所在部门编号'
);
create table tb_dept(
id int primary key auto_increment,
name varchar(20)
);
insert into tb_dept(name) values('研发部'),('市场部'),('财务部'),('销售部'),('总经办');
insert into tb_emp values
(null,'金庸',66,'总裁',20000,'2000-01-01',null,5),
(null,'张无忌',20,'项目经理',12500,'2005-12-01',1,1),
(null,'杨逍',33,'开发',8400,'2000-11-03',2,1),
(null,'韦一笑',48,'开发',11000,'2002-03-05',2,1),
(null,'常豫川',43,'开发',10500,'2004-09-01',2,1),
(null,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1),
(null,'灭绝',60,'财务总监',8500,'2002-09-12',1,3),
(null,'周芷若',60,'会计',48000,'2006-06-01',7,3),
(null,'丁敏君',19,'出纳',4000,'2009-06-01',7,3),
(null,'赵敏',23,'市场总监',14000,'2009-06-01',1,2),
(null,'鹿仗客',56,'职员',3750,'2009-06-01',10,2),
(null,'鹤比翁',19,'职员',3750,'2009-06-01',10,2),
(null,'方东白',19,'职员',3750,'2009-06-01',10,2),
(null,'张三丰',88,'销售总监',14000,'2004-06-01',1,4),
(null,'玉莲舟',38,'销售',4600,'2009-06-01',14,4),
(null,'宋远桥',40,'销售',4600,'2009-06-01',14,4),
(null,'陈友谅',42,null,2000,'2011-06-01',1,null);
create table salglrade(
grade int,
losal int,
hisal int
) comment '薪资等级表;
insert into salgrade values (1,0,3000);
insert into salgrade values (2,3001,5000);
insert into salgrade values (3,5001,8000);
insert into salgrade values (4,8001,10000);
insert into salgrade values (5,10001,15000);
insert into salgrade values (6,15001,20000);
insert into salgrade values (7,20001,25000);
insert into salgrade values (8,25001,30000);
1:查询雇员表中工资最高的雇员的员工号、员工姓名、工资和部门号。
2:查询每个雇员和其所在的部门名
3:查询每个雇员姓名及其工资所在的等级
4:查询雇员名第2个字母不是敏的雇员的姓名、所在的部门名、工资所在的等级。
5:查询每个雇员和其经理的姓名
6:查询每个雇员和其经理的姓名(包括公司老板本身(他上面没有经理))
7:查询每个雇员的姓名及其所在部门的部门名(包括没有雇员的部门)
8:查询每个部门中工资最高的人的姓名、薪水和部门编号
9:查询每个部门平均工资所在的等级
10.查询员工的姓名、年龄、职位、部门信息―(隐式内连接)
11.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息〈显式内连接)
12.查询拥有员工的部门ID、部门名称
13.查询所有年龄大于40岁的员工,及其归属的部门名称;如果员工没有分配部门,也需要展示出来
14.查询所有员工的工资等级
15.查询“研发部”所有员工的信息及工资等级
16.查询“研发部”员工的平均工资
17.查询工资比“灭绝”高的员工信息。
18.查询比平均薪资高的员工信息
19.查询所有的部门信息,并统计部门的员工人数
select id,name,salary,dept_id from tb_emp where salary=(select max(salary) from tb_emp);
select tb_emp.name,tb_dept.`name` from tb_emp join tb_dept where tb_emp.dept_id = tb_dept.id;
select e.`name`,s.grade from tb_emp e, salgrade s where e.salary between s.losal and s.hisal;
select tb_emp.id,tb_emp.name,tb_dept.`name` from tb_emp join tb_dept where tb_emp.dept_id = tb_dept.id and substring(tb_emp.name,2,1)!='敏' order by tb_emp.id asc;
select a.name ,b.name from tb_emp a join tb_emp b on a.managerid = b.id;
select a.name,b.name from tb_emp a left join tb_emp b on a.managerid = b.id;
select tb_emp.`name`,tb_dept.`name` from tb_emp left join tb_dept on tb_emp.dept_id = tb_dept.id;
select max(tb_emp.salary),tb_dept.name from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id group by tb_dept.name;
select avg(tb_emp.salary),tb_emp.dept_id from tb_emp group by tb_emp.dept_id;
select emp.*,g.grade from(
select avg(tb_emp.salary) ag,tb_emp.dept_id from tb_emp group by tb_emp.dept_id)emp
join salgrade g on emp.ag between g.losal and g.hisal;
select tb_emp.`name`,tb_emp.age,tb_emp.job,tb_dept.`name` from tb_emp ,tb_dept where tb_emp.dept_id=tb_dept.id;
select tb_emp.`name`,tb_emp.age,tb_emp.job,tb_dept.`name` from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id where tb_emp.age < 30;
select e.name,e.dept_id,a.name from tb_emp e join tb_dept a on e.dept_id = a.id;
select e.name,e.age,a.name from tb_emp e left join tb_dept a on e.dept_id = a.id where e.age>40;
select tb_emp.name,tb_emp.salary,salgrade.grade from tb_emp,salgrade where tb_emp.salary between salgrade.losal and salgrade.hisal;
select tb_emp.name from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id where tb_dept.name='研发部';
select e.*,s.grade from tb_emp e,salgrade s where e.salary between s.losal and s.hisal and e.name in(select tb_emp.name from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id where tb_dept.name='研发部') order by e.id ;
select avg(salary) from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id where tb_dept.name='研发部';
select max(salary) from tb_emp where name='灭绝';
select * from tb_emp where salary>(select max(salary) from tb_emp where name='灭绝');
select avg(salary) from tb_emp;
select tb_emp.* from tb_emp where tb_emp.salary>(select avg(salary) from tb_emp);
select tb_dept.name,count(*),tb_emp.dept_id from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id group by tb_emp.dept_id;