新建两个表,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;
总结:外连接
右外连接:以右边为基准如果没有对应的自动补为空
左外连接:以左边为基准如果右边的超出了,将不显示
内连接 :不以谁为基准左右都显示
用法:什么时候用呢?
当表的主外键相关联 注意:并没有外键和外键相类是的功能
当你想查询主表和从表相对应的时候查询
自然连接
内连接:为空
自然外连接:
自然左外连接: 以你写的左表为基准 ,不显示右表 注意
如果左表没有的字段 ,右表有,会显示右表的字段但都会赋值为空
右外连接同理,就不多说
使用方式:
当你想查看左右表字段的异同可以用这个自然外连接。