MySQL数据库查询练习

练习01(行转列):

行转列:

有一张学生成绩表sc(sno学号,clazz课程,score成绩),需要查询出每个学生的语文,数学,英语成绩(行转列,一个学生只要一行记录)。

查询得到如下结果:

方法一:

-- 行转列
select distinct a.sno,
(select score from sc b where a.sno = b.sno and b.clazz = '语文') as '语文',
(select score from sc b where a.sno = b.sno and b.clazz = '数学') as '数学',
(select score from sc b where a.sno = b.sno and b.clazz = '英语') as '英语' from sc a;

方法二:

-- 行转列 用max()
select sno,
max(case clazz when '语文' then score end) '语文',
max(case clazz when '数学' then score end) '数学',
max(case clazz when '英语' then score end) '英语'
from sc group by sno;

这里再加一个条件:汇总每个学生的总分,为了适应特殊情况,我将原表进行了改动:

得到如下结果:

-- 加一个条件进行汇总每个学生的总分 sum()
select sno,
sum(case clazz when '语文' then score else 0 end)'语文',
sum(case clazz when '数学' then score else 0 end)'数学',
sum(case clazz when '英语' then score else 0 end)'英语',
sum(score)'总分'
from sc group by sno;

练习02(字符串函数):

给一张楼号和门牌号的销售表,查询楼号和单元号:

运用字符串函数进行查询:

-- 查询
select * from sales;
-- 检索-的位置
select locate('-',snum) from sales;
-- 查询每个的楼号
select snum,left(snum,locate('-',snum) - 1) from sales;
-- 查询每个门牌号
-- 这里注意,一个字符串长度的问题 上方left可以,但是如果用right也是一样的函数方法就行出现错误
select snum,right(snum,locate('-',snum) + 1) from sales;-- 错误!!!因为这里会出现漏掉或者多出符号的情况

如下会有少一个字符或者多一个‘-’符号的情况,因为这里right是从最后面开始算,所以会进行多算或者少算是情况;

所以正确的是,这里有个规律:

-- 所以这里有个规律 8-502:【总长度-2】   8-1202:【总长度-2】  12-502:【总长度-3】
select snum,right(snum,length(snum) - locate('-',snum)) from sales;
select snum,convert(right(snum,length(snum)-locate('-',snum)),signed) from sales;
-- 也可以使用字段切割,把符号‘-’后面的门牌号切割出来
-- substr(str,pos) 或者 substr(str from pos):从pos开始的位置,一直截取到最后。
-- 还有一种比较常用的是:
-- substr(str,pos,len) 或者 substr(str from pos len);从pos开始的位置,截取len个字符(空白也算字符)。
select snum,convert(substr(snum,locate('-',snum)+1),signed) from sales;
-- 查询后按照楼号排序
select * from sales order by convert(LEFT(snum,locate('-',snum)-1),signed);
-- 楼号从小到大,在按照门牌号从大到小排序
select * from sales order by convert(LEFT(snum,locate('-',snum)-1),signed ),
convert( substr(snum,locate('-',snum)+1),signed)  desc;

MySQL数据库查询练习(二)相关推荐

  1. mysql数据库查询练习二-【比经理工资还高员工姓名】【查找重复的邮箱】

    1.查询工资比他经理的工资还高的员工的姓名 Employee 表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+----- ...

  2. MySQL数据库查询(实验四)

    MySQL数据库查询 准备工作:脚本文件xkgl.sql下载:xkgl脚本.sql 1.执行脚本xkgl.sql (创建xkgl库.表及插入数据),观察有无错误,如有记录错误信息,并解决. (1) 执 ...

  3. MySQL数据库程序设计(二)

    MySQL数据库程序设计(二) 前言 MySQL编程语言 结构化查询语言SQL MySQL语言组成 数据库定义语言(DDL) 数据操纵语言(DML) 数据控制语言(DCL) MySQL扩展增加的语言要 ...

  4. MySQL数据库查询排序

    MySQL数据库查询排序 一.按关键字排序 1.1 单字段排序 1.1.1 按分数排序,默认不指定是升序排序 1.1.2 按分数降序排序 结合where进行条件过滤,筛选地址是nanjing的学生按分 ...

  5. MySQL数据库查询时间段的两种方法

    MySQL数据库查询时间段的两种方法: 1. SELECT* FROMgroup_details model WHEREmodel.create_time BETWEEN TO_DAYS ( '201 ...

  6. php简单的mysql类_超简单php mysql数据库查询类

    本文章为你免费提供一款漂亮的超简单php mysql数据库查询类哦 */ class Config{ private $host;        //主机名称:一般是localhost private ...

  7. mysql数据库查询源码_超简单php mysql数据库查询类

    本文章为你免费提供一款漂亮的超简单php mysql数据库查询类哦 */ class Config{ private $host; //主机名称:一般是localhost private $root; ...

  8. 提高MySQL数据库查询效率的几个技巧(转载)

    [size=5][color=Red]提高MySQL数据库查询效率的几个技巧(转)[/color][/size]       MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用. ...

  9. MySQL数据库查询重复数据办法

    MySQL数据库查询重复数据办法 只操作一个列数据找出重复 select * from table1 where v1 = X group by column1 having count(*)> ...

最新文章

  1. System.Transactions:实现你自己的Resource Manager
  2. MySQL INNER JOIN:内连接查询
  3. c语言数据结构-算法篇之冒泡排序
  4. 超微服务器硬盘红灯_硬盘亮红灯服务器崩溃的解决方法
  5. oracle us7ascii 中文,US7ASCII字符集中汉字显示问题
  6. python初学者怎么入门-python初学者怎么入门
  7. 64位电脑上安装MySQL进行MFC开发的相关问题
  8. Go语言实战-golang操作redis
  9. vim打开bin文件
  10. Access2016学习4
  11. Spring、SpringMVC
  12. 中国大学python程序设计答案_Python程序设计1-中国大学mooc-试题题目及答案
  13. taro 引用相对路径图片
  14. 二手车好大风,老平台都推新服务
  15. Newstar Ctf 2022| week2 wp
  16. 百度股市通日k数据接口
  17. 【编程方法】如何阅读开源代码
  18. MACH3 G代码自动循环加工简单例子
  19. 个人怎么做微信小程序?个人开发者也可以这样开发属于自己的小程序
  20. 中软实训总结_中软实训心得

热门文章

  1. badatatable转成json_datatable转换为json
  2. 【shell脚本练习】判断目录读写权限
  3. php手势解锁,微信小程序实用demo:手势解锁(适用1221)
  4. 苹果应用商店见了这个软件会叫“爸爸”
  5. (2019)建筑物中的占用感知:数据分析方法综述
  6. 【运维面试】面试官:LVS都有哪些模式,你们公司用的哪一种?
  7. c++如何模拟键盘输入
  8. 众多文章引用的,氧自由基抗氧化能力(ORAC)活性检测试剂盒
  9. C语言根据父母身高计算儿子女儿身高
  10. (附源码)计算机毕业设计ssm基于Java的班主任管理系统的实现