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

MySQL实战七:你不知道的约束使用!

1.标准的SQL语句 DML(Data Manipulation Language,数据操作语言) 语句:主要由select、insert、update和 delete 四个关键字完成。...事务控制语句:主要由commit、rollback和savepoint 三个关键字完成。 2.DDL 2.1 check约束无效,如何解决?...2.2 2.2.1 创建 (1)不带别名的,数据库自动生成 首先创建department表: CREATE TABLE department ( dept_name varchar...学习 cascade 表示级联操作,就是说,如果主键表中被参考字段更新,表(子表)中也更新,主键表(父表)中的记录被删除,表(子表)中改行也相应删除。...而on update只能删除子表数据,不能删除父表主键数据,只能更新父表的主键,同时父子表数据都会被更新,但是在子表的上做更新操作无效。

4.3K20

SQL基础--> 约束(CONSTRAINT)

a.主键约束提示 --下面使用currval值,提示主键冲突,从PK_TB_CONS2_EMPNO即可得知是主键列冲突,这就是自定义约束名的好处 SQL> INSERT INTO tb_constraint...--约束对delete语句的影响: SQL> DELETE FROM tb_constraint_2; 2 rows deleted....insert语句的影响: 插入数据的字段值必须在主表中存在,只有从表才有可能违反约束,主表不会。...约束对delete语句的影响: 删除主表数据时,如果从表有对该数据的引用,要先将从表中的数据处理好。主表才有可能违反约束。...约束对update语句的影响: 主从表都有可能违反约束,操作一个表必须将另一个表的数据处理好。 约束对DDL语句的影响: 删除主表时,才有可能违约约束

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

BI-SQL丨Constraints

[1240] Constraints Constraints,约束的意思。通常用来约束加入表中的数据,如果与约束冲突,则行为会被终止。...Constraints数据仓库中经常使用的有以下几种约束: NOT NULL(不为空) UNIQUE(唯一) PRIMARY KEY(主键) FOREIGN KEY() CHECK(检查) DEFAULT...//多个列定义约束 ...... ) C.FOREIGN KEY 一个表中的,通常可以用来连接另外一张表中的主键。...那么Product表中的ProductID就是主键,Fact表中的ProductID就是。 同时,的存在,可以防止意外删除。这对于数据仓库来说,很重要。...FOREIGN KEY () REFERENCES 表名称(主键)//多个列定义约束 ...... ) D.CHECK CHECK通常可以用来约束限制列值的范围。

72620

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

; 约束 建表时添加约束 CREATE TABLE 表名( 列名 数据类型 约束, ......CONSTRAINT 键名 FOREIGN KEY (本表列名) REFERENCES 主表名(主表主键列名) ); 删除外约束 ALTER TABLE 表名 DROP FOREIGN...KEY 键名; 建表后单独添加约束 ALTER TABLE 表名 ADD CONSTRAINT 键名 FOREIGN KEY (本表列名) REFERENCES 主表名(主键列名); 的级联更新和级联删除...SQL 语句列表; RETURN 结果; END$ 调用存储函数 SELECT 函数名称(实际参数); 删除存储函数 DROP FUNCTION 函数名称; 触发器 触发器是表有关的数据库对象,可以在...insert、update、delete 之前或之后触发并执行触发器中定义的 SQL 语句

1.4K20

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

字段主表主键字段类型完全一致 字段主表主键字段基本属性相同 如果是在表后增加,对数据有要求(从表数据主表的关联关系) 只能使用innodb存储引擎,myisam不支持 12.4...约束概念 约束主要约束主表操作,从表仅约束不能插入主表不存在的数据,约束约束了例如: 从表插入数据,不能插入对应主表主键不存在的数据 主表删除数据,不能删除被从表引入的数据 约束保证了数据的完整性...(主表从表数据一致),强大的数据约束作用可能导致数据在后台变化的不可控,所以外在实际开发中较少使用 12.5 约束模式 三种约束模式: district:严格模式,默认的,不允许操作 cascade...:级联模式,一起操作,主表变化,从表数据跟随变化 set null:置空模式,主表变化(删除),从表对应记录设置为空,前提是从表中对应的字段允许为空 添加约束模式: 基本语法: add foreign...key() references () on ; 通常在进行约束时候的时候,需要指定操作:update和delete 常用的约束模式:on update cascade

5.1K30

day05_MySQL学习笔记_02

) FOREIGN KEY(foreign key:) REFERENCES(references:引用/参照/关联)       第二种添加约束的方式:在表格创建时没有添加约束,之后通过修改表格添加约束...设计从表可以有两种方案:         方式1:在t_card表中添加列(相对t_user表),并且给添加唯一约束;即:字段 字段类型 unique,         方式2:给t_card表的主键添加约束...:在创建表格的时候同时添加约束。...) FOREIGN KEY(foreign key:) REFERENCES(references:引用/参照/关联)       第二种添加约束的方式:在表格创建时没有添加约束,之后通过修改表格添加约束...注意:在执行脚本时需要先行核查当前数据库中的表是否脚本文件中的语句冲突!   例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

