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;
相关推荐
辞旧 lekkk17 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
2301_8092047018 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
阿巴斯甜18 小时前
ARouter
android
zjy2777718 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
笨蛋不要掉眼泪18 小时前
Mysql架构揭秘:update语句的执行流程
数据库·mysql·架构
万邦科技Lafite18 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
秋919 小时前
ruoyi项目更换为mysql9.7.0数据库
数据库
Andya_net19 小时前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
阿巴斯甜20 小时前
Map
android
巫山老妖20 小时前
鹅厂十年:三段式技术成长复盘
android·人工智能·程序员