1. 查询技巧

查询时先写出查询结构,将需要连接的表进行join on 连接好,最后再写出查询的数据

select

from

join

on

[where]

group by 字段[order by 字段 asc/desc]

[having]

实例:

# 显示列表包含电影名、用户性别、评分

select a.title, c.gender, b.ratings

from movies a

inner join ratings b

on a.movie_id = b.movie_id

inner join users c

on b.user_id = c.user_id

limit 5;

# 显示列表包含电影名、用户性别、评分 (只包含男性)

select a.title, c.gender, b.ratings

from movies a

inner join ratings b

on a.movie_id = b.movie_id

inner join users c

on b.user_id = c.user_id

where c.gender = 'M' limit 10;

# 显示男女平均打分,只有两行记录

select a.gender, avg(b.ratings)

from users a

inner join ratings b

on a.user_id = b.user_id

group by a.gender;

# 显示每部电影平均打分,电影名,评分

select a.title, avg(b.ratings)

from movies a

inner join ratings b

on a.movie_id = b.movie_id

group by a.title;

# 显示每部电影不同性别平均分

select c.title, a.gender, avg(b.ratings)

from users a

inner join ratings b

on a.user_id = b.user_id

inner join movies c

on b.movie_id = c.movie_id

group by c.title, a.gender;

# 显示电影平均分大于4分的电影

select a.title, avg(b.ratings)

from movies a

inner join ratings b

on a.movie_id = b.movie_id

group by a.title

having avg(b.ratings) > 4;

# 显示电影平均分大于4分的电影(子查询)

#显示电影平均分大于4分的电影(子查询)

select title

from movies

where movieid

in(

select movieid

from movies

where movieid

in

(

select movieid

from ratings

group by movieid

having avg(rating)>4

)

);

# 不同年龄分组电影平均打分

select c.age_min, c.age_max, avg(a.ratings)

from ratings a

inner join users b

on a.user_id = b.user_id

inner join age_dict c

on b.age = c.age_id

group by c.age_min, c.age_max;

数据查询优化: 1. 给当前查询数据添加索引create index ix_user_id on users (user_id)

2.给关系数据库添加主外键关联。

2. mysql数据库表的横纵交换。

create table b

(

姓名 varchar(20),

语文 int,

数学 int,

英语 int

);

insert into b(姓名,语文,数学,英语) values('张三',60,70,80);

insert into b(姓名,语文,数学,英语) values('李四',90,100,0);

insert into b(姓名,语文,数学,英语) values('五狗',80,90,70);

# 加了引号代表每一行都要显示该数据 as 只执行一次(适用于表头),不加引号代表查询的结果字段

select 姓名, '语文' as 课程, 语文 as 成绩 from b

union all

select 姓名, '数学' as 课程, 数学 as 成绩 from b

union all

select 姓名, '英语' as 课程, 英语 as 成绩 from b

;

# 创建纵表

create table c

select 姓名, '语文' as 课程, 语文 as 成绩 from b

union all

select 姓名, '数学' as 课程, 数学 as 成绩 from b

union all

select 姓名, '英语' as 课程, 英语 as 成绩 from b

;

select * from c;

#1)case vlaue when [compare-value]then reslut [when[compare-value]] then result ...] [else result] end

#(2)case when [condition] then result [when[condition]then result...][else result] end

#第一形式当value=compare-value时返回result

#

#第二形式当第一个为真值的condition出现时,返回该条件的结果,如果没有匹配的结果值,那么else后的结

#果将被返回,如果没有else部分,那么返回null

# 只要出现聚合函数就一定有group by。

select 姓名,

max(case 课程 when '语文' then 成绩 else 0 end) as '语文',

max(case 课程 when '数学' then 成绩 else 0 end) as '数学',

max(case 课程 when '英语' then 成绩 else 0 end) as '英语'

from c

group by 姓名;

select * from c where 课程='数学' ORDER BY 成绩;

