——————·今天距2020年41天·——————
这是ITester软件测试小栈第81次推文
SELECT
子查询
子查询( subquery)即嵌套查询 ,嵌套在其他查询中的查询。
查询粉丝数大于400的用户的作者QQ号
select name,au_id,qq from Author where au_id in(select au_id from Article where fans>400);
统计每类文章下的文章数目
select type,author,(select count(*) from ArticleDetail where ArticleDetail.ar_id=Article.ar_id) as '文章数目' from Article;
SELECT
多表查询
查询每篇文章的阅读次数,所属类型,作者
select ArticleDetail.title,ArticleDetail.reade_times,Article.type,Article.author
from ArticleDetail,Article
where ArticleDetail.ar_id=Article.ar_id ;
查询文章粉丝数大于400的所有文章类型及作者姓名,QQ
select Ar.type,Au.name,Au.qq,Ar.fans
from Article Ar,Author Au
where Ar.au_id=Au.au_id
and Ar.fans>400
order by fans desc;
内联结:inner join... on...
左联结:left join... on...
右联结:rigth join... on...
读取ArticleDetail表中所有文章(title)在Article表中对应的类型,作者
select ArticleDetail.title,ArticleDetail.reade_times,Article.type,Article.author,Article.update_date
from ArticleDetail
inner join Article
on ArticleDetail.ar_id=Article.ar_id ;
#LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
#ArticleDetail为左表,Article为右表
select ArticleDetail.title,ArticleDetail.reade_times,Article.type,Article.author,Article.update_date
from ArticleDetail
left join Article
on ArticleDetail.ar_id=Article.ar_id ;
#right JOIN
select ArticleDetail.title,ArticleDetail.reade_times,Article.type,Article.author,Article.update_date
from ArticleDetail
right join Article
on ArticleDetail.ar_id=Article.ar_id ;
查询点赞量为5的文章标题,作者微信
select ArticleDetail.title,ArticleDetail.praise_times,Author.name,Author.wechat
from ArticleDetail,Article,Author
where ArticleDetail.ar_id=Article.ar_id
and Article.au_id=Author.au_id
and ArticleDetail.praise_times=5;
#注:尽量不要联结不必要的表,联结的表越多,性能下降越厉害
查询阅读次数大于400的文章标题,作者QQ号(使用表别名)
select AD.title,AD.reade_times,Au.name,Au.qq
from ArticleDetail AD,Article Ar ,Author Au
where AD.ar_id=Ar.ar_id
and Ar.au_id=Au.au_id
and AD.reade_times>400;
自联结语法:
SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;
UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)
UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
列出Author表中和Article中所有不同的作者名:每个列出现一次
select name from Author
union
select author from Article order by name;
列出Author表中和Article中所有的作者名:每个列出现多次
select name from Author
union all
select author from Article order by name;
#通过where进一步检索
select name,qq from Author where name='coco'
union all
select author,qq_group from Article where author='coco'
order by name;
查询文章评论次数不小于10且赞赏次数为2或5的文章信息
#一般写法
select ar_id,title,comments_times,praise_times from ArticleDetail where comments_times>=10 or praise_times in (5,8);
#自联结写法
select ar_id,title,comments_times,praise_times
from ArticleDetail
where comments_times>=10
union
select ar_id,title,comments_times,praise_times
from ArticleDetail
where praise_times in (5,8);
UNION ALL包含或取消重复的行
select ar_id,title,comments_times,praise_times
from ArticleDetail
where comments_times>10
union all
select ar_id,title,comments_times,praise_times
from ArticleDetail
where praise_times in (5,8);
对组合查询结果排序
select ar_id,title,comments_times,praise_times
from ArticleDetail
where comments_times>=10
union
select ar_id,title,comments_times,praise_times
from ArticleDetail
where praise_times in (5,8) order by ar_id desc,title;
附:Author表
Article表
ArticleDetail表
最后是今天的分享:Author、Article、ArticleDetail三张表一键建表SQL语句
ITester软件测试小栈今日分享
获取内容
Author、Article、ArticleDetail三张表一键建表SQL语句
领取方式
微信公众号后台回复:MySQL表
有图有真相
以上
That's all
下一篇介绍多表查询
敬请期待
ITester软件测试小栈
往期内容宠幸
打开PyCharm永久激活的这两个锦囊,再也不用担心写代码的时候让我付费了!
QQ空间面试题放送,速度教科书式扑街补救offer!
金九银十加薪季,测试题预热一波。
测试面试题集-测试用例设计:登录、购物车、QQ收藏表情、转账、充值、提现
Selenium系列文章汇总
MySQL之数据库基本操作语句
MySQL之创建表以及数据库增删改操作
MySQL之数据库基本查询语句
快来星标 置顶 关注我
后台回复资源取干货
想要获取相关资料和软件 ?
Q群:727998947