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

轻松学习SQL约束核心原理和实用技巧

SQL 约束-约束简介约束(FOREIGN KEY,缩写 FK)是用来实现数据库表参照完整性。...相关概念主键:可以唯一标识一条记录:从表中与主表主键对应字段主表:所指向表,约束其他表表从表:所在表,被约束表价值:建立主表与从表关联关系,为两个表数据建立连接,约束两个表中数据一致性和完整性建立约束创建表时添加约束...:CONSTRAINT [约束名称] FOREIGN KEY (字段) REFERENCES [主表名称(主键字段)]添加约束:ALTER TABLE [表名] ADD CONSTRAINT...KEY [约束名称]注意事项从表数据类型必须与主表主键一致删除数据时,需先删除从表数据再删除主表数据添加数据时先添加主表数据,再添加从表数据#删除外约束ALTERTABLEemp_partDROPFOREIGNKEYemp_dept...',20,'female','2')#删除主表中部门id=2部门DELETEFROMdeptWHEREid=2#查看从表中数据是否同时被删除SELECT*FROMemp_part总结SQL约束是一种参照完整性约束

18010

SQL反模式学习笔记5 约束【不用钥匙入口】

目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用原因有一下几点: 1、数据更新有可能和约束冲突; 2、当前数据库设计如此灵活,以至于不支持引用完整性约束...1、假设无暇代码:要避免没有约束情况下产生引用不完整状态,需要再任何改变生效前执行额外Select查询, 以此来确保这些改变不会导致引用错误。...合理使用反模式: 如果数据库产品不支持约束功能,则不得不使用别的方法来保持引用完整性,比如使用监控脚本。 同样也存在一些极度灵活数据库设计,无法用来表示其对应关系。...执行更新和删除2个操作中任意1个是,数据库都会自动修改多张表中数据, 引用状态操作之前和之后都保持完好。...2、约束的确需要多那么一点额外系统开销,但相比于其他一些选择,确实更高效一点: (1)不需要在更新或删除记录前执行Select检查; (2)同步修改时不需要再锁住整张表

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

【MySQL】MySQL数据库初阶使用

一张表中,主键只能有一个,唯一可以有多个,所以例如学生id,电话号码,QQ号码等都可以进行唯一约束,如果你不想让唯一中出现NULL值,则可以唯一约束基础再多添加一个not null非空约束...约束是innodb存储引擎一个重要特性,一般用于进行表和表之间关联,用于约束具有关联性表,比如下面的学生表和班级表,学生是隶属于班级,比较合理做法就是创建约束为学生表中class_id...下面是约束探究过程。...如果stu和class表之间没有约束的话,则向stu表中插入数据时,有可能误操作将一个学生插入到两个班级,或者将学生插入到不存在班级,以及删除班级,但班级此时还有学生,如果不添加约束,则学生又到了不存在班级中了...其实这里,个人觉得和复合主键有那么一点点相似,必须保证和引用之间唯一性,但约束显然是要比复合主键更严格,比如删除引用(引用中还存在着)是不被允许,一个列中字段只能配一个引用列中字段

31930

Android中SQLite数据库小计

约束和事务 SQLite默认不开启约束,可以使用setForeignKeyConstraintsEnabled来开启约束。但是不同API版本行为和设置方式会有差异。...onConfigure和onOpen 一些情况下,数据库是开启了约束,这会影响数据库升级和降级代码逻辑。...可以使用以下两个方法来达到暂时性开启和关闭约束这样目的: onConfigure 方法在数据库连接成功后立即执行——onCreate、onUpgrade和onDowngrade方法前面。...例如像简单改表名这样操作,应该暂时无视约束。...文件系统被占满这样极端情况下,dbHelper只能返回给我们一个只读db,但当文件系统又有空闲时候,dbHelper又会返回一个db对象——它是可读写,之前db对象被close并释放掉。

2K90

SQL基础--> 约束(CONSTRAINT)

函数 –查询中涉及到其它列值 FOREIGN KEY 约束 约束是用来维护从表和主表引用完整性,所以外约束要涉及两个表。...SET NULL: 子表中相应列置空 如果子表在建时,该列数据并不在父表,则无法创建该约束。...约束对update语句影响: 主从表都有可能违反约束,操作一个表必须将另一个表数据处理好。 约束对DDL语句影响: 删除主表时,才有可能违约约束。...默认情况下创建约束是启用 --添加一个列comm以及一个check约束并将其置为禁用模式 SQL> ALTER TABLE tb_cons2 2 ADD comm NUMBER(4)...,tb_constraint_1约束都被禁用 SQL> SELECT constraint_name,constraint_type,table_name,status,deferrable

1.7K20

MySQL数据库基础(九):SQL约束

创建主键约束:创建表时,字段描述处,声明指定字段为主键 删除主键约束:如需撤销 PRIMARY KEY 约束,请使用下面的 SQL alter table persons2 drop primary...key; 补充:自动增长 我们通常希望每次插入记录时,数据库自动生成字段值。...NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入记录或者更新记录。...四、默认值约束 default 默认值 五、约束(了解) 约束(多表关联使用) 比如:有两张数据表,这两个数据表之间有联系,通过了某个字段可以建立连接,这个字段在其中一个表中是主键,另外一张表中...,我们就把其称之为

