Mysql查询小作业
数据准备
drop table if exists class;
create table class(
class_no int(2) unsigned zerofill primary key auto_increment comment '班级编号',
class_name varchar(30) not null comment '班级名称'
);
insert into class values(1, '培优班');
insert into class values(2, '普通班');
drop table if exists student;
create table student(
stu_no int(2) unsigned zerofill primary key auto_increment comment '学员编号',
stu_name varchar(30) not null comment '学员姓名',
stu_sex varchar(3) not null comment '学员性别',
stu_age tinyint(2) unsigned zerofill comment '学员年代',
class_no int(2) unsigned zerofill comment '所在班级编号',
foreign key(class_no) references class(class_no)
);
insert into student values(01, '李白', '男', 18, 01);
insert into student values(02, '杜甫', '男', 20, 01);
insert into student values(03, '张飞', '男', 32, 02);
insert into student values(04, '韩信', '男', 26, 02);
insert into student values(05, '了龙', '男', 27, 02);
insert into student values(06, '大乔', '女', 17, 01);
insert into student values(07, '小乔', '女', 16, 01);
insert into student values(08, '小乔', '女', 16, 01);
insert into student values(09, '关哥', '男', 32, 02);
insert into student values(10, '刘备', '男', 36, null);
alter table student drop foreign key `student_ibfk_1`;
1: 查询出student表中年龄最大的学生
select * from student where stu_age = (select max(stu_age) from student);
2: 查询出student表中年龄最小的学生
select * from student where stu_age = (select min(stu_age) from student);
3: 查询出02号班中最大的年龄是多少
select max(stu_age) from student where class_no = 2;
4: 查询出01号班中最小的年龄是多少
select min(stu_age) from student where class_no = 1;
5: 查询出01号班中有多少个学生
select count(*) from student where class_no = 1;
6: 查询出01号班中平均年龄是多少
select avg(stu_age) from student where class_no = 1;
7:查询出没有班级的学生
(失败)select * from student where class_no not in ( select class_no from class);(查询出结果为空?)
(成功)select * from student where not exists ( select distinct(class_no) from class where student.class_no = class.class_no); // null值的特殊性,不能使用not in来查询,NULL值在与任意值比较时总是假的(FALSE),并且包含NULL的一个表达式总是产生一个NULL值
8: 查询出02号班级中年龄大于30岁的男学员
select * from student where class_no = 2 and stu_sex = '男' and stu_age > 30;
9: 查询出所有的女学员姓名,并在名字后加上‘大美女’名字
select concat(stu_name,'大美女') from student where stu_sex = '女';
10: 查询出1号班级的所有男学员 还有 没有班级的学员
select * from student where (class_no = 1 || class_no is null) and stu_sex = '男';
select * from student where class_no = 1 and stu_sex = '男' || not exists ( select class_no from class where student.class_no = class.class_no);
11: 查询出年龄在20-30岁的学员
select * from student where stu_age between 20 and 30;
12: 查询出所有名字中第二个字符是‘乔’的学员的平均工资(没有工资列,改为平均年龄或者添加工资列)
select avg(stu_age) from student where stu_name like('_乔%');
13: 查询出班中所有学生的姓名,其中不包括重复的
select distinct(stu_name) from student where class_no is not null;
14: 查询姓名,性别两个字段, 不包括重复的记录
select distinct stu_name,stu_age from student;
15: 查询出1号部门中所有的学员,根据年龄升序排序,年龄相同的则按照学号降序排序
select * from student where class_no = 1 order by stu_age asc,stu_no desc;
16: 查询出最后一条数据
(失败)select * from student limit (select count(stu_no)-1 from student),1;// 参数不能为表达式
select * from student order by stu_no desc limit 1;
17: 查询出学号为6的后面的3条数据
select * from student where stu_no > 6 limit 3;
18: 查询出学号为6的前面的3条数据
select * from student where stu_no < 6 order by stu_no desc limit 3;
19: 删除最后一条记录,(在不知道最后一条记录id的情况)
delete from student where stu_no in (select stu_no from (select stu_no from student order by stu_no desc limit 1) as temtable);// MySQL不能指定更新的目标表在FROM子句,所以先将删除的数据放到临时表中再进行删除
delete from student order by stu_no desc limit 1;
20: 删除掉学号为6的后面的3条数据(同理(19))
delete from student where stu_no in (select stu_no from (select stu_no from student where stu_no > 6 limit 3) as temtable);
delete from student where stu_no > 6 limit 3;
Mysql查询小作业的更多相关文章
- mysql之连接查询小作业
#数据准备drop table if exists class;create table class( class_no int(2) unsigned zerofill primary key ...
- mysql 查询小技巧
数据字段中存放的是id集,形如 1,2,15,35 也可类推json格式 查询时不用拆分了, 用上 instr.concat搜索和连接字符串 查询fids中包含15的 select * from ...
- mysql 查询小demo
两张表的的结构如下,需求是写出从one表到two表和从two表到one表的查询转换. create table student_one( name varchar(50) default '' not ...
- mysql查询小技巧
如果所传bookTypeName为空则执行select * from t_bookType(搜索框里未输入信息) 否则追加 and bookTypeName like '%"+bookTy ...
- MySQL 表记录查询小练习
表记录查询小练习 查看岗位是teacher的员工姓名.年龄 查看岗位是teacher且年龄大于26岁的员工姓名.年龄 查看岗位是teacher且薪资在12000-16000范围内的员工姓名.年龄.薪资 ...
- 《MySQL面试小抄》查询缓存机制终面
<MySQL面试小抄>查询缓存机制终面 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点 ...
- mysql查询常用小语句
mysql 查询某个库里表的数量 在mysql中有个数据库information_schema下的表tables记录了所有数据库中所有的表相关信息 TABLE_SCHEMA 数据库名称 SELECT ...
- 数据库MySQL(课下作业,必做)
数据库MySQL(课下作业,必做) 题目要求: 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入 ...
- mysql查询性能优化
mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...
随机推荐
- Go实现海量日志收集系统(二)
一篇文章主要是关于整体架构以及用到的软件的一些介绍,这一篇文章是对各个软件的使用介绍,当然这里主要是关于架构中我们agent的实现用到的内容 关于zookeeper+kafka 我们需要先把两者启动, ...
- 算法题丨Longest Consecutive Sequence
描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...
- Python并发编程之进程
一.理论概念 1.定义 进程(Process 也可以称为重量级进程)是程序的一次执行.在每个进程中都有自己的地址空间.内存.数据栈以及记录运行的辅助数据,它是系统进行资源分配和调度的一个独立单位. 2 ...
- 【Spring源码深度解析学习系列】核心类介绍(一)
一.DefaultListableBeanFactory 首先看一下结构 由图可知XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListabl ...
- 在linux环境下安装JDK并配置环境变量
操作步骤如下 1.根据linux服务器的系统版本在官网下载相应linux版本JDK(32位下载x86,64位下载x64) 2.通过远程连接工具(filezilla)将下载好的JDK上传至linux服务 ...
- 201621123043《java程序设计》第五周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 接口. Comparable接口 .Comparator接口.compareTo. 1.2 尝试使用思维导图将这些关键词组织起来 ...
- 老板怎么办,我们网站遭到DDoS攻击又挂了?
相信现在正在阅读此文的你,一定听说过发生在上个月的史上最大的DDoS攻击. 美国东部时间2月28日,GitHub在一瞬间遭到高达1.35Tbps的带宽攻击.这次DDoS攻击几乎可以堪称是互联网有史以来 ...
- SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功
[用户单位] 中国联通某分公司[数据恢复故障描述] SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...
- Hangfire使用ApplicationInsigts监控
起因 我司目前使用清真的ApplicationInsights(以下简称Ai)来做程序级监控.(Ai相关文档: https://azure.microsoft.com/zh-cn/services/a ...
- 一张图说明 Web Api 参数绑定默认规则
请求如下: 控制器如下: 慎重说明:不管请求方式是 get 还是 post , 简单类型的参数,如 name 和 id ,其值都是从 url 里面去取. Web API 从 url 还是 body 获 ...