唯一约束

mysql的约束、索引、范式

点点圈 提交于 2019-12-06 08:38:08
约束 表或列的primary key,unique,not null等修饰符常常被称作约束(constraint) 主要作用:是数据库用来提高数据质量和保证数据完整性的一套机制,是表定义(DDL语句)的一部分 约束主要包括: 非空约束 (not null) 唯一性约束 (unique) 主键约束 (primary key) 外键约束 (foreign key) 约束的定义方式 创建表时定义 列级别定义 表级别定义 修改表时进行追加定义 约束的查看 使用desc查看列属性查看约束 使用show create 命令查看 使用show index命令查看(无法查看not null 约束) 非空约束(not null) 用于确保其所在列的值不能为空值null,允许有多个列设置非空约束 只有列级定义和追加定义 列级定义 追加定义 非空约束的删除(将其改回为null) 或 惟一约束(unique) 列字段中不允许有重复值,但是可以有空值,允许有多个列设置惟一约束 也被称为惟一索引(其他数据库管理系统略有不同) 列级定义 表级定义 追加定义 删除惟一约束 主键约束(primary key) 主键列中不允许有重复值,也不可以有空值 一个表中只能有一个主键约束,但一个主键约束可以包含多个列 定义主键时会同时为主键创建唯一性索引 列级定义 表级定义 追加定义 删除主键约束 外键约束(foreign

XAF 编写随笔

拟墨画扇 提交于 2019-12-06 07:03:45
唯一约束 单属性唯一约束,在属性上写: private Evaluation _RelEvaluation; [RuleUniqueValue("关联评测活动不能重复", DefaultContexts.Save, CriteriaEvaluationBehavior = CriteriaEvaluationBehavior.BeforeTransaction)] [XafDisplayName("关联评测活动")] public Evaluation RelEvaluation { get { return _RelEvaluation; } set { SetPropertyValue("RelEvaluation", ref _RelEvaluation, value); } } 复合唯一约束,多个属性,在类上写 [DefaultClassOptions] //[NavigationItem("基础管理")] [XafDisplayName("评价人")] [ImageName("BO_Person")] [CreatableItem(false)] [RuleCombinationOfPropertiesIsUnique("同一测评活动下评价人的密码不能重复", DefaultContexts.Save, "RELEvaluation, Pwd")] public

UNIQUE KEY

試著忘記壹切 提交于 2019-12-03 16:59:09
唯一约束 唯一约束可以保证记录的唯一性 唯一约束的字段可以为空值(null) 每张数据表可以存在多个唯一约束 思考 为什么需要这个字段 因为在一张表中 拥有约束性的 主键 已经使用了,只能存在一个,例如用户数据的ID,但是还有的字段也需要约束性,例如,电话号码,身份证,也需要保证唯一性,所以需要UNIQUE KEY 来约束 来源: https://www.cnblogs.com/2019huha/p/11803657.html

SQL 创建表

坚强是说给别人听的谎言 提交于 2019-12-03 15:46:57
SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句 。CREATE TABLE语句用于创建用于存储数据的表。在创建表时,可以为列定义主键、惟一键和外键等完整性约束。完整性约束可以在列级或表级定义。对于不同的RDBMS, CREATE语句的实现和语法是不同的。 CREATE TABLE语句语法 CREATE TABLE table_name (column_name1 datatype, column_name2 datatype,... column_nameN datatype); SQL table_name—是表的名称 column_name1, column_name2 ….-是列的名称 datatype -是列的数据类型,比如char、date、number等 例如:如果要创建employee表,语句应该是这样的: CREATE TABLE employee ( id number(5), name char(20), dept char(10), age number(2), salary number(10), location char(10)); SQL 在Oracle数据库中,整数列的数据类型表示为“number”。在Sybase中,它表示为“int”。 Oracle提供了另一种创建表的方法。 CREATE TABLE

MySQL主键与唯一索引约束

懵懂的女人 提交于 2019-12-02 11:30:20
MySQL主键与唯一索引约束 触发约束检测的时机: insert update 当检测到违反约束时,不同存储引擎的处理动作是不一样的。 如果存储引擎支持事务,SQL会自动回滚。 例子: create table t1 ( id int ( 10 ) primary key ) engine = innodb ; insert into t1 values ( 1 ) ; insert into t1 values ( 1 ) ; 其中第二条insert会因为违反约束,而导致回滚。 通常可以使用: show warnings ; 来查看违反约束后的错误提示。 如果存储引擎不支持事务,SQL的执行会中断,此时可能会导致后续有符合条件的行不被操作,出现不符合预期的结果。 例子: create table t2 ( id int ( 10 ) unique ) engine = MyISAM ; insert into t2 values ( 1 ) ; insert into t2 values ( 5 ) ; insert into t2 values ( 6 ) ; insert into t2 values ( 10 ) ; update t2 set id = id + 1 ; update执行后,猜猜会得到什么结果集? 猜想一:2, 6, 7, 11 猜想二:1, 5, 6,

MySql 约束条件

一世执手 提交于 2019-12-02 05:07:37
约束 sql约束:约束用于限制加入表的数据的类型。是一种限制,它通过对表的行或列的数据做出限制,来确保表数据的完整性、唯一性可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。 数据类型的属性 MySQL关键字 含义 NULL 数据列可包含NULL值 NOT NULL 数据列不允许包含NULL值 DEFAULT 默认值 PRIMARY KEY 主键 AUTO_INCREMENT 自动递增,适用于整数类型 UNSIGNED 无符号 CHARACTER SET name 指定一个字符集 1、not null 约束:强制列不接受 NULL 值,强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。 例:create table table_name(id int not null,name varchar(255) not null); # 强制id和name不能为空 2、unique 约束:唯一标识数据库表中的每条记录,确保表中的一列数据没有相同的值 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束 例

MySQL学习之路4(1)

三世轮回 提交于 2019-12-01 04:50:38
数据表的基本操作1 1. 创建数据表 所谓的创建数据表,指在已经创建好的数据库中建立新表。 1.1创建表的语法形式 数据表属于数据库,所以在创建数据表之前应使用“USE <数据库名>”,即指定当前操作在哪里进行,如果没有选择数据库,会抛出“No database selected”的错误。 创建数据表的语句 为 CREATE TABLE 语法规则如下: CREATE TABLE<表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], …… [表级别约束条件] ); 使用CREATE TABLE 创建表时,要指定以下信息: 创建的表的名称,名称不区分大小写,但是不能使用SQL语言的关键字,如:DROP、ALTER、INSERT等。 表中的每一个列(即字段)的名称和数据类型,要是创建多个字段,要用逗号隔开。 例子:创建一个关于班级同学的表格class,结构如下表所示: 使用的语句如下: 上图用了 SHOW TABLES; 语句查看数据表是否创建成功。 1.2使用主键约束 主键,又称为主码,是表中一列或多列的组合。要使用主键约束,主键列的数据必须唯一。简言之,主键就是一个唯一的标识表中的一条记录,可结合外键来定义不同数据表之间的关系爱,加快数据库查询的速度。主键和记录之间的关系就好比通过我们的身份证号可以唯一标识一个人

