mysql怎么设置外键?
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余避免后期对大量冗余处理的额外运维操作。
降低应用代码复杂性,减少了额外的异常处理相关数据管理全由数据库端处理。
增加文档的可读性特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳比如,表结构的更新等。
外键参照动作列表:
CASCADE:级联,子表跟随父表更新外键值
SET NULL:子表更随主表更新外键值为 NULL
RESTRICT/ NO ACTION:默认,限制父表改动外键值
SET DEFAULT:目前产生的效果和 RESTRICT 相同。
要设置外键,需要在创建表的时候使用FOREIGN KEY约束,指定需要参照的外键表和外键列。
首先需要创建主表,再在从表上添加外键约束,指定参照主表的列,这样就能确保从表上的外键引用了主表上已经存在的数据。
注意外键参照的主表上必须存在对应的数据,否则会出现数据一致性问题。同时,在使用外键时需要注意性能问题,尽量避免多表间大量关联查询,可以通过索引优化等方式减少查询开销。
在MySQL中,可以在创建表时使用FOREIGN KEY约束来设置外键。在创建表时,可以将外键列指定为对应的父表的主键列,并使用REFERENCES关键字进行引用。
可以使用ON DELETE和ON UPDATE来指定当父表中的行被删除或更新时,子表中的相关行应如何处理。为了使用外键,父表和子表必须在同一个数据库中,并且它们的存储引擎必须支持外键约束。使用外键可以维护数据完整性,确保数据的准确性和一致性。
postgresql的语法与mysql有什么区别?
PostgreSQL 和 MySQL的语法主要有以下区别:
1、数据类型:PostgreSQL 支持更多的数据类型,如数组、hstore 等。
2、存储过程:PostgreSQL 支持存储过程,而 MySQL 只支持存储函数。
3、触发器:PostgreSQL 支持触发器,而 MySQL 只支持事件触发器。
4、外键约束:PostgreSQL 对外键约束的支持更加完善。
5、索引:PostgreSQL 支持更多类型的索引,如 GIN 索引和 GiST 索引。
6、日期处理:PostgreSQL 支持更加灵活的日期处理功能。
7、ACID:PostgreSQL 支持 ACID(原子性、一致性、隔离性、持久性),而 MySQL 只支持 AC。
总的来说,PostgreSQL 的语法比 MySQL 更加灵活和完善,适合处理更复杂的数据结构。
sql设置主键和外键约束的语句?
要设置主键约束,可以使用以下语句:
ALTER TABLE 表名 ADD CONSTRNT 主键名称 PRIMARY KEY (列名);
要设置外键约束,可以使用以下语句:
ALTER TABLE 子表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (子表列名) REFERENCES 父表名(父表列名);