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

【MySQL】约束

,如下: 假设我们需要创建一个班级,包含班级名和班级所在教室,站在正常业务逻辑中: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库时候,一定要在中进行限制...当用户忽略了这一时候,如果设置了 default,就是用默认值,如果没有设置,就直接报错,因为有 not null 约束。...一个主键可以添加到,或者多列上,这种叫做复合主键。 在创建时候,在所有字段之后,使用 primary key (主键字段列表)来创建主键如果有多个字段作为主键可以使用复合主键。...数据库使用索引以找到特定值,然后顺指针找到包含该值行。这样可以使对应于 SQL 语句执行得更快,快速访问数据库特定信息。 我们会在后面详细讲索引概念。...一般而言,我们建议主键设计成为和当前业务无关字段,这样,当业务调整时候,我们可以尽量不会对主键做过大调整。

10410

强大易用Excel转Json工具「建议收藏」

则不会被读取 输出json名为sheet名 表格存在主从关系则仅输出主表,从不会输出,理论上从可以配置任意多级,主从位置可以随意调整 没有主从关系会单独输出,相当于主表...有主从关系则从名称作为主表项,从数据根据配置输出到该项中(从为obj类型除外) 表格主从关系配置 主表名称为正常名,作为最后输出名 从名格式为 从名~主表名 从中需要配置对应主表主键...,表头以开头,可以仅为 可对表名加上修饰符进行输出限定,格式为 名#修饰符,修饰符可以为: obj:该每一项作为单独对象输出,如果是从则直接单独每一条数据作为子项目添加到上级表单中 dic...:该以字典形式输出,每条数据主键作为字典每一项key,如果是从则根据依赖主表主键合并为字典并以输出到对应主表中 不加限定或其他限定则均默认为列表输出,如果是从则根据依赖主表主键合并为列表并以输出到对应主表中...则该不会被读取 主键以*开头,没有主键则默认除映射主表列以外第一主键 数据类型会自动识别,也可在列名后面可以跟修饰符进行限定,格式为 键名#修饰符 修饰符可以为: int : 如果是数值类型则强制转换为整形

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

MySQL约束

而这个字段就代表着整形int数据最大长度,一般数据达不到这样长度,那么如果使用zerofill约束,就会用0没用到位置进行占位。 插入数据: 可以看出二者区别。...删除主键约束 这样,插入数据就可以重复,但是通过观察,仍不能为空,因为not null在创建添加约束期间会一并添加到约束。不过有了主键,才能更好查找数据,因为其具有唯一性。...因此,为了避免这种情况,最好在创建时一并添加主键约束。 2.复合主键 回到上述定义,一张中最多只能有一个主键,但这并不意味着一个主键只能添加到。...主键不能为空,唯一键可以为空,甚至多个为空。 对于主键标识唯一性以及唯一键业务唯一性理解: 一个中若存在id,name,telephone三个字段,无疑id是要被标识唯一性主键。...外键是用于定义主表和从之间关系 外键约束主要定义在从上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键数据必须在主表主键存在或为null

18450

Google Cloud Spanner实践经验

如果想要实现水平扩容,可以使用NoSQL数据库,例如HBase、MongoDB、DynamoDB或BigTable。但是这些数据库很难做到事务特性,并且不能支持关系型数据库所支持功能,例如连等。...数据库分片(split) 在之间,Cloud Spanner支持最多7层父子关系,也就是可以7个逻辑独立行物理地存储在一起。...结构更新 Cloud spanner支持对现有的数据库架构执行以下更新操作: 新建。新表格中可以为 NOT NULL。 删除一个,前提是该内没有交错其他,并且没有二级索引。...一个非主键添加到任何,新主键不能为 NOT NULL NOT NULL 添加到主键,不包括 ARRAY 。 从非主键中移除 NOT NULL。...从任何中删除非主键,前提是二级索引未在使用该 STRING 更改为 BYTES ,或 BYTES 更改为 STRING

1.4K10

