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

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

目录 1 约束 约束,是对表中数据进行限定,保证数据正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 约束:foreign...以上仍然存在一个问题,当在员工中输入不存部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用约束来解决。 【概念】什么是约束?...,就是从中与主表主键对应那一列,如:员工dep_id,其中,主表是一方,用来约束别人,从可以是多方,别人约束。 注意:可以为NULL,但是不能是不存在键值。 ?...列                    constraint 键名称 foreign key (列名称) references 主表名称(主表主键名称)         ); -- 创建部门...(字段名称) REFERENCES 主表名称(主表列名称)  ON UPDATE CASCADE ON DELETE CASCADE ; 分类:级联更新 ON UPDATE CASCADE

13.3K21

2018-11-26 oracle查询信息(索引,,列等)1、查询出所有的用户2、查询出用户所有索引3、查询用户索引(非聚集索引):4、查询用户主键(聚集索引):5、查询索引6

oracle中查询信息,包括名,字段名,字段类型,主键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1、查询出所有的用户 select * from user_tables...: select * from user_cons_columns cl where cl.constraint_name = 键名称 查询引用列名: select * from user_cons_columns...cl where cl.constraint_name = 引用键名 9、查询所有列及其属性 方法一: select * from user_tab_columns where table_name..., a.table_name 主键, b.column_name 主键列, c.owner 拥有者, c.table_name..., d.column_name 列 FROM user_constraints a LEFT JOIN user_cons_columns b ON a.constraint_name

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

SQL命令 CREATE TABLE(五)

定义 是引用另一个字段;存储在外字段中值是唯一标识另一个记录值。...,引用另一个主键字段。...如果是,则删除或更新失败。(如果引用自身,则此约束不适用。)。默认情况下不执行任何操作。无操作是切片支持唯一用操作。...SET NULL-删除行或更新引用键值时,将检查所有引用,以查看是否有任何行引用要删除或更新行。如果是,则操作会导致引用要删除或更新字段设置为NULL。字段必须允许空值。...SET DEFAULT-删除行或更新引用键值时,将检查所有引用,以查看是否有任何行引用要删除或更新行。如果是,则操作会导致引用要删除或更新字段设置为字段默认值。

1.7K50

Go开源ORM——GORM

(比如自增)插入记录 如果对象设定了主键,数据库中不存在主键记录,则作为插入操作,使用主键插入记录 如果对象设定了主键,数据库中存在主键记录,则作为更新操作,更新数据库记录 插入记录 Create...slice,来接受结果,需要注意是,如果传入Find、First、Last等方法结构体对象设置了主键值,则主键值会作为查询条件之一 通过Where方法创建查询条件对象(可选,不使用为数据),然后使用...,默认命名为 (关联结构体类型名称+关联结构体主键属性名称) //User属于Profile, ProfileID为 type User struct { gorm.Model Profile...ProfileID 通过配置ForeignKey指定关联属性对应在本结构体 通过配置AssociationForeignKey指定关联属性在其关联结构体属性 type Profile...,其必须是一个设定了主键对象,否则会报错 关联查询查询主键关联其他数据 Relative Relative提供关联关系查询功能 // User 包含多个 emails, UserID 为

2.1K41

Mysql - 数据库面试题打卡第一天

4)约束。只有他支持。 5)支持自动增加列属性 auto_increment。...他主要适用于访问频率不高数据或历史数据归档 4、MyIASM MyIASM是 MySQL默认引擎,但是它没有提供对数据库事务支持,也不支持行级锁和,因此当 INSERT(插入)或 UPDATE...MEMORY 类型访问非常得快,因为它数据是放在内存中,并且默认使用HASH 索 。但是一旦服务关闭,数据就会丢失掉。...对一个包含InnoDB转为MYISAM会失败; InnoDB是聚集索引,数据文件是和索引绑在一起,必须要有主键,通过主键索引效率很高。...尽量扩展索引,不要新建索引 10、数据库三范式是什么 第一范式:列不可再分 第二范式:行可以唯一区分,主键约束 第三范式:非主属性不能依赖与其他非主属性 约束

