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;
相关推荐
是梦终空3 分钟前
计算机毕业设计279—基于SpringBoot+Vue3校园商户意见反馈系统(源代码+数据库+17000字论文+ppt)
数据库·spring boot·vue·毕业设计·课程设计·毕业论文·源代码
非典型Android程序员24 分钟前
Launcher学习总结
android
TDengine (老段)27 分钟前
TDengine 索引使用指南 — 何时建、怎么建、怎么用
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
ATA888836 分钟前
企业数据库账号安全的技术解决方案
数据库·安全
DB哥讲数据库37 分钟前
MySQL 8.4 安装教程:超详细图文讲解(附mysql安装包)
linux·数据库·mysql·centos
Databend40 分钟前
AST Visitor API 迁移,怎么证明 AI 没改坏 SQL 语义?
数据库·ai编程
TDengine (老段)43 分钟前
TDengine DDL 完整参考 — Database/STable/Table/Column/Tag
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
xlxxy_44 分钟前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
神秘的MT1 小时前
SQL Server 分页查询 ROW_NUMBER () OFFSET...FETCH游标(Cursor) 数据插入
数据库·sql·学习·c#·winform
栋***t1 小时前
从“工具”到“基建”,麦塔在线考试系统经历的时代变局与定位逻辑
java·大数据·数据库·开源软件·无纸化