美文网首页
连接查询;外键

连接查询;外键

作者: Ancestor楠 | 来源:发表于2020-02-14 22:00 被阅读0次

连接查询

连接查询(join)分类:内连接、外连接、自然连接、交叉连接

使用方式:左表 join 右表

交叉连接(cross join)

无条件匹配,都成功

基本语法:左表 cross join 右表; -- 等价于:from 左表,右表;

内连接([inner] join)

基本语法:左表 [inner] join 右表 on 左表.字段=右表.字段;

on表示连接条件

匹配条件:满足条件才可以保留

内、外连接常用

外连接(outer join)

left join:左外连接(左连接),以左表为主表

right join:右外连接(右连接),以右表为主表

基本语法:左表 left/right join 右表 on 左表.字段=右表.字段;

自然连接(natural join)

自然内连接:左表 natural join 右表;

自然外连接:左表 natural left/right join 右表;

模拟自然连接:左表 left/right/inner join 右表 using(字段名);

外键

1、增加外键

创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)

在新增表之后增加外键:修改表结构,使用alter table 表名 add [constraint 外键名字] foreign key(外键字段) references 父表(主键字段);

修改外键&删除外键(不能修改,只能删除完,再添加)

alter table 表名 drop foreign key 外键名;

删除外键通过查看表的创建语句来体现

2、外键条件(2,3条重要)

      1)外键要存在,首先必须保证表的存储引擎是innodb

2)列类型必须与父表的主键类型完全一致

3)一张表中的外键名字不能重复

4)增加外键的字段数据已经存在,必须保证数据与父表主键要求对应

-- 更新父表记录

update my_class set id=5 where id=1; -- 外键约束失败:因为id=1的班级记录已经被学生引用

update my_class set id=5 where id=3; -- 可以:没有引用

外键约束失败 外键约束失败

 /3、外键约束(作用)

有三种约束(对父表的约束)模式

district:严格模式(默认的--父表不能更新或删除一个被子表引用的班)

cascade:级联模式(父表更新,子表也跟着更新)

set null:置空模式(删除时把子表置空)

语法:foreign key(外键字段) references 父表(主键字段) on delete 模式 on update 模式;

-- 创建外键:指定模式:删除置空,更新级联

create table my_foreign3(

id int primary key auto_increment,

name varchar(20) not null,

c_id int,

-- 增加外键

foreign key(c_id)

-- 引用表

references my_class(id)

-- 指定删除模式

on delete set null

-- 指定更新模式

on update cascade

)charset utf8;

-- 插入数据

insert into my_foreign3 values(null,'唐三',1),

(null,'小舞',1),

(null,'奥斯卡',1),

(null,'马红俊',2),

(null,'宁荣荣',2);

-- 解除my_foreign2表的外键(严格模式)

alter table my_foreign2 drop foreign key

student_class_1;

-- 更新父表主键

update my_class set id=3 where id=1;

-- 删除父表主键

delete from my_class where id=2;

相关文章

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • MySQL数据库学习day5

    回顾 连接查询:多张表连接到一起,不管记录数如何,字段数一定会增加 PHP操作mysql: 外键 外键:forei...

  • orm查询操作

    单表查询操作 外键的跨表查询 正向查询(在有外键字段的表向没有的表查询) 反向查询(没有外键的字段向有外键字段的表...

  • SQL多表查询高级应用

    SQL多表查询 多表连接示范 两张表t_user t_judge 给两张表设置外键约束查询内容 SQL多表查询 多...

  • Mysql多表查询

    Mysql多表查询,知识点包括: 笛卡尔积查询[1] 内连接[^2] 外连接(左外连接、右外连接)[^3] uni...

  • mysql-数据查询语句-多表

    连接查询 连接查询,是关系数据库中最主要的查询,包括等值查询、自然连接查询、非等值查询、自身连接查询、外连接查询和...

  • mysql---连接查询

    连接查询(多表查询)内连接外连接---左外连接---右外连接 前提条件:多张表之间要存在相关联的字段 内连接 特征...

  • mysql 连接查询

    在mysql中有外连接 内连接查询,其中外连接又分为左外连接和右外连接,下面是对这些连接查询进行演示. 在开始演示...

  • 数据库连接查询

    三种连接查询 内连接 左外连接、右外连接、全外连接 交叉连接 高级引用

网友评论

      本文标题:连接查询;外键

      本文链接:https://www.haomeiwen.com/subject/icrdfhtx.html