MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析


列级约束:只针对某一个字段
表级约束:约束针对2个或2个以上的字段
约束类型是按功能来划分。
外键约束:保持数据一致性,完整性。实现数据表的一对一或一对多的关系。这就是把MySQL称为关系型数据库的根本原因。

1、
子表:具有外键列的表
父表:子表所参照的表
2、数据表的存储引擎禁止使用临时表
3、外键列:曾经加载 foreign关键词的那一列
4、参照列没有索引会自动创建,外键列没有索引不会自动创建
存储引擎默认的是什么?如果不是InnoDB,如何修改?
找到MySQL配置文件my.ini

修改以后,重启数据库。

进入MySQL:

第一个要求到达了,接下来需要有相似的数据类型。上边的表中是一个省份表,只有id和省份名称。
重新创建一个表:用户,字段有用户id,用户名,用户所在省份并且是字符类型。有了关系型数据库,只需要存储省份的编号即可。

做修改后:

这里的users就是子表,所参照的provinces就是父表。
pid外键列 id参照列,他们的数据类型在数字情况下必须相同,字符时可以不同。
id设置了主键,主键在创建的同时会自动的创建索引。
查看索引:



在子表中,系统自动的为pid创建了索引。
最后查看一下表users:

MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析的更多相关文章
- MySQL数据库(4)_MySQL数据库外键约束、表查询
一.外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...
- MySQL数据库 : 查询语句,连接查询及外键约束
查询指定字段 select 字段1,字段2 from 表名; 消除重复行(重复指的是结果集中的所有完全重复行) select distinct 字段1,字段2.. ...
- Mysql外键约束之CASCADE、SET NULL、RESTRICT、NO ACTION
Mysql中有目前只有InnoDB引擎支持外键约束,InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN ...
- 详解MariaDB数据库的外键约束
1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
- 备忘:MySQL中修改表中某列的数据类型、删除外键约束
-- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...
- MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CON ...
- Mysql外键约束设置使用方法
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...
- 1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- mysql 外键约束及表关联
一.MYSQL中的约束 1.主键:primary key 唯一非空的特性并且可以优化查询速度 2.外键:foreign key 外键的作用保证2个或2个以上的数据表的数据一致性和完整性 3.唯一:un ...
随机推荐
- 使用 PREPARE 的几个注意点
简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...
- linux下安装svn出现configure: error: We require OpenSSL; try --with-openssl
linux下安装svn出现configure: error: We require OpenSSL; try --with-openssl http://blog.csdn.net/woshixion ...
- 程序报错java.lang.OutOfMemoryError: PermGen space
参考文档: http://www.cnblogs.com/xwdreamer/archive/2011/11/21/2296930.html http://www.cnblogs.com/ceshi2 ...
- 制作tomcat重启.bat文件
环境是在windows下,linux不知道,没有尝试过,有机会去试试哈哈 首先创建一个restart.bat文件 创建在哪里看你开心咯 然后用记事本打开 输入以下源代码: @echo off cd / ...
- [No0000E4]C# 常量
常量是固定值,程序执行期间不会改变.常量可以是任何基本数据类型,比如整数常量.浮点常量.字符常量或者字符串常量,还有枚举常量. 常量可以被当作常规的变量,只是它们的值在定义后不能被修改. 整数常量 整 ...
- CSS:Float
CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列. Float(浮动),往往是用于图像,但它在布局时一样非常有用. 元素怎样浮动 元素的水平方向浮动,意味着元素只能左右 ...
- UILabel中NSAttributedString和其LinebarkModel等属性之间的关系
如果设置了一个富文本给一个UILabel,那么后续改变这个UILabel的属性时将会同时改变UILabel.attributedText的属性描述,此时若改变了其它的大小.换行模式(如果在显示时我们可 ...
- python-mysql数据库导表存excel后发邮件(实例2)
需求:用户输入mysql数据库中某表名,将此表导入到excel中,将导出文件以邮件形式发出 设计思路: 1连接数据库 2读取表头(cur.description--获取表头,函数返回二维元组,采用列表 ...
- arcgis二次开发遇到System.Runtime.InteropServices.COMException (0x80040228) :异常来自HRESULT:0x80040228
出现此问题只需要在控件上拖入一个LicenseControl就可以了 参考资料:http://yaogu.blog.163.com/blog/static/1849990662012101283256 ...
- wpf中的数据模板
wpf中的模板分为数据模板和控件模板,我们可以通过我们自己定制的数据模板来制定自己想要的数据表现形式.例如:时间的显示可以通过图片,也可以通过简单数字表现出来. 例如: (1)先在Demo这个命名空间 ...