浅谈MySQL连接查询与外键
来源:互联网 发布:中电科大数据研究院 编辑:程序博客网 时间:2024/05/31 11:04
连接查询是同时查询多张表,通过多张表之间的关系得到最终的结果。连接查询又分成内连接、外链接和自然连接。
内连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配;匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。
注意内连接可以没有on之后的条件,此时查询的结果是笛卡尔积。
外连接:以某张表为主表,取出主表中的所有记录,然后每一条记录都与另外一张表进行连接。主表中的结果将全部保留,从表中内匹配的结果保留,不能匹配的结果都将置为null。
外连接分成两种,左外连接(left join)和右外连接(right join)
自然连接:自动匹配连接条件,系统将以字段名字作为匹配模式(同名字段作为条件)。自然连接分成自然内连接和自然外连接。
-- 自然内连接select * from s_user natural join s_orderform;-- 自然左外连接select * from s_user natural left join s_orderform;--自然右外连接select * from s_user natural right join s_orderform;
使用内连接和外连接来模拟自然连接:
左表 left/right join 右表 using(字段名);
MySQL中增加外键(两种方式):
方式一,在创建表的同时指定外键
-- 创建父表create table my_class(id int primary key auto_increment,c_name varchar(20) not null,room varchar(20))charset utf8;--引用外键创建表create table my_foreign1(id int primary key auto_increment,name varchar(20) not null comment '学生姓名',c_id int comment '班级id',foreign key(c_id) references my_class(id))charset utf8;
方式二:在创建完表之后增加外键:
语法:alter table 表名 add (constraint 外键名字) foreign key(外键字段) references 父表(主键字段);
create table my_foreign2(id int primary key auto_increment,name varchar(20) not null comment '学生姓名',c_id int comment '班级id')charset utf8;alter table my_foreign2 add constraint student_class foreign key(c_id) references my_class(id);
删除外键:
alter table 表名 drop foreign key 外键名字
alter table my_foreign1 drop foreign key my_foreign1_ibfk_1;
注意:
要使外键创建成功,首先要保证表的存储引擎是innodb(否则即使创建成功也不会有效果)。
注意外键的列类型必须和父表的主键列类型相一致。
外键有三种模式:
District:严格模式(默认的),父表不能更新或删除一个字表已经引用的记录。
cascade:级联模式,父表删除被引用的字段同时字表也会跟着删除引用的字段。
set sull:置空模式,父表删除被引用的字段同时字表会将引用的字段置为空。
通常是将更新的时候模式设置为cascade,删除的时候将模式设置为set null;
指定模式的语法:
foreign key(外键字段) references 父表(主键字段) on delete set null update cascade;
- 浅谈MySQL连接查询与外键
- mysql 子查询与连接
- MySQL子查询与连接
- mysql之子查询与连接
- MYSQL子查询与连接
- mysql连接设置与查询
- MySQL子查询与连接
- 浅谈Oracle与Mysql分页查询比较!!!!
- 【Mysql】利用内连接与嵌套查询实现多表查询,主键、外键的基本概念
- MySQL的子查询与连接查询
- mysql连接查询 内连接查询 外连接查询
- 浅谈连接查询
- 浅谈连接查询
- MySQL-99语法:外连接与内连接-(左内连接多表和查询)
- (5)Mysql子查询与连接
- MySQL day4---子查询与连接
- 27、MySQL-外连接查询
- mysql 外连接查询替代
- android画图并实现撤销功能
- ubuntu 14.04 开发环境配置
- MySql-5.7.17 -win32的安装配置
- 【Python】旋转打印各种矩形
- Android中的事件传递机制学习
- 浅谈MySQL连接查询与外键
- linux(ubuntu)编译busybox遇到的问题处理办法
- 机器学习
- [大学课程_经管文史类]财务_会计_审计_视频教程目录
- MarkdownSimpleWorld笔记
- 通过源安装的tomcat7开启与关闭
- 机器学习实战笔记(1)——k-近邻算法
- Misc(2)
- UIScrollView