mysql 数据库设计 纵表_数据库查询技巧以及横纵表相关推荐

  1. mysql数据库设计四大范性_数据库篇-mysql详解( 四 )之范式与数据高级骚操作

    标题.png 一 : 主键 primary key,主要的键. 一张表只能有一个字段可以使用对应的键, 用来唯一的约束该字段里面的数据, 不能重复: 这种称之为主键.一张表只能有最多一个主键 操作 增 ...

  2. mysql数据库设计三大范式_数据库设计三大范式详解

    引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...

  3. MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号

    智慧树知到_MySQL数据库设计与应用_搜题公众号 更多相关问题 阅读理解. This is the twin's(双胞胎的) room. It's a nice room. The two beds ...

  4. mysql数据库设计与应用答案智慧树_知到智慧树_MySQL数据库设计与应用_答案完整...

    知到智慧树_MySQL数据库设计与应用_答案完整 更多相关问题 [B11]A.carry onB.linger onC.set inD.log in 数据库的三级模式结构中,模式也称为A.逻辑模式B. ...

  5. 某电商网站的数据库设计(6)——创建查询销售数据的视图

    某电商网站的数据库设计(6)--创建查询销售数据的视图 目录 某电商网站的数据库设计(6)--创建查询销售数据的视图 1.统计总的销售信息 2.按日期分组统计 3.按店铺分组统计--全店汇总 4.按销 ...

  6. his使用mysql_知到智慧树_MySQL数据库设计与应用_答案全部

    知到智慧树_MySQL数据库设计与应用_答案全部 更多相关问题 He was crossing over to _____ side of the road when I saw him. A.oth ...

  7. (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述

    注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...

  8. 数据库设计-博客系统数据库的设计

    数据库设计-博客系统数据库的设计 数据库整体设计 问题: 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的 ...

  9. mysql视图和中间表_数据库设计中的14个技巧

    时 间:2006-09-15 00:00:00 作 者: 摘 要:数据库设计中的14个技巧 正 文: 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...

最新文章

  1. 如何用python读取文本中指定行的内容
  2. Android XML: unbound prefix
  3. 全球最大规模学术不端调查显示,53%的博士生会从事有问题的研究
  4. 双目视惯雷达SLAM
  5. python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)
  6. H3C 使用命令视图
  7. 森林图怎么分析_新疆森林消防总队特勤大队:“火焰蓝”备战春防,我们时刻准备着!...
  8. Centos7.6环境使用kubeadm部署kubernetes1.18.4
  9. VBS整人代码大合集
  10. python语言程序设计实践教程陈东实验八的答案_大学生C语言程序设计(第四版 谭洪强)实验8答案...
  11. 高中计算机学业水平测试知识点总结,高中生物学业水平测试知识点总结
  12. 基于simulink的微电网虚拟同步发电机vsg控制系统仿真
  13. 台式计算机怎么查是32位还是64位,Win7系统怎么看电脑是32位还是64位?
  14. 利用OpenCV读取大华网络摄像头
  15. SATA、SAS、SSD三种硬盘存储性能数据
  16. 【web项目】前端生日礼物--主页面篇
  17. 【Discuz】如何实现自动注册登录
  18. Linux Ubuntu使用3:桌面环境
  19. 营养计算器操作指南--快速入门
  20. 解决 Xshell 6 | xftp 6 强制更新无法打开

热门文章

  1. 雷军:我的天赋无数,但你能学到的只有一种
  2. react native 中设置Image/ImageBackground圆角无效的解决方法
  3. 2020.10.19-10.26 人工智能行业每周技术精华文章汇总
  4. 2021计算机夏令营保研经历
  5. 【保研】最近参与的保研夏令营
  6. 网络Ghost克隆操作全程实例图解(图)
  7. Impala:impala-shell应用
  8. Dart 后置操作符! flutter 问号符号
  9. python-numpy--矩阵与数组的操作
  10. 亲测,2022年私藏的免费好用的磁力网盘资源搜索网站,找资源不用愁