唯一约束

MySQL中的KEY, PRIMARY KEY, UNIQUE KEY , INDEX 的区别

流过昼夜 提交于 2019-11-30 04:26:57
-----------转载-----------------------:原文: https://www.cnblogs.com/zjfjava/p/6922494.html 索引: 被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。 表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。 如果一个表有1000行,这比顺序读取至少快100倍。注意你需要存取几乎所有1000行,它较快的顺序读取,因为此时我们避免磁盘寻道。 所有的MySQL 索引 (PRIMARY、UNIQUE和INDEX) 在B树中存储 。字符串是自动地压缩前缀和结尾空间。 索引用于: 快速找出匹配一个WHERE子句的行; 当执行联结时,从其他表检索行; 对特定的索引列找出MAX()或MIN()值; 如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。 如果所有键值部分跟随DESC,键以倒序被读取。 在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。 如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。 PRIMARY KEY: mysql

MySql常见约束

青春壹個敷衍的年華 提交于 2019-11-29 08:35:57
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。 分类:六大约束   1.NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。   2.DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别   3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。   4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。   5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。   6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。例如学生表的专业编号 添加约束的实际:   1.创建表时   2.修改表时 约束的添加分类:   列级约束:六大约束语法上都支持,但外键约束没有效果   表级约束:除了非空、默认、其它的都支持。   示例:     ①添加列级约束    1 create table if not exists t_stuinfo( 2 id int primary key, #主键 3 stuName varchar(20) not null, #非空 4 gender char(1) check(gender=

MySQL 约束类型

巧了我就是萌 提交于 2019-11-29 08:35:40
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。 MYSQL中,常用的几种约束: 约束类型: 主键 外键 唯一 非空 自增 默认值 关键字: primary key foreign key unique not null auto_increment default 1、主键约束 primary key 主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。 当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 -- 基本模式 create table temp( id int primary key, name varchar(20) ); -- 组合模式 create table temp( id int , name varchar(20), pwd varchar(20), primary key(id, name) ); -- 删除主键约束 alter table temp drop primary key; -- 添加主键约束 alter table temp add primary key(id,name); -- 修改主键约束 alter table temp modify id int primary

MySQL.常见表选项及约束

孤人 提交于 2019-11-29 08:35:21
1.create table 选项   1.指定列选项 default、comment   2.指定表选项 engine、auto_increment、comment 2.create table 约束   1.非空约束:not null   2.唯一约束:unique   3.主键约束: primary key   4.外键: foreign key   5.检查enum、set:chect 一、create table 选项  a. 定义列的时候,指定列选项   1.default<literal>:定义列的默认值    当插入一个新行到表中并且没有给该列明确赋值,如果定义了列的默认值,将自动得到默认值,如果没有,则为null    也可以在insert和 update 语句中使用 default 关键字给默认值赋值,函数default(column)也得到一个列的默认值   2.comment 用来给列添加注释,最多为255个字符,注释将会保存在数据字典中   b.  在create table 语句中的表选项    1.engine :指定表使用的储存引擎    #储存引擎:决定了表中的数据如何存储以及如何访问,还有事务如何处理                       MySQL中允许对每个表使用不同的储存引擎,如果在create table 中没有使用储存引擎

MySQL常见建表选项及约束

扶醉桌前 提交于 2019-11-29 08:35:08
阅读目录---MySQL常见的建表选项及约束: 1、 create table选项   1、 指定列选项 : default 、 comment   2、 指定表选项 : engine 、auto_increment、comment 2、 create table约束     1、 not null :非空约束   2、 unique :唯一约束   3、 primary key :主键约束   4、 foreign key :外键   5、 check :检查---enum、set 一、CREATE TABLE 选项 1、在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值   当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没有,则为null。 当然,也可以在INSERT和UPDATE语句中使用DEFAULT关键字显式地给列赋默认值: 函数default(column)可以得到一个列的默认值: 2)comment:用来给列添加注释,最多255个字符,注释会保存到数据字典中。   创建带有列注释的表stu_comment 从数据字典查询注释信息 2、在CREATE TABLE语句中的表选项 1)engine:指定表使用的存储引擎 存储引擎:决定了数据如何存储以及如何访问,还有事务如何处理

0607mysql基础:常用属性、约束