2.1K20

面试官:MySQL 唯一索引为什么会导致死锁?

(4) 建立主键的目的是让来引用. (5) 一个表最多只有一个主键,但可以有很多唯一 存在唯一冲突时,避免策略 insert ignore insert ignore会忽略数据库中已经存在的数据...此时会发现吕布的班级跟年龄都改变了,但是id也变成最新的了,所以不是更新,是删除再新增 insert on duplicate key update 如果在insert into 语句末尾指定了on duplicate...如果有两个事务并发的执行同样的语句,那么就会产生death lock,如 img 解决办法: 1、尽量对存在多个唯一的table使用该语句 2、在有可能有并发事务执行的insert 的内容一样情况下不使用该语句...id的改变;insert … on duplicate key update在遇到重复行时,会直接更新原有的行,具体更新哪些字段怎么更新,取决于update后的语句。...参考 Mysql中uniqueprimary约束的区别分析(转) MySQL避免插入重复记录:唯一性约束 MySQL优化–INSERT ON DUPLICATE UPDATE死锁 ---- 我是蜗牛

1.3K20

大型互联网公司使用的数据库设计规范

约束设计标准 1、 主键的内容不能被修改。 2、约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。...3、 禁用数据库 4、命名 a) 主键约束:默认PRIMARY; b) unique约束:UK_ c) check约束:CK_ d) 约束...2、SELECT语句只获取需要的字段,禁止使用SELECT * FROM语句,这是有效防止新增字段对应用逻辑的影响,还能减少对性能的影响; 3、INSERT语句必须显式的指明字段名称,不使用INSERT...8、避免在SQL语句进行数学运算或者函数运算,容易将业务逻辑和DB耦合在一起。 9、INSERT语句使用batch提交。...但请避免每执行一个SQL去检查一次DB可用性; 使用replace带来的问题 1、Replace into 操作在唯一重复情况下,是先尝试写入,检测到冲突则删除原记录,再写入新记录。

1.7K30

MySQL学习笔记汇总(四)——表的约束、存储引擎、事务