9710

MySQL笔记

因为建立关系模型,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间 固定表结构,灵活度较低 非关系型数据库 非关系型数据库又被称为NoSQL(Not Only SQL ),意为不仅仅是 SQL...alter table 表名 add primary key(字段) 自动增长 创建表时,添加主键约束,使用auto_increment可以来完成值自动增长 创建表时,添加主键约束...alter table 表名 modify 字段 类型 auto_increment 约束:foreign key 创建表时,添加 create table 表名( 列名...key 键名称 创建表之后,添加 alter table 表名 add constraint 键名称 foreign key (字段名称) references 主表名称(主表列名称...,快速定位数据 多表之间关系 实现关系 一对多(多对一) 一方建立,指向一一方主键 多对多 需要借助第三方中间表。

97610

MySQL基础SQL编程学习2

2.NOT NULL : 指示某列不能存储 NULL 值; 如果不向字段添加值就无法插入记录或者更新记录,否则会报错; 3.UNIQUE : 保证某列每行必须有唯一值; 设置字段为UNIQUE...(即约束主键表) SET NULL:则当在主键表中删除对应记录时,首先检查该记录是否有对应,如果有则设置子表中该键值为null(一样是约束主键表,不过这就要求该允许取null) 5...补充说明: 1.创建约束方式也可以使用工具plsql来新增约束; -- 创建表时候指定约束 CREATE TABLE 表名 ( column1 datatype null/not....column_n) ON DELETE CASCADE--级联删除 ); -- 创建表后增加约束 ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY...添加FOREIGN KEY时候必须先创建约束所依赖表,并且该列为该表主键(对方表关联字段必须是主键); Oracle数据库中,对指定表进行增删改情况,子表:谁创建谁就是子表,父表

7.2K30

Web-第六天 MySQL回顾学习

如需撤销 PRIMARY KEY 约束,请使用下面的 SQL: ALTER TABLE Persons DROP PRIMARY KEY 2.5.2 自动增长列auto-increment 我们通常希望每次插入记录时...NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入记录或者更新记录。...4.1 约束 现在我们有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常情况下,我们将在商品表添加一列,用于存放分类cid信息,此列称为: ? ?...声明约束 语法:alter table 从表 add [constraint] [键名称] foreign key (从表字段名) references 主表 (主表主键); [键名称]...4.2.3 一对一关系:(了解) 实际开发中应用不多.因为一对一可以创建成一张表. 两种建表原则: 唯一:主表主键和从表(唯一),形成主外关系,唯一unique。

79620

MySQL 数据库 增删查改、克隆、 等操作

目录 SQL 字段数据类型 查看数据库信息语句 SQL 语句 创建、删除 数据库 数据表 向表中添加、删除 记录、查询记录 修改表名,添加、修改、删除 字段,添加唯一约束 查看、删除、添加 表中索引...扩展功能,字段值自增等 数据表高级操作 克隆表,将数据表数据记录生成到表中 删除记录后主键记录重头开始自增 创建临时表 创建约束,保证数据完整性和一致性 MySQL 六种约束 ----...源表名); SHOW CREATE TABLE 克隆表名\G; #获取数据表表结构、索引等信息 注意:直接克隆无法复制原表 主键、自动增长、约束、索引等配置。...,保证数据完整性和一致性 定义:如果同一个属性字段X 表一中是主键,而在表二中不是主键,则字段X称为表二。...主键表和理解: (1)以公共关键字作主键表为主键表(父表、主表) (2)以公共关键字作表为表(从表、外表) 注意: 1. 与关联主表字段必须设置为主键。 2.

5.8K20

不用 SQL 数据仓库

SQL 能力不足,加上封闭性又导致使用沉重,性能也不高。这是当前 SQL 型数据仓库面临主要问题。 SQL 基础引入 Python 能力也不能解决问题。...文件存储成本更低, AP 类计算场景下用户可以随意设计空间换时间方案,无非就是多存几个文件,即使冗余数据文件多到上万(现代文件系统处理这个规模文件数据很轻松)也完全没有负担。...延伸阅读:跑文件系统数据仓库 高性能 基于灵活文件存储,我们就可以根据计算目标灵活设计数据组织(存储)形式以实现高性能。...除了高性能存储支持,SPL 还提供了诸多大数据与高性能计算机制和算法支持。 SPL 首先在运算能力提供了游标计算来应对超出内存容量大数据计算。...、序号分组、…… 关联类地址化、序号化、索引复用、对位序列、单边分堆、…… 归并与连接类有序归并、分段归并、关联定位、附表、…… 多维分析类部分预汇总、时间段预汇总、冗余排序、布尔维序列

18620

不用 SQL 开源数据仓库

