sql外键需要输入吗_sql_外键(foreignkey)
外键时,用constraint 外键名 foreign key .... 方便进行外键的删除.
若不定义,则可以:
先输入:alter table drop foreign key -->会提示出错.此时出错信息中,会显示foreign key的系统默认外键名.--->
用它去删除外键.
(4) 举例
实例一:
4.1
CREATE TABLE parent
(
id INT NOT NULL,
PRIMARY KEY (id)
) TYPE=INNODB; -- type=innodb 相当于 engine=innodb
CREATE TABLE child
(
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
)
TYPE=INNODB;
向parent插入数据后,向child插入数据,插入时,child中的parent_id的值只能是parent中有的数据,否则插入不成功;
删除parent记录时,child中的相应记录也会被删除;-->因为: on delete cascade
更新parent记录时,不给更新;-->因为没定义,默认采用restrict.
4.2
若child如下:
mysql>
create table child
(
id int not null primary key auto_increment,
parent_id int,
index par_ind (parent_id),
constraint fk_1 foreign key (parent_id) references
parent(id) on update cascade on delete restrict
)
type=innodb;
用上面的:
1).
则可以更新parent记录时,child中的相应记录也会被更新;-->因为: on update cascade
2).
不能是子表操作,影响父表.只能是父表影响子表.
3).
删除外键:
alter table child drop foreign key fk_1;
添加外键:
alter table child add constraint fk_1 foreign key (parent_id) references
parent(id) on update restrict on delete set null;
(5) 多个外键存在:
product_order表对其它两个表有外键。
一个外键引用一个product表中的双列索引。另一个引用在customer表中的单行索引:
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
price DECIMAL,
PRIMARY KEY(category, id)) TYPE=INNODB;
CREATE TABLE customer (id INT NOT NULL,
PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE product_order (
no INT NOT NULL AUTO_INCREMENT,
product_category INT NOT NULL,
product_id INT NOT NULL,
customer_id INT NOT NULL,
PRIMARY KEY(no),
-- 双外键
index(product_category, product_id),
foreign key(product_category, product_id)
references product(category, id)
on update cascade on delete restrict ,
-- 单外键
INDEX (customer_id),
FOREIGN KEY (customer_id)
REFERENCES customer(id)) TYPE=INNODB;
(6) 说明:
1.若不声明on update/delete,则默认是采用restrict方式.
2.对于外键约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 的方式.
sql外键需要输入吗_sql_外键(foreignkey)相关推荐
- sql外键需要输入吗_SQL外键
在本教程中,将学习SQL外键以及如何创建FOREIGN KEY约束以强制表之间的关系. 1. SQL外键约束简介 外键是一列或一组列,用于强制两个表中的数据之间的链接. 在外键引用中,第一个表的主键列 ...
- sql外键需要输入吗_关于sql:为什么在没有连接的情况下可以联接,为什么需要主-外键关系?...
如果我们可以从两个表中获取数据而又没有主键和外键关系,那为什么我们需要这个规则? 你能用合适的例子清楚地解释我吗? 这是一个测试数据库,不要介意不良的结构. 表的结构: ** TABLE - 'tes ...
- 如何列出引用SQL Server中给定表的所有外键?
我需要在SQL Server数据库中删除一个高度引用的表. 我如何获取要删除表需要删除的所有外键约束的列表? (与在Management Studio的GUI中单击相比,SQL的答案更好.) #1楼 ...
- mysql sql外键的作用_SQL的主键和外键的作用
QL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键 ...
- mysql 删除外键 sql语句_sql server ql语句删除外键和删除
sql server ql语句删除外键和删除 alter table tablename add constraint ordersrelationship foreign key mployeeid ...
- SQL Sever 小技巧之解决外键约束(禁用、启用外键约束)
SQL Sever 小技巧之解决外键约束(禁用.启用外键约束) 因为有外键约束的存在,在从表中,修改主表不存在的数据是不合法的;在主表中,删除从表中已存在的主表信息也是不合法的. 当然方法总比困难多, ...
- sql语句创建表的同时添加外键约束
sql语句创建表的同时添加外键约束 题目 建立一个商店的数据库store,记录顾客及其购物情况,由下面三个表组成: 商品(商品号,商品名,单价,商品类别,供应商): 顾客(顾客号,姓名,住址): 订单 ...
- SQL 语句:不得使用外键与级联,一切外键概念必须在应用层解决
阿里Java规范 [强制]不得使用外键与级联,一切外键概念必须在应用层解决. 说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键.如果更 ...
- mysql 命令行 外键_MySQL命令行MySql外键设置详解
第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...
- mysql主键和外键示例_SQL数据库中主键和外键的应用实例
数据库 什么是数据库主键(Primary Key)? 数据库主键(Primary Key):指的是一个列或多列的属性组合,其属性值能唯一标识一条记录,通过它可强制表的实体完整性. 例如: (tb_Bo ...
最新文章
- AC日记——任务查询系统 洛谷 P3168
- 腾讯产品课观后感之定位2018-08-22
- python缩进注意事项_python注意事项
- 8.8 Sencha Studio 监视工具( Inspect Tool)
- [转载] [Python错误]NameError: name ‘name’ is not defined
- 矩阵分析 (一) 线性空间和线性变换
- Hadoop配置Yarn
- 计算机科学管理学专业大学排名,2020管理科学专业大学排名
- Windows server 2012修改输入法
- 高性能JSON框架之FastJson的简单使用
- 【自动驾驶】华为车BU介绍(2021-11-23晚直播记录)
- 云脉自定义模板识别大大提高资料数据格式化的效率
- Leetcode题解 二分查找
- 导出CAD文件的几种方法
- easy excel date 类型解析报错_9 个绝对用得上的excel日期公式,赶紧拿走!
- 5.基于Abp的DDD框架
- 通过PyFMI读取FMU文件及PyFMI的安装教程
- 生存指南2找不到服务器,生存指南2无法进入游戏怎么解决 无法进入游戏解决方法攻略...
- Appnium--APP自动化测试工具
- 图标图片网址集合(更新中)