多表间的关系-一对多-多对多-一对一-外键约束 1. 表关系概述 现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。...我们管1的一方,叫主表或1表. 我们管多个一方,叫从表或多表. 通常要在多的一方添加一个字段,用于存放主表主键的值,我们管这个字段叫外键字段....一对多 一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品 一对多建表原则: 在从表(多方)创建一个字段,指向主表(一方)的主键.我们把这个字段称之为外键. 3....多对多 多对多(m:n) 例如:老师和学生,学生和课程,用户和角色 多对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。 4....外键约束 5.1 什么是外键约束 一张表中的某个字段引用另一个表的主键 主表:约束别人 副表/从表:使用别人的数据,被别人约束 5.2 创建外键 新建表时增加外键:[CONSTRAINT] [外键约束名称
阅读目录 一 多表联合查询 二 多表连接查询 三 复杂条件多表查询 四 子语句查询 五 其他方式查询 六 SQL逻辑查询语句执行顺序(重点) 七 外键约束 八 其他约束类型 九 表与表之间的关系...语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败. 4.默认值约束 关键字: DEFAULT create table t5( id int(10) not...,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充 九.表与表之间的关系 1.表关系分类: 总体可以分为三类: 一对一 、一对多(多对一) 、多对多 2.如何区分表与表之间是什么关系...有个巧妙的方法,在车辆的表中加个外键字段(人的编号)即可。 * (思路小结:’建两个表,一’方不动,’多’方添加一个外键字段)* ?...通过在从表的外键字段上添加唯一约束(unique)来实现一对一表关系. ?
外键的约束4种类型: 1.RESTRICT 2....null (要注意子表的外键列不能为not null) 约束类型详解 (4)建议:1.如果需要外键约束,最好创建表同时创建外键约束. 2.如果需要设置级联关系,删除时最好设置为 SET...,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充 表与表之间的联系 1.表关系分类: 总体可以分为三类: 一对一 、一对多(多对一) 、多对多 2.如何区分表与表之间是什么关系...#分析步骤: #多对一 /一对多 #1.站在左表的角度去看右表(情况一) 如果左表中的一条记录,对应右表中多条记录.那么他们的关系则为 一对多 关系.约束关系为:左表普通字段, 对应右表foreign...通过在从表的外键字段上添加唯一约束(unique)来实现一对一表关系.
注意这里一个表不可以有多个主键,都是可以有复合主键 如下: 1.4 FOREIGN KEY:外键约束: 外键用于关联其他表的主键或唯一键 语法: foreign key (本表要关联的字段) references...第一范式:表里的字段不可以再进行拆分 第二范式:再满足第一范式的基础上,不存在非关键字段对任意候选键的部分函数依赖 (简单来说就是非主键字段对任意主键,外键,唯一键的部分函数依赖) 小结:一个表没有复合主键就天然满足第二范式...第三范式:再满足第二范式的基础上,不存在非关键字段对任意候选键的传递依赖 第三范式可以解决数据冗余,更新异常,插入异常,删除异常等问题 2.设计时表之间的三大关系: 一...多对多:一个学生可以选多门课,一门课可以被多个学生选 学生表和课程表是多对多的关系,这里通过课程表(关系表)关联 三....多表查询是对多张表的数据取笛卡尔积。
多表操作 外键约束 添加外键 语法 注意 表与表之间的关系 子查询的缺陷 一对多的关系 一对多的建表原则 多对多的关系 多对多的建表原则 一对一的例子 一对一的建表原则 多表案例分析 多表查询...---替代级联删除 join语句中使用USING代替on---键值同名 union联合查询 union all可以查询出所有,不进行去重操作 内连接与外连接的区别 外键约束 作用:保证多表之间的数据完整性...这个时候就需要在多表之间添加外键约束 ---- 添加外键 语法 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(...主键字段名) 在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名...,分别作为外键指向多对多双方的主键 ---- 一对一的例子 一个公司只能有一个注册地址,一个注册地址也只能对应一个公司 一对一的建表原则 ---- 多表案例分析 建表: ---- 多表查询
等于val1返回res1,..否则返回default默认值 约束: 概念 约束是作用于表中字段上的规则,用于限制存储在表中的数据。...默认约束:DEFAULT 保存数据时,如果未指定该字段的值,则采用默认值 检查约束:CHECK 保证字段值满足某一个条件 外键约束:FOREIGN KEY 用来让两张表的数据之间建立连接,保证数据的一致性...和完整性 外键约束: 概念 外键用来让两张表中的数据之间建立连接,从而保证数据的一致性和完整性。...CASCADE ON DELETE CASCADE; 多表关系 概述 各个表结构之间相互存在联系有:一对多,多对多,一对一 一对多(多对一) 实现:在多的一方建立外键,指向一的一方的主键 举例:员工和部门...多对多 实现:建立第三张中间表,中间表至少包含两个外键,费别关联两方的主键 案例:学生于课程 一对一 实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE) 案例:用户与用户详细信息的关系
我们设置name是唯一的属性 即便刚才报错 ,插入失败, 但是已经向数据库申请到了主键4了。...因此后面再插入主键就是5 通过图形化界面创建表 三十四、约束-外键约束 这两张表只是逻辑上存在关联。并没有物理上关联。如果一号部门删了。但是员工表还关联了这么多1号部门的员工。...这就无法保证数据的一致性和完整性。 因此在创建表的时候,我们需要去进行外检约束。语法如下: 执行外检约束 SQL 之后 ,钥匙变蓝色。就说明已经是外键了。...因为存在这个外键关联 删除外键 三十五、约束-外键删除 更新行为 NO ACTION(no action)无行为 这是外键约束的默认行为 RESTRICT (restrickt...图形化界面 三十六、约束-小结 三十七、多表查询-多表关系介绍(多表查询) 多对对关系。
SQL 语法(DDL/DML/DQL/DCL)、函数、约束、多表查询、事务 # MySQL 基础 # SQL 语法 # 数据定义(DDL) 数据库操作 SHOW DATABASES; CREATE...外键约束: FOREIGN KEY # 外键约束语法 添加外键 CREATE TABLE 表名( 字段名 数据类型, ......SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值(Innodb 不支持) # 多表查询 多表关系 一对多:在多的一方设置外键,关联一的一方的主键 多对多:建立中间表,中间表包含两个外键...,关联两张表的主键 一对一:用于表结构拆分,在其中任何一方设置外键(UNIQUE),关联另一方的主键 多表查询 内连接 隐式: SELECT...FROM 表A,表B WHERE 条件......子查询:标量子查询、列子查询、行子查询、表子查询 # 事务 事务简介:事务是一组操作的集合,这组操作,要么全部执行成功,要么全部执行失败。
常用的操作符:=、、IN、NOT、IN 表子查询 子查询返回的结果是多行多列,这种子查询称为表子查询 常用操作符:IN 多表查询小结 多表关系: 一对一:用于表结构拆分,在其中任何一方设置外键(UNIQUE...),关联另一方 的主键 多对多:建立中间表,中间表包含两个外键,关联两张表的主键 一对多:在多的一方设置外键,关联一的一方的主键 多表查询: 内连接: 隐式:SELECT 字段列表 FROM 表...,即这些操作要么同 时成功,要么同时失败。...特点 DML操作遵循ACID模型,支持事务; 行级锁,提高并发访问性能; 支持外键FOREIGN KEY约束,保证数据的完整性和正确性; 文件 xxx.ibd: xxx代表的是表名,innoDB...*MyISAM:如果应用是一读操作和插入操作为主,只有很少的更新和删除操作, 并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常 合适的。
新表名; 二、DML 定义:指数据操作语言,用来对数据库中表的数据进行记录与更新 插入:insert -- 插入全部字段 -- 写数据的时候,有多少列就有多少值 insert into 表名 values...,那么这个列或列的组合必须是主表的主键或候选键 外键中列的数目必须和主表的主键中的列的数目相同 外键中列的数据类型必须和主表的主键中的列的数据类型相同 方式一:在创建表的时候设置外键约束 语法: constraint...*当前页数) 五、多表查询 多表操作:对两个或两个以上的表进行操作 多表之间的关系:MySQL中多表之间的关系可以概括为:一对一,一对多,多对一,多对多 一对一关系: 实现:在任意表中添加唯一外键,指向另一方主键...,确保一对一关系(少见,遇见了就合并) 一对多/多对一关系: 例如:部门和员工 一个部门有多个员工,一个员工只能对应一个部门 实现:在多的一方建立外键,指向一的一方的主键 多对多关系: 例如:学生和课程...实现:需要借助第三张中间表,中间表至少包含两个字段,将多对多的关系拆成一对多的关系,中间表至少有两个外键,分别指向原来两个表的主键 多表联合查询 介绍:多表查询就是同时查询两个或两个以上的表,因为有时候用户在查看数据的时候
且这些表的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。 2....删除外键: ALTER TABLE product DROP FOREIGN KEY product_fk 删除之后,product表 就没有外键约束了 常见操作 观察下面语句的执行效果 #1 向分类表中添加数据...一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键....多对多关系: 常见实例:学生和课程、用户和角色 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键....一对一关系:(了解) 在实际的开发中应用不多.因为一对一可以创建成一张表. 两种建表原则: 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique。
1.了解外键 2.了解关联关系 3.了解各种连接查询多表的数据 4.了解子查询,会使用各种关键字以及比较运算符查询多表中的数据 外键 外键是指引用另一个表中的一列或者多列,被引用的列应该具有主键约束或者唯一性约束...)ENGINE=InnoDB; //添加外键约束 alter table student add constraint FK_ID foreign key(cid) references class(...id); //删除外键约束 alter table student drop foreign key FK_ID; 操作关联表 //数据表有三种关联关系,多对一、多对多、一对一 //学生(student...)和班级(class)是多对一关系,添加数据 //首选添加外键约束 alter table student add constraint FK_ID foreign key(cid) references...//删除存储过程 drop procedure proc1; 视图 如何创建视图 查看、修改、更新、删除视图 视图的基本操作 //在单表上创建视图,重新创建student表,插入数据 create table
单表约束: 主键约束: primary key //一般后边还会写上auto_increment 唯一约束: unique 非空约束: not null* 多表约束:* 外键约束: foreign...key多表的分析和设计 关系分类:一对多的关系:一个部门可以有多个员工, 一个员工只能属于某一个部门.....一对一的关系: 一个公司只能对应一个注册地址, 一个注册地址只能对应一个公司.多表建表原则一对多的建表原则:* 在"多"的一方创建一个字段, 作为外键, 指向"一"的一方的主键.多对多的建表原则:*...需要创建第三张表(中间表), 在中间表中至少需要有两个字段, 分别作为外键指向多对多双方的主键.一对一的建表原则:* 唯一外键对应.多表查询连接查询交叉连接: //了解 select * from...all: 必须比给定的所有值都要大(小).事务 概述: 事务指的是逻辑上的一组操作, 组成这组操作的各个逻辑单元要么全部都成功, 要么全失败.
外键约束 添加外键约束 外键指的是-一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束, 从而保证数据的一-致性 和完整性。 ➢被引用的表称为主表。...ON DELETE与ON UPDATE用于设置主表中的数据被删除或修改时,从表对应数据的处理办法。 ? 关联表操作 实体之间具有一对一、一对多和多对多的联系。...➢具有关联的表中的数据,可以通过连接查询的方式获取,并且在没有添加外键约束时,关联表中的数据插入、更新和删除操作互不影响。...➢对于添加了外键约束的关联表而言,数据的插入、更新和删除操作就会受到一定的约束。 一个具有外键约束的丛表在插入数据时,外键字段的值会受主表数据的约束,保证从表插入的数据必须符合约束规范的要求。...例如,从表外键字段不能插入主表中不存在的数据。
DEFAULT FOREIGN KEY(外键约束) 针对两个表之间,产生的约束。...外键约束的含义,就是要求student里的classId 务必要在class表的id列中存在。 学生表中的数据要依赖班级表的数据。班级表的数据要对学生表产生约束力。...此处起到约束作用的班级,就叫做“父表”(parent),被约束的这个表,就叫做子表(child)。 外键约束,是父表对 子表做了约束,但与此同时。子表也在反过来约束了父表。...一对多 4.多对多) 根据上述内容,套入到固定的“公式”中,然后就可以得到表。 一对一关系 在教务系统中,有一个实体,学生,还有一个实体,账号。...联合查询(多表查询) 实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积: 笛卡尔积是通过排列组合来的。 笛卡尔积得到一个更大的表。
切换数据库(当前选中) use 数据库名字 表的crud操作(表结构的操作) 创建表 create table 表名(列名 列的类型(长度) 约束) 列的类型...外键约束:foreign key alter table 表名 add foreign key(列名) references 表名2(列名) 建库原则 通常情况下,一个项目|...应用建一个数据库 多表之间的建表原则 一对多:分类 和 商品 建表原则:在多的一方添加一个外键指向(reference)一的一方。...多对多:学生 和 课程 建表原则:建立一张中间表,将多对多的关系拆分成一对多的关系,中间表至少要有两个外键,分别指向原两张表。...多表查询应用 交叉连接 select * from 表名A,表名B; 外连接 用于某元组外键不相对应,需要显示所有元组。
目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...一对多 一个部门可以有多名员工,但一个员工只能归于一个部门 在多的一方建立外外键指向一的一方 多对多 下表为多对多关系,由下表可知多对多关系的中间表至少需要2个外键...MySQL外键约束 创建外键 格式: constraint 外键名> foreign key 字段名[,字段名2,…] references 主键列1 [,主键列2,…] 方式一 创建表时添加外键...-- 注意必须先给主表添加数据 添加从表数据 -- 注意给从表添加数据时,外键列的值不能随便写,必须依赖主表的主键列 删除 主表的数据被从表依赖时,不能删除,否则可以删除 从表的数据可以随便删除 多表联合查询...返回的数据类型 单行单列:返回的是一个具体列的内容,可以理解为一个单值数据; 单行多列:返回一行数据中多个列的内容; 多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围; 多行多列:查询返回的结果是一张临时表
目录MySQL多表关系一对一一对多多对多MySQL外键约束创建外键数据插入删除多表联合查询交叉连接查询内连接查询外连接查询子查询关键字自关联MySQL多表关系MySQL表与表之间的三种关系一对多关系...:最常见的关系:学生对班级 , 员工对部门多对多关系:学生与课程 , 用户与角色一对一关系:使用较少,因为一对一关系可以合成为一张表一对一 一个学生对应一个身份证号码 一对多一个部门可以有多名员工,但一个员工只能归于一个部门...在多的一方建立外外键指向一的一方编辑多对多 下表为多对多关系,由下表可知多对多关系的中间表至少需要2个外键编辑 MySQL外键约束创建外键 格式: constraint 外键名> foreign...-- 注意必须先给主表添加数据添加从表数据 -- 注意给从表添加数据时,外键列的值不能随便写,必须依赖主表的主键列删除主表的数据被从表依赖时,不能删除,否则可以删除从表的数据可以随便删除多表联合查询编辑...返回的数据类型单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;单行多列:返回一行数据中多个列的内容;多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;多行多列:查询返回的结果是一张临时表
,先删除映射表中的学号,再删除主键(学生)中的学号 首先认识数据之间的关系: 学号-学生–玉兰卡-卡号 玉兰卡的学号是外码,学生的学号是主码 多对多的对应关系,比如学生对老师,老师对学生,在这个关系中间弄个中间表...-叫映射表 在这个例子中,映射表三个属性:编号,学号,教工号 映射表里面挑的属性,主键和外键,主键独一无二区分(编号),学号教工号这样的叫外键 上面的关系:ER图, 实体:矩形 虚体:椭圆形 #注意写表的语法...字段的约束【unique唯一,not null,default(默认值)】 #3. ‘’ 单引号表示字符串 ! ··是反向单引号,表示主键名字的 #玉兰卡和学生一一对应,如何写约束关系?...set foreign_key_checks = false #暂停外键约束 truncate student #这样再清除就不会因为可能的外键约束清除失败。...set foreign_key_checks = true #清除完了再启动,要不然之前写的外键都没用了。 #这种编程叫做临界区编程,核心就是进来的时候设置条件,等操作完了再回复。
领取专属 10元无门槛券
手把手带您无忧上云