MySQL查询操作

2023-11-03

MySQL查询操作

1、建表

CREATE TABLE 学生
(   学号 char(7) NOT NULL PRIMARY KEY,
	姓名 char(8) NOT NULL,
	性别 char(2) ,
	年龄 tinyint ,
	入学时间 datetime ,
	专业 varchar(10) ,
	年级 char(10) 
) ;

CREATE TABLE 选课
(   学号   char(7) NOT NULL,
	课程号 char(4) NOT NULL,
	成绩   int check(成绩>=0 and 成绩<=100),
    PRIMARY KEY (学号 ASC,课程号 ASC)
); 

CREATE TABLE 课程
(   课程号   char(20),
	课程名   varchar(20),
	学分     int,
    教师号   int
);

CREATE TABLE 教师
(   教师号   char(20),
	教师名   varchar(20),
	职称     varchar(20),
    工资     int
);

2、插入数据

insert into 学生 values('0100111','张三', '女',	22,	'2010-09-01','数学','10级');     
insert into 学生 values('0100215','刘玲玲','女',21,	'2010-09-01','计算机','10级');      
insert into 学生 values('0110102','刘尚宏', '女',21,'2011-09-04','数学','11级');   
insert into 学生 values('0110205','郑辉' ,  '女',20	,'2011-09-04','计算机','11级');      
insert into 学生 values('0110208','张品逸',  '女',22,'2011-09-04', '计算机','11级');      
insert into 学生 values('0110301','朱一虹',  '女',19,'2011-09-04', '网络','12级');     
insert into 学生 values('0120103','李海' ,   '女',19,'2012-09-06', '数学','12级' );     
insert into 学生 values('0120301','张丽娜',  '女',18,'2012-09-06', '网络','12级'  );    
insert into 学生 values('0120302','李小红' , '女',20,'2012-09-06', '网络','12级' );

insert into 选课 values('0100111',	'C007',	100);
insert into 选课 values('0100111',	'C008',	86);
insert into 选课 values('0110102',	'C005',	56);
insert into 选课 values('0110102',	'C006',	80);
insert into 选课 values('0110205',	'C005',	87);
insert into 选课 values('0110205',	'C007',	78);
insert into 选课 values('0110208',	'C006',	88);
insert into 选课 values('0110208',	'C007',	89);
insert into 选课 values('0120301',	'C001',	89);
insert into 选课 values('0120301',	'C002',	76);
insert into 选课 values('0120301',	'C003',	99);
insert into 选课 values('0120302',	'C001',	77);
insert into 选课 values('0120302',	'C004',	79);

insert into 课程 values('C001','高等数学',4,3);
insert into 课程 values('C002','计算机基础',3,1);
insert into 课程 values('C003','网络通信',3,3);
insert into 课程 values('C004','操作系统',3,1);
insert into 课程 values('C005','数据库',3,1);
insert into 课程 values('C006','计算机英语',3,2);
insert into 课程 values('C007','大学物理',3,4);
insert into 课程 values('C008','电子技术',3,4);

insert into 教师 values('1','郑浩','教授',6000);
insert into 教师 values('2','王伟','副教授',5000);
insert into 教师 values('3','李平','讲师',4000);
insert into 教师 values('4','陈亮','副教授',5000);

3、查询数据

SELECT * FROM 学生;
select * from 选课;
select * from 课程;
select * from 教师;

4、查询操作

--查询学生们有哪些专业,只显示专业列,过滤掉重复行。
select distinct 专业 from 学生;

--统计有学生选修的课程门数。
select COUNT(*) as 课程数 from 课程;

--求选修C004课程的学生的平均年龄。
select avg(年龄) as 平均年龄 from 学生,选课 where 学生.学号=选课.学号 and 课程号='C004';

--求学分为3的每门课程的学生平均成绩。
select avg(成绩) as 平均成绩,选课.课程号 from 选课,课程 where 选课.课程号=课程.课程号 and 学分=3 group by 选课.课程号;

--统计每门课程的学生选修人数,超过三人的课程才能统计。要求输出课程号和选修人数,查询结果按人数降序排列,
--若人数相同,按课程号升序排列。
select count(学号) as 选修人数,课程号 from 选课 group by 课程号 having 选修人数>3 order by 选修人数 desc,课程号 asc;

--检索姓王的学生的姓名和年龄。
select 姓名,年龄 from 学生 where 姓名 like '王%'

--在选课表中检索成绩为空值的学生的学号和课程号。
select 学号,课程号 from 选课 where 成绩 is null;

--查询没有学生选修的课的课程号和课程名。
select 课程号,课程名 from 课程 where 课程号 not in  (select 课程号 from 选课);

--求年龄大于女同学平均年龄的男学生姓名和年龄。
select 姓名,年龄 from 学生 where 性别='男' and 年龄>(select AVG(年龄) from 学生 where 性别='女')

