子查询,联结查询,组合查询的用法以及异同

1. 子查询

子查询:允许把一个查询嵌套在另一个查询当中的查询。子查询先从内部查询开始,在到外部查询,依次从里到位的顺序对代码可读性和可理解性较好,但性能比较差。

select max(score) from score where subject_id=(select id from subject where subject='语文');
//80
2. 联结查询

联结是一种机制,用来在一条SELECT语句中关联表,可以联结多个表返回一组输出。
MySQL可以联结多个表,但是联结处理有可能非常耗费资源,因此不要联结不必要的表,联结的表越多,性能下降越厉害。
1.内联结
又叫等值联结,基于两个表之间的相等测试,查询结果是左右连接的交集。
语法:

SELECT * FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.column = t2.column;
select score as 数学 from score 
inner join subject on score.subject_id=subject.id 
inner join student on score.student_id=student.id 
where student.name='张三' AND subject.subject='数学';//70

2.外联结
1) 左外联结
以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=左表原数据数
语法:

SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.column = t2.column;

例:

SELECT * FROM student LEFT JOIN score ON student.id = score.student_id;
image.png

2) 右外联结
以右表为准,去左表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=右表原数据数
语法:

SELECT * FROM table1 AS t1 RIGHT JOIN table2 AS t2 ON t1.column = t2.column;

例:

SELECT * FROM score RIGHT JOIN  student ON student.id = score.student_id;
image.png

3) 交叉联结
从一张表中循环取出每一条记录, 每条记录都去另外一张表进行匹配: 匹配一定保留(没有条件匹配), 而连接本身字段就会增加(保留),最终形成的结果叫做: 笛卡尔积。
语法:

SELECT * FROM table1 AS t1 CROSS JOIN table2 AS t2;

4) 自联结
有时需要在同一张表中进行联结条件的匹配或字段比较,可以使用自联结。
语法:

SELECT * FROM table t1, table t2 WHERE t1.column1=t2.column2;

例:

SELECT * FROM student CROSS JOIN score;
image.png
3. 组合查询

执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询。
语法:

SELECT * FROM table1 WHERE condition 
UNION
SELECT * FROM table2 WHERE condition;

UNION中的每个查询必须包含相同的列、表达式或聚集函数;UNION默认从查询结果集中自动去除重复的行,如果 想返回所有匹配行,可使用UNION ALL;用UNION查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT之后。

  • 有两种基本情况,其中需要使用组合查询:
    在单个查询中,从不同表中返回类似结构的数据。
    *对单个表执行多个查询,按照单个查询返回数据。

例:

select avg(score) from score where subject_id=(select id from subject where subject='语文')
union
select avg(score) from score ;
//70
//67.625
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • 表 存储在表中的数据是同一种类型的数据或清单。 数据库中的表有为一个名字来标识自己。 表具有一些特性,这些特性定义...
    蛐蛐囍阅读 1,314评论 0 7
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,728评论 0 44
  • 早餐:今天是我给自己定的每周早餐放纵日-汤面一碗!外加一个蛋白。 午餐:虾仁吃光光,茭白吃光光,忍住了没吃榨菜,毛...
    Cherry却是颗榛子阅读 78评论 4 0
  • 系统,是一个体系运作的根本。我们不是直接的生产者,却享受着城市生活的各种便利,都是因为我们生活在诸多系统当中,我们...
    TFHS阅读 200评论 0 0
  • 那年九月二十六,身份证上的日子,在那一个秋夜,没有红光盈屋,没有青龙盘柱,这世上从此多了一颗尘埃。 儿子昨晚打电话...
    映卿阅读 398评论 0 0