Mysql-5-数据基本操作

主键约束要求主键数据唯一,并且不能为空。主键能够唯一标识一条记录,可以结合外键来定义不同数据之间关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。...是一个字段,它可以不是本主键,但对应另外一个主键。外键主要作用是保证数据引用完整性,定义外键后,不允许删除在另一个中具有关联关系主键。...6.默认约束:指定某默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新记录时没有为这个字段赋值,那么系统自动会为这个字段赋值为男。...可以为主键添加auto_increment关键字来实现。...| +--------+-------------+------+-----+---------+----------------+ (1)NULL:表示该是否可以存储null值 (2)key:表示该是否已经编制索引

1.6K60

MySQL数据库基础练习系列2、图书借阅管理系统

VARCHAR(100) -- 联系方式,可以为空 ); 插入数据DML(注意插入数据顺序) 插入数据时候也要注意主外键关系如果没有外检情况下是没有办法插入从数据...下面我详细解释这三个范式: 第一范式(1NF, First Normal Form) 定义: 不可分割,即数据库每一都是不可分割原子数据项。...非主键必须完全依赖于主键,而不能只依赖于主键一部分(针对复合主键而言)。 解释: 第二范式建立在第一范式基础上,主要关注于主键与非主键之间依赖关系。...在第二范式中,一个只能保存一种数据,不可以把多种数据保存在同一张数据库中。 如果某一只与复合主键一部分有关,那么它就不应该存在于这个中,而应该被分离出去形成另外一张新。...它主要关注于消除传递依赖,即非主键不应该依赖于主键某一部分,而应该直接依赖于整个主键如果存在传递依赖,那么应该考虑这个非主键分离出去,形成新,并通过主键或外键与原进行关联。

17110

数据库之数据控制语句