--求年龄大于所有女同学年龄的男学生姓名和年龄。
select 姓名,年龄 from 学生 where 性别='男' and 年龄>all (select 年龄 from 学生 where 性别='女')

--查询所有与张丽娜同年级,同专业,但比王华年龄大的学生的姓名,年龄和性别。
select 姓名,年龄,性别 from 学生 where 专业=(select 专业 from 学生 where 姓名='张丽娜') and 年级=(select 年级 from 学生 where 姓名='张丽娜') and 年龄>(select 年龄 from 学生 where 姓名='张丽娜');

--查询选修课程C002的学生中成绩最高的学生的学号。
select 学号 from 选课 where 课程号='C002' and 成绩=(select MAX(成绩) from 选课 where 课程号='C002')

--检索学生姓名及其所选修课程的课程号和成绩。
select 学生.姓名,选课.课程号,选课.成绩 from 学生,选课 where 学生.学号=选课.学号;

--检索选修4门以上课程的学生平均成绩(不统计不及格的课程),并要求按平均成绩的降序排列出来。
select avg(成绩) as 平均成绩 from 选课 group by 学号 having count(课程号)>4 order by 平均成绩;
select 学号,AVG(成绩) as 平均成绩 from 选课 group by 学号 having COUNT(*)>4 order by AVG(成绩) desc;

--检索选修两门及以上课程的学生平均成绩只取前5名。
select avg(成绩) as 平均成绩 from 选课 group by 学号 having count(课程号)>1 order by 平均成绩 limit 5;

--查询每个学生的总学分。
select 学号,SUM(学分) as 总学分 from 选课,课程 where 选课.课程号=课程.课程号 group by 学号;

--查询每位教师所担任的课程,显示课程名,教师名,学时(学分*16)。
select 教师名,课程名,学分*16 as 学分 from 教师,课程 where 教师.教师号=课程.教师号;

--教师工资加5%。
update 教师 set 工资=工资*(1+0.05) select * from 教师;

5、建表

CREATE TABLE 商品
(  	商品编号 char(6) NOT NULL PRIMARY KEY,
	商品名称 varchar(20) NOT NULL,
	单价     float ,
	生产商   varchar(30)
 );
 
CREATE TABLE 仓库
(   仓库编号 char(3) NOT NULL PRIMARY KEY,
	仓库地址 varchar(20) NOT NULL,
	电话     varchar(10) ,
	容量     int 
);

CREATE TABLE 库存情况
(   仓库编号 char(3) NOT NULL,
	商品编号 char(6) NOT NULL,
	数量     int ,
    PRIMARY KEY (仓库编号 ASC,商品编号 ASC)
);

CREATE TABLE 管理员
(   管理员编号 char(3) NOT NULL PRIMARY KEY,
	管理员姓名 varchar(20) not null,
	性别       char(2) ,
	出生年月   datetime,
	仓库编号   char(3) 
);

6、插入数据

insert into 商品 values('bx-179','冰箱',3200,'青岛海尔');
insert into 商品 values('bx-340','冰箱',2568,'北京雪花');
insert into 商品 values('ds-001','电视',1580,'四川长虹');
insert into 商品 values('ds-018','电视',2980,'青岛海尔');
insert into 商品 values('ds-580','电视',6899,'南京熊猫');
insert into 商品 values('kt-060','空调',3560,'青岛海尔');
insert into 商品 values('kt-330','空调',2820,'青岛海信');
insert into 商品 values('xyj-01','洗衣机',580,'无锡小天鹅');
insert into 商品 values('xyj-30','洗衣机',858,'南京熊猫');

insert into 仓库 values ('001','1号楼105','89123411',78);
insert into 仓库 values ('002','1号楼106','89123412',89);
insert into 仓库 values ('003',	'2号楼101','89120007',86);
insert into 仓库 values ('004',	'2号楼102',	'89120008',90);
insert into 仓库 values ('005',	'3号楼104',	'89229901',87);
insert into 仓库 values ('006',	'3号楼108',	'89229902',97);

insert into 库存情况 values('004','bx-179',	5);
insert into 库存情况 values('002','bx-179',	12);
insert into 库存情况 values('003','bx-340',	10);
insert into 库存情况 values('001','ds-001',	20);
insert into 库存情况 values('003','ds-018',	8);
insert into 库存情况 values('006','ds-018',	10);
insert into 库存情况 values('004','ds-018',	12);
insert into 库存情况 values('001','ds-018',	16);
insert into 库存情况 values('005','ds-018',	20);
insert into 库存情况 values('002','ds-580',	15);
insert into 库存情况 values('004','kt-060',	9);
insert into 库存情况 values('001','kt-060',	13);
insert into 库存情况 values('004','xyj-01',	10);
insert into 库存情况 values('003','xyj-30',	21);