85120

MySql---复习

复习 MySQL约束(FOREIGN KEY) 主表和从 选取设置 MySQL 约束字段 在创建时设置约束 部门和员工案例演示 如果添加不符合约束数据,会报错 小总结 注意事项...一个可以有一个或多个对应是参照完整性,一个可以为空值,若不为空值,则每一个值必须等于另一个主键某个值。...一个字段,不是本主键,但对应另一个主键。定义后,不允许删除另一个中具有关联关系行。 主要作用是保持数据一致性、完整性。...REFERENCES 主键列1 [,主键列2,…] 其中:键名为定义约束名称,一个中不能有相同名称;字段名表示子表健约束字段名;主表名即被子表所依赖名称;主键列表示主表中定义主键列或者列组合...) VALUES("大忽悠",1); ---- 如果添加不符合约束数据,会报错 这里员工d_id列depart父主键列所约束,即从d_id值必须属于父主键列集合里面的

5.2K30

MySQL主键详解

没有主键更新或删除中特定行很困难,因为没有安全方法保证只涉及相关行而不误伤其他行! 一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID或雇员社会保险号。...任何列都可以作为主键,只要它满足以下主键值规则条件: 任两行不具相同主键值 每行都必须具有一个主键值(主键列不允许NULL) 这里规则是MySQL本身强制实施。...除MySQL强制实施规则,还应该坚持最佳实践: 不更新主键列中值 不重用主键值 不在主键列中使用可能会更改值 例如,如果使用一个名字作为主键以标识某个供应商,当供应商合并和更改其 名字时...一个属性可以为作为一个超,多个属性组合在一起也可以作为一个超。超包含候选主键。 候选 是最小超,即没有冗余元素。... 在一个中存在另一个主键称此 主键选择 代理主键(推荐使用) 与业务无关,无意义数字序列。

4.9K20

MySQL学习之路:数据完整性-约束

序号 字段 数据类型 主键 允许空 说明 1 cid int 是 否 类别id 2 cname varchar(30) 否 类别名称 序号 字段 数据类型 主键 允许空 说明 1 gid...CONSTRAINT 键名 FOREIGN KEY(字段名) REFERENCES 主表名(主键字段名) mysql> ALTER TABLE goods -> ADD CONSTRAINT fk_goods_cid...约束实现了引用完整性,当主表中被引用列值发生变化时,为了保证间数据一致性,从中与值相关信息也应该相应更新,这就是约束级联更新和删除。...RESTRICT }] [ON DELETE { CASCADE | SET NULL | NO ACTION | RESTRICT }] CASCADE:指定在更新和删除操作中记录时,如果其他引用...SET NULL:更新和删除操作表记录时,从中相关记录对应值设置为NULL。 NO ACTION:不进行任何操作 RESTRICT:拒绝主表更新或修改关联列。

18020

Mysql-5-数据基本操作

主键约束要求主键数据唯一,并且不能为空。主键能够唯一标识一条记录,可以结合来定义不同数据之间关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。...一个可以有一个或者多个对应是参照完整性,一个可以是空值,若不为空值,则每一个必须等于另一个主键某个值。 下面介绍几个概念。...是一个字段,它可以不是本主键,但对应另外一个主键主要作用是保证数据引用完整性,定义后,不允许删除在另一个中具有关联关系主键。...,location varchar(50)); 定义数据tb_employee5,让它deptld字段作为关联到tb_dept1主键id: mysql> create table tb_employee5...删除其他关联主表:先删除字表,再删除主表(或取消约束,删除主表)

1.6K60

mysql存储引擎及适用场景

