mysql中外连接、内连接以及left join和right join各有什么用?

mysql中外连接、内连接以及left join和right join各有什么用?,第1张

mysql连接分成:内连接、左外连接left join和右外连接right join!

由于连接的记录,可能是一方不存在的!(两条记录中,可能某条不存在)

内连接:只有两个表相匹配的行才能在结果集中出现。也就是说,当某个表中多出一条记录的时候,这条记录与另一个表不能相互匹配的时候,不匹配的记录就不会出现在结果中!

外连接:左外连接、右外连接

注意好左外与右外的区别:

区别在于,那个表的记录(指的是连接失败的记录),会最终出现在连接结果内?

什么是左表和右表?

join关键字前面的(左边的)左表,join关键字后边的(右边的)右表!

左外:如果出现左表记录连接不上右表记录的,左表记录会出现正在最终的连接结果内!而右表记录相应设置成NULL。

右外:如果出现右表记录连接不上左表记录的,右表记录会出现正在最终的连接结果内!而左表记录相应设置成NULL。

总结:内连接,外连接差别不大,只是外连接会将没有连接成功的记录,也出现最终的连接的结果内,而内连接,连接的结果只有连接成功的(两条记录都存在的)

因此,可以交换表的位置,达到使用left与right join 混用的的目的!

问题:

统计每个班级内,学生的数量!,在班级列表内:

班级名,教室,学生数量

注意,外连接应该有条件!

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

全外连接:左外连接 union 右外连接。

示例:

数据库版本:Oracle

表TESTA,TESTB,TESTC,各有A, B两列。

A.内连接

内连接,即最常见的等值连接,例:

SELECT * 

FROM TESTA,TESTB

WHERE TESTA.A=TESTB.A

结果:

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT *

FROM TESTA 

LEFT OUTER JOIN TESTB 

ON TESTA.A=TESTB.A

结果:

三个表做左外链接:

SELECT *

FROM TESTA 

LEFT OUTER JOIN TESTB 

ON TESTA.A=TESTB.A

LEFT OUTER JOIN TESTC

ON TESTA.A=TESTC.A

结果:

2. 右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT *

FROM TESTA 

RIGHT OUTER JOIN TESTB 

ON TESTA.A=TESTB.A

3.全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。

SELECT * 

FROM TESTA 

FULL OUTER JOIN TESTB

ON TESTA.A=TESTB.A

结果:

使用“mysql -uroot -proot”命令可以连接到本地的mysql服务。

使用“use mysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。

使用“GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION”命令可以更改远程连接的设置。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION1

使用“flush privileges”命令刷新刚才修改的权限,使其生效。

使用“select host,user from user”查看修改是否成功。

1、开启远程访问: 

use mysql 

update user set host = “%” where user = “root” 

flush privileges

2、 添加用户 

use mysql 

insert into user(host, user, password) values(“%”, “root”, password(“yourpassword”))

grant all privileges on . to ‘root’@’%’ with grant option #赋予任何主机访问数据库权限 

flush privileges

3、关闭远程访问: 

use mysql 

update user set host = “localhost” where user = “root” and host= “%” 

flush privileges

4、查看用户权限: 

use information_schema 

select * from user_privileges

5、查看当前mysql用户: 

use mysql 

select user, host from user

6、更新用户: 

update mysql.user set password=password(‘新密码’) where User=”phplamp” and Host=”localhost” 

flush privileges

7、删除用户: 

DELETE FROM user WHERE User=”phplamp” and Host=”localhost” 

flush privileges


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7343078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存