Mysql练习

练习1:

代码演示:

sql 复制代码
mysql> create database zye1;
Query OK, 1 row affected (0.00 sec)

mysql> use zye1
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.08 sec)

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.01 sec)

mysql> create table invoices(
    -> number int primary key auto_increment,
    -> order_id int,
    -> in_date date,
    -> total_amount float check (total_amount > 0),
    -> foreign key (orser_id)
    -> references orders(id)
    -> );

题目:

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

sql 复制代码
mysql> select * from t_worker;

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

sql 复制代码
mysql> select distinct department_id  from t_worker;

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

sql 复制代码
mysql> select count(worker_id)
    -> from t_worker;

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

sql 复制代码
mysql> select max(wages)as max,min(wages) as min
    -> from t_worker;

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

sql 复制代码
mysql> select avg(wages)as avg,sum(wages)as sum
    -> from t_worker;

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

sql 复制代码
mysql> create table work_date_table
    -> select worker_id,name,worker_date
    -> from t_worker;

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

sql 复制代码
mysql> select name,timestampdiff(year,birth_date,curdate()) as age
    -> from t_worker
    -> where politics = '党员';

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

sql 复制代码
mysql> select name from t_worker where wages between 4000 and 8000;

11、列出所有陈孙和李姓的职工姓名。

sql 复制代码
mysql> select name
    -> from t_worker
    -> where name like '孙%' or name like '李%';

12、列出所有部门号为102和103的职工号、姓名、党员否。

sql 复制代码
mysql> select worker_id,name
    -> from t_worker
    -> where (department_id = 102 or department_id = 103) and politics != '党员';

13、将职工表worker中的职工按出生的先后顺序排序。

sql 复制代码
mysql> select * from t_worker order by birth_date;

14、显示工资最高的前3名职工的职工号和姓名。

sql 复制代码
mysql> select worker_id,name
    -> from t_worker
    -> order by wages desc
    -> limit 3;

15、求出各部门党员的人数。

sql 复制代码
mysql> select department_id,count(*) as count from t_worker where politics = '党员'
    -> group by department_id;

16、统计各部门的工资和平均工资并保留2位小数

sql 复制代码
mysql> select department_id, sum(wages) as sum,round(avg(wages),2)as avg from t_worker group by department_id;

17、列出总人数大于3的部门号和总人数。

sql 复制代码
mysql> select department_id,count(*) as count
    -> from t_worker
    -> group by department_id
    -> having count >=3;
相关推荐
IT毕设实战小研1 天前
基于大数据的国内主要农作物产量趋势分析与可视化
android·java·大数据·django·课程设计
2302_1111 天前
java依赖小结
java·运维·数据库
听到微笑1 天前
Elasticsearch 如何存储与检索海量向量
数据库·elasticsearch
海浪仙人掌1 天前
速动比率怎么分析?速动比率分析有哪些注意事项?
大数据·数据库·人工智能
企业数字化笔记1 天前
固定资产历史数据怎么导入系统?Excel模板、字段映射和数据校验
android·java·数据库·后端
龙之叶1 天前
Android出海系列-GMS认证介绍
android
潮族大Z1 天前
Android性能优化:启动、内存、卡顿的一站式排查手册
android
还是奇怪1 天前
OpenAI GPT-5.6 构建指南拆解:创业公司如何用模型选择与 Responses API 降低 Agent 成本
java·数据库·人工智能·gpt
可涵不会debug1 天前
LangChain 文本分割器详解:字符分割、Token 分割、硬约束递归分割实战
java·前端·数据库
风哥2号1 天前
数据库教程FGMT21‑Oracle RAC+DG生产实战(1):Oracle19c/26ai for RHEL8/9安装配置+补丁
数据库·oracle