练习:MySQL单表查询与多表查询

news2025/1/16 19:48:29

一.单表查询

创建worke数据库,在数据库底下创建worker表

mysql> create database worke;
Query OK, 1 row affected (0.00 sec)
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test               |
| worke              |
| world              |
+--------------------+
8 rows in set (0.00 sec)
 
mysql> use worke;
Database changed
mysql> show tables;
Empty set (0.00 sec)
 
mysql> CREATE TABLE `worker` (`部门号` int(11) NOT NULL,`职工号` int(11) NOT NULL,`工作时间` date NOT NULL,`工资` float(8,2) NOT NULL,`政治面貌` varchar(10) NOT NULL DEFAULT '群众',`姓名` varchar(20) NOT NULL,`出生日期` date NOT NULL,
    -> PRIMARY KEY (`职工号`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected, 4 warnings (0.02 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');
Query OK, 1 row affected (0.00 sec)
 
 
mysql> desc table worker;
+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table  | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | worker | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    6 |   100.00 | NULL  |
+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
 
mysql> select * from worker;
+--------+--------+------------+---------+----------+------+------------+
| 部门号 | 职工号 | 工作时间   | 工资    | 政治面貌 | 姓名 | 出生日期   |
+--------+--------+------------+---------+----------+------+------------+
|    101 |   1001 | 2015-05-04 | 3500.00 | 群众     | 张三 | 1990-07-01 |
|    101 |   1002 | 2017-02-06 | 3200.00 | 团员     | 李四 | 1997-02-08 |
|    102 |   1003 | 2011-01-04 | 8500.00 | 党员     | 王亮 | 1983-06-08 |
|    102 |   1004 | 2016-10-10 | 5500.00 | 群众     | 赵六 | 1994-09-05 |
|    102 |   1005 | 2014-04-01 | 4800.00 | 党员     | 钱七 | 1992-12-30 |
|    102 |   1006 | 2017-05-05 | 4500.00 | 党员     | 孙八 | 1996-09-02 |
+--------+--------+------------+---------+----------+------+------------+
6 rows in set (0.00 sec)

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

mysql> select * from worker;

 2、查询所有职工所属部门的部门号,不显示重复的部门号。(distinct关键字)

mysql> select distinct 部门号 from worker;

3、求出所有职工的人数。(count()关键字) 

mysql> select count(职工号) from worker;

4、列出最高工和最低工资。(max()和 min()关键字) 

mysql> select max(工资),min(工资) from worker;

 

 5、列出职工的平均工资和总工资。(avg()和 sum()关键字)

mysql> select avg(工资),sum(工资) from worker;

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

mysql> create table 工作日期表 select 职工号,姓名,工作时间 from worker;
Query OK, 6 rows affected (0.02 sec)

 8、列出所有姓刘的职工的职工号、姓名和出生日期(like 通配符的使用_%)

mysql> select 职工号,姓名,出生日期 from worker where 姓名 like '刘%';

9、列出1960年以前出生的职工的姓名、参加工作日期。

mysql> select 姓名,工作时间 from worker where 出生日期 < '1960-01-01';

​10、列出工资在1000-2000之间的所有职工姓名。(between  and 的用法)

mysql> select 姓名 from worker where 工资 between 1000 and 2000;

11、列出所有陈姓和李姓的职工姓名。(or的使用) 

mysql> select 姓名 from worker where 姓名 like '陈%' or 姓名 like '李%';

12、列出所有部门号为2和3的职工号、姓名、党员否。(in的使用)

mysql> select 职工号,姓名,if(政治面貌 = '党员','是','否') as 党员否 from worker where 部门号 in (102,103);

 13、将职工表worker中的职工按出生的先后顺序排序。(ordre by 的使用 默认升序排列  desc是降序排列)

mysql> select * from worker order by 出生日期;

 14、显示工资最高的前3名职工的职工号和姓名。(limit 关键字的使用)

mysql> select 职工号,姓名 from worker order by 工资 desc limit 3;

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

mysql> select 部门号,count(政治面貌) 党员人数 from worker where 政治面貌='党员' group by 部门号;

 16、统计各部门的工资和平均工资

mysql> select 部门号,sum(工资) 总工资,avg(工资) 平均工资 from worker group by 部门号;

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

mysql> select 临时表.部门号,临时表.总人数 from (select 部门号,count(职工号) 总人数 from worker group by 部门号) as 临时表 where 临时表.总人数 >=4;

二、多表查询

1.创建student和score表

mysql> create database students;
Query OK, 1 row affected (0.00 sec)
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| students           |
| sys                |
| test               |
| worke              |
| world              |
+--------------------+
9 rows in set (0.00 sec)
 
mysql> use students;
Database changed
mysql> CREATE TABLE student (id INT(10) NOT NULL UNIQUE PRIMARY KEY ,name VARCHAR(20) NOT NULL ,sex VARCHAR(4) ,birth YEAR,department VARCHAR(20) ,address VARCHAR(50));
Query OK, 0 rows affected, 1 warning (0.03 sec)
 
mysql> CREATE TABLE score (id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,stu_id INT(10) NOT NULL ,c_name VARCHAR(20) ,grade INT(10));
Query OK, 0 rows affected, 3 warnings (0.02 sec)
 
mysql> INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
Query OK, 1 row affected (0.01 sec)
 
mysql> INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,901, '计算机',98);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,901, '英语', 80);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,902, '计算机',65);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,902, '中文',88);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,903, '中文',95);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,904, '计算机',70);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,904, '英语',92);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,905, '英语',94);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,906, '计算机',90);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO score VALUES(NULL,906, '英语',85);
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from student;
+-----+--------+------+-------+------------+--------------+
| id  | name   | sex  | birth | department | address      |
+-----+--------+------+-------+------------+--------------+
| 901 | 张老大 | 男   |  1985 | 计算机系   | 北京市海淀区 |
| 902 | 张老二 | 男   |  1986 | 中文系     | 北京市昌平区 |
| 903 | 张三   | 女   |  1990 | 中文系     | 湖南省永州市 |
| 904 | 李四   | 男   |  1990 | 英语系     | 辽宁省阜新市 |
| 905 | 王五   | 女   |  1991 | 英语系     | 福建省厦门市 |
| 906 | 王六   | 男   |  1988 | 计算机系   | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
6 rows in set (0.00 sec)
 
