现有用户组和用户两个表,一对多的对应关系,测试了在mysql和informix中不同建表语句,分析如下,仅供参考。用户表t_group是主表,用户组表t_user是从表,用户表有外键依赖用户组表。
1.informix中的建表语句
create table t_group(
id serial,
name varchar(10),
primary key (id) constraint pk_t_group
)
constraint pk_t_group意思为指定主键约束名为pk_t_group,不添加的话主键约束名为默认值,serial是informix的自增类型,数值类似于int类型。
create table t_user(
id serial,
name varchar(10),
t_group_id int,
primary key (id) constraint pk_t_user,
foreign key (t_group_id) references t_group(id)
)
foreign key (t_group_id) references t_group(id)意思是t_user表中的字段t_group_id外键约束与t_group的主键id
2.mysql中的建表语句
create table t_group(
id int auto_increment,
name varchar(10),
primary key (id)
)
ENGINE=InnoDB DEFAULT CHARSET=gbk
mysql不支持为主键约束名重命名,即不能添加constraint pk_t_group,否则报错。
ENGINE=InnoDB DEFAULT CHARSET=gbk是设置字符编码为gbk,不添加这一行,默认为 ENGINE=InnoDB DEFAULT CHARSET=latin1,不知道是不是我安装mysql的时候没有设置字符编码集,我印象中安装的时候改过了
create table t_user(
id int auto_increment,
name varchar(10),
t_group_id int,
primary key (id),
foreign key (t_group_id) references t_group(id)
)
ENGINE=InnoDB DEFAULT CHARSET=gbk
分享到:
相关推荐
内包含外键约束模式,数据库的视图基本操作
用于查询某个数据库下所有表的外键约束情况,以便统一分析外键约束是否合理;主要查询出外键的,是否级联删除,级联更新,强制外键约束,强制复制约束始终状态。如想使用别的状态,请自行添加。下载的童鞋别下载错了...
项目中需要把一个数据库的部分表插入到另外一个数据库,设计到外键约束,写了一个程序对主表子表进行排序,插入的时候再也不用去考虑外键约束问题了
Oracle定义约束 外键约束 实验详解
最近在做数码相框上的嵌入式开发,开发过程中使用的SQLite数据库,但是编码的过程中,遇到个问题,SQLite不支持外键约束,外键约束会被解析但不会被执行。
sql外键约束解释,foreign tag
删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库...
外键约束(FOREIGN KEY)
禁用、启用外键约束和触发器
本文档是数据库的外键约束方式指南 需要的朋友请下载 保证可用
NULL 博文链接:https://vernonchen163.iteye.com/blog/2174952
检查约束外键约束.sql
MLDN魔乐科技_Oracle课堂18_外键约束 MLDN魔乐科技_Oracle课堂18_外键约束
主要介绍了MySQL外键约束常见操作方法,结合实例形式分析了mysql针对外键约束的查看、添加、修改、删除等相关操作实现方法,需要的朋友可以参考下
MySQL的约束——外键约束。 一篇文章带你快速了解!
oracle查看主外键约束关系,根据此SQL可以进行主外键约束的查询!
6.3 外键约束.sql
NULL 博文链接:https://bicashy.iteye.com/blog/1064355
4-外键约束.sql
外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。 这里以MySQL为例,总结一下3种外键约束方式的区别和联系。 ...