首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    2.8K70

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

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

    2.7K40

    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

    1.4K30

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

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

    3.9K10

    MySQL数据关系的基石:深入解析主键、外键与唯一键

    引言:数据库关系的基础与MySQL的重要性 在数字化浪潮席卷各行各业的今天,数据已成为驱动业务决策和创新的核心要素。...MySQL作为全球最流行的开源关系型数据库管理系统(RDBMS),自1995年诞生以来,凭借其高性能、高可靠性、易用性以及活跃的社区生态,成为了许多企业和开发者的首选。...这种引用关系建立了表与表之间的父子关系,其中包含外键的表称为子表,被引用的表称为父表。...与唯一索引(Unique Index)的关系也值得注意。在MySQL中,创建唯一键会自动创建一个对应的唯一索引,用于快速检查唯一性和优化查询性能。...随着2025年数据库技术的演进,尤其是在MySQL与NoSQL集成和云原生架构日益普及的背景下,合理选择键类型不仅影响数据一致性,还直接关系到系统的扩展性和性能表现。

    17.8K10

    MySQL·关系模型

    关系模型 外键 在 students 表中,通过 class_id 的字段,可以把数据与另一张表关联起来,这种列称为外键。...通过定义外键约束,关系数据库可以保证无法插入无效的数据。即如果 classes 表不存在 id=99 的记录,students 表就无法插入 class_id=99 的记录。...索引 索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。...在设计关系数据表的时候,看上去唯一的列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键。但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。...无论是否创建索引,对于用户和应用程序来说,使用关系数据库不会有任何区别。

    1.4K30

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

    MyBatis-plus配置自定义SQL(执行用户传入SQL) 24 MyBatis-Plus Mybatis-Plus(连接Hive) 25 MyBatis-Plus Mybatis-Plus 代码生成器 一、主外键特点...主表的主键和从表的外键形成主外关系 从表外键的值是对主表主键的引用。...ALTER TABLE 表名 DROP FOREIGN KEY 外键名; 具体: ALTER TABLE student DROP FOREIGN KEY FK_ID; 二、一对多操作 1.添加主外键约束...1、创建中间表,给中间表添加两个外键约束 2、创建表、添加数据 订单表和订单项表的主外键关系 alter table `orderitem` add constraint orderitem_orders_fk...foreign key (oid) references orders(oid); 商品表和订单项表的主外键关系 alter table `orderitem` add constraint orderitem_product_fk

    97230

    day05_MySQL学习笔记_02

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

    3K20

    MySQL全部知识点(2)

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

    2.7K70

    表与表之间关系

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

    2.3K30

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

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

    1.2K30

    屠龙刀法46—Mysql属性中的建表语句为啥会出现两次

    查看mysql建表语句 对于mysql数据库而言,查看建表语句和其他数据库相比如Oracle是有一点优势的。...因为,mysql支持show create table语句,如下图: 但是,有经验的用户可能会发现mysql给的建表语句非常冗余,语句中不但有主外键等等各种关系,而且每个列的定义后面还添加一个 defult...总之,Mysql默认的这种建表语句在不同数据库进行建表迁移的时候并不方便。...基于这种局限性,DBCS进行了扩展,如下图: DBCS的属性给出了另外一种建表语句的定义方法,先创建表格,然后在用分步骤语句创建主外键关系。...这种方式正好和mysql的show create table语句进行了互补。既然两种方式都有场景,所以DBCS就把两种方式都提供给用户了。

    17910

    MySQL

    7.3.1 相关理论 用于连接两张表之间的关系,解决的是数据的冗余,剧有关系的表中所有的关键字段联系在一起才能够组合成一条完整的可读性记录。...有外键的表是子表,没有外键的表是主表,一般情况下主表的数据信息会相对于少于子表(这不是绝对的)。主要还是看有没有关联字段(外键)。 设置主外键关系是在子表上进行设置....主外键关系的名称,一般都是全大写,以FK为前缀,多个单词之间用下划线(_)分隔。 设置完主外键关系之后,子表中添加数据时的外键字段中的数据在主表中必须存在,如果不存在将会引发异常。...table student add constraint FK_GRADE_ID1 foreign key (gradeid) references grade(gradeid) 2) 第二种在建表的时候指定主外键关系...mysql> create table result( -> studentNo int, -> subjectNo int, -> examDate timestamp,

    50120

    mysql的外键

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

    8.8K70
    领券