数据库相关习题3

1. 题目描述

2.某大学研究生院有若干研究生导师,包括职工编号、姓名、职称、研究方向,其中每个导师的职工编号是唯一的。
若干研究生,包括学号、姓名、性别、入学日期,其中每个研究生的学号是唯一的。
每个导师可以带若干研究生,但每个研究生只能有一个导师。
请设计一个数据库,要求可以正确体现导师和研究生之间的关系。
设计完毕之后,请插入一定量的数据,并验证你设计的数据库是否满足要求。

在你设计的表中插入若干数据。

1.请查出每个导师所带研究生的姓名。
2.请查出特定姓名的导师所带研究生的姓名。
3.请查出每个导师所带研究生的数量。
4.请查出每个导师所带的男研究生的数量。
5.请找出选择哪个研究方向的导师最多。
6.请找统计不同职称的导师的个数。

除上述列出的各项操作之外
你也可以自己再思考一些需求,然后再练习多表查询的相关操作。

2. SQL语言实现

在你设计的表中插入若干数据。

0.创建表,插入数据

create table tutor(
t_id int primary key auto_increment,
name varchar(50),
grade varchar(50),
direction  varchar(200)
);

INSERT INTO tutor VALUES (1, '袁隆平', '副教授', '人工智能');
INSERT INTO tutor VALUES (2, '终南山', '教授', '大数据');
INSERT INTO  tutor VALUES (3, '屠呦呦', '讲师', '数据挖掘');
INSERT INTO tutor VALUES (4, '姚期智', '教授', '大数据');
INSERT INTO tutor VALUES (5, '毛爷爷', '主席', '毛泽东思想');
INSERT INTO tutor VALUES (6, '邓爷爷', '主席', '邓小平理论');
select * from tutor;


create table postgraduate(
s_id int primary key auto_increment,
name varchar(50),
gender varchar(10),
time  varchar(50),
tutor_id int
);

-- drop table postgraduate;

INSERT INTO postgraduate VALUES (1, '王一', '男', '2009-09-08', 2);
INSERT INTO postgraduate VALUES (2, '吴二', '男', '2011-03-04 ', 4);
INSERT INTO postgraduate VALUES (3, '张三', '女', '2015-09-04 ', 3);
INSERT INTO postgraduate VALUES (4, '秦二', '男', '2019-01-23 ', 1);
INSERT INTO postgraduate VALUES (5, '武四', '女', '2011-04-06 ', 2);
INSERT INTO postgraduate VALUES (6, '李白', '男', '2020-11-14 ', 6);
INSERT INTO postgraduate VALUES (7, '高源', '女', '2019-08-27 ', 2);
INSERT INTO postgraduate VALUES (8, '张旭辉', '男', '2022-09-01 ', 6);
INSERT INTO postgraduate VALUES (9, '王尚', '男', '2015-09-04 ', 1);
INSERT INTO postgraduate VALUES (10, '郑恺', '男', '2017-09-01', 5);
select * from postgraduate;

alter database testdb1 character set utf8 collate utf8_bin;

在这里插入图片描述
在这里插入图片描述

1.请查出每个导师所带研究生的姓名。

select * from tutor t left join postgraduate p on t.t_id=p.tutor_id;

在这里插入图片描述

2.请查出特定姓名的导师所带研究生的姓名。

select * from tutor t left join postgraduate p on t.t_id=p.tutor_id where t.name='袁隆平';

在这里插入图片描述
3.请查出每个导师所带研究生的数量。

select t.name ,count(*) from tutor t ,postgraduate p where t.t_id=p.tutor_id group by p.tutor_id;

在这里插入图片描述

4.请查出每个导师所带的男研究生的数量。

select t.name ,count(*) from tutor t ,postgraduate p where t.t_id=p.tutor_id and p.gender='男' group by p.tutor_id;

在这里插入图片描述

5.请找出选择哪个研究方向的导师最多。

select direction 研究方向导师最多 from tutor group by direction order by count(*)  desc limit 1;

在这里插入图片描述

6.请找统计不同职称的导师的个数。

select grade 职称,count(*) 导师人数 from tutor group by grade;

在这里插入图片描述

3. 用JDBC来实现一遍

猜你喜欢

转载自blog.csdn.net/gy99csdn/article/details/114546636