首页
学习
活动
专区
圈层
工具
发布

【数据库】MySQL进阶一、主外键讲解

MySQL进阶主外键讲解 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的...Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dept_id找到对应的部门,然后才能找到部门表里的各种字段信息,从而让二者相关联。...所以说,外键一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。 2.外键的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。 2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。 3....CASCADE(级联):如果主表的记录删掉,则从表中相关联的记录都将被删掉。 SET NULL:将外键设置为空。

2.8K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql创建外键失败原因总结

    例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。...原因三 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)。如果其中一个不是primary key的话,你必须先为它创建一个索引。...若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。...原因五 外键的名字不能重复。你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。...原因七 你可能设置为外键设置了一个默认值,如default=0。 原因八 ALTER声明中有语法错误。

    6.5K00

    在PowerDesigner中设计物理模型1——表和主外键

    ,单击确定按钮即可完成主键的创建。...另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示: 外键 如果是由概念模型或者逻辑模型生成物理模型...,那么外键是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外键关系。...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用...切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的Name、Code、关联的列、约束名、更新策略和删除策略等。

    3.9K10

    通过sql命令建表 和 主外键约束以及其他约束

    emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外键约束...创建表的命令后面是小括号(),而不是{}, 2. 注释用-- 3....主键外键可以命名,不然就是默认的名字 7....写完后,鼠标左键选中整个代码,分析、执行,最后生成表 什么是约束constraint: 对一个表中的属性操作的限制 分类: 主键约束:不允许重复元素,避免数据的冗余 外键约束:通过外键约束,从语法上保证了本事物所关联的其他事物一定是存在的...事物和事物之间的关系是通过外键来体现的 check约束:保证事物属性的取值在合法的范围之内 1 create table student 2 ( 3 stu_id int primary key

    1.6K20

    深入mysql外键关联问题的详解--Java学习网

    今儿继续再看老师给推荐的深入浅出mysql数据库开发这本书,看到innodb数据库的外键关联问题时,遇到了一个问题,书上写的是可以对父表进行修改,从而同步到子表的外键上去,可是自己的实验却是没有能够。...CONSTRAINT `city_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`)) 上面的问题是说因为有关联的存在...然后自己又重新看了下书本,发现自己的sql语句中没有innodb的外键约束方式(cascade,set null,no action,restrict),感觉这就是自己出问题的地方。...可是怎么加入关联方式呢,上网找了好半天也没有合适的方法。就自己找呗,就通过老师说的方法,?...网上的说法是:字段类型和外键的索引 这里是重新建立一张表icity,结果可以了,总结可能是因为字段类型的问题,可是我的alter的问题还是没有解决呢: 代码如下: mysql> create

    1.6K40

    表与表之间关系

    注意: 一对多的创建原则: 主外键关连 1.2.2、一对一关系 在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。...注意: 一对一的创建原则: 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE 外键是主键:主表的主键和从表的主键,形成主外键关系 1.2.3、多对多关系 在多对多关系中,...要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。 注意: 多对多的创建原则: 二个表与中间表创建1对多的关系。...2、一对多应用 创建一对多关系:主外键关连 新华出版社(Python爬虫、Linux) 海燕出版社(操作系统、数学) 摆渡出版社(英语、网页设计) 大众出版社() 案例: 这是一个书和出版社的一个例子...:外键唯一,user_id唯一对应一个uid,user_id必须在uid里出现 案例: 用户和管理员(只有管理员才可以登录,一个管理员对应一个用户) 表创建 #用户表(被关联表) create table

    2.3K30

    mysql(入门基础了解部分,数据库的基本概念)

    (MySQL 的创造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB)MySQL6.x 版本之后分为社区版和商业版。...MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL是开源的,所以你不需要支付额外的费用。...四种:一对一关联、一对多关联、多对多关联、自我引用 一对一关联(one-to-one) 在实际的开发中应用不多,因为一对一可以创建成一张表。...基础信息表(常用信息):学号、姓名、手机号码、班级、系别档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...两种建表原则:外键唯一:主表的主键和从表的外键(唯一),形成主外键关系...外键是主键:主表的主键和从表的主键,形成主外键关系。  一对多关系(one-to-many) 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。 举例:员工表:编号、姓名、...

    1.2K30
    领券