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

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

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

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

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

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

2K10

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

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

1K40

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

主表主键和从表形成主外关系 从表外值是对主表主键引用。...从表外类型,必须与主表主键类型一致。 建立外表必须是InnDB型,不能是临时表。 外键名不能用引号。FK_ID错误。应为FK_ID。、 添加数据时:从表,只能添加主表主键存在数据。...删除数据时:需要先删除从表与主表关联数据,再删除主表数据。...ACTION 不进行任何操作 RESTRICT 拒绝主键删除或修改外关联列。...1、创建中间表,给中间表添加两个外约束 2、创建表、添加数据 订单表和订单项表主外关系 alter table `orderitem` add constraint orderitem_orders_fk

25730

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

2015-01-26   软件开发,经常涉及到不同数据库(包括不同产品不同版本)之间数据结构与数据导入导出。...将“编写外脚本”值设置为false,意思是这一步骤生成数据结构脚本不包含表之间关系。其他选项根据实际情况设置。 点击【确定】按钮,生成脚本,入下图。 ?...选中新建数据库,打开步骤一保存”OriginalDataStructureWithoutFK.sql“脚本文件,运行该文件,运行成功后,目标数据库成功创建了表、视图、存储过程、自定义函数,如下图...红色框内,将“编写外脚本”设置为True,其他选项与步骤1设置相反。点击"确定"按钮,生成脚本,另存为“OriginalDataStructureOnlyWithFK.sql”。...步骤6:导入外结构关系脚本至目标数据库   选中目标数据库,打开步骤5保存“OriginalDataStructureOnlyWithFK.sql”脚本文件,运行之,运行成功后,查看表结构 ?

1.8K40

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

MySQL是一种关联数据库管理系统,将数据保存在不同,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL是开源,所以你不需要支付额外费用。...表关联关系 表与表之间数据记录有关系(relationship)。现实世界各种实体以及实体之间各种联系均用关系模型来表示。...四种:一对一关联、一对多关联、多对多关联、自我引用 一对一关联(one-to-one) 在实际开发应用不多,因为一对一可以创建成一张表。...基础信息表(常用信息):学号、姓名、手机号码、班级、系别档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...两种建表原则:外唯一:主表主键和从表(唯一),形成主外关系...外是主键:主表主键和从表主键,形成主外关系。  一对多关系(one-to-many) 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。 举例:员工表:编号、姓名、...

84230

表与表之间关系

可以在数据库图表表之间创建关系,以显示一个表列与另一个表列是如何相链接。 在一个关系型数据库,利用关系可以避免多余数据。...在这种关系,A 表一行可以匹配 B 表多行,但是 B 表一行只能匹配 A 表一行。 只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。...注意: 一对多创建原则: 主外关连 1.2.2、一对一关系 在一对一关系,A 表一行最多只能匹配于 B 表一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。...注意: 一对一创建原则: 外唯一:主表主键和从表(唯一),形成主外关系,外唯一 UNIQUE 外是主键:主表主键和从表主键,形成主外关系 1.2.3、多对多关系 在多对多关系,...2、一对多应用 创建一对多关系:主外关连 新华出版社(Python爬虫、Linux) 海燕出版社(操作系统、数学) 摆渡出版社(英语、网页设计) 大众出版社() 案例: 这是一个书和出版社一个例子

1.4K30

mysql

MySQL 3.23.44版本后,InnoDB引擎类型表支持了外约束。...外使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外(据说以后版本有可能支持,但至少目前不支持); 2.外列必须建立了索引,MySQL 4.1.2以后版本在建立外时会自动创建索引...,但如果在较早版本则需要显示建立; 3.外关系两个表列必须是数据类型相似,也就是可以相互转换类型列,比如int和tinyint可以,而int和char则不可以; 外好处:可以使得两张表关联...,保证数据一致性和实现一些级联操作; 外定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表改动) CASCADE(跟随外改动) SET NULL(设空值) SET DEFAULT(设默认值

5.4K70

C++自定义结构体或类作为关联容器

概述 STL像set和map这样容器是通过红黑树来实现,插入到容器对象是顺序存放,采用这样方式是非常便于查找,查找效率能够达到O(log n)。...所以如果有查找数据需求,可以采用set或者map。 但是我们自定义结构体或者类,无法对其比较大小,在放入到容器时候,就无法正常编译通过,这是set/map容器规范决定。...要将自定义结构体或者类存入到set/map容器,就需要定义一个排序规则,使其可以比较大小。...最简单办法就是在结构体或者类中加入一个重载小于号成员函数,这样在存数据进入set/map时,就可以根据其规则排序。 2....<< endl; } else { cout << "可以找到点" << endl; } } } 其中关键就是在点结构体重载了

