首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySql---外键复习

---- 主表和从表 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。...最后一个修改解释: 例如: 部门表id为3的部门下面有员工,向把部门id的值从3改到4 1.先修改副表,先把员工表外键id=3的员工先挂到其他部门下面,解除部门表id=3和员工表外键id=3的关系 2...,主键id依然会自增 ---- 想要删除父表中编号为1的部门,就必须先将该部门下的所有员工删除 ---- 级联操作 当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表...但是,我们希望直接修改或删除主表数据,从而影响副表数据,如删除部门表的某个部门,直接自动删除员工表中被删除部门对于的所有员工 这就是级联操作 ---- 格式 在定义外键的时候追加以下内容: 级联修改:...是否被自动删除 #删除部门表中部门编号为1的部门 DELETE FROM depart WHERE id=3; ----

5.2K30

plsql 触发器教程-当表1的某条数据更新时,表2的某些数据也自动更新

触发器-update 需求:一张表的某个字段跟随另一张表的某个字段的值更新而更新 2张表 test001表 ? test002表: ?...新建触发器,当更新test001中的D为某个值x时,test002中的D(不一定是D,也可以是C)也变成x 例如:update test001 t1 set D='7'where t1.A='1';...当我手动更新test001表中 a字段为1的那条记录 ,把d更新为7时,那么要使test002表中a字段也为1的那条记录,自动更新为7, 那么触发器可以这样写: create or replace...:new.字段表示的是在执行完某个更新操作后的那条数据记录,如果这里没有使用:new.字段而是使用 test001的话,则会报错: ?...t1.a =t2.a); end test02Tr; 最后,测试: update test001 t1 set D='7'where t1.A='1'; 执行完之后,2张表的D字段的值都是7 ?

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL数据库基础:约束

    我的主页:MySQL 1. 约束的概述 约束是作用于表中字段的规则,用于限制存储在表中的数据 目的:保证数据库中数据的正确性,有效性和完整性 2....: 设置自增类型,表示在当前表的上一条记录的基本上加1 之后再进行添加数据,并且尝试向主键中添加一个null值 在上面的全列插入写入数据时,不具体指定主键列的值,用null代替,会自动生成id,虽然说...,主键是非空且唯一的,但由于设置了自增类型,所以当添加为null时,数据库会根据自增原则,自动生成 id 2.4.2 指定列插入: 指定列插入时,也会自动生成 id ,作为数据行的主键 一个表中只能有一个主键...此时创建的两张表没有任何的主外键关系,所以说插入一条不存在的班级编号在学生表里也是可以添加成功的 这时设置class表的id 为主键,student表的 class_id为id的外键 create...id存在的值时,就可以正常插入 2.5.2 删除 子表中的数据的删除没有限制,但是删除主表中的数据时,需要考虑是否子表中还存在对主表的依赖,下面来演示一个例子: -- 删除主表数据 delete from

    10810

    MySQL表的约束

    主键;主键所在的列通常是整数类型,比如学号,编号等具有唯一性质的数据。 1.唯一主键 创建表时约束某一字段为主键。...删除主键约束 这样,插入的数据就可以重复,但是通过观察,仍不能为空,因为not null在创建表时的添加约束期间会一并添加到约束。不过有了主键,才能更好的查找数据,因为其具有唯一性。...外键是用于定义主表和从表之间的关系 外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。...所以,我们需要重新建立一个从表student,目的是引入外键的逻辑关系。 目前的学生表是空的,先插入数据: 若删除id=1的班级,也不会成功,因为student中还存在class_id=1的学生。...注:主表在从表存在的前提下,不能drop table 主表。 ---- 外键约束中,也存在constraint将外键约束命名,不过mysqld内部会自动做这样的操作。

    22650

    【MySQL】04_约束

    #如果是两个或更多个字段,那么复合唯一,即多个字段的组合是唯一的 #方式1: alter table 表名称 add unique key(字段列表); #方式2: alter table 表名称 modify...数据类型, primary key(字段名1,字段名2) #表示字段1和字段2的组合是唯一的,也可以有更多个字段 ); #学生表 create table student( sid int primary...,然后才可以删除主表的数据 在“从表”中指定外键约束,并且一个表可以建立多个外键约束 从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...的数据类型一致,意义都是表示部门的编号 ); 说明: (1)主表dept必须先创建成功,然后才能创建emp表,指定外键成功。...答:在MySQL中,默认AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。

    2.4K20

    mysql学习笔记(四)约束与索引

    article/d5a880eba77c3513f147ccdf.html 三范式 1.列不能拆分 2.唯一标识··3.关系引用主键 具体体现: 将数据放到表中,表放在库中 一个数据库中可以有多个表,每个表都有一个名字...表具有一些特性,这些特性定义了数据在表中如何存储 表由列组成,我们也称为字段,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计 表的数据按行存储 约束与索引 完整性 数据完整性(Data...在Table中创建的Column,如果使用Identity属性标识,那么该列是ID列。默认情况下,不能显式向ID列插入数值。...ID列是由系统自动赋值的,在赋值时,系统根据该表的ID值,自动插入递增的,唯一的数值,同时ID值根据Increment自动递增。...如果想要显式向ID列插入特定的数值,那么,必须启用 Identity_Insert选项,该选项自动将ID值更新为ID列的最大值。

    2.1K00

    Mysql-5-数据表的基本操作

    是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的主键。...例如:部分表的主键id,在表tb中有一个键deptld与这个id关联。 主表(父表):对于两个具有关联关系的表而言,相关字段中主键所在的那个表就是主表。...从表(自表):对于两个具有关联关系的表而言,相关字段中外键所在的那个表就是从表。...6.默认约束:指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新的记录时没有为这个字段赋值,那么系统自动会为这个字段赋值为男。...null,deptld int(11)default 1111,salary float); 7.设置数据表的属性值自动增加:在数据库应用中,经常希望在每次插入新数据时,系统会自动生成字段的主键值。

    1.7K60

    第13章_约束

    数据类型, 字段名 数据类型, 字段名 数据类型, primary key(字段名1,字段名2) #表示字段1和字段2的组合是唯一的,也可以有更多个字段 ); #学生表...); 插入 4 个空值,执行如下: INSERT INTO test1 VALUES(0),(0),(0),(0); 查询数据表 test1 中的数据,结果如下: mysql> SELECT * FROM...,语句如下: DELETE FROM test1 WHERE id = 4; 再次插入一个空值,语句如下: INSERT INTO test1 VALUES(0); 查询此时数据表 test1 中的数据...,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据 (6)在 “从表” 中指定外键约束,并且一个表可以建立多个外键约束 (7)从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样,...dept(did) #在从表中指定外键约束 #emp表的deptid和和dept表的did的数据类型一致,意义都是表示部门的编号 ); 说明: (1)主表dept必须先创建成功,然后才能创建

    39330

    2024Mysql And Redis基础与进阶操作系列(4)作者——LJS

    如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据 在“从表”中指定外键约束,并且一个表可以建立多个外键约束 从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样,逻辑意义一致...的数据类型必须与主表名(被参考字段)的数据类型一致,逻辑意义也一样 //(从表的某个字段)的字段名可以与主表名(被参考字段)的字段名一样,也可以不一样 举例 create table dept(...//emp表的deptid和和dept表的did的数据类型一致,意义都是表示部门的编号 说明: (1)主表dept必须先创建成功,然后才能创建emp表,指定外键成功。...答:在MySQL中,默认AUTO_INCREMENT的初始 值是1,每新增一条记录,字段值自动加1。...例如:在表中插入第一 条记录,同时指定id值为5,则以后插入的记录的id 值就会从6开始往上增加。 添加主键约束时,往往需要设置字段自动增加属性。

    11310

    MySQL学习之路:数据的完整性-外键约束

    例如,网上商城系统数据库中的商品编号、名称不能为空,订单号必须唯一,邮箱格式必须符合规范等。...PRIMARY KEY 又称为主键约束,定义表中构成主键的一列或多列。 主键用于唯一标识表中的每条记录,作为主键的字段值不能为NULL且必须唯一,可以是单一字段,也可以是多个字段的组合。...当向表中添加记录时,若未为字段赋值,数据库系统会自动为将字段的默认值插入。 属性名 数据类型 DEFAULT 默认值 修改购物车表cart,将购买数量的默认值设置为1。...外键约束实现了表间的引用完整性,当主表中被引用列的值发生变化时,为了保证表间数据的一致性,从表的中与该值相关的信息也应该相应更新,这就是外键约束的级联更新和删除。...SET NULL:更新和删除操作表记录时,从表中相关记录对应的值设置为NULL。 NO ACTION:不进行任何操作 RESTRICT:拒绝主表更新或修改外键的关联列。

    31620

    MySQL基础

    ,每张表具有唯一的表名用来标识自己 3、表中有一个或多个列,列又称为“字段”,相当于java中“属性” 4、表中的每一行数据,相当于java中“对象” 四、常见的数据库管理系统 mysql、oracle...1.区别: ​ ① 一个表至多有一个主键,但可以有多个唯一 ​ ② 主键不允许为空,唯一可以为空 2.相同点: ​ 都具有唯一性 ​ 都支持组合键,但不推荐 外键: ① 用于限制两个表的关系,从表的字段值引用了主表的某个字段值...② 外键列和主表的被引用列要求类型一致,意义一样,名称无要求 ③ 主表的被引用列要求是一个 key(一般就是主键) ④ 插入数据,先插入主表 ​ 删除数据,先删除从表 可以通过以下两种方式来删除主表的记录...table 表名 drop foreign key 约束名; 四、自增长列 特定: ​ 1.不用手动插入值,可以自动提供序列值,默认从 1 开始,步长为 1 ​ auto_increment_increment...3、事务的使用步骤 隐式(自动)事务:没有明显的开始的结束,本身就是一条事务可以自动提交,比如 insert、update、delete 显式事务:具有明显的开启和结束。

    2.5K30

    MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解

    ( 字段名 数据类型, 字段名 数据类型, 字段名 数据类型, unique key(字段列表) #字段列表中写的是多个字段名,多个字段名用逗号分隔,表示那么是复合唯一,即多个字段的组合是唯一的 );..., 字段名 数据类型, 字段名 数据类型, primary key(字段名1,字段名2) #表示字段1和字段2的组合是唯一的,也可以有更多个字段 ); #学生表 create table student...: DELETE FROM test1 WHERE id = 4; 再次插入一个空值,语句如下: INSERT INTO test1 VALUES(0); 查询此时数据表test1中的数据,结果如下:...如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据 ( 6 )在“从表”中指定外键约束,并且一个表可以建立多个外键约束 ( 7 )从表的外键列与主表被参照的列名字可以不相同,...dept表的did的数据类型一致,意义都是表示部门的编号 ); 说明: ( 1 )主表dept必须先创建成功,然后才能创建emp表,指定外键成功。

    24610

    day05_MySQL学习笔记_02

    但是理论上不能有多个null。因为多个null不也是数据相同了吗!         ...(auto_increment) 给主键添加自动增长的数值,列只能是整数类型,但是如果删除数据之前增长的序号,后面再添加数据的时候序号不会重新开始,而是会接着被删除的那一列的序号开始。...(2,'tom',default); -- sex插入的是默认值     INSERT INTO student1 values(3,'bruce',null); -- sex插入的是null值   -...说白了,ON就是筛选的条件。       内连接的特点:查询结果必须满足条件。例如我们向emp表中插入一条记录。 ?       ...SELECT mgr FROMemp WHERE empno =7369);       求7369员工编号和姓名以及该员工的经理编号和姓名         SELECT e1.empno, e1.ename

    2.1K20

    【Java 进阶篇】深入理解SQL的数据操作语言(DML)

    插入数据 插入数据是向数据库表中添加新记录的操作。为此,我们使用INSERT INTO语句,指定要插入数据的表以及要插入的值。...Doe', 'john.doe@example.com', '+1-123-456-7890'); 上述示例中,我们向名为customers的表中插入了一条新记录。...数据库表通常分为以下几种类型: 主表(父表):包含主要数据的表,通常具有唯一标识符(如产品ID、顾客ID等)。 从表(子表):包含与主表相关的数据,通常通过外键与主表关联。...关联表:用于建立多对多关系的中间表,通常包含两个或多个外键,连接两个主表。 DML操作通常涉及多个表之间的数据操作,因此了解表之间的关系对于编写复杂的SQL语句非常重要。...完整性约束 数据库通常定义了一些完整性约束,以确保数据的一致性和有效性。在DML操作中,您需要考虑以下几种完整性约束: 主键约束:确保每条记录都具有唯一的标识符,通常用于主表。

    37830

    MySQL 约束

    表级约束:可以作用在多个列上,不与列一起,而是单独定义 根据约束所起的作用,约束可分为: 主键约束 主键约束确保表中的每一行都具有唯一标识符,能够唯一标识该表中的每条记录。...外键约束 外键约束用于建立表与表之间的关系,确保引用另一个表中的值时的完整性。 外键约束经常和主键约束一起使用,用来确保数据的完整性,即保证该字段的值必须来自于主表的关联列的值。...非空约束 指定某列的值不为空,在插入数据的时候必须非空。 例如,在学生信息表中,如果不添加学生姓名,那么这条记录是没有用的。...-- 主表:部门表 CREATE TABLE dept( id INT AUTO_INCREMENT PRIMARY KEY, -- 部门编号 name varchar(64) -...CHECK (c1 c2) 是表约束:它出现在任何列定义之外,因此它可以(并且确实)引用多个表列。 此约束包含对尚未定义的列的前向引用。没有指定约束名称,因此 MySQL 生成一个名称。

    23110

    sql server创建数据表的完整语法_sqlserver语法大全

    ,不能输入值-- ) 3.在现有表中添加标识列 下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列 --创建表 CREATE TABLE T_test (Name...(可行的方法,建一张相同的表来存储数据,在修改,插入)。...他的主键是stuID, 另外还有一个stuExam表(学生考试成绩表)。在这个表中也有个列是stuID,但是要引用主表中的stuID....9.创建具有check约束字段的数据库表 use db_sqlserver; go create table db_table7 ( 仓库编号 int primary key, 职工号 varchar...基本工资>=800 and 基本工资<=2100), 加班工资 int, 奖金 int, 扣率 int, 应发工资 as (基本工资 + 加班工资 + 奖金 - 扣率) ) 11.创建含有自动编号字段的数据库表

    94430

    MySQL-多表操作

    外键约束 添加外键约束 外键指的是-一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束, 从而保证数据的一-致性 和完整性。 ➢被引用的表称为主表。...ON DELETE与ON UPDATE用于设置主表中的数据被删除或修改时,从表对应数据的处理办法。 ? 关联表操作 实体之间具有一对一、一对多和多对多的联系。...➢具有关联的表中的数据,可以通过连接查询的方式获取,并且在没有添加外键约束时,关联表中的数据插入、更新和删除操作互不影响。...➢对于添加了外键约束的关联表而言,数据的插入、更新和删除操作就会受到一定的约束。 一个具有外键约束的丛表在插入数据时,外键字段的值会受主表数据的约束,保证从表插入的数据必须符合约束规范的要求。...例如,从表外键字段不能插入主表中不存在的数据。

    3.2K20

    MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)

    2.SQL的优点 1、简单易学,具有很强的操作性 2、绝大多数重要的数据库管理系统均支持SQL 3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成 3.SQL的分类 1、DDL(Data...3.默认值约束 默认值约束即DEFAULT用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值;其基本的语法格式如下所示: 字段名...3、主表发生变化时应注意主表与从表的数据一致性问题 六、数据表插入数据 在MySQL通过INSERT语句向数据表中插入数据。...2、使用TRUNCATE语句删除表中的数据后,再次向表中添加记录时自动增加字段的默认初始值重新由1开始;使用DELETE语句删除表中所有记录后,再次向表中添加记录时自动增加字段的值为删除时该字段的最大值加...聚合函数具有自动滤空的功能,若某一个值为NULL,那么会自动将其过滤使其不参与运算。 聚合函数使用规则: 只有SELECT子句和HAVING子句、ORDER BY子句中能够使用聚合函数。

    2.7K20

    数据库之数据表控制语句

    | zyz | | 2 | lisi | +----+------+ 从上面的测试可以看出,只插入了两个name的值,并没有插入id的值,但是查看表数据时,id已经有值了,说明自增生效 设置自增的起始值...3、向表中插入一个新的字段 1)在最后一列插入新列: mysql> desc tab3; +-------+-------------+------+-----+---------+-------+ |...比方学生表有个学生编号(sid),分数表中的学生列(stu)引用学生表的学 生编号,此时对于分数表的 stu 来说。学生表的 sid 就是外键。 从表也叫外键表,主表也叫主键表、外表,列也叫字段。...所以在设计的时候。就给表1加入一个外键,这个外键就是表2中的学号字段。那么这样表1就是主表,表2就是子表。 你的主从关系理解颠倒了。你的图中,表1的确是主表。...否则当以后再创建了相同名称的列时,会自动将其建立关系。

    1.1K40
    领券