Python学习day45-数据库(总结)

天涯浪子 提交于 2019-11-30 15:04:05
/*--> */ /*--> */ Python学习day45-数据库(总结) 数据库的概念 用户 基本操作 MySQL支持的数据类型 MySQL的约束条件 多表关系 单表与多表查询 多表的连接方式 子查询 视图View 事务 Python学习day45-数据库(总结) 今天正式结束数据库的学习,对于之前几天的内容进行一下总结,以及一些小的扩展. 数据库的概念 xxxxxxxxxx 12 1 ''' 2 数据库:, 3 之前我们了解过,数据库主要包括库(文件夹),表(表结构文件,表数据文件,也就是索引结构),字段(数据的描述),记录(记录的本体) 4 5 关于数据库的分类: 6 对其进行分类主要是效率有区别,分类的标准通常是 7 1. 内存或者硬盘,也就是运行的区域 8 2. 关系或者非关系,即数据库里面表之间的关系 9 3. 存储方式,sql或者key-value的方式 10 数据库的基本连接: 11 即mysql -h地址 -P 端口 -u 用户名 -p密码 12 ''' 用户 xxxxxxxxxx 5 1 ''' 2 用户的操作主要在于数据库对永无的创建以及赋予权限,比如: 3 grant 权限们 on 数据库表.表名 to 用户名@主机名 identified by '密码'; 4 另外一些比较基本的操作可以查看前面day41的博客 5 ''' 基本操作

数据库索引的所用,有点和缺点

时间秒杀一切 提交于 2019-11-30 11:01:13
为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点, 但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。 第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列 上创建索引,例如: 在经常需要搜索的列上,可以加快搜索的速度;

约束

喜欢而已 提交于 2019-11-30 08:17:42
约束 """ primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一 字段,未标识则创建隐藏字段 foreign key:外键 unique:唯一性数据, 该条字段的值需要保证唯一,不能重复 auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段 not null:不为空 - 针对一些字段,如注册时的用户名,出生人的性别等,这些需求下的字段,只不能设置为Null,必须要对其赋值 default:默认值 - 对有默认值意外的字段进行赋值时,有默认值的字段会被赋默认值 unsigned:无符号 - 存储的数字从0开始 zerofill:0填充 - 存整数时数据长度小于取值范围长度,会在数字左方用0填充 """ # not null 与 default 限制 # 不能为空,没有默认值的x,必须赋值 # y、z在没有赋值情况下,才有默认值,设置值后,采用默认值 mysql>: create table td1 (x int not null, y int default 0, z int default 100); # 报错,auto_increment必须设置给 键字段 mysql>: create table td2 (x int auto_increment); # 报错,auto