mysql> select * from score;
+----+--------+--------+-------+
| id | stu_id | c_name | grade |
+----+--------+--------+-------+
|  1 |    901 | 计算机 |    98 |
|  2 |    901 | 英语   |    80 |
|  3 |    902 | 计算机 |    65 |
|  4 |    902 | 中文   |    88 |
|  5 |    903 | 中文   |    95 |
|  6 |    904 | 计算机 |    70 |
|  7 |    904 | 英语   |    92 |
|  8 |    905 | 英语   |    94 |
|  9 |    906 | 计算机 |    90 |
| 10 |    906 | 英语   |    85 |
+----+--------+--------+-------+
10 rows in set (0.00 sec)

 3.查询student表的所有记录

mysql> select * from student;

 4.查询student表的第2条到4条记录(索引从0开始 因此是limit 1,3)

mysql> select * from student limit 1,3;

5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 

mysql> select id,name,department from student;

6.从student表中查询计算机系和英语系的学生的信息

mysql> select * from student where department='计算机系' or department='英语系';

 7.从student表中查询年龄18~22岁的学生信息

mysql> select * from student where birth between 2003 and 2007;

 8.从student表中查询每个院系有多少人

mysql> select department,count(id) from student group by department;

 9.从score表中查询每个科目的最高分

mysql> select c_name,max(grade) from score group by c_name;

10.查询李四的考试科目(c_name)和考试成绩(grade) 

mysql> select c_name 考试科目,grade 考试成绩 from score where stu_id=(select id from student where name='李四');

 11.用连接的方式查询所有学生的信息和考试信息

mysql> select * from student st join score sc on st.id=sc.stu_id;

 12.计算每个学生的总成绩

mysql> select st.name,sum(sc.grade) 总成绩 from score sc,student st group by st.name;

 13.计算每个考试科目的平均成绩

