mysql建外键+两表关联

mysql建外键+两表关联

说明:

一般情况下,开发过程中是不建立外键

以创建员工部门表为例

第一种方式

建表的时候指明外键

-- 创建部门表
create table dept(
	id int primary key auto_increment,	-- 部门编号
	name varchar(20)					-- 部门名称
);

-- 创建员工表
create table emp(
	id int primary key auto_increment,	-- 员工编号
	name varchar(20),					-- 员工姓名
	dept_id int,						-- 部门编号
	foreign key(dept_id) references dept(id) -- 指定dept_id为外键
);

第二种方式

如果已存在,可以使用下面这种方式

-- 创建部门表
create table dept(
	id int primary key auto_increment,	-- 部门编号
	name varchar(20)					-- 部门名称
);

-- 创建员工表
create table emp(
	id int primary key auto_increment,	-- 员工编号
	name varchar(20),					-- 员工姓名
	dept_id int							-- 部门编号
);

-- 如果表已存在,可以使用下面这种方式:
alter table emp add constraint fk_dept_id foreign key(dept_id) references dept(id);

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 中,可以使用 SUBSTRING() 函数来切割字符串,并将切割出来的字段作为外键关联其他表。下面是一个示例: 假设有两个表,一个是 orders 表,包含订单信息;另一个是 customers 表,包含客户信息。orders 表中有一个字段 customer_info 存储客户信息,格式为 "姓名-电话号码"。现在需要将 customer_info 字段切割成姓名和电话号码两个字段,并将姓名作为 orders 表的外键关联 customers 表。 首先,在 customers 表中创一个自增的 id 字段作为主键: ``` CREATE TABLE customers ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), phone VARCHAR(20), PRIMARY KEY (id) ); ``` 然后,在 orders 表中添加一个外键字段 customer_id,用于关联 customers 表的主键 id: ``` ALTER TABLE orders ADD COLUMN customer_id INT; ``` 接着,使用 SUBSTRING() 函数将 customer_info 字段切割成姓名和电话号码两个字段,并将姓名插入 customers 表中: ``` INSERT INTO customers (name, phone) SELECT SUBSTRING(customer_info, 1, INSTR(customer_info, '-')-1), SUBSTRING(customer_info, INSTR(customer_info, '-')+1) FROM orders; ``` 最后,使用 UPDATE 和 INNER JOIN 语句将 orders 表中的 customer_id 字段更新为 customers 表中对应的 id 值: ``` UPDATE orders o INNER JOIN customers c ON SUBSTRING(o.customer_info, 1, INSTR(o.customer_info, '-')-1) = c.name SET o.customer_id = c.id; ``` 这样就完成了将切割出来的字段作为外键关联其他表的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值