数据库的子查询连接查询

Posted 0101无限的空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库的子查询连接查询相关的知识,希望对你有一定的参考价值。

新建两个表,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;

 

总结:外连接

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

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

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

用法:什么时候用呢?

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

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

 

自然连接

内连接:为空

自然外连接:

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

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

右外连接同理,就不多说

使用方式:

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

 

以上是关于数据库的子查询连接查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL多表链接查询、嵌入SELECT语句的子查询技术

MySQL多表查询

大查询:使用函数结果连接(错误:连接谓词中的子查询应该只依赖于一个连接端。)

推荐学Java——数据表高级操作

推荐学Java——数据表高级操作

是否可以使用 PHP+ODBC 发送包含带有内部连接的子查询的查询?