mysql> select sc.c_name 学科,avg(sc.grade) 平均成绩 from score sc group by sc.c_name;

 14.查询计算机成绩低于95的学生信息

mysql> select st.* from student st join score sc on st.id=sc.stu_id where sc.c_name='计算机' and sc.grade<95;

 15.查询同时参加计算机和英语考试的学生的信息

mysql> SELECT DISTINCT s.* FROM `student` s
    -> JOIN `score` sc1 ON s.id = sc1.stu_id AND sc1.`c_name` = '计算机'
    -> JOIN `score` sc2 ON s.id = sc2.stu_id AND sc2.`c_name` = '英语';

 16.将计算机考试成绩按从高到低进行排序

mysql> select sc.grade 计算机成绩排序 from score sc where sc.c_name='计算机' order by sc.grade desc;

 17.从student表和score表中查询出学生的学号,然后合并查询结果

mysql> SELECT `id` FROM `student`
    -> UNION
    -> SELECT `stu_id` FROM `score`;

18.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

SELECT s.`name`, s.`department`, sc.`c_name`, sc.`grade` FROM `student` s 
JOIN `score` sc ON s.id = sc.stu_id 
WHERE s.`name` LIKE '张%' OR s.`name` LIKE '王%';

 19.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

SELECT s.`name`, YEAR(CURDATE()) - s.`birth` AS `年龄`, s.`department`, sc.`c_name`, sc.`grade` FROM `student` s 
JOIN `score` sc ON s.id = sc.stu_id 
WHERE s.`address` LIKE '%湖南%';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2277679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (四、最近上映电影滚动展示及加载更多的实现)

在HarmonyOS NEXT开发环境中&#xff0c;可以使用多种组件和库来构建丰富且交互友好的应用。本文将展示如何使用HarmonyOS NEXT框架和nutpi/axios库&#xff0c;从零开始实现一个简单的影视APP的首页&#xff0c;主要关注最近上映电影的滚动展示及加载更多功能的实现。 开源项目…

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1&#xff09;Anacanda使用CUDAPytorch2&#xff09;使用本地MNIST进行手写图片训练3&#xff09;…

客户案例:某家居制造企业跨境电商,解决业务端(亚马逊平台)、易仓ERP与财务端(金蝶ERP)系统间的业务财务数据对账互通

一、系统定义 1、系统定位&#xff1a; 数据中台系统是一种战略选择和组织形式&#xff0c;通过有型的产品支撑和实施方法论&#xff0c;解决企业面临的数据孤岛、数据维护混乱、数据价值利用低的问题&#xff0c;依据企业特有的业务和架构&#xff0c;构建一套从数据汇聚、开…

服务器一次性部署One API + ChatGPT-Next-Web

服务器一次性部署One API ChatGPT-Next-Web One API ChatGPT-Next-Web 介绍One APIChatGPT-Next-Web docker-compose 部署One API ChatGPT-Next-WebOpen API docker-compose 配置ChatGPT-Next-Web docker-compose 配置docker-compose 启动容器 后续配置 同步发布在个人笔记服…

辅助云运维

为客户提供运维支持&#xff0c;保障业务连续性。 文章目录 一、服务范围二、服务内容三、服务流程四、 服务交付件五、责任分工六、 完成标志 一、服务范围 覆盖范围 云产品使用咨询、问题处理、配置指导等&#xff1b; 云产品相关操作的技术指导&#xff1b; 云相关资源日常…

[Qt]常用控件介绍-多元素控件-QListWidget、QTableWidget、QQTreeWidget

目录 1.多元素控件介绍 2.ListWidget控件 属性 核心方法 核心信号 细节 Demo&#xff1a;编辑日程 3.TableWidget控件 核心方法 QTableWidgetItem核心信号 QTableWidgetItem核心方法 细节 Demo&#xff1a;编辑学生信息 4.TreeWidget控件 核心方法 核心信号…

Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)

本文介绍在Windows电脑中&#xff0c;下载、部署NVM&#xff08;node.js version management&#xff09;环境&#xff0c;并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法&#xff08;https://blog.csdn.net/zhebushibiaoshi…

基于STM32设计的粮食仓库(粮仓)环境监测系统

一、前言 1.1 项目开发背景 随着现代农业的发展和粮食储存规模的扩大&#xff0c;粮仓环境的智能化监控需求日益增长。传统的粮仓管理方式通常依赖人工检测和定期巡查&#xff0c;效率低下且容易出现疏漏&#xff0c;无法及时发现潜在问题&#xff0c;可能导致粮食受潮、霉变…

【Linux】--- 进程的等待与替换

进程的等待与替换 一、进程等待1、进程等待的必要性2、获取子进程status3、进程等待的方法&#xff08;1&#xff09;wait&#xff08;&#xff09;函数&#xff08;2&#xff09;waitpid函数 4、多进程创建以及等待的代码模型5、非阻塞接口 轮询 二、进程替换1、替换原理2、替…

Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、安装Element-UI 四、代码实现 4.1、添加一个点 4.2、删除所有点 4.3、根据经纬度删除点 4.4、给点添加点击事件 4.5、完整代码 五、Gitee源码 一、案例截图 可以新增/删除标记点&#xff0c;点击标记点可以获取到当前标…

HTML中如何保留字符串的空白符和换行符号的效果

有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} &#xff0c; HTML中想要保留 \n的换行效果的有下面3种方法&#xff1a; 1、style 中 设置 white-space: pre-lin…

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…

[PAT 甲级] 1179 Chemical Equation (DFS)

​ 题目翻译&#xff08;GPT&#xff09;&#xff1a; 1179 化学方程式 化学方程式是一种用符号和公式表示化学反应的方法&#xff0c;其中反应物在方程式的左侧&#xff0c;生成物在右侧。例如&#xff1a; CH₄ 2O₂ -> CO₂ 2H₂O 表示反应物为甲烷和氧气&#xff…

android分区和root

线刷包内容&#xff1a; 线刷包是一个完整的android镜像&#xff0c;不但包括android、linux和用户数据&#xff0c;还包括recovery等。当然此图中没有recovery,但是我们可以自己刷入一个。 主要分区 system.img 系统分区&#xff0c;包括linux下主要的二进制程序。 boot.img…

每日一题(五):n个正整数排列,求组合后最大数

目录 一、题目 二、题目分析 &#xff08;一&#xff09;明确需求 背景知识&#xff1a;字符串的比较与连接 1.字符串的比较 2.字符串的连接 (二)分析思路 三、将思路转换为程序 四、总结 一、题目 给定n个正整数a1,a2,……,an对这n个数进行排列&#xff0c;求组合后可以得到…

【STM32-学习笔记-3-】TIM定时器

文章目录 TIM定时器Ⅰ、TIM定时器函数Ⅱ、TIM_TimeBaseInitTypeDef结构体参数①、TIM_ClockDivision②、TIM_CounterMode③、TIM_Period④、TIM_Prescaler⑤、TIM_RepetitionCounter Ⅱ、定时器配置Ⅲ、定时器外部中断NVIC配置 TIM定时器 Ⅰ、TIM定时器函数 // 将定时器寄存器…

【Rust自学】12.2. 读取文件

12.2.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数读…

新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索

摘要&#xff1a;随着互联网技术的不断进步和电商行业的快速发展&#xff0c;传统电商模式已难以满足消费者日益增长的个性化和多元化需求。新垂直电商在此背景下应运而生&#xff0c;通过精准定位、用户细分以及深度社交传播策略&#xff0c;实现了用户群体的快速裂变与高效营…

【ORACLE战报】2025.1月OCP | MySQL考试

2025.1月【最新考试成绩出炉】 OCP战报 MySQL 战报 部分学员成绩及证书

九 RK3568 android11 MPU6500

一 MPU6500 内核驱动 1.1 查询设备连接地址 查看原理图, MPU6500 I2C 连接在 I2C4 上, 且中断没有使用 i2c 探测设备地址为 0x68 1.2 驱动源码 drivers/input/sensors/gyro/mpu6500_gyro.c drivers/input/sensors/accel/mpu6500_acc.c 默认 .config 配置编译了 mpu6550 …