时间:2021-07-01 10:21:17 帮助过:9人阅读
SET sql_mode = ‘STRICT_TRANS_TABLES‘
MySQL数据不支持传统的Check约束,但是可以通过ENUM和SET类型解决这部分需求。具体使用方式查看 https://blog.csdn.net/mlh110/article/details/62238278
实现比较复杂的约束的时候ENUM和SET有点乏力,我们还是使用触发器进行约束比较好。
触发器:作用是在执行INSERT、DELETE、以及UPDATE命令之前或者之后自动调用的SQL命令或者存储过程。
创建触发器:
CREATE [definer = {user | current_user}] TRIGGER trigger_name before |after insert | delete | update on table_name for each row trigger_stmt
我们最多可以为一个表创建6个触发器,即分别为insert、update、delete的before和after各定义一个触发器。当前的mysql只支持for each row的触发器。
外键约束来保证完整性,InnoDB支持外键约束,定义如下:
[CONSTRAINT [symbol]] FOREIGN KEY [index_name] (table_col_name, ......) REFERENCES tab_name (index_col_name,......) [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION
一般来说,称引用的表为父表,引用的表成为子表。外键定义时的 ON DELETE和 ON UPDATE 表示在对父表进行相关操作的时候,对子表进行的操作,可定义的子表操作为:
Mysql数据库中,视图是一个命名的虚表,它有一个SQL查询语句定义,可以用作表使用,但是不占用物理内存。Mysql不支持物化视图。
分区功能并不是在引擎层面完成的,因此不是只有InnoDB才有分区功能。Mysql的数据库分区支持水平分区,并且Mysql的分区是数据和索引一起分区。不支持全局分区(数据存放在各个分区,索引在一个对象里面)。
分区的类型:
无论创建什么分区,如果表中存在主键或者唯一索引,那么每个分区对应的列也必须是主键或者唯一索引。
Mysql的InnoDB引擎-4.表(2)
标签:面向 date命令 mode mysq 比较 mysql数据库 存在 查看 返回