MYSQL教师表、系表、工作表查询

题目要求:

假设有一个数据库包含以下关系模式:
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

二、项目初始化

三、数据初始化

四、数据操作

五、关闭数据库

六、关系代数表

解题步骤

一、连接mysql

        1.win+R键弹出系统运行窗口,然后再输入cmd进入控制台窗口

        2.输入mysql -u root -p,再输入设置的初始密码登录,连接成功如下图

C:\Users\Barry Welson>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.13 MySQL Community Server - GPL


Type '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 表名;

四、数据操作

  1. 列出工资超过5000的教师的不同年龄;
    select a.tage from work s,teacher a where a.tno=s.tno and s.salary>=5000;
  2. 查找不在计算机系工作的教师代码;
    select t.tno from teacher t,department d,work w where d.dname!='计算机' and d.dno=w.dno and w.tno=t.tno;
  3. 系主任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;
  4. 假设对关系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;

六、关系代数表示

  1. πage(σsalary>'5000'(Work)⨝Teacher)
  2. πtno(σdname<>'计算机'(Department)⨝Work)
  3. πtname(σtno='T1'(Department)⨝Work⨝Teacher)
  4. πtno(Work)-(πWork.tno(Work⨝Work.salary<=Work2.salary⋀Work.Dno='D1'ρWorkers(Work)))
  1. πTname,Dname(Teacher ⋊(Work⨝Department))
    TnameDname
    张丽计算机系
    李波数学系
    王艳计算机系
    赵明Null
  2. πTname,Dname((Teacher⨝ Work)⋉Department))

    TnameDname
    张丽计算机系
    李波数学系
    王艳计算机系
    Null电子系
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值