int | 4 bytes | (-2 147483648,2147483647) | 大整数值 |
bigint | 8 bytes | (-9223372036854775808,9223372036854775807) | 极大整数值 |
float | 4 bytes | 浮点值 | |
char | 0-255 | 定长字符串 | |
varchar | 0-65535 | 不定长字符串 | |
date | 3bytes | 1000-01-01/9999-12-31 | YYYY-MM-DD |
datetime | 8bytes | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS |
create table t_group ( id int not null, name varchar(30), primary key (id) ); //并插入两条记录: insert into t_group values (1, ‘Group1‘); insert into t_group values (2, ‘Group2‘);
create table t_user ( id int not null, name varchar(30), groupid int, primary key (id), foreign key (groupid) references t_group(id) on delete cascade on update cascade ); // 参照完整性测试 insert into t_user values (1, ‘qianxin‘, 1); // 可以插入 insert into t_user values (2, ‘yiyu‘, 2); // 可以插入 insert into t_user values (3, ‘dai‘, 3); // 错误,无法插入,用户组3不存在,与参照完整性约束不符 // 约束方式测试 insert into t_user values (1, ‘qianxin‘, 1); insert into t_user values (2, ‘yiyu‘, 2); insert into t_user values (3, ‘dai‘, 2); delete from t_group where id=2; // 导致 t_user 中的 2、3 记录级联删除 update t_group set id=2 where id=1; // 导致 t_user 中的1记录的 groupid 级联修改为 2
create table t_user ( id int not null, name varchar(30), groupid int, primary key (id), foreign key (groupid) references t_group(id) on delete set null on update set null ); // 参照完整性测试insert into t_user values (1, ‘qianxin‘, 1); // 可以插入 insert into t_user values (2, ‘yiyu‘, 2); // 可以插入 insert into t_user values (3, ‘dai‘, 3); // 错误,无法插入,用户组 3 不存在,与参照完整性约束不符 // 约束方式测试 insert into t_user values (1, ‘qianxin‘, 1); insert into t_user values (2, ‘yiyu‘, 2); insert into t_user values (3, ‘dai‘, 2); delete from t_group where id=2; // 导致 t_user 中的 2、3 记录的 groupid 被设置为 NULL update t_group set id=2 where id=1; //导致 t_user 中的 1 记录的 groupid 被设置为 NULL
create table t_user ( id int not null, name varchar(30), groupid int, primary key (id), foreign key (groupid) references t_group(id) on delete no action on update no action ); // 参照完整性测试 insert into t_user values (1, ‘qianxin‘, 1); // 可以插入 insert into t_user values (2, ‘yiyu‘, 2); // 可以插入 insert into t_user values (3, ‘dai‘, 3); // 错误,无法插入,用户组 3 不存在,与参照完整性约束不符 // 约束方式测试 insert into t_user values (1, ‘qianxin‘, 1); insert into t_user values (2, ‘yiyu‘, 2); insert into t_user values (3, ‘dai‘, 2); delete from t_group where id=2; // 错误,从表中有相关引用,因此主表中无法删除 update t_group set id=2 where id=1; // 错误,从表中有相关引用,因此主表中无法修改 // 注:在 MySQL 中,restrict 方式与 no action 方式作用相同
原文:https://www.cnblogs.com/ZhengYing0813/p/14621051.html