sex varchar(5), -> info varchar(200) -> ); Query OK, 0 rows affected (0.01 sec) 确定创建是否主键(该是否有...可以看到其被标识为了主键,但是在创建时并没有指定它是主键,而是这一属性基本满足了主键要求,如唯一、不可以为空。...现在t3name添加为t1name外键(其中t3_t1_name为自定义约束名称): mysql> alter table tab3 add constraint tab3_tab1_...你能够这样说:1学号字段是2外键 ————————外键解释结束—————— 7、删除 mysql> alter table tab3 drop zuihou; 注意:如果要删除和其他列有关联关系...,如果存在关联关系,则需要先删除关联关系,再删除 同样,当执行删除操作时,如果存在关联关系,则需要先删除关联关系,再删除 同样,当执行删除操作时,如果存在关联关系,则需要先删除关联关系,再删除

1.1K40

Django中AutoField字段使用

【Django是一个机智框架】 默认情况下Djang会为ORM中定义每一张加上一个自增ID,并且用这个来做主键;出于一个MySQL-DBA工作经历我觉得 Djanog还真是机智;这样么说主要是因为我遇到过许多主从延时问题...(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 【注意】 如果你想工增加AutoField,但是又不指定这个做为主键的话,是会报错 class TestModel...Field 1、处理一对多关系数据:使用ForeignKey 2、处理多对多关系数据:使用ManyToManyField 三、字段参数 1、null:用于表示某个字段可以为空 2、unique:如果设置为...unique=True则该字段在此中必须是唯一 3、db_index:如果db_index=True则代表这为此字段设置索引 4、default:为该字段设置默认值 四、关系字段 1、to:设置要关联...) 5、db_constraint:是否在数据库中创建外键约束,默认为True,db_constraint一般使用在建立数据连接关系当中(例如创建外键),如果使用False,则是限制了之间没有关联,

6.4K20

数据库基础与SQL基础知识整理

Insert into (1) values(值1)—向指定中添加数据,但须保证其余可以为NULL。...第十五天 Ps:像in or and等词,几乎可以在任何地方使用,多注意 一.SQL语句之代码对(非数据)操作(关键词alter) 1.删除外键主键时应先删除外检再删除主键。...(不可再分性) 如果都是不可再分最小数据单元(也称为最小原子单元),则满足第一范式(1NF) 数据冗余2nf(数据是否有冗余) 没依赖主键 例如,如果关于员工关系中有一个工资属性,而工资又由更基本两个数据项基本工资和岗位工资组成...员工(员工号,姓名,基本工资,岗位工资) (2)第二大范式 如果一个关系满足1NF,并且除了主键以外其他,都依赖与该主键,则满足第二范式(2NF),一个只描述一件事情。...第二范式要求每个只描述一件事情 (3)第三大范式 如果一个关系满足2NF,并且除了主键以外其他都不传递依赖于主键,则满足第三范式(3NF) 第三范式要求其它必须直接依赖于主键 (4)作用: 使用三大范式减少了数据冗余

1.2K10

数据库基础与SQL基础知识看这篇就够了!

Insert into (1) values(值1)—向指定中添加数据,但须保证其余可以为NULL。...第十五天 Ps:像in or and等词,几乎可以在任何地方使用,多注意 一.SQL语句之代码对(非数据)操作(关键词alter) 1.删除外键主键时应先删除外检再删除主键。...(不可再分性) 如果都是不可再分最小数据单元(也称为最小原子单元),则满足第一范式(1NF) 数据冗余2nf(数据是否有冗余) 没依赖主键 例如,如果关于员工关系中有一个工资属性,而工资又由更基本两个数据项基本工资和岗位工资组成...员工(员工号,姓名,基本工资,岗位工资) (2)第二大范式 如果一个关系满足1NF,并且除了主键以外其他,都依赖与该主键,则满足第二范式(2NF),一个只描述一件事情。...第二范式要求每个只描述一件事情 (3)第三大范式 如果一个关系满足2NF,并且除了主键以外其他都不传递依赖于主键,则满足第三范式(3NF) 第三范式要求其它必须直接依赖于主键 (4)作用: 使用三大范式减少了数据冗余

90620

【22】进大厂必须掌握面试题-30个Informatica面试

Source Qualifier可以联接来自同一源数据库数据。通过源链接到一个Source Qualifier转换,我们可以两个或多个具有主键-外键关系连接起来。...如果要联接数据源,可以使用联接器。使用联接器,并使用匹配联接如果具有一些公共,并且我们需要垂直连接数据,那么我们也可以使用Union转换。...这将使我们在各自部门中获得最高薪水前3名员工。 18.如何源中单行转换成目标的三行? 我们可以为此使用Normalizer转换。如果我们不想使用Normalizer,则有一种替代方法。...SCD Type2映射 在“类型2缓慢变化维”中,如果一条新记录添加到具有新信息现有中,则原始和新记录都将显示具有新记录主键。...目标装载顺序使用: 当一个目标的数据依赖于另一目标的数据时,目标加载顺序很有用。例如,由于主键和外键关系,employee数据依赖于部门数据。因此,应该首先加载部门,然后再加载雇员

6.5K40

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

| NULL] 指示该是否可以为 NULL。...它是可选如果不指定该选项,则此列可以为 NULL如果设置为 NOT NULL,则插入新行时该必须有值; [DEFAULT expr] 指示该默认值。它是可选。...您可以通过使用 FIRST 关键字添加为第一,或者使用 AFTER existing_column 添加到现有 existing_column 后面;⑤ 如果需要在一个语句中添加多个...如果主键包含多个,则这些值组合起来必须是唯一主键中不能包含 NULL 值。 3.1.1、创建主键 我们可以在创建时定义主键。...外键相对于主键而言,用来引用其他。外键通过子表一个或多个对应到父主键或唯一键值,子表行和父行建立起关联关系。 例如,Sakila 示例数据库中 country 和 city

12310

SQL Server数据库介绍

