Myqsl建立库表练习

发布于:2025-08-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一、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;


网站公告

今日签到

点亮在社区的每一天
去签到