mysql实现参照完整性fk_emp:将emp中的did列为外键,参照dept表的主键did。
时间: 2023-06-26 09:06:08 浏览: 82
可以使用以下 SQL 语句来创建外键约束,实现参照完整性:
```
ALTER TABLE emp
ADD CONSTRAINT fk_emp
FOREIGN KEY (did) REFERENCES dept(did);
```
其中,`fk_emp` 是外键约束的名称,`emp` 是包含外键的表名,`did` 是外键列名,`dept` 是被参照的表名,`did` 是被参照表的主键列名。执行以上 SQL 语句后,如果 `emp` 表中的 `did` 列的值不在 `dept` 的 `did` 列中存在,则插入数据或更新数据时会抛出错误,保证了参照完整性。
相关问题
用mysql写出(1)创建索引pk_xs_bak:在emp表的eid列上建立索引; (2)实现域完整性ch_tel:为emp的tel建立check约束,其值只能为0-9的数字; (3)实现unique约束un_dept:为dept的dname创建唯一性索引; (4)实现参照完整性fk_emp:将emp中的did列为外键,参照dept表的主键did。
以下是对应的 MySQL 代码,可以实现您所需要的操作:
1. 创建索引pk_xs_bak:
```mysql
CREATE INDEX pk_xs_bak ON emp(eid);
```
2. 实现域完整性ch_tel:
```mysql
ALTER TABLE emp ADD CONSTRAINT ch_tel CHECK (tel REGEXP '^[0-9]+$');
```
3. 实现unique约束un_dept:
```mysql
CREATE UNIQUE INDEX un_dept ON dept(dname);
```
4. 实现参照完整性fk_emp:
```mysql
ALTER TABLE emp ADD CONSTRAINT fk_emp FOREIGN KEY (did) REFERENCES dept(did);
```
以上代码可以在 MySQL 数据库中执行,实现对应的索引、约束和外键。请注意,在执行这些操作之前,需要确保表结构和数据的完整性和一致性。
mysql实现域完整性ch_tel:为emp的tel建立check约束,其值只能为0-9的数字;
可以使用MySQL的CHECK约束来实现域完整性ch_tel,具体的步骤如下:
1. 在emp表中为tel字段添加CHECK约束,约束条件为tel的值只能为0-9的数字。
```mysql
ALTER TABLE emp
ADD CONSTRAINT ch_tel CHECK (tel REGEXP '^[0-9]+$');
```
2. 测试约束是否生效。
```mysql
-- 插入合法数据
INSERT INTO emp (name, tel) VALUES ('张三', '1234567890');
-- 插入非法数据
INSERT INTO emp (name, tel) VALUES ('李四', 'abc123');
```
第一条插入语句会成功执行,而第二条插入语句会因为约束条件不满足而失败。