1、数据库基本概念 数据:描述事物符号 数据:由记录(行)和字段()组成 数据库:数据集合 数据库管理系统:对数据库进行管理和维护DBMS 数据库管理员:DBA负责数据库管理和维护 数据库系统...:由硬件、操作系统、数据库、数据库管理系统、应用软件和用户组成 2、DBMS数据模型: 网状模型:支持多对多、多对一关系 层次模型:支持一对多 关系模型:通过E-R模型(实体-关系图) 3、主流数据库...: 主键Primary Key:由一个或多个字段组成,且有唯一性,不允许为空值,一个只能有一个主键 候选键:主键备选键,可以有多个 外键:主键添加到第二个中,在第二个中称为外键,用于联系其他...,不允许引用不存在元组 5、数据完整性规则: 实体完整性:不能为空 域完整性规则:某一是否有效 引用完整性:不允许引用不存在元组 用户定义完整性:针对具体数据约束 6、SQL 2008R2...SQL管理员 9、数据库分类: 系统数据库:(自动创建,不可删除) master:记录系统级别信息 model:模板数据库 msdb:代理计划警报和作业 Tempdb:临时数据库 用户数据库:手动创建,删除

1.7K50

SQL Server数据库介绍

1、数据库基本概念 数据:描述事物符号 数据:由记录(行)和字段()组成 数据库:数据集合 数据库管理系统:对数据库进行管理和维护DBMS 数据库管理员:DBA负责数据库管理和维护 数据库系统...:由硬件、操作系统、数据库、数据库管理系统、应用软件和用户组成 2、DBMS数据模型: 网状模型:支持多对多、多对一关系 层次模型:支持一对多 关系模型:通过E-R模型(实体-关系图) 3、主流数据库...: 主键Primary Key:由一个或多个字段组成,且有唯一性,不允许为空值,一个只能有一个主键 候选键:主键备选键,可以有多个 外键:主键添加到第二个中,在第二个中称为外键,用于联系其他...,不允许引用不存在元组 5、数据完整性规则: 实体完整性:不能为空 域完整性规则:某一是否有效 引用完整性:不允许引用不存在元组 用户定义完整性:针对具体数据约束 6、SQL 2008R2...SQL管理员 9、数据库分类: 系统数据库:(自动创建,不可删除) master:记录系统级别信息 model:模板数据库 msdb:代理计划警报和作业 Tempdb:临时数据库 用户数据库:手动创建,删除

2.3K60

MySQL 数据类型属性 约束 三大范式

表头 字段名1 字段名2 数据单元 数据1 数据2 如: 学号 姓名 专业 201911250101 小王 软件技术 MySQL中数据类型属性 MySQL 关键字 含义 null 数据包含...默认情况下、不指定非空约束、所有字段名都可以为null。 5、默认值约束 默认值约束表示当数据中某个字段不输入值时,自动为其添加一个已经设置好值。...(自定义默认值) 数据库设计三大范式 第一范式: 数据中每一属性都是不可再分属性性,确保**每一原子性**。...第三范式: 保证每都和主键直接相关 第三范式又和第二范式相关,用第三范式定义描述第三范式就是,数据库如果不存在非关键字段任一候选关键字段传递函数依赖则符合第三范式,所谓传递函数依赖指的是如果存在...也就是说字段和主键直接对应不依靠其他中间字段,说白了就是,决定某字段值必须是主键。 我在这里只稍微概念讲了出来(因为懒)。 大家需要再去多了解 可以去看一下这篇博客。

1.2K20

数据库查询优化

有些情况不能避免,大多数情况可以避免。所以如果应用程序目前正在使用TSQL游标,看看这些代码是否能够重写以避免它们。...首先,扫描第一个(FROM子句中最后那个)并对记录进行排序;然后扫描第二个(FROM子句中最后第二个);最后所有从第二个中检索出记录与第一个中合适记录进行合并。...但第一个是不可SARG(因为使用了函数)运行得慢些,而第二个SARG运行得快些。...8.5 避免在索引列上使用IS NULL和IS NOT NULL: 避免在索引中使用任何可以为,SQLSERVER无法使用该索引。...* 主键索引:在数据库关系图中为定义一个主键将自动创建主键索引,主键索引是唯一索引特殊类型。主键索引要求主键每个值是唯一。当在查询中使用主键索引时,它还允许快速访问数据。