(简称PK) 约束(foreign key):…(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...,在建表时给usercode和username这两个字段联合添加了唯一约束,表示这两个字段联合起来不能重复,usercode,username insert into t_user values(1...username varchar(255) ); 约束:foreign key 主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为 字段,那么该字段的值必须来源于参照的表的主键...可以为NULL 被引用的字段不一定是主键,但至少具有unique约束。...InnoDB 优点:支持事务、行级锁、等。这种存储引擎数据的安全得到保障。

1.6K50

【MySql】表的约束

我们选择某一列作为主键,但是并不排除其他属性不需要维护,可能需要用到唯一来限定,选择其他列作为唯一主键配合起来,能够保证一些数据冲突。...foreign key 用于定义主表和从表之间的关系:约束主要定义在从表上,主表则必须是有主键约束或unique约束。...,上面的例子,我们不创建约束,就正常建立学生表,以及班级表,该有的字段我们都有。...因为此时两张表在业务上是有相关性的,但是在业务上没有建立约束关系,那么就可能出现问题。 解决方案就是通过完成的。...建立的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

15930

Oralce的二维表操作

Oralce的二维表操作 –创建表并同时添加约束 –主键约束 –非空约束 –检查约束 –唯一约束约束 –简单的表创建和字段类型 –简单的创建语句: create table student...unique(字段名); –删除约束:alter table 表名 drop constraints 唯一约束名; –二维表创建 约束学习: –创建学生表 create table student...–概念:当一张表的某个字段的值需要依赖另外一张表的某个字段的值,则使用约束。 –其中主动依赖的表称为子表,被依赖的表称为父表。加在子表中。...alter table 表名 drop constraints 约束名 –选取: –一般选取父表的主键作为子表的。...–的缺点: –无法直接删除父表数据,除非级联删除 –级联删除:在添加约束时,使用关键字 on delete cascade –使用:当删除父表数据时,自动删除子表相关所有数据。

61820

insert ... on duplicate key update 和 replace into

影响行数 = 0,表示插入记录和表中记录存在主键或唯一索引冲突,并且 insert duplicate 语句 update 字段列表中每个字段的字段值和冲突记录中对应的字段值一样。...影响行数 = 2,表示插入记录和表中记录存在主键或唯一索引冲突,但是 insert duplicate 语句 update 字段列表中的字段值和冲突记录中的字段值不一样,插入语句会更新表中冲突的第 1...执行过程分析 3.1 insert ... on duplicate key update insert duplicate 语句是 MySQL 对 SQL 标准的扩展,它有 2 种行为: 如果插入记录和表中记录不存在主键或唯一索引冲突...使用更新旧记录方式,需要同时满足 3 个条件: 条件 1,第 2 步中报记录冲突的那个索引是表中最后创建的唯一索引(也可能是主键)。 条件 2,表中的所有字段,都没有被其它表的字段作为约束。...约束和删除触发器都很少使用,不展开讲了。 4. 总结 2.

1.5K40

数据库面试题汇总

MySQL的基本索引类型 索引的优缺点 事务 事务的定义 事务的性质 drop、deletetruncate 相同点 不同点 场景使用 超健、候选、主键、 超健 候选 主键 视图...视图的定义 视图的使用场景 优点 缺点 范式 第一范式 第二范式 第三范式 乐观锁和悲观锁 作用 悲观锁 乐观锁 表的连接方式 类型 内连接 连接 交叉连接 优化数据库查询语句速度 数据库 数据库的定义...数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是应用程序彼此独立的数据集合。...SQL SQL语言包括 数据定义、数据操纵、数据控制 数据定义 Create Table,Alter Table,Drop Table, Craete/Drop Index等 数据操纵 Select ,insert... 在一个表中存在的另一个表的主键称此表的。 视图 视图的定义 视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作。视图通常是有一个表或者多个表的行或列的子集。

1.9K21

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

键指的是在“从表”中“主表”的主键对应的那个字段,比如员工表的 dept_id,就是。使用约束可以让两张表之间产生一个对应关系,从而保证主从表的引用的完整性。...主表:主键 id 所在的表,约束别人的表;从表:所在的表,被约束的表。...Create Foreign Key Constraint 添加约束,就会产生强制性的数据检查,从而保证了数据的完整性和一致性。...ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk; -- 再将约束添加回来 # 省略约束名称, 系统会自动生成一个约束名称 ALTER TABLE...,否则约束创建失败。

2.3K20

珍藏 | Java 岗位 【数据库】 面试题及答案详解

· 唯一 · 主、 · 不为空 · 表之间的关联字段 · 查询比较频繁的字段 6:索引类型有哪些?...11:主键和的区别? · 主键在本表中是唯一的、不可唯空的,可以重复可以唯空; · 和另一张表的主键关联,不能创建对应表中不存在的。 12:在数据库中查询语句速度很慢,如何优化?...· 第一范式:列不可再分 · 第二范式:行可以唯一区分,主键约束 · 第三范式:表的非主属性不能依赖与其他表的非主属性约束,且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上...- Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等 - Alter语句:修改数据表定义及属性。...- DML(Data Manipulation Language)数据操控语言,包括: - Insert语句:向数据表张插入一条记录。

3.3K20

MySQL 学习笔记(三):完整性和触发器设计

添加约束 alter table 从表 add constraint 约束名(形如:FK_从表_主表) foreign key(属性名) references 主表(属性名) alter table...约束 + 级联(删除/更新) alter table 从表 add constraint 约束名 foreign key(属性名) references 主表(属性名)  ON DELETE CASCADE...删除约束 删除主键约束:alter table 表名 drop primary key; 删除外约束:alter table 表名 drop foreign key (区分大小写);...这里我创建的时候 sno 中有些表有主键约束,有些却没有,所以当我删除主键约束的时候它会提示被错误建立起来了。但我不明白为什么建立的时候没有报错。...触发器是一种表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。

1.4K40

MySQL数据篇之多表操作-----保姆级教程

多表操作 约束 添加 语法 注意 表表之间的关系 子查询的缺陷 一对多的关系 一对多的建表原则 多对多的关系 多对多的建表原则 一对一的例子 一对一的建表原则 多表案例分析 多表查询...键值同名 union联合查询 union all可以查询出所有,不进行去重操作 内连接连接的区别 约束 作用:保证多表之间的数据完整性 测试环境准备: create table dept(...这个时候就需要在多表之间添加约束 ---- 添加 语法 在新表中添加约束语法: constraint 约束名称 foreign key(的字段名称) references 主表表名(...主键字段名) 在已有表中添加约束:alter table 从表表名 add constraints 约束名称 foreign key(的字段名称) references 主表表名(主键字段名...---- 注意 添加约束后,如果想要删除主键即某个部门,需要先将该部门下关联的员工记录删除,否则报错。

1.1K10

第13章_约束

因为被依赖 / 被参考的值必须是唯一的 (2)在创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名(例如 student_ibfk_1;),也可以指定约束名。...,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据 (6)在 “从表” 中指定约束,并且一个表可以建立多个约束 (7)从表的主表被参照的列名字可以不相同,但是数据类型必须一样,...(2)删除表时,先删除从表emp,再删除主表dept (2)建表后 一般情况下,表表的关联都是提前设计好了的,因此,会在创建表的时候就把约束定义好。...# 6.10 阿里开发规范 【 强制 】不得使用级联,一切概念必须在应用层解决。 说明:(概念解释)学生表中的 student_id 是主键,那么成绩表中的 student_id 则为。...级联更新适用于 单机低并发 ,不适合 分布式 、 高并发集群 ;级联更新是强阻塞,存在数据库 更新风暴 的风险;影响数据库的 插入速度 。 # 7.

29530

MySQL之多表查询

阅读目录 一 多表联合查询 二 多表连接查询 三 复杂条件多表查询 四 子语句查询 五 其他方式查询 六 SQL逻辑查询语句执行顺序(重点) 七 约束 八 其他约束类型 九 表表之间的关系...但是,你知道这些语句,它们的执行顺序你清楚么?如果你非常清楚,你就没有必要再浪费时间继续了;如果你不清楚,非常好!!! 请点击我... 七 约束 1.问题?   ...)ENGINE = INNODB DEFAULT charset utf8;    5.2 已经创建表后,追加约束 #添加约束 ALTER table person add constraint...约束4种类型: 1.RESTRICT 2. ...not null) (4)建议:1.如果需要约束,最好创建表同时创建约束.        2.如果需要设置级联关系,删除时最好设置为 SET NULL.

8.5K120
领券