当前位置: 首页 > news >正文

Myqsl建立库表练习

目录

一、windows中选择一种方式安装Mysql8.0

二、新建产品库mydb6_product

 1. 新建3张表如下:

  1)employees表

  2)orders表

  3)invoices表

三、新建员工库mydb8_worker,添加自定义表内容并插入数据

 1. 新建库表

 2. 插入数据

 3. 完成以下查询

  1)显示所有职工的基本信息。

  2)查询所有职工所属部门的部门号,不显示重复的部门号。

  3)求出所有职工的人数。

  4)列出最高工和最低工资。

  5)列出职工的平均工资和总工资。

  6)创建一个只有职工号、姓名和参加工作时间的新表,名为工作日期表。

  7)显示所有党员的年龄。

  8)列出工资在4000-8000之间的所有职工姓名。

  9)列出所有孙姓和李姓的职工姓名。

  10)列出所有部门号为102和103且不是党员的职工号、姓名。

  11)将职工表t_worker中的职工按出生的先后顺序排序。

  12)显示工资最高的前3名职工的职工号和姓名。

  13)求出各部门党员的人数。

  14)统计各部门的工资和平均工资并保留2位小数。

  15)列出总人数大于等于3的部门号和总人数。


一、windows中选择一种方式安装Mysql8.0

  • 具体步骤见Mysql栏上文

二、新建产品库mydb6_product

mysql> create database mydb6_product;
Query OK, 1 row affected (0.04 sec)mysql> show databases;

 1. 新建3张表如下:

  1)employees表

  • 列1:id,整型,主键

  • 列2:name,字符串,最大长度50,不能为空

  • 列3: age,整型

  • 列4:gender,字符串,最大长度10,不能为空,默认值“unknown”

  • 列5: salary,浮点型

mysql> use mydb6_product;   # 使用库
Database changed# 建表
mysql> create table employees(-> id int primary key,-> name varchar(50) not null,-> age int,-> gender varchar(10) not null default 'unknown',-> salary float-> );
Query OK, 0 rows affected (0.03 sec)mysql> desc employees;   # 查看

  2)orders表

  • 列1:id,整型,主键

  • 列2:name,字符串,最大长度100,不能为空

  • 列3: price,浮点型

  • 列4: quantity,整型

  • 列S:category,字符串,最大长度50

mysql> create table orders(-> id int primary key,-> name varchar(100) not null,-> price float,-> quantity int,-> category varchar(50)-> );
Query OK, 0 rows affected (0.03 sec)mysql> desc orders;   # 查看

  3)invoices表

  • 列1:number,整型,主键自增长

  • 列2:order_id,整型,外键关联到orders表的id列

  • 列3:in_date:日期型

  • 列4:total_amount:浮点型,要求数据大于0

mysql> create table invoices( -> number int auto_increment primary key, -> order_id int,-> in_date date, -> total_amount float check(total_amount>0), -> foreign key(order_id) refereences orders(id) on delete restrict on update cascade -> );
Query OK, 0 rows affected (0.03 sec)mysql> desc invoices;   # 查看

三、新建员工库mydb8_worker,添加自定义表内容并插入数据

 1. 新建库表

# 创建数据库
mysql> create database mydb8_worker;
Query OK, 1 row affected (0.01 sec)
# 使用库
mysql> use mydb8_worker;
Database changed
# 创建数据表
mysql> create table t_worker(-> department_id int(11) not null comment '部门号',-> worker_id int(11) primary key not null comment '职工号',-> worker_date date not null comment '工作时间',-> wages float(8,2) not null comment '工资',-> politics varchar(10) not null default '群众' comment '政治面貌',-> name varchar(20) not null comment '姓名',-> borth_date date not null comment '出生日期'-> );
Query OK, 0 rows affected, 3 warnings (0.02 sec)# 查看表结构
mysql> desc t_worker;

 2. 插入数据

mysql> insert into t_worker values(101,1001,'2015-5-4',7500.00,'群众','张三','1990-7-1');
mysql> insert into t_worker values(101,1002,'2019-3-5',5200.00,'团员','李四','1995-3-7');
mysql> insert into t_worker values(102,1003,'2008-1-4',10500.00,'党员','王五','1983--5-8');
mysql> insert into t_worker values(102,1004,'2016-10-10',5500.00,'群众','赵六','1994-9-5');
mysql> insert into t_worker values(102,1005,'2014-4-1',8800.00,'党员','钱七','1992-12-30');
mysql> insert into t_worker values(103,1006,'2019-5-5',5500.00,'党员','孙八','1996-9-2');# 查看
mysql> select * from t_worker;

 3. 完成以下查询

  1)显示所有职工的基本信息。

