mysql 数据库设计 纵表_数据库查询技巧以及横纵表
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 数据库设计 纵表_数据库查询技巧以及横纵表相关推荐
- mysql数据库设计四大范性_数据库篇-mysql详解( 四 )之范式与数据高级骚操作
标题.png 一 : 主键 primary key,主要的键. 一张表只能有一个字段可以使用对应的键, 用来唯一的约束该字段里面的数据, 不能重复: 这种称之为主键.一张表只能有最多一个主键 操作 增 ...
- mysql数据库设计三大范式_数据库设计三大范式详解
引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...
- MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号
智慧树知到_MySQL数据库设计与应用_搜题公众号 更多相关问题 阅读理解. This is the twin's(双胞胎的) room. It's a nice room. The two beds ...
- mysql数据库设计与应用答案智慧树_知到智慧树_MySQL数据库设计与应用_答案完整...
知到智慧树_MySQL数据库设计与应用_答案完整 更多相关问题 [B11]A.carry onB.linger onC.set inD.log in 数据库的三级模式结构中,模式也称为A.逻辑模式B. ...
- 某电商网站的数据库设计(6)——创建查询销售数据的视图
某电商网站的数据库设计(6)--创建查询销售数据的视图 目录 某电商网站的数据库设计(6)--创建查询销售数据的视图 1.统计总的销售信息 2.按日期分组统计 3.按店铺分组统计--全店汇总 4.按销 ...
- his使用mysql_知到智慧树_MySQL数据库设计与应用_答案全部
知到智慧树_MySQL数据库设计与应用_答案全部 更多相关问题 He was crossing over to _____ side of the road when I saw him. A.oth ...
- (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述
注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...
- 数据库设计-博客系统数据库的设计
数据库设计-博客系统数据库的设计 数据库整体设计 问题: 一个博客系统会有哪些功能呢,肯定会有的是博客列表,博客详情,评论,登陆注册等等这些功能,那应该建多少张表呢?应该给这些表添加哪些字段呢?字段的 ...
- mysql视图和中间表_数据库设计中的14个技巧
时 间:2006-09-15 00:00:00 作 者: 摘 要:数据库设计中的14个技巧 正 文: 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...
最新文章
- 如何用python读取文本中指定行的内容
- Android XML: unbound prefix
- 全球最大规模学术不端调查显示,53%的博士生会从事有问题的研究
- 双目视惯雷达SLAM
- python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)
- H3C 使用命令视图
- 森林图怎么分析_新疆森林消防总队特勤大队:“火焰蓝”备战春防,我们时刻准备着!...
- Centos7.6环境使用kubeadm部署kubernetes1.18.4
- VBS整人代码大合集
- python语言程序设计实践教程陈东实验八的答案_大学生C语言程序设计(第四版 谭洪强)实验8答案...
- 高中计算机学业水平测试知识点总结,高中生物学业水平测试知识点总结
- 基于simulink的微电网虚拟同步发电机vsg控制系统仿真
- 台式计算机怎么查是32位还是64位,Win7系统怎么看电脑是32位还是64位?
- 利用OpenCV读取大华网络摄像头
- SATA、SAS、SSD三种硬盘存储性能数据
- 【web项目】前端生日礼物--主页面篇
- 【Discuz】如何实现自动注册登录
- Linux Ubuntu使用3:桌面环境
- 营养计算器操作指南--快速入门
- 解决 Xshell 6 | xftp 6 强制更新无法打开