insert into 管理员 values('101','张辽','男','1989-02-03','001');
insert into 管理员 values('102','李立平','男','1984-03-07','001');
insert into 管理员 values('103','王辉',	'男','1987-11-05','001' );
insert into 管理员 values('104','郑风豫','男','1989-06-07','002' );
insert into 管理员 values('105','常红',	'女','1985-09-12', '002');
insert into 管理员 values('106','明慧林','男','1988-08-16','002' );
insert into 管理员 values('107','张可',	'男','1990-05-27','003' );
insert into 管理员 values('108','李智',	'男','1981-03-06','003' );
insert into 管理员 values('109','李明涵','女','1980-12-02',	'004');
insert into 管理员 values('110','张伟',	'男','1978-08-19', '004');

7、查询数据

select * from 商品;
select * from 仓库;
select * from 库存情况;
select * from 管理员;

8、插叙操作

--查询青岛海尔生产的商品信息。
select * from 商品 where 生产商='青岛海尔';

--查询001号仓库储存的商品的编号和数量。
select 库存情况.商品编号,数量 from 库存情况 where 仓库编号='001'

--查询所有商品的种类名称。
select distinct 商品名称 from 商品;

--查询商品的单价在2000到3000之间的商品信息。
select * from 商品 where 单价 between 2000 and 3000;

--查询所有商品的信息,其中单价打八折显示。
select 商品编号,商品名称,单价=单价*0.8,生产商 from 商品;

--查询青岛海尔和青岛海信生产的商品的信息。
select * from 商品 where 生产商='青岛海尔' or 生产商='青岛海信';

--查询李立平管理的仓库存储的商品信息。
select 商品.* from 商品,库存情况,管理员 where 管理员姓名='李立平' and 管理员.仓库编号=库存情况.仓库编号 and 库存情况.商品编号=商品.商品编号;

--查询2号楼101仓库的管理员的姓名和年龄。
select 管理员姓名,year(getdate())-year(出生年月) as 年龄 from 管理员,仓库 where 仓库地址='2号楼101' and 仓库.仓库编号=管理员.仓库编号

--查询不是青岛生产的商品的信息。
select * from 商品 where 生产商  not like '%青岛%';

--查询库存总量最少的仓库的编号。
--方法一
select 仓库编号 from 仓库 where 容量=(select min(容量) from 仓库);
--方法二
select 仓库编号 from 仓库 order by 容量 asc limit 1;

--查询各生产厂家的商品库存总量。
select 生产商,sum(数量) as 库存总量 from 商品,库存情况 where 商品.商品编号=库存情况.商品编号 group by 生产商;

--将2号楼101仓库的管理员的姓名改为"张伟"。
update 管理员 set 管理员姓名='张伟' where 仓库编号=(select 仓库编号 from 仓库 where 仓库地址='2号楼101');
select * from 管理员;

--删除四川长虹的产品的库存信息。
delete 库存情况 where 商品编号=(select 商品编号 from 商品 where 生产商='四川长虹');
select * from 库存情况;

--查询每个仓库存放的商品品种数。
select 仓库编号,count(商品编号) as 商品品种数 from 库存情况 group by 仓库编号;

--仓库容量增加百分之5。
Update 仓库 set 容量=容量*(1+0.05);
select * from 仓库;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL查询操作 的相关文章

