mysql中外键如何使用?
发布网友
发布时间:2022-04-04 11:29
我来回答
共4个回答
热心网友
时间:2022-04-04 12:58
1、只有InnoDB类型的表才可以使用外键。mysql默认是MyISAM,这种类型不支持外键约束
2、外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。
3、外键的作用:
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值。
4、建立外键的前提:
两个表必须是InnoDB表类型。
使用在外键关系的域必须为索引型(Index)。
使用在外键关系的域必须与数据类型相似。
5、创建的步骤
指定主键关键字: foreign key(列名)。
引用外键关键字: references <外键表名>(外键列名)。
6、事件触发*:on delete和on update , 可设参数cascade(跟随外键改动)。
restrict(*外表中的外键改动),set
Null(设空值),set Default(设默认值)。
[默认]no action
7、举例
outTable表 主键 id 类型 int
创建含有外键的表:
代码如下:
create table temp(
id int,
name
char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。
代码如下:
create table temp( id int, name char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
热心网友
时间:2022-04-04 14:16
外键参照动作列表:
CASCADE:级联,子表跟随父表更新外键值
SET NULL:子表更随主表更新外键值为 NULL
RESTRICT/ NO ACTION:默认,*父表改动外键值
SET DEFAULT:目前产生的效果和 RESTRICT 相同。
热心网友
时间:2022-04-04 15:51
首先 你的UserInfo表是否建好
第二:
create table BulletinInfo(
bulletinId int primary key auto_increment not null,
bulletintitle varchar(100) not null,
bulletincontent text not null,
userId int ,
bulletincreateTime datetime default(getdate()) not null
constraint f_key foreign key(userId) references UserInfo(userId)
)
第三:
字段的类型对于不同实现 有初始化空间, 如: userId int(1) 有的要求初始化空间大小 有的没要求
热心网友
时间:2022-04-04 17:42
你的userinfo表的userid字段建了吗追问当然建了
create table UserInfo
(
userId int primary key not null,
userName varchar(50) unique not null,
userPwd varchar(50) unique not null
)
追答CREATE TABLE BulletinInfo
(
bulletinId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
bulletintitle VARCHAR(100) NOT NULL,
bulletincontent TEXT NOT NULL,
userId INT,
bulletincreateTime DATETIME DEFAULT NULL,
FOREIGN KEY(userId) REFERENCES UserInfo(userId)
)
这个可以