MyISAM主要特性有: 1、大文件(达到63位文件长度)在支持大文件文件系统和操作系统上支持。 2、当把删除和更新及插入操作混合使用时候,动态尺寸行产生更少碎片。...InnoDB存储引擎 InnoDB是事务型数据库首选引擎,支持事务安全(ACID),支持行锁定和,上图也看到了,InnoDB是默认MySQL引擎。...InnoDB可以是任何尺寸,即使在文件尺寸限制为2GB操作系统上 4、InnoDB支持完整性约束,存储数据时,每张存储都按主键顺序存放,如果没有显示在定义时指定主键,InnoDB会为每一行生成一个...而在InnoDB中,数据文件本身就是按B+Tree组织一个索 结构,这棵树叶节点data域保存了完整数据记录。这个索引key是数据主键,因此InnoDB数据文件本身就是主索引。...Memory引擎,MySQL中使用引擎作为临时,存放查询中间结果。

87820

MySQL介绍

主键主键是唯一。一个数据中只能包含一个主键。你可以使用主键来查询数据 7. 用于关联两个(两个通过都有的一个字段连接起来了)  8....采用了GPL协议,你可以修改源码来开发自己Mysql系统  4、主键、索引比较 1....主键区别         1. 主键是能确定一条记录唯一标识,比如,一条记录包括身份正号,姓名,年龄。         ...比如,A一个字段,是B主键,那他就可以是A 2. 主键与唯一索引区别         1. 主键是一种约束,唯一索引是一种索引,两者在本质上是不同。         2....主键可以其他用为,而唯一索引不能。         5. 一个最多只能创建一个主键,但可以创建多个唯一索引。         6.

1.3K20

六年开发经验,整理Mysql数据库技巧笔记,全网最详细笔记集合!

CONSTRAINT 键名 FOREIGN KEY (本列名) REFERENCES 主表名(主表主键列名) ); 删除外约束 ALTER TABLE 名 DROP FOREIGN...KEY 键名; 建后单独添加约束 ALTER TABLE 名 ADD CONSTRAINT 键名 FOREIGN KEY (本列名) REFERENCES 主表名(主键列名); 级联更新和级联删除...同时添加级联更新和级联删除 ALTER TABLE 名 ADD CONSTRAINT 键名 FOREIGN KEY (本列名) REFERENCES 主表名(主键列名)ON UPDATE...:ALTER TABLE 名 ADD PRIMARY KEY(主键列名); 索引:ALTER TABLE 名 ADD CONSTRAINT 键名 FOREIGN KEY (本列名) REFERENCES...如果相同则执行更新,如果不相同,说明此条数据已经发生了变化。 行锁和锁 InnoDB行锁是针对索引加锁,不是针对记录加锁。并且索引不能失效,否则都会从行锁升级为锁。

1.4K20

MySQL 约束

(foreign key) 1.5.1 概述   约束(FOREIGN KEY)是一个特殊字段,经常与主键约束一起使用。...对于两个具有关联关系而言,相关联字段中主键所在就是主表(父),所在就是从(子表)。用来建立主表与从关联关系,为两个数据建立连接,约束两个中数据一致性和完整性。...主表删除某条记录时,从中与之对应记录也必须有相应改变。一个可以有一个或多个可以为空值,若不为空值,则每一个值必须等于主表中主键某个值。...♞ 主键不能包含空值,但允许在外中出现空值。也就是说,每个非空值必须是主表主键存在内容。  ♞ 若一个字段另一个关联则字段不能直接删除。 ?...key 字段 references 关联(关联字段); # 删除外 alter table tb_name drop foreign key 键名称; 1.5.3 示例 # 部门 mysql

3K31

Java 面试知识点解析(六)——数据库篇

丢失更新:一个事务更新覆盖了另一个事务更新; 脏读:一个事务读取了另一个事务未提交数据; 不可重复读:不可重复读重点是修改,同样条件下两次读取结果不同,也就是说,读取数据可以其它事务修改;...参考文章:深入理解乐观锁与悲观锁 ---- 11)超、候选主键分别是什么? 超:在关系中能唯一标识元组属性集称为关系模式。...:在一个中存在另一个主键称此。...FOREIGN KEY: 用于预防破坏之间连接动作,也能防止非法数据插入列,因为它必须是它指向那个值之一。 CHECK: 用于控制字段值范围。...:MyISAM不支持,而InnoDB支持

