mysql join和视图区别_JOIN与视图

inner join与natural join 区别:

inner join 需要指定连接条件,而natural join 自动判断连接条件不需要指定。

self join:

一部分self join可以用别的语句替代,但使用self join 在面对大量数据时可以实现语句的自动全面执行。

但self join 还可以解决一些特定的问题。

natura join没有判断语句。

在看别的资料时有说 自然联结分为 内自然连接(natural join)和外自然连接(natural left join)(natural right join)

outer join 和 外自然连接什么关系?

视图(可更新条件)

这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行。 另外,我们还可以使用delete语句通过视图删除底层表的行。但是,要创建可更新视图,定义视图的select语句不能包含以下任何元素:

聚合函数,如:min,max,sum,avg,count等。

DISTINCT子句

GROUP BY子句

HAVING子句

左连接或外连接。

UNION或UNION ALL子句

SELECT子句中的子查询或引用该表的where子句中的子查询出现在FROM子句中。

引用FROM子句中的不可更新视图

仅引用文字值

对基表的任何列的多次引用

————————————————

特别要注意not null列的限制

例如

--创建一个表

create table hotels

(guest_id varchar(45) not null,

guest_name varchar(20) not nll,

star_rating int not null,

primary key(guest_id)

);

--创建基于上述表的视图1

create view hotel_view1

as

select guest_id,guest_name,star_rating

from hotels;

--向视图1中插入数据,可工作

insert into hotel_view1

values(100000,jim,4);

--创建视图2

create view hotel_view2

as

select guest_name,star_rating

from hotels;

--向视图2中插入数据

insert into hotel_view2

values(tom,5);

--出现error

inner join与natural join 区别: inner join 需要指定连接条件,而natural join 自动判断连接条件不需要指定。 self join: 一部分self join可以用别的语句替代,但使用self join 在面对大量数据时可以实现语句的自动全面执行。 但self join 还可以解决一些特定的问题。 natura join没有判断语句。 在看别的资料时有说 自然联结分为 内自然连接(natural join)和外自然连接(natural left join)(natural right join) outer join 和 外自然连接什么关系? 视图(可更新条件) 这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行。 另外,我们还可以使用delete语句通过视图删除底层表的行。但是,要创建可更新视图,定义视图的select语句不能包含以下任何元素: 聚合函数,如:min,max,sum,avg,count等。 DISTINCT子句 GROUP BY子句 HAVING子句 左连接或外连接。 UNION或UNION ALL子句 SELECT子句中的子查询或引用该表的where子句中的子查询出现在FROM子句中。 引用FROM子句中的不可更新视图 仅引用文字值 对基表的任何列的多次引用 ———————————————— 特别要注意not null列的限制 例如 --创建一个表 create table hotels (guest_id varchar(45) not null, guest_name varchar(20) not nll, star_rating int not null, primary key(guest_id) ); --创建基于上述表的视图1 create view hotel_view1 as select guest_id,guest_name,star_rating from hotels; --向视图1中插入数据,可工作 insert into hotel_view1 values(100000,jim,4); --创建视图2 create view hotel_view2 as select guest_name,star_rating from hotels; --向视图2中插入数据 insert into hotel_view2 values(tom,5); --出现error
经验分享 程序员 微信小程序 职场和发展