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

MySQL 学习笔记(三):完整性和触发器设计

*/ /*定义sno为参考student主键sno,并且实现级联删除更新SC中相应元组 */ /* 提示 foreign key .. references ... on delete...cascade on update cascade, /*定义Cno为参考course主键Cno,并且实现级联删除SC中相应元组 */ );  2....约束 + 级联(删除/更新) alter table 从 add constraint 约束名 foreign key(属性名) references 主表(属性名)  ON DELETE CASCADE...这里我创建时候 sno 中有些有主键约束,有些却没有,所以当我删除主键约束时候它会提示错误建立起来了。但我不明白为什么建立时候没有报错。...AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE DELETE; tbl_name:标识建立触发器名,即在哪张建立触发器; trigger_stmt

1.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

SQL之间关系

SQL之间关系要在之间强制执行引用完整性,可以定义。修改包含约束时,将检查约束。定义有几种方法可以在InterSystems SQL中定义:可以定义两个类之间关系。...定义关系会自动将约束投影到SQL。可以在类定义中添加显式定义(对于关系未涵盖情况)。可以使用CREATE TABLEALTER TABLE命令添加。...默认情况下,InterSystemsIRIS®数据平台对INSERT,UPDATEDELETE操作执行引用完整性检查。...默认情况下,当删除带有行时,InterSystems IRIS将在相应被引用获取长期(直到事务结束)共享锁。这样可以防止在引用行DELETE事务完成之前对引用行进行更新删除。...如果使用NoCheck定义,或者使用%NOCHECK%NOLOCK指定引用行DELETE,则不会获取此锁定。

2.4K10

数据库系统课程设计(高校成绩管理数据库系统设计与实现)

数据项名 数据类型 长度 完整性约束 班级编号 char 10 主键 班级名称 char 10 专业编号 char 10 学生Students 4 students 数据项名 数据类型...10 主键 课程编号 char 10 上课 teacher-class 7 teacher-class 数据项名 数据类型 长度 完整性约束 教师编号 char 10 主键 ...班级编号 char 10 授课 teacher-course 8 teacher-course 数据项名 数据类型 长度 完整性约束 教师编号 char 10 主键 课程编号...char 10 成绩报告reports 9 reports 数据项名 数据类型 长度 完整性约束 学号 char 12 主键 课程编号 char 10 学期 char...(1)登录界面如图所示 ①登入异常 (输入密码、账号错误,提示框报错) 图43 账号密码错误 ②输入不完整 ③验证成功 (2)进入学生界面 ①个人信息查询 ②成绩查询,选择学年查询

2.4K20

mysql建表语句_mysql如何查询建表语句