SQL 能力不足,加上封闭性又导致使用沉重,性能也不高。这是当前 SQL 型数据仓库面临主要问题。 SQL 基础引入 Python 能力也不能解决问题。...文件存储成本更低, AP 类计算场景下用户可以随意设计空间换时间方案,无非就是多存几个文件,即使冗余数据文件多到上万(现代文件系统处理这个规模文件数据很轻松)也完全没有负担。...延伸阅读:跑文件系统数据仓库 高性能 基于灵活文件存储,我们就可以根据计算目标灵活设计数据组织(存储)形式以实现高性能。...除了高性能存储支持,SPL 还提供了诸多大数据与高性能计算机制和算法支持。 SPL 首先在运算能力提供了游标计算来应对超出内存容量大数据计算。...、序号分组、…… 关联类地址化、序号化、索引复用、对位序列、单边分堆、…… 归并与连接类有序归并、分段归并、关联定位、附表、…… 多维分析类部分预汇总、时间段预汇总、冗余排序、布尔维序列

19120

Sentry 开发者贡献指南 - 数据库迁移

目录 命令 将您数据库升级到最新 将您数据库移动到特定迁移 为迁移生成 SQL 生成迁移 将迁移合并到 master 指南 过滤器 索引 删除列/表 列 表 重命名表 添加列 向列添加 NOT...在这种情况下,首先删除其他表中列,然后返回到此步骤。 通过列上设置 db_constraint=False,删除此表到其他表任何数据库级约束。...接下来,我们需要删除和 db 级约束。... 创建大多没问题,但是对于像 Project、Group 这样大/繁忙表,由于获取锁困难,它可能会导致问题。您仍然可以创建 Django 级别的,而无需创建数据库约束。...这是因为 Postgres 仍然需要对所有行执行非空检查,然后才能添加约束小表这可能没问题,因为检查会很快,但在大表这可能会导致停机。

3.6K20

Java面试手册:数据库 ②

可以用主键子句或者主键短语来定义 建表时定义主键 添加主键 参照完整性:又称引用完整性,指标简规则,卓用于有关联两张或两张以上表,通过使用主键和(或为一)之间关系,使表中键值相关表中保持一致...可用键子句来定义。 建表时定义 添加 用户自定义完整性:指针对某一具体关系数据库约束条件,它反映某一具体应用所涉及数据必须满足语义要求。...类型,int类型占用空间小,检索更快 主键自增:添加一条记录时后,不需要设置主键值,自动生成数据主键,每次加一。...java和数据库对应关系)给表中一个字段添加一个属性(从表),让它由相应主键约束(主表),与其他表主键构成关联关系,主键约束。...//给表中添加 create table student ( id int primary key auto_increment,//主键设置每张表都有,并且代码第一行

1.3K20

数据库_mysq单表操作

如需撤销 PRIMARY KEY 约束,请使用下面的 SQL: ALTER TABLE Persons DROP PRIMARY KEY 3.2 自动增长列 我们通常希望每次插入记录时,数据库自动生成字段值...NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入记录或者更新记录。...3.4.1 添加唯一约束 与主键添加方式相同,共有3种, l 方式1:创建表时,字段描述处,声明唯一: CREATE TABLE Persons( Id_P int UNIQUE, LastName...l 如需撤销 UNIQUE 约束,请使用下面的 SQL: ALTER TABLE Persons DROP INDEX 名称 如果添加唯一约束时,没有设置约束名称,默认是当前字段字段名。...3.5 约束 FOREIGN KEY 表示约束,将在多表中学习。

1.4K50

超详细MySQL三万字总结

图形化界面备份与还原 数据库表约束 数据库约束概述 主键约束 唯一约束 非空约束 默认值 约束 表与表之间关系 表关系概念 一对多 多对多 一对一 数据库设计 数据规范化 1NF 2NF...数据库概念 什么是数据库 存储数据仓库 本质是一个文件系统,还是以文件方式存在服务器电脑。...一个表如果添加约束,不正确数据将无法插入到表中。约束创建表时候添加比较合适。...什么是约束: 什么是:在从表中与主表主键对应那一列,如:员工表中 dep_id 主表: 一方,用来约束别人表 从表: 多方,被别人约束表 创建约束语法: 1、新建表时增加...employee 表 emp_depid_fk alter table employee drop foreign key emp_depid_fk; -- employee 表情存在情况下添加

3.3K30

SQL笔记(1)——MySQL创建数据库

语句 course 表添加一个约束,其中包含了以下几个关键字(具体解释参考Q&A部分): ALTER TABLE:用于修改已存在表结构; course:要修改表名; ADD CONSTRAINT...:添加一个约束条件; fk_course_teacher:新约束名称; FOREIGN KEY:指定该约束为一个约束; (teacher_id):列名称,即参考 teacher 表中哪一列。...下面是一个使用 ALTER TABLE 添加示例 SQL 语句: ALTER TABLE 表名 ADD 列名 数据类型; 其中,表名 表示要修改目标表名,列名 表示要添加列名,数据类型...可以使用 ADD CONSTRAINT 添加多种类型约束,例如主键约束、唯一性约束约束等等。...需要注意是,执行该命令之前,应当确保目标表中已经包含所需列和数据,并且这些列应当定义为不可空(即 NOT NULL)。否则,会因为无法满足约束条件而导致添加约束失败。

3K20
领券