题目要求:
假设有一个数据库包含以下关系模式:
Teacher(Tno,Tname,Tage,Tsex) /*主码下面加了下划线*
Department(Dno,Dname,Tno)
Work(Tno,Dno,Year,Salary)
教师表Teacher由教师代码(Tno)、教师名字(Tname)、教师年龄(Tage)、教师性别(Tsex)组成。
系表Department由系代码(Dno)、系名(Dname)、系主任代码(Tno)组成。
工作表由教师代码(Tno)、系代码(Dno)、入职年份(Year)、工资(Salary)组成。
使用关系代数表示每个查询:
①列出工资超过5000的教师的不同年龄;
②查找不在计算机系工作的教师代码;
③系主任T1管辖范围内的所有教师姓名;
④假设对关系r,p,(r)表示得到别名为x的一个相同的关系,系里的每个教师都有工资,列出比D1系的所有教师工资都高的教师代码。
目录
解题步骤
一、连接mysql
1.win+R键弹出系统运行窗口,然后再输入cmd进入控制台窗口
2.输入mysql -u root -p,再输入设置的初始密码登录,连接成功如下图
C:\Users\Barry Welson>mysql -u root -pEnter password: ******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 14Server version: 8.0.13 MySQL Community Server - GPLType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>_
二、项目初始化
建立数据库,数据表
- 查看当前用户下的所有数据库
show databases
- 创建数据库
create database 数据库名称;create database if not exists 数据库名称;//如果不存在则创建数据库,避免取名冲突create database if not exists 数据库名称 character set utf8mb4;//定义utf8编译格式
- 使用数据库
use 数据库名称;
- 创建Teacher表
create table teacher( tno int, tname varchar(20), tage int, tsex varchar(8));
- 创建Department表
create table department( dno int, dname varchar(20), tno int);
- 创建Work表
create table work( tno int, dno int, year int, salary int);
三、数据初始化
插入数据
-
insert into teacher(tno, tname, tage,tsex)values(1,'张三',21 , '男'),(2,'李四',42 , '女'),(3,'王五',41 , '男'),(4,'赵六',64 , '女'),(5,'孙七',25, '女'),(6,'周八',31 , '男');
-
insert into department(dno, dname, tno)values(11,'语文', 1),(22,'数学', 2),(33,'英语', 3),(44,'计算机', 4);
-
insert into work(tno, dno ,year ,salary)values(1,11,2,1000),(2,22,5,2000),(3,33,4,3000),(4,44,6,4000),(5,44,5,5000),(6,44,3,6000);
查看当前数据库下所有表
-
show tables;
查看单个表结构
-
desc 表名;
查看单个表数据
-
select* from 表名;
四、数据操作
- 列出工资超过5000的教师的不同年龄;
select a.tage from work s,teacher a where a.tno=s.tno and s.salary>=5000;
- 查找不在计算机系工作的教师代码;
select t.tno from teacher t,department d,work w where d.dname!='计算机' and d.dno=w.dno and w.tno=t.tno;
- 系主任T1管辖范围内的所有教师姓名;(以计算机老师tno=4为例)
select t.tname from teacher t,department d,work w where d.tno=4 and d.dno=w.dno and w.tno=t.tno and t.tno!=d.tno;
- 假设对关系r,p,(r)表示得到别名为x的一个相同的关系,系里的每个教师都有工资,列出比D1系的所有教师工资都高的教师代码。(以计算机系为例)
select t.tname from teacher t,work w where w.salary in (select max(salary) from work) and w.tno=t.tno;
五、关闭数据库
quit;
六、关系代数表示
- πage(σsalary>'5000'(Work)⨝Teacher)
- πtno(σdname<>'计算机'(Department)⨝Work)
- πtname(σtno='T1'(Department)⨝Work⨝Teacher)
- πtno(Work)-(πWork.tno(Work⨝Work.salary<=Work2.salary⋀Work.Dno='D1'ρWorkers(Work)))
- πTname,Dname(Teacher ⋊(Work⨝Department))
Tname Dname 张丽 计算机系 李波 数学系 王艳 计算机系 赵明 Null πTname,Dname((Teacher⨝ Work)⋉Department))
Tname Dname 张丽 计算机系 李波 数学系 王艳 计算机系 Null 电子系
来源地址:https://blog.csdn.net/qq_54310361/article/details/129728619