首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

MySQL进阶主外讲解 1.什么是外: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外:是另一表的主键, 外可以有重复的, 可以是空值,用来和其他表建立联系用的...Id=Dept_id,而Dept_id就是员工表中的外:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外Dept_id找到对应的部门,然后才能找到部门表里的各种字段信息,从而让二者相关联。...所以说,外一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。 2.外的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外。 2. 建立外关系的对应列必须具有相似的InnoDB内部数据类型。 3....MyISAM:不支持外约束。不支持事务。对数据大批量导入时,它会边插入数据边建索引,所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引。 InnoDB:支持外约束,支持事务。

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

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

    单击Columns切换到列选项卡,在下面的列表中可以添加表中的列。Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外,M代表不能为空。...3.切换到Keys选项卡中,在其中添加一行命名为PK_ClassRoom,然后单击工具栏的“属性”按钮,打开属性窗口,在该窗口中切换到Columns选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列...,那么外是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外关系。...假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添加RoomID列以形成外列,具体操作方法就是在工具栏中单击“Reference...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外引用,如果已经存在RoomID列,则只添加引用

    2.1K10

    SQL Server数据库中导入导出数据及结构时主外关系的处理

    操作过程分为以下几个步骤: 步骤1:从源数据库生成数据结构脚本【不包表含外关系】   在数据源188连接上,右键点击源数据库》【任务】》【生成脚本】 ? 弹出“生成和发布脚本” ?...将“编写外脚本”的值设置为false,意思是这一步骤生成的数据结构脚本中不包含表之间的外关系。其他选项根据实际情况设置。 点击【确定】按钮,生成脚本,入下图。 ?...设置 SET IDENTITY_INSERT dbo.T_ACL_User Off ; 步骤5:从源数据库生成仅包含表外关系的数据结构脚本   步骤与步骤1大致相同,最后一步设置相反 ?...红色框内,将“编写外脚本”设置为True,其他选项与步骤1中设置相反。点击"确定"按钮,生成脚本,另存为“OriginalDataStructureOnlyWithFK.sql”。...外已经成功创建。

    1.8K40

    MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

    主表的主键和从表的外形成主外关系 从表外的值是对主表主键的引用。...从表外类型,必须与主表主键类型一致。 建立外的表必须是InnDB型,不能是临时表。 外键名不能用引号。FK_ID错误。应为FK_ID。、 添加数据时:从表的外,只能添加主表主键中存在的数据。...1.1 添加约束 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外) REFERENCES 主表 (主键); 真实: ALTER TABLE student...ALTER TABLE 表名 DROP FOREIGN KEY 外键名; 具体: ALTER TABLE student DROP FOREIGN KEY FK_ID; 二、一对多操作 1.添加主外约束...1、创建中间表,给中间表添加两个外约束 2、创建表、添加数据 订单表和订单项表的主外关系 alter table `orderitem` add constraint orderitem_orders_fk

    26630

    如何处理 MySQL错误码 1215:无法添加约束?

    本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建外时,MySQL...总是会出现提示: ERROR 1215 (HY000): Cannot add foreign key constraint 这信息基本是啥都没说,下面就来说说几种常见的导致1215错误的情况: 父表不存在 mysql...REFERENCES `parent`(`id`) -> ) ENGINE INNODB; ERROR 1215 (HY000): Cannot add foreign key constraint mysql...pariente(id); 正确: ALTER TABLE child ADD FOREIGN KEY (parent_id) REFERENCES parent(id); 父列和子列数据类型不一致mysql...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建外失败的更多提示信息

    21.1K21

    mysql 分区_mysql分区

    对于已经过期或者不需要保存的数据,可以通过删除与这些数据有关的分区来快速删除数据 跨多个磁盘来分散数据查询,以获得更大的查询吞吐量 分区:partition key 查看是否支持分区: mysql>...对于上百万条记录的表来说,删除分区要比运行一个delete 语句有效得多 经常运行包含分区的查询,mysql可以很快地确定只有某一个或某些分区需要扫描。...同时hash分区只支持整数分区,而key分区支持使用除blob,text以外的其他类型; 与hash分区不同,创建可以分区表的时候,可以不指定分区,默认会首先选择使用主键作为分区;没有主键时,会选择非空唯一作为分区...; 子分区 对分区表中每一个分区再次分割,又被称为复合分区;适合用于保存非常大量的数据记录; mysql分区处理null值的方式 mysql禁止分区键值使用null,分区可能是一个字段或者一个用户定义的表达式...分区中,null值会被当做最小值来处理; list分区中,null值必须出现在枚举列表中,否则不接受 hash/key,null值会被当做零值来处理; 分区管理 使用alter table 来对分区进行,添加

    3.8K30

    MySQL中创建外的错误:1215 Cannot add the foreign key constraint

    引言: MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外基础之上的,这里解决了一个在创建主外约束过程中碰到的一个问题。 1....HASH ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 接下来我们需要关联product.sid 至 sealer.id,进行父子表的主外关联...问题分析 主外更多的是某表的主键与子表的某个列进行关联,要求是具备相同的数据类型和属性,问题会不会出现在这里?...解决的办法 修改product.sid中的数据类型,添加unsigned和字段的长度,将其设置为相同即可。 5....总结 之所以出现1215的问题,是由于主外之间的数据类型不一致造成的,以后类似问题,皆可按此处理。

    2.4K50

    day05_MySQL学习笔记_02

    REFERENCES(references:引用/参照/关联)       第二种添加约束的方式:在表格创建时没有添加约束,之后通过修改表格添加约束。       ...REFERENCES(references:引用/参照/关联)       第二种添加约束的方式:在表格创建时没有添加约束,之后通过修改表格添加约束。...这个条件大多数情况下都是使用主外关系去除(一般使用内连接查询)。       两张表的连接查询一般会有一个主外关系(没有关系的话,你查个鬼啊!)...如果两张表的查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。     ...特别注意:我自己测试过,两张表的主外关系可以alter修改表的主次表关系,使这两张表有了主外关系;          两种表也可以不有主外关系,只要他们对应的字段和字段类型相同就行。

    2.1K20

    MySQL全部知识点(2)

    设计从表可以有两种方案: Ø 在t_card表中添加列(相对t_user表),并且给外添加唯一约束; Ø 给t_card表的主键添加约束(相对t_user表),即t_card表的主键也是外。...这个条件大多数情况下都是使用主外关系去除。...两张表的连接查询一定有一个主外关系,三张表的连接查询就一定有两个主外关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外关系作为条件来处理。...如果两张表的查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。 3 自然连接 大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外关系等式来去除它。...1006 第一步:去除多表,只查一张表,这里去除部门表,只查员工表 SELECT ename, sal FROM emp e WHERE empno=1006 第二步:让第一步与dept做内连接查询,添加主外条件去除无用笛卡尔积

    1.9K70

    MySQL

    ,保证当前的字段的类型为数值型,一般情况下主键设置自增 not null 代表当前列的数据在添加时不能省略 default 默认值 foreign key(字段名) 设置外 COMMENT '学号'...有外的表是子表,没有外的表是主表,一般情况下主表的数据信息会相对于少于子表(这不是绝对的)。主要还是看有没有关联字段(外)。 设置主外关系是在子表上进行设置....主外关系的名称,一般都是全大写,以FK为前缀,多个单词之间用下划线(_)分隔。 设置完主外关系之后,子表中添加数据时的外字段中的数据在主表中必须存在,如果不存在将会引发异常。...两表之间逻辑关联,降低数据冗余): 外的创建两种方式: 1) 第一种建表时没有指定,后期进行添加 语法: alter table 子表名 add constraint FK_ 外键名称 foreign...table student add constraint FK_GRADE_ID1 foreign key (gradeid) references grade(gradeid) 2) 第二种在建表的时候指定主外关系

    17320
    领券