0
点赞
收藏
分享

微信扫一扫

MySql作业练习题

慎壹 2022-04-29 阅读 47
java

第一题

在这里插入图片描述

  1. 删除classno列
  2. 修改tel的列名为phone
  3. 刘六学员信息不存在,删除相关信息
  4. 删除语文成绩在85到90之间的学生信息
  5. 删除家庭住址在通州区并且学生成绩不及格的学生信息
  6. 删除学号为1,3,6, 9的学生。
  7. 修改学号为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.查询学分在24之间课程的信息


5.查询课程名称中带“数据”的课程名、课程号及开课单位

6.查询不是信工学院开设的集中实践课的开课单位和课程名称

7.查询信工学院开设的课程的类型有哪些
-- 1. 查询全部课程的信息
select * from course;

-- 2. 查询信工学院开设的课程名、课程号及学分
select cs_name,cs_id,cs_credit from course;

-- 3.查询学分超过3学分的课程代码、课程名和开课单位
select cs_id,cs_name,cs_depart from course where cs_credit>3;

-- 4.查询学分在2到4之间课程的信息
select * from course where cs_credit between 2 and 4;

-- 5.查询课程名称中带“数据”的课程名、课程号及开课单位
select cs_name,cs_id,cs_depart from course where cs_name like '%数据%';

-- 6.查询不是信工学院开设的集中实践课的开课单位和课程名称
select cs_depart , cs_name from course where cs_depart != '信工' and cs_type='集中实践';

-- 7.查询信工学院开设的课程的类型有哪些
select cs_type from course where cs_depart='信工';

第三题

/*Table structure for table `student` */
DROP TABLE IF EXISTS `student`;		//检测是否存在表`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;

/*Data for the table `student` */
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.查询学生的信息,查询结果按姓名升序排序
-- 1.查询计科专业和大数据专业的学生信息
select * from stu where stu_major='计科' or stu_major='大数据';

-- 2.查询不是信工学院的学生姓名和学号
select stu_name,stu_id from stu where stu_college != '信工学院';

-- 3.查询年龄是17,18,19的学生姓名和专业
select stu_name,stu_major from stu where stu_age in (17,18,19);

-- 4.查询信工学院的的专业有哪些
select  distinct stu_major  from stu where stu_college='信工学院'; 

-- 5.查询年龄为空的学生信息
select * from stu where stu_age is null;

-- 6.查询学生的信息,查询结果按姓名升序排序
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) 将计算机考试成绩按从高到低进行排序    
-- a) 查询student表的所有记录
select * from student;

-- b) 查询student表的第2条到4条记录
select * from student limit 2,3;

-- c) 从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
select id,name,department from student;

-- d) 从student表中查询计算机系和英语系的学生的信息(写出两种答案)
select * from student where department='计算机系' or department='英语系';
select id,name,sex,birth,department,address from student where department='计算机系' || department='英语系';

-- f) 从student表中查询每个院系有多少人
select department , count(*) from student group by department;

-- g) 从score表中查询每个科目的最高分
select c_name,max(grade) from score group by c_name;

-- h) 计算每个考试科目的平均成绩
select c_name,avg(grade) from score group by c_name;

-- i) 将计算机考试成绩按从高到低进行排序 
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.查询所有的部门信息,并统计部门的员工人数
-- 1:查询雇员表中工资最高的雇员的员工号、员工姓名、工资和部门号。
select id,name,salary,dept_id from tb_emp where salary=(select max(salary) from tb_emp);

-- 2:查询每个雇员和其所在的部门名
select tb_emp.name,tb_dept.`name` from tb_emp join tb_dept where tb_emp.dept_id = tb_dept.id;

-- 3:查询每个雇员姓名及其工资所在的等级
select e.`name`,s.grade from tb_emp e, salgrade s where e.salary between s.losal and s.hisal;

-- 4:查询雇员名第2个字母不是敏的雇员的姓名、所在的部门名、工资所在的等级。
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;

-- 5:查询每个雇员和其经理的姓名
select a.name ,b.name from tb_emp a join tb_emp b on a.managerid = b.id;

-- 6:查询每个雇员和其经理的姓名(包括公司老板本身(他上面没有经理))
select a.name,b.name from tb_emp a left join tb_emp b on a.managerid = b.id;

-- 7:查询每个雇员的姓名及其所在部门的部门名(包括没有雇员的部门)
select tb_emp.`name`,tb_dept.`name` from tb_emp left join tb_dept on tb_emp.dept_id = tb_dept.id; 

-- 8:查询每个部门中工资最高的人的姓名、薪水和部门编号
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;

-- 9:查询每个部门平均工资所在的等级
-- a)求每个部门的平均薪水
select avg(tb_emp.salary),tb_emp.dept_id from tb_emp group by tb_emp.dept_id;

-- b)从结果集变成一个临时表 在这张表中和工资表进行连接 筛选平均工资 之后的等级
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;



-- 10.查询员工的姓名、年龄、职位、部门信息―(隐式内连接)
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;

-- 11.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息〈显式内连接)
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;

-- 12.查询拥有员工的部门ID、部门名称
select e.name,e.dept_id,a.name from tb_emp e join tb_dept a on e.dept_id = a.id; 

-- 13.查询所有年龄大于40岁的员工,及其归属的部门名称;如果员工没有分配部门,也需要展示出来
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; 

-- 14.查询所有员工的工资等级
select tb_emp.name,tb_emp.salary,salgrade.grade from tb_emp,salgrade where tb_emp.salary between salgrade.losal and salgrade.hisal;

-- 15.查询“研发部”所有员工的信息及工资等级
-- a)查询研发部的姓名
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 ;
-- 16.查询“研发部”员工的平均工资
select avg(salary) from tb_emp join tb_dept on tb_emp.dept_id=tb_dept.id where tb_dept.name='研发部';

-- 17.查询工资比“灭绝”高的员工信息。
-- a)先查灭绝的工资
select max(salary) from tb_emp where name='灭绝';

select * from tb_emp where salary>(select max(salary) from tb_emp where name='灭绝');

-- 18.查询比平均薪资高的员工信息
-- a)先查平均薪资
select avg(salary) from tb_emp;
-- b)再查比平均薪资高的人
select tb_emp.* from tb_emp where tb_emp.salary>(select avg(salary) from tb_emp);
-- 19.查询所有的部门信息,并统计部门的员工人数
	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;
举报

相关推荐

0 条评论