mysql> select * from t_worker;

  2)查询所有职工所属部门的部门号,不显示重复的部门号。

mysql> select distinct department_id from t_worker;

  3)求出所有职工的人数。

mysql> select count(*) as '职工总人数' from t_worker;

  4)列出最高工和最低工资。

mysql> select -> max(wages) as '最高工资',-> min(wages) as '最低工资'-> from t_worker;

  5)列出职工的平均工资和总工资。

mysql> select-> avg(wages) as '平均工资',-> sum(wages) as '总工资'-> from t_worker;

  6)创建一个只有职工号、姓名和参加工作时间的新表,名为工作日期表。

mysql> create table work_date_table as  -> select worker_id, name,worker_date -> from t_worker;
Query OK, 6 rows affected (0.01 sec)
Records: 6  Duplicates: 0  Warnings: 0

  7)显示所有党员的年龄。

mysql> select name,timestampdiff(year,borth_date,curdate()) as '年龄' from t_worker where politics='党员';

  8)列出工资在4000-8000之间的所有职工姓名。

mysql> select name from t_worker where wages between 4000 and 8000;

  9)列出所有孙姓和李姓的职工姓名。

mysql> select name from t_worker where name like '孙%' or name like '李%';

  10)列出所有部门号为102和103且不是党员的职工号、姓名。

mysql> select worker_id,name from t_worker where department_id in(102,103) and polittics!='党员';

  11)将职工表t_worker中的职工按出生的先后顺序排序。

mysql> select * from t_worker order by borth_date;

  12)显示工资最高的前3名职工的职工号和姓名。

mysql> select worker_id,name from t_worker order by wages desc limit 3;

  13)求出各部门党员的人数。

mysql> select department_id,count(*) as '部门人数' from t_worker where politics='.' group by department_id;

  14)统计各部门的工资和平均工资并保留2位小数。

mysql> select department_id,sum(wages) as '各部门总资',round(avg(wages),2) as '各部门平均工资' from t_worker group by department_id;

  15)列出总人数大于等于3的部门号和总人数。

mysql> select department_id,count(*) as '总人数' from t_worker group by department_iid having count(*) >=3;

http://www.xdnf.cn/news/1286191.html

相关文章:

  • Spark on K8s 在vivo大数据平台的混部实战
  • Go 语言 里 `var`、`make`、`new`、`:=` 的区别
  • 深入解析ArrayList与LinkedList的区别:如何正确选择?
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • Java集合学习之forEach()遍历方法的底层原理
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • 人工智能+虚拟仿真,助推医学检查技术理论与实践结合
  • Linux环境gitlab多种部署方式及具体使用
  • [论文阅读] (41)JISA24 物联网环境下基于少样本学习的攻击流量分类
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • 使用 NetBird 创建安全的私有网络,简化远程连接!
  • 【论文阅读】从表面肌电信号中提取神经信息用于上肢假肢控制:新兴途径与挑战
  • 终端安全检测和防御技术总结
  • Java数据结构之ArrayList
  • [激光原理与应用-256]:理论 - 几何光学 - CMOS与CCD传感器成像原理比较
  • 卫生间装修防水怎么做合适?
  • 激光干涉法在碳化硅衬底 TTV 厚度测量中的精度提升策略
  • 高性能web服务器Tomcat
  • Vue 3 + Elementui + TypeScript 实现左侧菜单定位右侧内容
  • 石英加速度计如何实现高精度测量?
  • 深度贴:前端网络基础及进阶(3)
  • 鲲鹏arm服务器安装neo4j社区版,实现图书库自然语言检索基础
  • 地图可视化实践录:显示地理区域图
  • 自然语言处理关键库解析和使用方法- FuzzyWuzzy
  • 虚拟机一站式部署Claude Code 可视化UI界面
  • 豆包 + 蘑兔 AI:你的创作搭子
  • 运维学习Day22——Anisible自动化与基本使用
  • Kafka的一条消息的写入和读取过程原理介绍
  • kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?
  • PO、BO、VO、DTO、POJO、DAO、DO基本概念