只愿长相守 提交于 2019-11-29 08:34:58
一、常用属性 1、auto_increment:自增长   auto_increment能为新插入的行赋一个唯一的整数标识符。为列赋此属性将为每个新插入的行赋值为上一次插入的ID+1。   MySQL要求将auto_increment属性用于作为主键的列。此外,每个表只允许有一个auto_increment列。 2、binary:区分大小写 binary属性只用于char和varchar值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。 3、default:默认值 default属性确保在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为MySQL不允许插入函数或表达式值。此外,此属性无法用于BLOB或TEXT列。如果已  经为此列指定了NULL属性,没有指定默认值时默认值将为NULL,否则默认值将依赖于字段的数据类型。 4、index:索引 如果所有其他因素都相同,要加速数据库查询,使用索引通常是最重要的一个步骤。索引一个列会为该列创建一个有序的键数组,每个键指向其相应的表行。以后针对输入条件  可以搜索这个有序的键数组,与搜索整个未索引的表相比,这将在性能方面得到极大的提升   create table employees   (   id varchar(9) not null,  

mysql 表的完整性约束

戏子无情 提交于 2019-11-29 08:32:12
目录 mysql 表的完整性约束 约束概念 unsigned 设置某一个数字无符号 (整数类型 ,浮点类型不能是unsigned) not null 某一个字段不能为空(严格模式会影响非空设置的效果) default 给某个字段设置默认值(设置默认值) unique 设置某一个字段不能重复 (唯一约束) auto_increment 设置某一个int类型的字段 自动增加 (自增字段 必须是数字 且 必须是唯一的) primary key 设置主键 (这一个字段非空且唯一) foreign key 外键 (外键,涉及到两张表,数据类型一样,且有唯一约束) references 级联删除和更新 mysql 表的完整性约束 约束概念 为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测, 使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。 约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 # FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 unsigned

05-MySQL的完整性约束

三世轮回 提交于 2019-11-29 08:32:01
1.整体说明 (1)讨论重点内容 not null 与default unique:表中该值唯一,不能有重复值 primary auto_increment foreign key (2)约束条件与数据类型的宽度一致,都是可选参数 (3)作用:用于保证数据的完整性和一致性。 (4)主要分为如下: PRIMARY KEY (PK) #标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) #标识该字段为该表的外键 NOT NULL #标识该字段不能为空 UNIQUE KEY (UK) #标识该字段的值是唯一的 AUTO_INCREMENT #标识该字段的值自动增长(整数类型,而且为主键) DEFAULT #为该字段设置默认值 UNSIGNED #无符号 ZEROFILL #使用0填充 (5)其他说明如下: #1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 #2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' #必须为正值(无符号) 不允许为空 默认是20 age int unsigned NOT NULL default 20 # 3. 是否是key 主键 primary key 外键

mysql-约束概览

本小妞迷上赌 提交于 2019-11-29 03:51:45
目录 约束 什么是约束 (constraint) mysql中的约束 unique (唯一) not null (非空) null default primary key 约束 什么是约束 (constraint) 约束就是一种限制, 数据库的约束,是对数据的安全性,完整性的保证; mysql中的约束 unique (唯一) 唯一性约束,表示这个字段不能出现重复的值,用于唯一标识一条记录 主要用于:身份证,学号等 not null (非空) 非空约束,表示这个字段的值不能为空 主要用于: 账户名/密码 null 一些数据类型默认就是可以为空 default 默认值,用于给某一字段设置默认值 普通约束例子: # 完整的建表语句 create table 表名(字段名 字段类型[(宽度)约束]) charset utf8; # 学生类(类型具备:学号/姓名/性别) create table student( id int unique, name char(10) not null, gender enum("women","man") default "man" ); insert into student values(null,null,null); # 因为name约束了不能为空,所以会报错 ERROR 1048 (23000): Column 'name' cannot be

SQL查询--约束

江枫思渺然 提交于 2019-11-29 01:41:28
在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看 约束是数据库用来确保数据满足业务规则的手段 约束的作用:定义规则、确保完整性 1.非空约束 非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值 创建表时设置非空约束 create table table_name ( column_name datatype not null, ... ) 如下 修改表时添加非空约束 alter table table_name modify column_name datatype not null; 注意:在设置非空约束之前,表中不应该有数据 修改表时去除非空约束 alter table table_name modify column_name datattype null; 2.主键约束: 确保表中每一行数据的唯一性(设置了主键约束的字段,要求这个字段是 非空的+唯一的) 所以如果一个字段被设置为主键,则查看表结构时,会发现这个字段为非空,即 NOT NULL; 一张表只能设计一个主键约束,但是主键约束可以由多个字段构成(联合主键或复合主键) 在创建表时设置主键约束 方式一: create table table_name( column_name datatype PRIMARY KEY,... ); 如下 方式二: