网站内容优化的主要方法,开发一个小程序的流程,windows 做网站服务器,做微信的网站有哪些Mysql之约束上篇 约束的概述为什么需要约束什么是约束约束的分类 非空约束作用关键字特点添加非空约束删除非空约束 唯一性约束关键字特点添加唯一约束关于复合唯一约束删除唯一约束查看索引 主键约束(非空唯一性约束)作用关键字特点添加主键约束关于复合主键删除主 约束的概述… Mysql之约束上篇 约束的概述为什么需要约束什么是约束约束的分类 非空约束作用关键字特点添加非空约束删除非空约束 唯一性约束关键字特点添加唯一约束关于复合唯一约束删除唯一约束查看索引 主键约束(非空唯一性约束)作用关键字特点添加主键约束关于复合主键删除主 约束的概述
为什么需要约束 数据完整性Data Integrity是指数据的精确性Accuracy和可靠性Reliability。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑 1.实体完整性Entity Integrity 例如同一个表中不能存在两条完全相同无法区分的记录 2.域完整性Domain Integrity 例如年龄范围0-120性别范围“男/女” 3.引用完整性Referential Integrity 例如员工所在部门在部门表中要能找到这个部门 4.用户自定义完整性User-defined Integrity 例如用户名唯一、密码不能为空等本部门经理的工资不得高于本部门职工的平均工资的5倍。 什么是约束 约束是表级的强制规定。 可以在创建表时规定约束通过 CREATE TABLE 语句或者在表创建之后通过 ALTER TABLE 语句规定约束。 约束的分类 根据约束数据列的限制约束可分为 1.单列约束每个约束只约束一列 2.多列约束每个约束可约束多列数据 根据约束的作用范围约束可分为 1.列级约束只能作用在一个列上跟在列的定义后面 2.表级约束可以作用在多个列上不与列一起而是单独定义 这里注意表级约束和列级约束的位置 根据约束起的作用约束可分为 1.NOT NULL 非空约束规定某个字段不能为空 2.UNIQUE 唯一约束规定某个字段在整个表中是唯一的 3.PRIMARY KEY 主键(非空且唯一)约束 4.FOREIGN KEY 外键约束 5.CHECK 检查约束 6.DEFAULT 默认值约束 非空约束
作用 他的作用跟名字一样限定某一行或者某一列不为空 关键字 关键字是NOT NULL 特点 1.默认所有的类型的值都可以是NULL包括INT、FLOAT等数据类型 2.非空约束只能出现在表对象的列上只能某个列单独限定非空不能组合非空 3.一个表可以有很多列都分别限定了非空 4.空字符串’不等于NULL0也不等于NULL 添加非空约束 方式一建表的时候添加非空约束 CREATE TABLE 表名称(
字段名 数据类型,
字段名 数据类型 NOT NULL,
字段名 数据类型 NOT NULL
);案例
CREATE TABLE student
(name VARCHAR(20) NOT NULL,sex VARCHAR(20)
)INSERT INTO student
VALUES(NIHAO, 男)用DESC命令可查看表的信息 看约束条件 方式二建表之后添加非空约束 如前面的案例给sex数据成员也加上非空约束的条件 ALTER TABLE 表名称
MODIFY 字段名 数据类型 NOT NULL;ALTER TABLE student
MODIFY sex VARCHAR(20) NOT NULL查看此时表的信息 DESC student删除非空约束 两种写法也是用ALTER MODIFY 语句来实现 一种是去掉NOT NULL一种是用NULL #写法一
ALTER TABLE 表名称
MODIFY 字段名 数据类型 NULL;#去掉not null相当于修改某个非注解字段该字段允许为空#写法二
ALTER TABLE 表名称
MODIFY 字段名 数据类型;ALTER TABLE student
MODIFY name VARCHAR(20) NULLDESC studentALTER TABLE student
MODIFY sex VARCHAR(20)DESC student唯一性约束 关键字 关键字是UNIQUE 特点 1.同一个表可以有多个唯一约束。 2.唯一约束可以是某一个列的值唯一也可以多个列组合的值唯一。 3.唯一性约束允许列值为空。 4.在创建唯一约束的时候如果不给唯一约束命名就默认和列名相同。 5.MySQL会给唯一约束的列上默认创建一个唯一索引。 添加唯一约束 添加唯一性约束有两种写法 #写法一create table 表名称(
字段名 数据类型,
字段名 数据类型 unique,
字段名 数据类型 unique key,
字段名 数据类型
);#写法二
create table 表名称(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
[constraint 约束名] UNIQUE KEY(字段)CREATE TABLE student3
(name VARCHAR(20),sex VARCHAR(20),number INT
)#写法一
ALTER TABLE student3
MODIFY name VARCHAR(20) UNIQUE#写法二
ALTER TABLE student3
ADD UNIQUE KEY(sex)#查看表的信息
DESC student3加粗样式
关于复合唯一约束
删除唯一约束 特点 1.添加唯一性约束的列上也会自动创建唯一索引。 2.删除唯一约束只能通过删除唯一索引的方式删除。 3.删除时需要指定唯一索引名唯一索引名就和唯一约束名一样。 4.如果创建唯一约束时未指定名称如果是单列就默认和列名相同如果是组合列那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。 查看索引
#查看索引的命令
SHOW INDEX FROM 表名案例 #删除name的UNIQUE约束
ALTER TABLE student3
DROP INDEX nameDESC student3主键约束(非空唯一性约束)
作用 作用用来唯一标识表中的一行记录。 关键字 primary key 特点 主键约束相当于唯一约束非空约束的组合主键约束列不允许重复也不允许出现空值 1.一个表最多只能有一个主键约束建立主键约束可以在列级别创建也可以在表级别上创建。 2.主键约束对应着表中的一列或者多列复合主键 3.如果是多列组合的复合主键约束那么这些列都不允许为空值并且组合的值不允许重复。 4.MySQL的主键名总是PRIMARY就算自己命名了主键约束名也没用。 5.当创建主键约束时系统默认会在所在的列或列组合上建立对应的主键索引能够根据主键查询的就根据主键查询效率更高。如果删除主键约束了主键约束对应的索引就自动删除了。 需要注意的一点是不要修改主键字段的值。因为主键是数据记录的唯一标识如果修改了主键的值就有可能会破坏数据的完整性。 添加主键约束 同样两种情况 1.建表的时候添加主键约束 create table student6
(id int,name varchar(20),primary key(id, name)
);DESC student6create table student8
(id int primary key,name varchar(20)
)DESC student8关于复合主键
删除主
相关文章: