【数据库】MySQL 单表查询,多表查询

news2024/11/15 15:14:34

目录

单表查询

一,创建表worker

 1,创建表worker的sql代码如下:

 2,向worker表中插入信息

二, 按要求进行单表查询

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

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

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

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

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

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

 8、列出所有姓刘的职工的职工号、姓名和出生日期。

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

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

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

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

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

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

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

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

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

多表查询

一,创建student和score表

1,创建student表。SQL代码如下:

2,创建score表。SQL代码如下:

二,为student表和score表增加记录

1,向student表插入记录的INSERT语句如下:

2,向score表插入记录的INSERT语句如下:

三, 按要求进行多表查询 

1.查询student表的所有记录

2.查询student表的第2条到4条记录

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

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

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

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

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

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

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

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

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

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

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

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

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

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


单表查询


素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等

一,创建表worker

1,创建表worker的sql代码如下:

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;

2,向worker表中插入信息

INSERT INTO worker  VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
INSERT INTO worker VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
INSERT INTO worker VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
INSERT INTO worker  VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
INSERT INTO worker  VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
INSERT INTO worker  VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');

 

二, 按要求进行单表查询

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

select * from worker;

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

select distinct 部门号 from worker;

 



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

select count(*) 员工号 from worker;

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

select max(工资) 最高工资,min(工资) 最低工资 from worker;

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

  select avg(工资) 平均工资,sum(工资) 总工资 from worker;


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

CREATE TABLE `工作日期` (
 `职工号` INT(11)     NOT NULL,
 `姓名` VARCHAR(20)     NOT NULL,
`工作时间` DATE     NOT NULL,
PRIMARY KEY (`职工号`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

查看创建的工作日期表的表结构:

desc 工作日期;


 

 
8、列出所有姓刘的职工的职工号、姓名和出生日期。

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


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

select 姓名,工作时间 参加工作日期 from worker where 出生日期 like 出生日期>'1960%';


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

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


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

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

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

select 职工号,姓名,政治面貌 from worker where 部门号=102 or 部门号=103;

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

升序排序:

select * from worker order by 出生日期;

 
降序排序:

select * from worker order by 出生日期 desc;


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

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


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

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


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

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

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

 select 部门号,count(部门号) 总人数 from worker  group by 部门号 having count(部门号)>=4;

 

 


多表查询


一,创建student和score表

1,创建student表。SQL代码如下:

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) 
    );


 

2,创建score表。SQL代码如下:

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)
     );


 

二,为student表和score表增加记录


1,向student表插入记录的INSERT语句如下:

INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');


 

2,向score表插入记录的INSERT语句如下:

INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,901, '英语', 80);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,902, '中文',88);
INSERT INTO score VALUES(NULL,903, '中文',95);
INSERT INTO score VALUES(NULL,904, '计算机',70);
INSERT INTO score VALUES(NULL,904, '英语',92);
INSERT INTO score VALUES(NULL,905, '英语',94);
INSERT INTO score VALUES(NULL,906, '计算机',90);
INSERT INTO score VALUES(NULL,906, '英语',85);

 

三, 按要求进行多表查询 

1.查询student表的所有记录

select * from student;

2.查询student表的第2条到4条记录

select * from student limit 3,3;

 



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

select id,name,department from student;

 


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

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

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

SELECT  * FROM student where birth>2001 and  birth<2005;

 



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

select department,count(department) 总人数 from student group by department;

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

select c_name,max(grade) 最高分 from score group by c_name;

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

select score.c_name,score.grade from score inner join student s on score.stu_id=s.id where s.name='李四';

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

select * from score c inner join student s on s.id=c.stu_id;

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

select name,sum(grade) 总成绩 from student s inner join score c on s.id=c.stu_id group by c.stu_id;

 



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

select c_name,avg(grade) 平均成绩 from score group by c_name;

 



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

select * from student s inner join score c on c.stu_id=s.id where c_name='计算机' and grade<95;

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

select * from student s inner join score c on c.stu_id=s.id where c_name='计算机' and c_name='计算机';


 

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

select name,grade from score c inner join student s on s.id=c.stu_id where c_name='计算机' order by grade
e desc;

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

select name,stu_id from student s inner join score c on s.id=c.stu_id;

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

select name,department,c_name,grade from student s inner join score c on s.id=c.stu_id where name like' 张%' or name like '王%';

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

 select name,department,c_name,grade from student s inner join score c on s.id=c.stu_id where address like '湖南%';

 

 

 

 

 

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

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

相关文章

【自学Python】Python字符大小写判断

大纲 Python字符串是否是小写 Python字符串是否是小写教程 在开发过程中&#xff0c;有时候我们需要判断一个 字符串 是否是小写形式&#xff08;即&#xff0c;所有的字符都是小写字母&#xff0c;不是英文字符的忽略不做判断&#xff09;&#xff0c;在 Python 中&#xff…

SAP ERP系统SD模块常用增强之一:VA01/VA02创建或修改SO的输入检查

在SAP/ERP项目的实施中销售管理模块&#xff08;SD&#xff09;的创建和修改销售订单必定会有输入字段校验检查的需求&#xff0c;来防止业务人员录入错误或少录入数据&#xff0c;SAP公司也考虑到这一点&#xff0c;所以这方面的配置功能也非常强大&#xff0c;通常情况下不需…

GraphQL vs REST API 架构,谁更胜一筹?

GraphQL vs REST API 架构&#xff0c;谁更胜一筹&#xff1f; Michele Moody 平川 万佳 2020 年 1 月 18 日 本文字数&#xff1a;2890 字 阅读完需&#xff1a;约 9 分钟 2015 年&#xff0c;Facebook 开源 GraphQL。此后&#xff0c;它在前端 Web 中大受欢迎。传统的 R…

一篇文章带你学会Ansible的安装及部署

目录 前言 一、什么是Ansible 二、Ansible的工作方式 三、Ansible的安装 四、构建Anisble清单 1、清单书写方式 2、清单查看 3、清单书写规则 4、主机规格的范围化操作 五、ansible命令指定清单的正则表达式 六、 Ansible配置文件参数详解 1、配置文件的分类与优先…

【C++】C/C++内存管理模板初阶

文章目录一、 C/C内存管理1. C/C内存分布2. C内存管理方式3. operator new与operator delete函数4. new和delete的实现原理5. 定位new表达式6. 常见面试题malloc/free和new/delete的区别内存泄漏二、模板初阶1. 泛型编程2. 函数模板3. 类模板一、 C/C内存管理 1. C/C内存分布 …

每天10个前端小知识 【Day 13】

前端面试基础知识题 1. Position&#xff1a;absolute绝对定位&#xff0c;是相对于谁的定位&#xff1f; CSS position属性用于指定一个元素在文档中的定位方式。top&#xff0c;right&#xff0c;bottom 和 left 属性则决定了该元素的最终位置。 absolute的元素会被移出正…

牛客网 NC107 寻找峰值

前言&#xff1a;内容包括四大模块&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 描述 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回…

vue-router路由配置

介绍&#xff1a;路由配置主要是用来确定网站访问路径对应哪个文件代码显示的&#xff0c;这里主要描述路由的配置、子路由、动态路由&#xff08;运行中添加删除路由&#xff09; 1、npm添加 npm install vue-router // 执行完后会自动在package.json中添加 "vue-router…

某游戏辅助功能分析

FPS游戏发展至今&#xff0c;阻挡外挂开发者脚步的往往不是数据和功能开发&#xff0c;而是高难度的检测。 现如今&#xff0c;检测的手段越来越多&#xff0c;也越来越五花八门。列如&#xff1a; 检测参数&#xff0c;检测堆栈&#xff0c;检测注入等等。 CRC是众多检测手段中…

Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机 一、场景 在之前绘制完毕雷达显示图之后,这时候,我们能匹配的场景就更广泛了,比如说…

string类模拟实现