随机推荐

  • Nginx实战练习

    1 Nginx安装 以centos7为例 详解博文 Nginx安装搭建之源码方式 Centos7 centos7源码安装nginx IT之一小佬的博客 CSDN博客 2 简单搭建站点 2 1 单个站点搭建 正常开放情况下 开发代码防止网站的
  • require() of ES modules is not supported.

    问题 如图所示 看了一些答案是版本问题 解决办法其其实提示已经有了 use import 找到提示的文件 require改为import 问题即可解决
  • 前端如何接接口

    前端一般静态页面写完后 就要从后端获取数据了 就要进行接接口 接接口其实说白了就是发送网络请求 从后端获取数据 然后再将数据渲染到页面上 今天就以一个简单的uniapp项目为例 介绍一下接口怎么写 首先 是封装一个request js文件
  • rockchip rk3368(px5)车载开发之路6,系统开机bootanimation播放视频需求

    本系列记载作者来到一个新的车载后装市场小公司 负责从新开始维护一套代码的心路过程 系统使用瑞芯微的rk3368芯片 版本是PX5 Android 8 0 release 20180726 从无到有的每个patch修改以及思考 其中着重点是驱
  • PyTorch知识点总结100问

    PyTorch知识点总结 什么是PyTorch 它有什么特点和优势 PyTorch中的张量 Tensor 是什么 它与NumPy中的数组有何区别 请介绍一下PyTorch的执行流程 PyTorch中的autograd是什么 它有什么作用 请
  • Salesforce中国区解散,谁是替代的最佳选择?

    摘要 全球第一大CRM厂商退出 对中国市场有何影响 8月3日 Salesforce中国区解散的消息 在IT业界引发热议 虽然是全球第一大CRM厂商 但Salesforce在中国区业务不多 整个团队只有60 70人规模 主要业务是全球500强
  • 分布式系统消息通信技术:MOM与RPC

    一 中间件 什么是中间件 中间件 Middleware 是处于操作系统和应用程序之间的软件 也有人认为它应该属于操作系统中的一部分 人们在使用中间件时 往往是一组中间件集成在一起 构成一个平台 包括开发平台和运行平台 但在这组中间件中必须要
  • ifconfig命令无法识别,提示“Command 'ifconfig' is available in '/sbin/ifconfig'”

    有台虚拟机 用的时候发现ifconfig命令不好用了 提示如下 Command ifconfig is available in sbin ifconfig The command could not be located because
  • 需求:vue用流程图展示数据

    问题描述 如标题所示 粗略的写了一版 没有细化 UI 红框的地方本来想用canvas自己写 但是找资料的时候发现了一个插件LeaderLine 非常符合要求 然后发现了一篇文章vue横向树级组件 流程图 组件递归 套用了一下 然后按照自己的
  • 将json-bigint处理为数值分区数组的字段全部自动转为字符串

    json bigint虽然能帮我们处理好id 但 他的模式 显然不是直接可以用的 我们如果要到业务逻辑单独处理 那就太麻烦了 对系统也非常不友好 我们可以在vue项目中 src目录下创建一个utils 下面创建一个conversionLon
  • 线程共享&&独有

    线程共享 进程代码段 进程的公有数据 利用这些共享数据 线程很容易的实现相互之间的通讯 进程打开的文件描述符 信号的处理器 进程的当前目录和进程用户ID与进程组ID 线程独有 线程ID 桟 错误返回码 error 线程优先级
  • IDEA配置仓库提交简易说明

    1 码云注册并创建仓库 2 IDEA顶部菜单VCS 如果没有 删除代码文件夹里面的 git文件 3 Create git 4 选择需要提交的代码文件夹 5 IDEA顶部菜单Git 6 Commit 提交暂存 选择需要提交的代码文件 选择Co
  • SQLi LABS Less-18

    第十八关请求方式为 GET请求 注入点为 User Agent 注入方式为 错误注入 第一步 判断注入方式 先看源码 后台代码对 特殊字符进行了过滤 常规的注入方式行不通 只有通过代码审计来判断注入方式 登录成功后 有一个保存用户主机信息的
  • 文本三剑客之sed

    sed简介 sed 是Linux中提供的一个外部命令 他是一个行 流 编辑器 非交互式的对文件内容进项增删改查操作 那它和文本编辑器有什么区别呢 区别是 文本编辑器 编辑对象是文件 行编辑器 编辑对象是文件中的行 也就是前者一次处理一个文本
  • Anaconda使用conda连接网络时,出现网络错误CondaHTTPError(包括Anaconda安装与入门)

    今天准备安一个Anaconda来管理我的Python环境 在官网下载支持Python3 7的版本 直接安装即可 使用Anaconda Navigator可以方便地创建环境和管理各种外部包 conda version 查看版本 是否安装成功
  • element-ui 中标签el-select选中无反应问题

    el select标签 如果外部还嵌套循环 点击选中标签无反应 删除也不好使 原因由于层次太多 导致render函数没有自动更新 在el select标签内加入 change forceUpdate 强制刷新视图即可
  • 怎样删除Github中的项目

    我们在GitHub上创建项目的时候 如果想要删除当前项目 怎样进行操作呢 下面就简单介绍一下怎样去删除GitHub中的项目 1 选择要删除的项目 2 进入项目中的setting 设置 中 3 一直下拉 看到有红色字体出现 进入Danger
  • 都2022年了,出去面试连分布式锁的源码你都不会画?

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 写在前面 二 Redisson实现Redis分布式锁的底层原理 1 加锁机制 2 锁互斥机制 3 watch dog自动延期机制 4 可重入加锁机制 5 锁
  • Linux基础笔记17

    磁盘基础概念知识 计算机主要存储媒介之一 由一个或多个铝制 玻璃的碟片组成 碟片外覆盖具有铁磁性材料 磁盘内部由磁道 柱面 扇区 磁头等关键部位组成 Linux 系统中硬件设备文件放在 dev 下 不同磁盘接口 系统识别的设备名称不一样 I
  • MySQL查询操作

    MySQL查询操作 1 建表 CREATE TABLE 学生 学号 char 7 NOT NULL PRIMARY KEY 姓名 char 8 NOT NULL 性别 char 2 年龄 tinyint 入学时间 datetime 专业 v