2.1K20

Mysql关联查询(内连接,外连接,自连接)

在使用数据库查询语句时,单表查询有时候不能满足项目的业务需求,在项目开发过程,有很多需求都是要涉及到多表连接查询,总结一下mysql多表关联查询 一,内连接查询 是指所有查询出结果都是能够在连接表中有对应记录...以t_employee(员工表)和t_dept(部门表)为例: t_employee表记录如下:dept代表该员工所在部门 t_dept表记录如下: 可以发现,其中人力资源部里没有员工...(这里只是举例,可能与实际不符,但主要在于逻辑关系),而赵七没有对应部门,现在想要查询出员工姓名以及其对应部门名称: 此时,就要使用内连接查询,关键字(inner join) 在这里说一下关联查询sql...,如果右表没有记录对应的话就显示null 查询结果: 关键字是left outer join,等效于left join,在关联查询,做外连接查询就是左连接查询,两者是一个概念 三,右外连接是同理...顾名思义,把两张表字段都查出来,没有对应值就显示null,但是注意:mysql是没有全外连接(mysql没有full outer join关键字),想要达到全外连接效果,可以使用union关键字连接左外连接和右外连接

3.8K40

day05_MySQL学习笔记_02

,外关联/引用/参照主键,主键和外数据类型必须一致。     ...REFERENCES(references:引用/参照/关联)       第二种添加外约束方式:在表格创建时没有添加外约束,之后通过修改表格添加外约束。...特别注意:ON相当于WHERE,一般多用于主外条件关联。              不是主外条件也可以啊!说白了,ON就是筛选条件。       内连接特点:查询结果必须满足条件。...如果两张表查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。     ...特别注意:我自己测试过,两张表主外关系可以alter修改表主次表关系,使这两张表有了主外关系;          两种表也可以不有主外关系,只要他们对应字段和字段类型相同就行。

2.1K20

MySQL

有外表是子表,没有外表是主表,一般情况下主表数据信息会相对于少于子表(这不是绝对)。主要还是看有没有关联字段(外)。 设置主外关系是在子表上进行设置....主外关系名称,一般都是全大写,以FK为前缀,多个单词之间用下划线(_)分隔。 设置完主外关系之后,子表添加数据时字段数据在主表必须存在,如果不存在将会引发异常。...两表之间逻辑关联,降低数据冗余): 外创建两种方式: 1) 第一种建表时没有指定,后期进行添加 语法: alter table 子表名 add constraint FK_ 外键名称 foreign...key(子表关联字段) references 主表名(主表主键字段); 案例: alter table student add constraint FK_GRADE_ID1 foreign...key (gradeid) references grade(gradeid) 2) 第二种在建表时候指定主外关系 mysql> create table result( -> studentNo

16820

存在外关联主表truncate如何做

主外是数据库提供一种两表之间强制关联方法,也可以从应用层实现。...优点 缺点 数据库实现主外 由数据库层机制保证,无需应用额外实现 强关联,不易扩展变更 应用实现主外 易扩展变更 完全由应用控制,要求较高 我认为需要根据实际情况进行取舍,例如表不复杂,可以由应用实现...存在主外关联主表,由于存在外关联关系,因此有些操作就会禁止,例如truncate。 实验 1....主外是数据库提供强约束,可以帮助我们控制主子表之间关系,但同时还是一把双刃剑,当然,我们认为既然定义了主外,就是需要这种强制关系,但有时可能就会有一些变更,因此,如何取舍,需要根据实际情况来决策...主外关联主表,如果有数据,则不能直接用truncate方式删除,因为会认为有外和其关联,不能直接截断主表,若需要做,可以先禁止外约束,主表变成一个独立表,这样就可以执行truncate了。

80130

MySQL全部知识点(2)

5 外 主外是构成表与表关联唯一途径! 外是另一张表主键!例如员工表与部门表之间就存在关联关系,其中员工表部门编号字段就是外,是相对部门表。...这个条件大多数情况下都是使用主外关系去除。...两张表连接查询一定有一个主外关系,三张表连接查询就一定有两个主外关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外关系作为条件来处理。...如果两张表查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。 3 自然连接 大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外关系等式来去除它。...而自然连接无需你去给出主外等式,它会自动找到这一等式: l 两张连接名称和类型完成一致列作为条件,例如emp和dept表都存在deptno列,并且类型一致,所以会被自然连接找到!

1.9K70
领券