了解过string常用接口后&#xff0c;接下来的任务就是模拟实现string类。 目录 VS下的string结构 默认成员函数和简单接口 string结构 c_str()、size()、capacity()、clear()、swap() 构造函数 拷贝构造函数 赋值重载 析构函数 访问及遍历 容量操作 reserve resize …

C语言(typedef,函数和指针)

目录 一.typedef 二.函数和指针 一.typedef typedef是一种高级数据特性&#xff0c;利用typedef可以为某一类型自定义名称。typedef创建的符号名只受限于类型 typedef unsigned char BYTE; BYTE x 这里的BYTE就相当于unsigned char x typedef unsigned char *BYTE; BYTE x,…

[oeasy]python0082_VT100_演化_颜色设置_VT选项_基础色_高亮色_索引色_RGB总结

更多颜色 回忆上次内容 上次 了解了控制序列 背后的故事 一切标准 都是 从无到有 的就连 负责标准的组织 也是 从无到有 的 VT-05 奠定了 基础颜色 黑底 绿字隔行 扫描 但 多颜色设置 是如何出现 的呢&#xff1f;&#xff1f;&#x1f914; 控制字符 1974年 产品 从VT05…

语音识别系列之脉冲神经网络特征工程

人工神经网络&#xff08;Artificial Neural Network, ANN&#xff09;中的单个人工神经元是对生物神经元的高度抽象、提炼和简化&#xff0c;模拟了后者的若干基本性质。得益于误差反向传播算法&#xff0c;网络权重可根据设定的目标函数得到有效地调整&#xff0c;ANN在视觉、…

LeetCode初级算法题(Java):反转链表+统计N以内的素数+删除排序数组中的重复项

文章目录1 反转链表1.1 题目1.2 解题思路解法1&#xff1a;迭代解法2&#xff1a;递归1.3 题解代码2 统计N以内的素数2.1 题目2.2 解题思路与题解代码解法1&#xff1a;暴力算法代码展示解法1&#xff1a;埃氏筛代码展示3 删除排序数组中的重复项3.1 题目3.2 解题思路3.3 题解代…

近红外染料标记小分子1628790-37-3,Cyanine5.5 alkyne,花青素CY5.5炔基

试剂基团反应特点&#xff1a;Cyanine5.5 alkyne用于点击化学标记的远红外/近红外染料炔烃。氰基5.5是Cy5.5的类似物&#xff0c;一种流行的荧光团&#xff0c;已广泛用于各种应用&#xff0c;包括完整生物体成像。在温和的铜催化化学条件下&#xff0c;该试剂可与叠氮基共轭&a…

构建RFID系统的重要组成部分

RFID读写设备&#xff0c;通常被用来扫描读取安装了RFID电子标签的目标物品&#xff0c;能实现快速批量无接触读写&#xff0c;是构建RFID系统的重要组成部分。RFID读写设备&#xff0c;通常有固定式读写设备和可移动读写设备两种。下面来了解一下RFID的特点&#xff0c;RFID系…

EZ-Cube简易款下载器烧写使用方法

一、硬件连接 跟目标芯片接4根线 VCC、GND、TOOL、REST 四根线&#xff0c;如果板子芯片自己外接电源的&#xff0c;VCC 线可以不接。 二、 安装烧写软件和驱动 烧写软件&#xff1a;https://download.csdn.net/download/Stark_/87444744?spm1001.2014.3001.5503 驱动程序&a…

java微信小程序的在线学习平台

本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对在线学习平台进行需求分析,得出在线学习平台主要功能。接着对在线学习平台进行总体设计和详细设计。总体设计主要包括小程序功能设计、小程…

Apache JMeter 5.5 下载安装以及设置中文教程

Apache JMeter 5.5 下载安装以及设置中文教程JMeter下载Apache JMeter 5.5配置环境变量查看配置JDK配置JMeter环境变量运行JMeter配置中文版一次性永久设置正文JMeter 下载Apache JMeter 5.5 官方网站&#xff1a;Apache JMeter 官网 版本介绍&#xff1a; 版本中一个是Bina…