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

SQL命令 CREATE TABLE(五)

定义外键 外键是引用另一个表的字段;存储在外键字段中的值是唯一标识另一个表中的记录的值。...要定义外键,用户必须对被引用的表或被引用的表的列具有REFERENCES特权。如果通过动态SQL或xDBC执行CREATE TABLE,则需要REFERENCES权限。...相反,当DELETE或UPDATE操作遇到这些相互矛盾的外键定义时, SQL会发出错误。 下面是一个嵌入式SQL示例,它发出一条使用两个引用动作子句的CREATE TABLE语句。...这意味着INSERT或UPDATE操作可能会为外键字段指定一个与被引用表中的行不对应的值。NOCHECK关键字还阻止执行外键的引用操作子句。SQL查询处理器可以使用外键来优化表之间的联接。...在两个位置指定分片键定义会生成SQLCODE-327错误。 有三个选项可用于指定碎片键定义: SHARD:如果仅指定关键字Shard, IRIS使用表的RowID字段作为碎片键。

1.8K50

MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

Mybatis-Plus 代码生成器 一、主外键特点 主表的主键和从表的外键形成主外关系 从表外键的值是对主表主键的引用。...从表外键类型,必须与主表主键类型一致。 建立外键的表必须是InnDB型,不能是临时表。 外键名不能用引号。FK_ID错误。应为FK_ID。、 添加数据时:从表的外键,只能添加主表主键中存在的数据。...1.1 添加外键约束 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键) REFERENCES 主表 (主键); 真实: ALTER TABLE student...ADD CONSTRAINT FK_ID FOREIGN KEY (gid) REFERENCES grade (id); 1.2 外键约束 建立外键约束是为了保证数据的完整性和一致性,但是如果主表中数据被删除或修改...(在不定义ON DELETE 和ON UPDATE子句时,这是默认设置,也是最安全的设置) ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键) REFERENCES

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

    SQL基础--> 约束(CONSTRAINT)

    KEY 主键约束P 唯一的标识出表的每一行,且不允许空值值,一个表只能有一个主键约束 FOREIGN KEY 外键约束R 一个表中的列引用了其它表中的列,使得存在依赖关系,可以指向引用自身的列...key (字段名)references 表名(字段名)--->foreign 三、建表时约束定义 1.定义各种不同的约束 --创建一个用于作外键的表tb_dept SQL> CREATE TABLE...FOREIGN KEY 约束 外键约束是用来维护从表和主表的引用完整性的,所以外键约束要涉及两个表。...外键约束对delete语句的影响: 删除主表数据时,如果从表有对该数据的引用,要先将从表中的数据处理好。主表才有可能违反约束。...,当主表中的一行数据被删除时,ORACLE自动将从表中依赖于它的记录外键也删除。

    1.7K20

    SQL命令 UPDATE(三)

    SQL命令 UPDATE(三) 参照完整性 如果没有指定%NOCHECK, IRIS将使用系统范围的配置设置来确定是否执行外键引用完整性检查; 默认值是执行外键引用完整性检查。...可以在系统范围内设置此默认值,如外键引用完整性检查中所述。 要确定当前系统范围的设置,调用$SYSTEM.SQL.CurrentSettings()。...此设置不适用于用NOCHECK关键字定义的外键。 在UPDATE操作期间,对于每个具有更新字段值的外键引用,都会在被引用表中的旧(更新前)引用行和新(更新后)引用行上获得共享锁。...如果对CASCADE、SET NULL或SET DEFAULT定义的外键字段执行了带有%NOLOCK的UPDATE操作,则相应的更改外键表的引用操作也会使用%NOLOCK。...尝试更新具有列级ReadOnly (SELECT或REFERENCES)权限的字段的值(即使是NULL值)将导致SQLCODE -138错误:无法为只读字段插入/更新值。

    1.6K20

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

    数据的完整性 数据完整性是指数据的准确性和逻辑一致性,用来防止数据库中存在不符合语义、无效数据或错误数据等。...语句添加外键约束 CONSTRAINT 外键名 FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名) mysql> ALTER TABLE goods -> ADD CONSTRAINT...: 0 Duplicates: 0 Warnings: 0 外键约束的级联更新和删除 外键约束实现了表间的引用完整性,当主表中被引用列的值发生变化时,为了保证表间数据的一致性,从表的中与该值相关的信息也应该相应更新...,这就是外键约束的级联更新和删除。...CONSTRAINT 外键名 FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名) [ON UPDATE { CASCADE | SET NULL | NO ACTION |

    31820

    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    states 表,并且可以将外键添加到 state 代码中以进行更好的验证。...由于 Citus 5.x 没有这个概念,因此使用 Citus 5 创建的表没有在元数据中明确标记为位于同一位置,即使这些表在物理上位于同一位置。...beta/develop/reference_ddl.html#reference-tables 不支持从引用表到分布式表的外键。...Citus 支持从本地到引用表的所有外键引用操作,但不支持反向支持 ON DELETE/UPDATE CASCADE(引用本地)。 主键和唯一性约束必须包括分布列。...Citus 使用 PostgreSQL 的 “NOT VALID” 约束指定,为 CHECK 约束和外键支持此功能。 例如,考虑将用户配置文件存储在引用表中的应用程序。

    2.8K20

    DB2错误代码_db2错误码57016

    当然,在此对原作者送上万分的感谢。...-525 51015 不能在已指定的程序包中执行SQL语句,因为在绑定时间内该程序包无效 -526 42995 在给定的上下文中,不能使用全局的临时表 -530 23503 对特定的约束名指定了无效的外健值...无效的外健;不符合引用的表没有主健 -539 42888 不能定义外健,因为被引用的表没有主健 -540 57001 表定义不完整,直到为主健建立了唯一索引或UNIQUE语句、或者包含GENERATED...(DPROP) -948 56062 DDF没有启动,分布式操作无效 -950 42705 在SQL语句中指定的位置在SYSIBM.LOCATIONS中没有定义 -965 51021 存储过程非正常终止...,因为在现存的视图定义中引用了该函数 -20074 42939 不能建立指定的对象,因为“SYS”是一个保留的前缀 -20100 56059 在被触发的SQL语句中有BIND错误,指定了错误的SQLCODE

    2.6K10

    史上最全的 DB2 错误代码大全

    不过,值得庆幸的是,已经有人帮咱们整理出一份关于 DB2 的错误代码大全啦,以后再遇到数据库报错,直接拎出看看,岂不爽哉?当然,在此对原作者送上万分的感谢。...-525 51015 不能在已指定的程序包中执行SQL语句,因为在绑定时间内该程序包无效 -526 42995 在给定的上下文中,不能使用全局的临时表 -530 23503 对特定的约束名指定了无效的外健值...无效的外健;不符合引用的表没有主健 -539 42888 不能定义外健,因为被引用的表没有主健 -540 57001 表定义不完整,直到为主健建立了唯一索引或UNIQUE语句、或者包含GENERATED...(DPROP) -948 56062 DDF没有启动,分布式操作无效 -950 42705 在SQL语句中指定的位置在SYSIBM.LOCATIONS中没有定义 -965 51021 存储过程非正常终止...,因为在现存的视图定义中引用了该函数 -20074 42939 不能建立指定的对象,因为“SYS”是一个保留的前缀 -20100 56059 在被触发的SQL语句中有BIND错误,指定了错误的SQLCODE

    4.8K30

    【Java 进阶篇】MySQL外键约束详解

    外键通常用于关联两个表,其中一个表包含对另一个表的引用。在MySQL中,外键约束是通过在引用表中的字段上定义外键关系来实现的。 2....外键的作用 外键约束在数据库中具有以下作用: 维护引用完整性: 外键约束确保了引用表中的数据与被引用表中的数据之间的一致性。它防止了引用表中插入无效的引用值,从而保持了数据的完整性。...外键约束的语法如下: FOREIGN KEY (外键字段) REFERENCES 被引用表(被引用字段); 外键字段是在引用表中定义的字段,用于与被引用表的字段建立关联。...例如,要在一个订单表中添加对客户表的外键约束,可以执行以下SQL语句: ALTER TABLE 订单表 ADD FOREIGN KEY (客户ID) REFERENCES 客户表(客户ID); 这将在订单表的客户...外键约束可以防止无效的引用值,并确保关联数据的一致性。 6.2 考虑性能 尽管外键约束对数据完整性至关重要,但它可能会对性能产生一定影响。在设计数据库时,应该考虑性能和数据完整性之间的权衡。

    1K30

    SQL命令 INSERT(三)

    插入不能包含值违反外键引用完整性的字段,除非指定了%NOCHECK关键字,或者外键是用NOCHECK关键字定义的。...参照完整性 如果没有指定%NOCHECK关键字, IRIS将使用系统范围的配置设置来确定是否执行外键引用完整性检查; 默认值是执行外键引用完整性检查。...您可以在系统范围内设置此默认值,如外键引用完整性检查中所述。 要确定当前系统范围的设置,调用$SYSTEM.SQL.CurrentSettings()。...此设置不适用于用NOCHECK关键字定义的外键。 在INSERT操作期间,对于每个外键引用,都会在引用表中相应的行上获得一个共享锁。 在执行引用完整性检查和插入该行时,此行被锁定。...这确保了引用的行不会在引用完整性检查和插入操作完成之间发生更改。 但是,如果指定了%NOLOCK关键字,则不会对指定的表或引用表中相应的外键行执行锁操作。

    2.5K10

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

    article/d5a880eba77c3513f147ccdf.html 三范式 1.列不能拆分 2.唯一标识··3.关系引用主键 具体体现: 将数据放到表中,表放在库中 一个数据库中可以有多个表,每个表都有一个名字...它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。...实体完整性:同一个表中不能有相同的无法区分的数据 域完整性:数据的域有必要限定 参照完整性:所有的引用参照属性都在相应的表中能够找到 用户定义的完整性:符合用户定义的规则 根据约束的特点,分为以下几种:...一个表可以有很多的外键约束 外键约束需要一个表的两个字段或者两个表的两个字段之间建立外键约束 外键约束一定是在从表、子表中建立的。...外键的建立前提是主表必须唯一或者是主键 alter table 表名 add constraint 约束名 foreign key(列名) references 其他表(其他表的列名);  foreign

    2.1K00

    gorm jion查询映射(扫描scan)到新的自定义嵌套结构体struct,必须使用select规定字段,与xorm的jion对比

    注意: // 注释:Has Many一对多的外键、引用 // 1.默认外键是 模型的类型(type)加上其 主键(ID) 生成 ,如:UserID // 2.可以改变外键`gorm:"foreignKey...:UserName"` // 3.可以改变引用references:MemberNumber // 4.用preload来查询关联,preload中的名字必须是主表中的字段名,不是从表名 // 5....必须是gorm建立的表才能这样用,beego orm建立的表无效 // 注释:Has Many一对多的外键、引用 // 1.默认外键是 模型的类型(type)加上其 主键(ID) 生成 ,如:UserID...// 2.可以改变外键`gorm:"foreignKey:UserName"` // 3.可以改变引用references:MemberNumber // 4.用preload来查询关联,preload...中的名字必须是主表中的字段名,不是从表名 // 5.必须是gorm建立的表才能这样用,beego orm建立的表无效 // User 有多张 CreditCard,UserID 是外键 // type

    1.8K10

    day05_MySQL学习笔记_02

    --------------------------------------------   3、引用完整性(参照完整性)     要有外键必须先有主键,外键关联/引用/参照主键,主键和外键的数据类型必须一致...)       );       CONSTRAINT(constraint:约束) FOREIGN KEY(foreign key:外键) REFERENCES(references:引用/参照/...)       );       CONSTRAINT(constraint:约束) FOREIGN KEY(foreign key:外键) REFERENCES(references:引用/参照/...  1、生成SQL脚本 导出数据     在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本.     ...执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL脚本来操作数据库!     大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。

    2.1K20

    SqlAlchemy 2.0 中文文档(五十九)

    参考资料:#8113 模式 [模式] [错误] 修复了涉及Table.include_columns和Table.resolve_fks参数的错误;这些很少使用的参数显然无法为引用外键约束的列工作...在第一种情况下,引用外键的未包含列仍然会尝试创建一个ForeignKey对象,在尝试解析外键约束的列时会产生错误;引用被跳过的列的外键约束现在与具有相同条件的Index和UniqueConstraint...这已经是这种外键约束的行为,该约束是使用非反射方法产生的,例如从不同的MetaData集合中连接Table对象。...参考:#7953 模式 [模式] [错误] 修复了一个 bug,当使用referred_column_0命名约定键设置外键约束时,如果外键约束是作为一个ForeignKey对象而不是一个明确的ForeignKeyConstraint...参考:#7612 SQL [SQL] [错误] 修复了由于字符串格式错误而导致值为元组的错误消息失败的问题,包括对不支持的文字值和无效的布尔值的编译。

    21810

    SQL命令 CREATE TABLE(一)

    reffield-commalist - 可选-在FOREIGN KEY约束中指定的引用表中定义的字段名或现有字段名列表(以逗号分隔)。如果指定,必须用圆括号括起来。...如果省略,则采用默认值,如定义外键中所述。...支持的引用操作选项有no action、set default、set null或CASCADE。 描述 CREATE TABLE命令创建指定结构的表定义。...这些表元素包括字段定义、约束、关键字子句以及主键和外键定义。元素可以按任何顺序指定。元素必须用逗号分隔。 可选的分片键定义,可以在右括号后指定。...指定这些子句的重复项会生成SQLCODE-327错误。 SQL安全和权限 CREATE TABLE命令是特权操作。用户必须具有%CREATE_TABLE管理权限才能执行CREATE TABLE。

    1.4K30

    MySQL实战七:你不知道的外键与约束使用!

    2.2 外键 2.2.1 创建外键 (1)不带别名的外键,数据库自动生成 首先创建department表: CREATE TABLE department ( dept_name varchar...,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。...学习 cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表(子表)中也更新,主键表(父表)中的记录被删除,外键表(子表)中改行也相应删除。...上述on delete cascade换成on update cascade,可以发现只能更新父表的主键,同时父子表数据都会被更新,但是在子表的外键上做更新操作无效!...而on update只能删除子表外键数据,不能删除父表主键数据,只能更新父表的主键,同时父子表数据都会被更新,但是在子表的外键上做更新操作无效。

    4.3K20

    mysql高级

    约束的存在保证了数据库中数据的正确性、有效性和完整性 添加约束可以在添加数据的时候就限制不正确的数据,年龄是3000,数学成绩是-5分这样无效的数据,继而保障数据的完整性。...外键约束: 关键字是 FOREIGN KEY 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性。 外键约束现在可能还不太好理解,后面我们会重点进行讲解。...现在我要删除1号部门,就会出现错误的数据(员工表中属于1号部门的数据)。...而我们上面说的两张表的关系只是我们认为它们有关系,此时需要通过外键让这两张表产生数据库层面的关系,这样你要删除部门表中的1号部门的数据将无法删除。...) REFERENCES 主表(主表列名) ); -- 建完表后添加外键约束 ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES

    65330

    SQL笔记(1)——MySQL创建数据库

    KEY (course_id) REFERENCES course(id); 以第一条命令为例; 这条 SQL 语句在 course 表上添加一个外键约束,其中包含了以下几个关键字(具体解释参考Q...括号内的内容表示列名; REFERENCES teacher(id):外键列所参考的表和列。REFERENCES 关键字指定被参考表的名称,括号内的内容则表示该表的某一列名称,作为外键列的参考值。...总结一下,这条 SQL 语句的作用是将 course 表中的 teacher_id 列设置为外键列,参照 teacher 表中的 id 列。...MySQL约束在开发中的应用 MySQL约束是一种限制数据库表中某些列的值或它们之间关系的规则。它可以确保数据的完整性和一致性,避免无效或错误的数据在存储到数据库中。...外键约束:可以确保表中指向其他表的字段只包含该表中存在的值。外键约束还可以防止删除数据时出现意外情况(例如删除了被其他表所引用的数据)。

    3.1K20

    MySQL8 中文参考(二)

    MySQL 对外键约束的实现与 SQL 标准在以下关键方面有所不同: 如果父表中有多行具有相同的引用键值,InnoDB会像其他具有相同键值的父行不存在一样执行外键检查。...SQL 标准中的MATCH子句控制如何处理复合(多列)外键中的NULL值,当与引用表中的主键进行比较时。MySQL 基本上实现了MATCH SIMPLE定义的语义,允许外键全部或部分为NULL。...另一方面,NDB存储引擎要求在任何作为外键引用的列上显式唯一键(或主键)。 对于包含非唯一键或包含NULL值的外键引用的处理对于诸如UPDATE或DELETE CASCADE等操作并不明确定义。...建议您使用仅引用UNIQUE(包括PRIMARY)和NOT NULL键的外键。 对于不支持外键的存储引擎(如MyISAM),MySQL 服务器解析并忽略外键规范。...MySQL 解析但忽略“内联REFERENCES规范”(如 SQL 标准中定义的),其中引用是作为列规范的一部分定义的。

    21010
    领券