4.3K20

推荐学Java——数据操作

); ``` 外键(父)不一定要是主键,但至少具有 unique 约束;外键可以为Null ....唯一约束:unique 约束字段不能重复,但可以为 NULL . -- 多个联合约束 这种约束叫做 级约束 create table 名( id int not null unique...values (对应列名值1,对应列名值2...), (对应列名值1,对应列名值2...) ; 列名要一一对应 数据类型也要一一对应 顺序可以调整 如果插入值为空,则默认给 null 值(...注: 如果是全列名插入,则可以省略表名后列名不写,例如下面这样: insert into student values(100,'yasuo',0,25); 设置了主键,插入时要保证主键不重复。...增加可以添加别名;增加仅仅是在查询结果上显示,不会真正改变结构。 where后条件写法 关系运算符:>,>=,<,<=,!

2.6K20

MySQL数据库基础练习系列15、留言板系统

, -- 用户邮箱,唯一且可以为空(根据实际情况可设为NOT NULL) email VARCHAR(100) UNIQUE, -- 用户性别,可以是'男'或'女',长度为2个字符...,如点赞数、是否显示等 -- 例如:is_displayed BOOLEAN DEFAULT TRUE ); 插入数据DML(注意插入数据顺序) 插入数据时候也要注意主外键关系如果没有外检情况下是没有办法插入从数据...非主键必须完全依赖于主键,而不能只依赖于主键一部分(针对复合主键而言)。 解释: 第二范式建立在第一范式基础上,主要关注于主键与非主键之间依赖关系。...在第二范式中,一个只能保存一种数据,不可以把多种数据保存在同一张数据库中。 如果某一只与复合主键一部分有关,那么它就不应该存在于这个中,而应该被分离出去形成另外一张新。...它主要关注于消除传递依赖,即非主键不应该依赖于主键某一部分,而应该直接依赖于整个主键如果存在传递依赖,那么应该考虑这个非主键分离出去,形成新,并通过主键或外键与原进行关联。

10810

数据库对象命名参考

此时为了实现上面的关系,就需要一张解析(这张只存储学生ID和课程ID,而学生信息和课程信息分别存在各自中),这个起名,建议写法是两个名合并(如果名比较长做简化),此处如 StudentCourse...如果让我来建表示是否随笔放到首页字段,它名字一定是这样:IsOnIndex 类似的例子是很多,我在这里仅举出典型几个范例,大家可以自行拓展,如果我能起到一个抛砖引玉作用就很满足了。...如果要写代码确定取值只能属于某个范围,就添加一个Check约束。 如果要写代码来连接 父-子 ,就创建一个关系。...以Not Null思路建 我发现很多开发人员在建时候,如果要新建一个字段,他思路是这样:默认这个字段是可以为Null,然后去判断是不是非要Not Null不可,如果不是这样,OK,这个字段可以为...结果往往是一张除了主键以外所有的字段都可以为Null

91720

Hive优化器原理与源码解析系列—统计信息UniqueKeys集合

强调一点,这里讲到主键侧PK side不是指其主键,是带有主键那一侧,就JoinKey关联键外键而言,它是重复,如员工外键部门编号就是含有重复值,所以使用主键选择率和外键非重复记录数进行估算...null : (HiveTableScan) r; } 2)UniqueKeys识别 主要是从Project投影操作符中用到进行分析判断是否为UniqueKeys。...遍历每统计信息NDV(Number of Distinct Value)与中记录数进行如果非重复个数大于或等于总记录数数,说明此列为UniqueKey。...} } if (mapInToOutPos.isEmpty()) {//如果输入和输出位置映射关系null // if there's no RexInputRef..., } return keys;//返回非重复keys列表 判断每是否主键,组成集合并返回。

96220
领券