Linux中MySQL数据库的使用⑤-----多表查询、视图表

一、多表查询

UNION联合查询

UNION操作符用于合并两个或多个SELECT语句的结果集
要求:
1.两边select语句的字段数必须一样
2.两边可以具有不同数据类型的字段
3.字段名默认按照左边的表来设置
4.用法:

select column_name(s) from table1 union select column_name(s) from table2;
INNER JOIN:内连接

INNER JOIN关键字在表中存在至少一个匹配时返回行。

select student.id, student.name, student.
-> address, score.math, score.english from s
-> tudent inner join score on student.id=sco
-> re.id;
LEFT JOIN:左连接

LEFT JOIN关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为NULL。

select column_name(s) from table1 left join table2 on table1.column_name=table2.colum_name;

select student.id, student.name, student.
-> address, score.math, score.english from s
-> tudent left join score on student.id=scor
-> e.id;

在这里插入图片描述

RIGHT JOIN:右连接

RIGHT JOIN关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为NULL。

select column_name(s) from table1 right join table2 on table1.column_name=table2.colum_name;

select student.id, student.name, student.
-> address, score.math, score.english from s
-> tudent right join score on student.id=sco
-> re.id;

在这里插入图片描述

子查询

查询的语句中还有一个查询

select name from stuent where id in (select id from score where math > 10);

二、视图表

语法:create view 视图名 as 查询语句;
视图表的特点

  • 视图是数据的特定子集,是从其他表里提取出数据而形成的虚拟表,或者说临时表。
  • 创建视图表依赖一个查询。
  • 视图是永远不会自己消失的除非手动删除。
  • 视图有时会对提高效率有帮助。临时表不会对性能有帮助,是资源消耗者。
  • 视图一般随该数据库存放在一起,临时表永远都是在trmpdb里的。
  • 视图适合多表连接浏览时使用;不适合增删改查,这样可以提高执行效率。
  • 一般视图表的名称以V_为前缀,用来与正常表进行区分。
  • 对原表的修改会影响到视图中的数据。对视图的修改也会影响到原表。

视图表是否能被修改,依赖于创建视图表时的算法值:
ALGORITHM有三个可选值:UNDEFINED,MERGE,TEMPTABLE。
默认值是undefined,效果是允许修改;merge和undefined效果一致;temptable是不允许修改。
只需在创建视图表时加上ALGORITHM=temptable就可以禁止修改视图表。

create ALGORITHM=temptable view 视图名 as 查询语句;

创建一个视图表

create view v_exam as select student.*, m
-> ath, english from student left join score
->  on student.id=score.id;

select * from v_exam;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43670190/article/details/108603792