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

MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)

目录 1 表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。 【概念】什么是外键约束?...外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。 注意:外键可以为NULL,但是不能是不存在的外键值。 ?...外键列                    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表主键名称)         ); -- 创建部门表...id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联: 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY

14.6K21

SQL重要知识点梳理!

MySQL数据库-基础知识 1.说说主键、外键、超键、候选键的差别并举例 超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键。...候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!...主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了! 外键:宿舍号就是学生信息表的外键。 2.为什么一般用自增列作为主键?...左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。 右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行。...全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。

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

    MySQL 数据库基础知识(系统化一篇入门)

    、数据表的基本操作 4.1、数据库的基本操作 4. 2、数据表的基本操作 1、创建、查看数据表 2、修改数据表 五、数据表字段的约束 5.1、主键约束 5.2、外键约束 5.3、唯一性约束 5.4、..., name varchar(20), primary key(id) ); 5.2、外键约束 如果表A的主键是表B中的字段,则该字段称为表B的外键;另外表A称为主表,表B称为从表。...TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段); 示例:创建一个学生表 MySQL命令: create table...MySQL:语法格式: select * from 表1,表2; 由于这个交叉连接查询在实际运用中没有任何意义,所以只做为了解即可 7.4.2、内链接查询(自然连接,等值链接) 内连接使用比较运算符对两个表中的数据进行比较并列出与连接条件匹配的数据行...如果右表的某条记录在左表中没有匹配,则左表将返回null。

    5.1K60

    【MySQL学习】基础指令全解:构建你的数据库技能

    ,我们统一将外部关键字叫做外键,外键就是另一张表中的主键。...问:外键有啥用啊? 答:外键的主要作用就是保持数据的一致性,完整性。 如图有两张表,classId 是 T_Student 的外键,同时是 T_class 表的主键。...外键用于关联其他表的主键或唯一键 案例: 对学生表进行数据插入: 注:当我们想删除父表时,则需要先删除 子表,再删除 父表。...左外连接 (LEFT JOIN) 左连接返回左表中的所有记录以及右表中匹配的记录。...例如,基于外键的索引可以加速表之间的联接操作。 4. 避免全表扫描 使用索引后,MySQL 可以避免对整个表进行全表扫描,这可以显著减少查询的时间,尤其是在数据量非常大的情况下。 5.

    15310

    mysql学习总结04 — SQL数据操作

    连接查询 关系:一对一,一对多,多对多 将多张表连到一起进行查询(会导致记录数行和字段数列发生改变),保证数据的完整性 分类: 交叉连接 内连接 外连接:左外连接(左连接)和右外连接(右连接) 自然连接...join 表2>; 交叉连接产生的结果是笛卡尔积,没有实际应用 本质:from 表1>, 表2>; 10.2 内连接 inner join 记录数 = x (匹配成功的数目); 字段数 = 第一张表字段数...外键 12.1 概念 foreign key : 一张表(从表)中有一个字段(外键),保存的值指向另外一张表(主表)的主键 12.2 外键的操作 增加外键 方案1:创建表时增加外键(类似主键) 基本语法...外键字段与主表主键字段类型完全一致 外键字段与主表主键字段基本属性相同 如果是在表后增加外键,对数据有要求(从表数据与主表的关联关系) 外键只能使用innodb存储引擎,myisam不支持 12.4...外键约束概念 外键约束主要约束主表操作,从表仅约束不能插入主表不存在的数据,外键约束约束了例如: 从表插入数据,不能插入对应主表主键不存在的数据 主表删除数据,不能删除被从表引入的数据 外键约束保证了数据的完整性

    5.2K30

    Mysql面试题

    主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。 6. Mysql 单表的有最大数量限制吗?...对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等 28.解释MySQL外连接、内连接与自连接的区别 先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配...左外连接 也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。...定义: 主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引–该字段没有重复值,但可以有一个空值 作用: 主键–用来保证数据完整性 外键...–用来和其他表建立联系用的 索引–是提高查询排序的速度 个数: 主键–主键只能有一个 外键–一个表可以有多个外键 索引–一个表可以有多个唯一索引

    1.2K51

    MySQL基础这样学

    外键可以为NULL,且不一定是另一张的主键,但是必须具有唯一性,一般情况下会引用另一张表的主键。...设计从表可以有两种方案: 在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束; 给t_card表的主键添加外键约束(相对t_user表),即t_card表的主键也是外键。...典型的例子就是解决多对多的问题上,遇到多对多的时候,背口诀:多对多?三张表,关系表两外键 14.3、第三范式     建立在第二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。     ...典型的例子就是一对多,遇到一对多问题的时候背口诀:一对多?两张表,多的表加外键。...典型的例子就是解决多对多的问题上,遇到多对多的时候,背口诀:多对多?三张表,关系表两外键 14.3、第三范式     建立在第二范式的基础上,所有非主键字段直接依赖主键,不能产生传递依赖。

    2.2K20

    MySQL 面试题

    什么叫外连接 外连接(Outer Join)是 SQL 中的一种连接查询,用来从两个表中返回匹配的行,以及在另一个表中没有匹配的行。...左外连接(Left Outer Join): 返回左表(LEFT JOIN 关键字左侧的表)的所有行,即使右表中没有匹配的记录。 如果右表中没有匹配,结果中右表的部分会包含 NULL。...通常,左外连接用于获取“有数据或可能没有匹配数据”的表的全部记录,以及它们在关联表中的任何匹配记录。 右外连接(Right Outer Join): 返回右表的所有记录以及左表中匹配的那些记录。...如果左表中没有匹配,结果中左表的部分会包含 NULL。 右外连接不如左外连接常见,因为你总是可以通过改变 JOIN 的顺序来实现同样的效果。...全外连接(Full Outer Join): 返回左表和右表中的所有行。 当左表中某行没有匹配右表时,或者右表中某行没有匹配左表时,结果集中对于缺失的匹配会用 NULL 填充。

    16011

    mysql基础知识(7)

    这可能导致自增主键的值在逻辑上看起来不连续。 安全问题: 使用自增主键作为公开数据值可能存在安全风险。...它们有一个字符集,并根据字符集的排序规则对值进行排序和比较。 mysql 的内连接、左连接、右连接有什么区别? Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集。...left join 左连接,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。...right join 右连接,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。 说一下数据库的三大范式 第一范式:数据表中的每一列(每个字段)都不可以再拆分。...禁用外键约束: 在执行大量删除操作之前,可以考虑暂时禁用外键约束。 禁用外键约束可以避免在删除数据时触发外键约束检查,从而提高删除效率。 删除操作完成后,记得重新启用外键约束。

    7411

    数据库面试题汇总

    MySQL的基本索引类型 索引的优缺点 事务 事务的定义 事务的性质 drop、delete与truncate 相同点 不同点 场景使用 超健、候选键、主键、外键 超健 候选键 主键 外键 视图...一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。 候选键 最小超键,即没有冗余元素的超键。...主键 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 外键 在一个表中存在的另一个表的主键称此表的外键。...的方式来进行锁定 实现方式:使用version版本或者时间戳 表的连接方式 类型 内连接 自连接 外连接 交叉连接 内连接 只有两个元素表相匹配的才能在结果集中显示 外连接 左外连接:左边为驱动表,驱动表的数据全部显示...,匹配表的不匹配的不会显示 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示 全外连接:连接的表中不匹配的数据全部会显示出来 交叉连接 笛卡尔效应,显示的结果是链接表数的乘积

    1.9K21

    2020年MySQL数据库面试题总结(50道题含答案解析)

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等 37、解释 MySQL 外连接、内连接与自连接的区别 先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配...左外连接 也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL 来填充。...主键、外键和索引的区别 定义: 主键——唯一标识一条记录,不能有重复的,不允许为空 外键——表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49、你可以用什么来确保表格里的字段只接受特定范围里的值

    4K20

    关于sql语句的优化

    3.4多用匹配查询,少用like查询       原因,like查询会直接放弃索引。 3.5主键索引使用       所有表的主键全是索引。应尽量使用主键查询。...这是错误的,应该对每一个表的用途对应一个不同的数据库引擎。 5.2   ENGINE = MyISAM MyISAM类型不支持事务处理等高级处理。...MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT,MyISAM是更好的选择。...6.2 对于字段长度限制,如手机号11位,我们就没有必要设计更多位数。公司编号可以只设定8位。用户名限制32位等等。      6.3 少用外键限制          我们可以使用代码限制。...最好不要设计外键,外键对新增数据不利。      6.4  少用约束,如:唯一约束。  6.5  少用自动增长       在圆通主键没有自动增长,而是使用uuid,java自动生成。

    97740

    MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等 37、解释 MySQL 外连接、内连接与自连接的区别 先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配...左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL 来填充。...主键、外键和索引的区别 定义: 主键——唯一标识一条记录,不能有重复的,不允许为空 外键——表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49

    2.7K11

    MySQL经典52题

    6.主键和候选键有什么区别?表格的每一行都由主键唯一标识,一个表只有一个主键。主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。7.myisamchk是用来做什么的?...对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等40.解释MySQL外连接、内连接与自连接的区别先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配...左外连接 也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。...1、从定义上却分主键:唯一标识一条记录,不能有重复的,不允许为空外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值索引:该字段没有重复值,但可以有一个空值2、从作用上区分主键:用来保证数据完整性外键...:用来和其他表建立联系用的索引:是提高查询排序的速度3、从个数上区分主键:主键只能有一个外键:一个表可以有多个外键索引:一个表可以有多个唯一索引52.SQL语句优化方法Where子句中:where表之间的连接必须写在其他

    11510

    长文一次说完MySQL常用语句和命令等汇总

    外连接: 假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表,当附表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。...主键约束(primary key):约束的字段不能重复 外键约束(foreign key):简称FK 检查约束(check) :注意oracle数据库有check约束,但是mysql没有,目前mysql...第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。 多对多?三张表,关系表两个外键。...一对多? 两张表,多的表加外键。...tel userid(fk+unique) 一对一设计方案二:外键唯一。

    77720

    数据库技术:MySQL 多表,外键约束,数据库设计,索引,视图,存储过程触发器,数据控制,数据备份与恢复

    外键指的是在“从表”中与“主表”的主键对应的那个字段,比如员工表的 dept_id,就是外键。使用外键约束可以让两张表之间产生一个对应关系,从而保证主从表的引用的完整性。...主表:主键 id 所在的表,约束别人的表;从表:外键所在的表,被约束的表。...实现方式:主表(一方)的主键为从表(多方)的外键。在多的一方建立外键,指向一的一方的主键。 -- 省和市表:一个省包含多个市 # 创建省表。...实现方式:需要借助一张中间表,中间表中至少保存两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。...比如,通过 从表的外键 = 主表的主键 的方式去匹配。

    2.4K20

    《深入浅出SQL》问答录(六)

    本系列出自《深入浅出MySQL》,全文以问答形式展开,是我的个人学习笔记。 问答录 先看花絮 Q:如果外键是NULL,它右什么作用吗?有办法确定外键已经连接到父键了吗?...A:外键为NULL,表示在父表中没有相符的主键。但我们可以确认外键包含有意义、已经存储在父表中的值,请通过约束实现。...如果我们试着删除主键表中的行或者是改变主键值,而这个主键是其他表的外键约束时,你就会收到错误警告。 ---- Q:所以上面说的那种,我就不能删除了是吗?...插入外键列的值必须已经存在与父表的来源中,这是引用完整性。 创建外键作为表的约束提供了明确的优势,如果违反了规则,约束会阻止我们破坏表。 外键不一定要是父表的主键,但是要具有唯一性。...Junction table(连接表) 范式(NF) 第一范式(1NF) 数据列只包含具有院子性的值 没有重复的数据组 组合键 组合键就是有多个数据列构成的主键。

    1.1K20

    【MySQL 系列】MySQL 语句篇_DDL 语句

    外键相对于主键而言,用来引用其他表。外键通过子表的一个或多个列对应到父表的主键或唯一键值,将子表的行和父表行建立起关联关系。 例如,Sakila 示例数据库中的 country 表和 city 表。...你也不能为一个城市设定一个不存在的 country_id,否则这个城市数据就是错误的。 3.2.1、创建外键 通常,外键所属的表被称作子表,被外键引用的表被称作父表。...RESTRICT: 如果被引用的表中的一行在该表中有匹配的行,试图删除或更新被引用的表中行时会引发 MySQL 错误。这是默认的策略。...3.2.2、添加外键 如果建表的时候没有定义外键,你也可以后来通过以下语法添加外键: ALTER TABLE child_table_name ADD [CONSTRAINT foreign_key_name...它可以通过名字删除任何约束,并不仅仅是外键; 3.2.4、CASCADE 策略 如果外键的 ON DELETE 和 ON UPDATE 使用了 CASCADE 策略: 当父表的行被删除的时候,子表中匹配的行也会被删除

    32210

    MySQL优化以及索引的使用

    确保order by / group by 只根据一个表上的字段进行,这样才有使用索引进行排序分组的可能性. 使用外键 锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。...这个时候我们就可以使用外键。 例如,外键可以保证每一条销售记录都指向某一个存在的客户。...在这里,外键可以把customerinfo表中的CustomerID映射到salesinfo表中CustomerID,任何一条没有合法CustomerID的记录都不会被更新或插入到salesinfo中。...如果要在MySQL中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表InnoDB类型。该类型不是MySQL表的默认类型。...主键索引:表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。

    86042

    mysql常用语句大全_什么是SQL语句

    states varchar(2) ## 删除表的主键约束 alter table store drop primary key ## 删除表的外键约束 (删除需要带上外键名称) alter table...* from test limit 0 , 3 3.1数据表的关联关系 ## 一对一关联 # 1.主键关联–两张数据表中主键相同的数据为相互对应的数据 # 2.唯一外键–在任意一张表中添加一个字段添加外键约束与另一张表主键关联...## 一对多,多对一 # 1.设置外键–在多的一方表中添加一个字段添加外键约束与另一张表主键关联。 ## 多对多 # 1.新建关系表–在关系表中定义两个外键,分别与两个数据表的主键相关联。...结果:只获取两张表中匹配条件成立的数据,任意一张表在另一张表,如果没有找到对应的匹配则不会出现在查询结果中 #左连接 (left join) #结果:显示左边表中的所有数据,如果在右表中有对应的匹配关系...## 视图的作用 # 1安全性:如果我们直接将数据库表授权给用户,那么用户可以CRUD数据表中的所有数据,我们可以把表中公开的部分数据生成视图,授权用户访问视图,用户通过访问视图,获得公开的数据,从而达到将数据库表中的部分数据对用户隐藏

    81620

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券