; alter table Course add foreign key(Cpno) references Course (Cno); 向中插入数据(由于Cpno是,故先添加参考列,再添加列...当插入数据违反了这个规则,就会产生ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails...如下图: 当要删除或者更新一条数据时,由于有外码约束,不可以直接使用delete或者update语句,需先取消外码约束,再进行操作,最后再恢复外码约束。.../*取消外码约束*/ set foreign_key_checks = 0; /*删除更新数据*/ delete/update from 名 where 条件; /*恢复外码约束*/ set foreign_key_checks...就以课程为例,要删除数据要经过三个步骤,取消约束,删除数据,恢复约束,但如果没有约束,就可以直接删除数据。因此,在以后设计数据库时候尽量避免外码约束使用。

8.3K20

SQL命令 CREATE TABLE(五)

在RowID定义时必须省略引用字段名;尝试将ID显式指定为引用字段名会导致SQLCODE-316错误。 如果这些默认值都不适用,IRIS将发出SQLCODE-315错误。...定义可能包含两个引用动作子句: ON DELETE ref-action ON UPDATE ref-action ON DELETE子句为引用定义了删除规则。...相反,当DELETEUPDATE操作遇到这些相互矛盾定义时, SQL会发出错误。 下面是一个嵌入式SQL示例,它发出一条使用两个引用动作子句CREATE TABLE语句。...可以是单个字段多个字段。 NO ACTION是切片支持唯一引用操作。 隐式 最好显式定义所有。如果定义了显式, IRIS会报告此约束,而不定义隐式约束。...除非切片是唯一子集,否则切片唯一字段约束可能会对插入/更新性能产生重大负面影响。 涉及到需要原子性复杂事务永远不应该被分片。 分片在分片主数据服务器主命名空间中定义。

1.7K50

MySQL数据库基础练习系列1、学生信息管理系统

接下来,我们将使用MySQL数据库DDL语句来创建这个系统所需至少5张: 数据库DDL(注意创建顺序) 为了直接运行DDL语句并创建,我们需要确保在创建含有约束之前,相关被引用(即键指向...所以我们在创建时候一定要按照一定顺序来创建,否则就会出现没有关系导致创建异常。...每张都有相应主键和约束,以确保数据完整性和准确性。这些之间通过相互关联,形成了学生信息管理系统基本数据结构。...也就是说,每一列都应该只包含一个值,而不能包含集合、数组其他复合数据类型。 例如,如果有一个“地址”列,它包含了街道、城市、省份和国家等信息,那么这就违反了第一范式。...它主要关注于消除传递依赖,即非主键列不应该依赖于主键某一部分,而应该直接依赖于整个主键。 如果存在传递依赖,那么应该考虑将这个非主键列分离出去,形成新,并通过主键与原进行关联。

6810

MySQL约束使用

什么是约束在MySQL中,约束用于确保两个之间数据一致性。约束是一种限制,它将一个列与另一个列相关联。具体来说,它要求在一个某个列中值必须在另一个某个列中存在。...约束可以确保数据完整性和一致性,防止数据被删除修改时发生错误。在MySQL中,约束由FOREIGN KEY关键字和REFERENCES子句定义。...如何创建约束在MySQL中,创建约束需要以下步骤:第一步:创建主表和从约束通常涉及到两个,一个主表和一个从。主表包含一个列一组列,其值将在从中进行比较。...以下是如何使用约束一些示例:插入数据:当向"orders"中插入数据时,如果在"customer_id"列中插入一个不存在于"customers"值,则会引发约束错误。..."customer_id"值,则会引发约束错误

4K30

【数据库设计和SQL基础语法】--创建与操作--创建语法和实例

student_courses用于表示学生和课程之间关系,包含student_course_id作为主键,student_id和course_id作为,分别引用studentscourses...通过执行以上CREATE TABLE语句,就创建了三个,其中student_courses包含了主键和,用于表示学生和课程关系。...因此,在设计数据库时,应该根据业务规则选择适当约束,如主键、唯一约束等,以确保数据正确性和一致性。 性能影响: 过多不必要约束可能会对性能产生影响。...了解业务规则,确保约束设计符合业务需求,防止数据出现不一致错误。 避免过度约束: 不必要过度约束可能会导致数据库设计过于复杂。...仅在确保数据完整性情况下使用约束,避免为每个字段都添加大量约束关系管理: 当使用时,需要管理好关联关系。确保关联关系不会导致循环引用其他复杂性。

23510

MySql数据库约束

触发器与约束 3.1 触发器认识   触发器作用是在执行insert,deleteupdate命令之前之后自动调用sql命令存储过程 3.1.1 触发器创建 Create [definer...约束 用来保证参照完整性,MySQL数据库MyIsAM存储引擎本身并不支持,对于定义只是起到一个注释作用,而InonoDB存储引擎则完整支持约束。...一般来说,称被引用为父,引用称为子表,定义时on delete和on update表示在对父进行delete和updata操作时,对子表所做操作。...和update操作时,相应子表中数据被更新为NULL值,但是子表中对应列必须允许为NULL值 (3)NO ACTION   表示父发生deleteupdate操作时,抛出错误,不允许这类操作发生...(4)RESTRICT   表示父发生deleteupdate操作时,抛出错误,不允许这类操作发生,如果定义时没有指定on deleteon update,RESTRICT就是默认设置

1.1K10

【MySQL】04_约束

创建(CREATE)时就指定约束的话,先创建主表,再创建从时,先删从先删除外约束),再删除主表 当主表记录被从参照时,主表记录将不允许删除,如果要删除数据,需要先删除从中依赖该记录数据...约束关系是针对双方 添加了约束后,主表修改和删除数据受约束 添加了约束后,从添加和修改数据受约束 在从建立,要求主表必须存在 删除主表时,要求从先删除,将从中外引用该主表关系先删除...约束等级 Cascade方式 :在父update/delete记录时,同步update/delete掉子表匹配记录 Set null方式 :在父update/delete记录时,将子表匹配记录列设为...null,但是要注意子表列不能为not null No action方式 :如果子表中有匹配记录,则不允许对父对应候选进行update/delete操作 Restrict方式 :同no action...对于约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 方式。

2.4K20

【MySQL 系列】MySQL 语句篇_DDL 语句

DDL( Data Definition Language,数据定义语言)用在定义改变结构数据类型、之间链接和约束等初始化工作。...相对于主键而言,用来引用其他通过子表一个多个列对应到父主键唯一键值,将子表行和父行建立起关联关系。 例如,Sakila 示例数据库中 country 和 city 。...你也不能为一个城市设定一个不存在 country_id,否则这个城市数据就是错误。 3.2.1、创建 通常,所属被称作子表,被引用被称作父。...它是可选; 位于 FOREIGN KEY 关键字之后是作为列名; 位于 REFERENCES 关键字之后是被引用和列; ON DELETE 和 ON UPDATE 指定了删除更新被引用数据时要采取约束策略...它可以通过名字删除任何约束,并不仅仅是; 3.2.4、CASCADE 策略 如果 ON DELETE 和 ON UPDATE 使用了 CASCADE 策略: 当父行被删除时候,子表中匹配行也会被删除

14710

【MySQL】约束介绍

官方文档: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html 1.作用: MySQL通过约束来保证之间数据完整性和准确性...2.使用条件 1.两个必须是InnoDB,MyISAM暂时不支持(据说以后版本有可能支持,但至少目前不支持) 2.列必须建立了索引,MySQL 4.1.2以后版本在建立时会自动创建索引...,但如果在较早版本则需要显示建立; 3.关系两个列必须是数据类型相似,也就是可以相互转换类型列,比如int和tinyint可以,而int和char则不可以。...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表中改动) CASCADE(跟随改动) SET NULL(设空值) SET DEFAULT(设默认值...因此父中不可删除相对应记录,即兵种还有属于西欧兵种,因此不可单独删除父西欧势力 update country set id=8 where id=1; #错误,子表中有相关记录,因此父中无法修改

5K20

MySQL实战七:你不知道约束使用!

如果你创建时候加上了check约束也是不起作用。所以,你不用更改删除之前check约束。...如果没有使用`on delete/update cascade`,不能删除更新父数据,当删除父数据时候报错!...上述on delete cascade换成on update cascade,可以发现只能更新父主键,同时父子表数据都会被更新,但是在子表做更新操作无效!...cascade 不能更新父主键子表,删除父主键数据会将子表联同删除,删除子表数据不影响父。...而on update只能删除子表数据,不能删除父主键数据,只能更新父主键,同时父子表数据都会被更新,但是在子表做更新操作无效。

4.3K20

第13章_约束

# 6.4 特点 (1)从列,必须引用 / 参考主表主键唯一约束列 ​ 为什么?...emp引用了,所以部门1001字段对应记录就不能被删除 总结:约束关系是针对双方 添加了约束后,主表修改和删除数据受约束 添加了约束后,从添加和修改数据受约束 在从建立...,要求主表必须存在 删除主表时,要求从先删除,将从中外引用该主表关系先删除 # 6.7 约束等级 Cascade方式 :在父 update/delete 记录时,同步 update.../delete 掉子表匹配记录 Set null方式 :在父 update/delete 记录时,将子表匹配记录列设为 null,但是要注意子表列不能为 not null No...对于约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 方式。

34830

SQL基础--> 约束(CONSTRAINT)

KEY 主键约束P 唯一标识出每一行,且不允许空值值,一个只能有一个主键约束 FOREIGN KEY 约束R 一个列引用了其它列,使得存在依赖关系,可以指向引用自身列...约束:可引用一个多个列,并且它属于定义一部分,可定义除NOT NULL其它约束。...函数 –在查询中涉及到其它列值 FOREIGN KEY 约束 约束是用来维护从和主表引用完整性,所以外约束要涉及两个。...约束delete语句影响: 删除主表数据时,如果从有对该数据引用,要先将从数据处理好。主表才有可能违反约束。...约束update语句影响: 主从都有可能违反约束,操作一个必须将另一个数据处理好。 约束对DDL语句影响: 删除主表时,才有可能违约约束

1.7K20

mysql常见选项和约束

参照完整性约束,保证一个两个之间参照完整性,是构建于一个两个字段或者是两个两个字段之间参照关系 注意: 具有约束值不能随便给,必须满足所引用主键取值 一张中可以定义多个...列默认可以给null值 父子表 所在叫做子表,从 所引用主键所在叫做父,主表 constraint emp_deptid_fk foreign_key(deptid) references...dept(deptid) 删除规则 当删除父行时,如果子表中有依赖被删除父行子行存在,那么就不允许删除,并抛出异常(默认对外使用on delete restricton delete...no action选项) 在定义约束时,可以通过使用on delete cascadeon delete set null来改变外加默认删除规则 on delete cascade:级联删除,...,ENUM只能选一个值,SET可以选择多个值 AUTO_INCREMENT 自增 缺点:当删除一条时会在删除一条基础加1,不会覆盖原来删除编号 列数值自动增长,列类型只能是整数类型 通常给主键添加自增长约束

12410

MySQL 约束介绍

字段名 数据类型; 5、约束 限定某个某个字段引用完整性 从列,必须引用/参考主表主键唯一约束列 在创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名...创建(CREATE)时就指定约束的话,先创建主表,再创建从时,先删从先删除外约束),再删除主表 从列与主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致 在“...从”中指定约束,并且一个可以建立多个约束 当创建约束时,系统默认会在所在列上建立对应普通索引,索引名是约束名,删除外约束后,必须手动删除对应索引 CREATE TABLE...方式:在父update/delete记录时,同步update/delete掉子表匹配记录 Set null方式:在父update/delete记录时,将子表匹配记录列设为null,但是要注意子表列不能为...not null No action方式:如果子表中有匹配记录,则不允许对父对应候选进行update/delete操作 Restrict方式:同no action, 都是立即检查约束(如果没有指定等级

1.6K41
领券