首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    2K70

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

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

    1.8K40

    mysql-外三种关系

    介绍 因为有foreign key约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 重点理解如果找出两张表之间关系 分析步骤: #1、先站在左表角度去找 是否左表多条记录可以对应右表一条记录...,即多对多,需要定义一个这两张表关系表来专门存放二者 关系 #一对一: 如果1和2都不成立,而是左表一条记录唯一对应右表一条记录,反之亦然。...这种情况很简单,就是在左表foreign key右 表基础上,将左表字段设置成unique即可 表三种关系 (1)书和出版社   一对多(或多对一):一个出版社可以出版多本书。...创建被关联表author表,之前book表在讲多对一关系已创建 mysql> create table author(id int primary key auto_increment,name varchar...(20)); Query OK, 0 rows affected (0.09 sec) 这张表就存放了author表和book表关系,即查询二者关系查这表就可以了 mysql> create table

    77330

    主外关联删除(on delete set null和on delete cascade)

    主外关联,当删除是父表数据,参照这些要删除数据,Oracle有三种处理方式: 1、禁止删除,也是Oracle默认方法。 2、将参照要删除数据子表对应数据置空。...3、将参照要删除数据子表对应数据删除。 对于1,比较容易理解,不解释。 对于2,需要使用on delete set null建立外约束。...对于3,需要使用on delete cascade建立外约束。...-------- -------------------- ----------      3 Linda          Liu                     2 可以看到子表中参照父表行也被删除了...ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys 这种删除表和上面相同

    2.8K30

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

    Name是模型上显示名称,Code是生成实际表名,后面的3个复选框P代办主键、F代表外,M代表不能为空。...另外需要注意是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“属性”窗口General选项卡中可以设置该主键上建立索引是聚集索引还是非聚集索引,如图所示: 外 如果是由概念模型或者逻辑模型生成物理模型...,那么外是通过Relationship生成,也可以通过工具栏中Reference来实现两表之间关系。...假如一个课程只会在一个固定教室上课,而一个教室会安排多个课程在不同时间上课,所以教室和课程是一对多关系,那么课程表中就需要添加RoomID列以形成外列,具体操作方法就是在工具栏中单击“Reference...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上引用,如果已经存在RoomID列,则只添加外引用

    2.1K10

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

    emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外约束...SQL Server里最后一行)逗号可有可无,但是Oracle数据库不能加逗号,但是建议SQL最后一个字段不要写逗号,方便移植 4. nvarchar表示国际化编码长度可变字符型变量 5....变量类型写在变量名后面,跟C语言以及其他语言不同,SQLServer不是C语言写 6. 主键外可以命名,不然就是默认名字 7....写完后,鼠标左键选中整个代码,分析、执行,最后生成表 什么是约束constraint: 对一个表中属性操作限制 分类: 主键约束:不允许重复元素,避免数据冗余 外约束:通过外约束,从语法上保证了本事物所关联其他事物一定是存在...事物和事物之间关系是通过外来体现 check约束:保证事物属性取值在合法范围之内 1 create table student 2 ( 3 stu_id int primary key

    95920

    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.5K70

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

    主表主键和从表形成主外关系 从表外值是对主表主键引用。...从表外类型,必须与主表主键类型一致。 建立外表必须是InnDB型,不能是临时表。 外键名不能用引号。FK_ID错误。应为FK_ID。、 添加数据时:从表,只能添加主表主键中存在数据。...参数名称 功能描述 CASCADE 删除包含与已删除键值有参照关系所有记录 SET NULL 修改包括与已删除键值有参照关系所有记录,使用NULL值替换(不能用于已标记为NOT NULL字段) NO...1、创建中间表,给中间表添加两个外约束 2、创建表、添加数据 订单表和订单项表主外关系 alter table `orderitem` add constraint orderitem_orders_fk...foreign key (oid) references orders(oid); 商品表和订单项表主外关系 alter table `orderitem` add constraint orderitem_product_fk

    26230

    day05_MySQL学习笔记_02

    通常连接查询不可能需要整个笛卡尔积,而只是需要其中一部分,那么这时就需要使用条件来去除不需要记录。       这个条件大多数情况下都是使用主外关系去除(一般使用内连接查询)。       ...两张表连接查询一般会有一个主外关系(没有关系的话,你查个鬼啊!)...,三张表连接查询就一般会有两个主外关系,       所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外关系作为条件来处理。       ...如果两张表查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。     ...特别注意:我自己测试过,两张表主外关系可以alter修改表主次表关系,使这两张表有了主外关系;          两种表也可以不有主外关系,只要他们对应字段和字段类型相同就行。

    2.1K20

    MySQL_关系码,关系完整性

    [toc] 关系码 候选码 候选码是能够唯一标识关系中某一个元组一个属性或属性集,也叫候选 如: 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名)都是候选码...候选码需要满足: 唯一性:唯一标识一个元组(注意不是说候选码只有一个) 最小性:构成候选码属性个数最少,比如前面的(班级,姓名),再添加一个学号或其他属性就多此一举了 主码 主码是从候选中选着一个作为查询...、插入、删除元组操作操作变量,也叫主键、主码、关系、关键字 简单来说就是从候选码中选出一个最具代表性 主属性:包含在任何一个候选码各个属性称为主属性(也就是说,之前(班级,姓名)中,班级和姓名都是主属性...) 非主属性:不包含在任何候选码中属性 外码 关系R1,R2,其中属性集X是R1非主码属性,但X是R2主码,则称X是R1外码(也叫外、外部关系),R1为参照关系,R2为被参照关系 外码取值是由被参照关系主码域决定...因此学号或课程号不能单独作为主码 而学号和课程号分别是学生和课程主码,则选课关系中,学号和课程号都是外码,并且学号和课程号是选课关系主属性 关系完整性 为了维护关系数据库中数据与现实一致性

    6510

    MySQL·关系模型

    关系模型 外 在 students 表中,通过 class_id 字段,可以把数据与另一张表关联起来,这种列称为外。...通过定义外约束,关系数据库可以保证无法插入无效数据。即如果 classes 表不存在 id=99 记录,students 表就无法插入 class_id=99 记录。...由于外约束会降低数据库性能,大部分互联网应用程序为了追求速度,并不设置外约束,而是仅靠应用程序自身来保证逻辑正确性。...删除列是通过 DROP COLUMN 实现。 索引 索引是关系数据库中对某一列或多个列值进行预排序数据结构。...在设计关系数据表时候,看上去唯一列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键。但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。

    79830

    MySQL全部知识点(2)

    5 外 主外是构成表与表关联唯一途径! 外是另一张表主键!例如员工表与部门表之间就存在关联关系,其中员工表中部门编号字段就是外,是相对部门表。...使用主外关系做为条件来去除无用信息 SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno; ?...这个条件大多数情况下都是使用主外关系去除。...两张表连接查询一定有一个主外关系,三张表连接查询就一定有两个主外关系,所以在大家不是很熟悉连接查询时,首先要学会去除无用笛卡尔积,那么就是用主外关系作为条件来处理。...如果两张表查询,那么至少有一个主外条件,三张表连接至少有两个主外条件。 3 自然连接 大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外关系等式来去除它。

    1.9K70

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

    MySQL介绍 概述 :MySQL是一个开放源代码关系型数据库管理系统,由瑞典MySQL AB(创始人Michael Widenius)公司1995年开发,迅速成为开源数据库 No.1。...表关联关系 表与表之间数据记录有关系(relationship)。现实世界中各种实体以及实体之间各种联系均用关系模型来表示。...基础信息表(常用信息):学号、姓名、手机号码、班级、系别档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...两种建表原则:外唯一:主表主键和从表(唯一),形成主外关系...,外唯一。...外是主键:主表主键和从表主键,形成主外关系。  一对多关系(one-to-many) 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。 举例:员工表:编号、姓名、...

    84430

    表与表之间关系

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

    1.4K30

    Django(15)外和表关系

    大家好,又见面了,我是你们朋友全栈君。 外删除操作 如果一个模型使用了外。那么在对方那个模型被删掉后,该进行什么样操作。可以通过on_delete来指定。...可以指定类型如下: CASCADE:级联操作。如果外对应那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了外那条数据,那么就不能删除外那条数据。...表关系 表之间关系都是通过外来进行关联。而表之间关系,无非就是三种关系:一对一、一对多、多对多等。以下将讨论一下三种关系应用场景及其实现方式。...文章和作者之间关系就是典型多对一关系 实现方式:一对多,都是通过ForeignKey来实现。...多对多 应用场景:比如文章和标签关系。一篇文章可以有多个标签,一个标签可以被多个文章所引用。因此标签和文章关系是典型多对多关系

    2.1K40

    关于MySQL拓扑关系梳理

    这是学习笔记第 2227 篇文章 关于MySQL拓扑关系,最近是比较困扰我,主要是因为最近在思考重构元数据层面的一些东西,发现原来一些设计方式已经不能够支持现在业务特点了。...: 不支持域名 一主多从关系不够清晰 级联实例关系不好体现 基于双主模式复制拓扑难以体现 读写分离关系不好体现 不支持跨机房容灾复制关系 所以这些问题抛出来,也算是自我革命,整体上来看这种关系维护是比较复杂...如果是这种复制拓扑关系,基本上能够解决我们所说拓扑关系。 ?...MySQL 8.0有个特性叫做replicaSet,这个特性名字给了我新启发,那就是我们可以按照复制集角度去重新看待原来拓扑关系。...不支持域名 一主多从关系不够清晰 级联实例关系不好体现 基于双主模式复制拓扑难以体现 读写分离关系不好体现 不支持跨机房容灾复制关系 其实2,3,4,6是可以支持,而对于域名服务部分,目前看和复制拓扑没有直接关系

    1.4K20
    领券