75730

数据库常考面试知识点

丢失更新:一个事务更新覆盖了另一个事务更新; 脏读:一个事务读取了另一个事务未提交数据; 不可重复读:不可重复读重点是修改,同样条件下两次读取结果不同,也就是说,读取数据可以其它事务修改;...参考文章:深入理解乐观锁与悲观锁 ---- 11)超、候选主键分别是什么? 超:在关系中能唯一标识元组属性集称为关系模式。...:在一个中存在另一个主键称此。...FOREIGN KEY: 用于预防破坏之间连接动作,也能防止非法数据插入列,因为它必须是它指向那个值之一。 CHECK: 用于控制字段值范围。...:MyISAM不支持,而InnoDB支持

63941

MySQL 系列】MySQL 语句篇_DDL 语句

你也不能为一个城市设定一个不存在 country_id,否则这个城市数据就是错误。 3.2.1、创建 通常,所属被称作子表,引用被称作父。...它是可选; 位于 FOREIGN KEY 关键字之后是作为列名; 位于 REFERENCES 关键字之后引用和列; ON DELETE 和 ON UPDATE 指定了删除或更新引用数据时要采取约束策略...我们可以使用以下 3 个策略中一个: CASCADE:如果引用一行被删除或更新中匹配行值会自动删除或更新。...SET NULL:如果引用一行被删除或更新中匹配行值设置为 NULL。...RESTRICT: 如果引用一行在中有匹配行,试图删除或更新引用中行时会引发 MySQL 错误。这是默认策略。

10310

数据库常见面试题

丢失更新:一个事务更新覆盖了另一个事务更新; 脏读:一个事务读取了另一个事务未提交数据; 不可重复读:不可重复读重点是修改,同样条件下两次读取结果不同,也就是说,读取数据可以其它事务修改;...参考文章:深入理解乐观锁与悲观锁 ---- 11)超、候选主键分别是什么? 超:在关系中能唯一标识元组属性集称为关系模式。...:在一个中存在另一个主键称此。...FOREIGN KEY: 用于预防破坏之间连接动作,也能防止非法数据插入列,因为它必须是它指向那个值之一。 CHECK: 用于控制字段值范围。...:MyISAM不支持,而InnoDB支持

92610

Java 面试知识点解析(六)——数据库篇

丢失更新:一个事务更新覆盖了另一个事务更新; 脏读:一个事务读取了另一个事务未提交数据; 不可重复读:不可重复读重点是修改,同样条件下两次读取结果不同,也就是说,读取数据可以其它事务修改;...参考文章:深入理解乐观锁与悲观锁 --- 11)超、候选主键分别是什么? 超:在关系中能唯一标识元组属性集称为关系模式。...:在一个中存在另一个主键称此。...FOREIGN KEY: 用于预防破坏之间连接动作,也能防止非法数据插入列,因为它必须是它指向那个值之一。 CHECK: 用于控制字段值范围。...:MyISAM不支持,而InnoDB支持

1.2K90

「春招系列」MySQL面试核心25问(附答案)

乐观锁,先进行业务操作,只在最后实际更新数据时进行检查数据是否更新过。...最终还是要“回”,也就是要通过主键再查找一次,这样就 会比较慢。覆盖索引就是把要查询出列和索引是对应,不做回操作! 25、数据库中主键、超、候选是什么?...主键:用户选作元组标识一个候选程序主键 :如果关系模式R中属性K是其它模式主键,那么k在模式R中称为。...因为它还有了额外属性。 主键:简单说,例子中元组候选为学号,但是我们选定他作为元组唯一标识,那么学号就为主键。...是相对于主键,比如在学生记录里,主键为学号,在成绩单中也有学号字段,因此学号为成绩单,为学生主键主键为候选子集,候选为超子集,而外的确定是相对于主键

50430
领券