首页 > 代码库 > 数据库的子查询、连接查询

数据库的子查询、连接查询

新建两个表,teacher student

create table teacher (

id int primary key auto_increment,

name varchar(20)  not null default ‘t‘

)engine innodb character set utf8;

create table student (

id int primary key auto_increment,

name varchar(20) not null default ‘t‘,

id_teacher int 

)engine innodb character set utf8;

insert into teacher values(1,‘huangyuanming‘),(2,‘mingbangming‘),(4,‘nihao‘),(3,‘buhao‘);

insert into student values(1,‘ndaf‘,1),(2,‘ddf‘,1),(3,‘faf‘,2),(4,‘dda‘,2),(5,‘ga‘,3);

查询外键角标最大的是多少

select max(id) from student;

查询学生 外键角标最大的详细信息(有点像嵌套)

select * from student where id=(select max(id) from student);

 

连接查询

连接:外连接和自然连接

外连接又分左外连接和右外连接

基于上面两个表

建立查询

基本语法

左外连接:select +你想要查询的字段+from student(表) left outer join teacher on +条件

select  student.name,teacher.name from student left outer join teacher on student.id_teacher=teacher.id;

右外连接将left outer 改变成right outer 就可以了

 

内连接将left out 改变成 inner就可以了

自然连接:分自然内连接和自然外连接

自然外连接分自然左外连接和自然右外连接

具体的查询语句如

自然左外连接

select * from teacher natural left join student;

内连接

select * from teacher natural join student;

 

总结:外连接

右外连接:以右边为基准如果没有对应的自动补为空

左外连接:以左边为基准如果右边的超出了,将不显示

内连接 :不以谁为基准左右都显示

用法:什么时候用呢?

当表的主外键相关联 注意:并没有外键和外键相类是的功能

当你想查询主表和从表相对应的时候查询

 

自然连接

内连接:为空

自然外连接:

自然左外连接: 以你写的左表为基准 ,不显示右表 注意 

如果左表没有的字段 ,右表有,会显示右表的字段但都会赋值为空

右外连接同理,就不多说

使用方式:

当你想查看左右表字段的异同可以用这个自然外连接。

 

数据库的子查询、连接查询