目录
1.primary key :主键约束,用于唯一标识对应的记录
语法格式:alter table 表名 modify 字段名 数据类型;
为了防止数据表中插入错误的数据,MySQL定义了一些维护数据库完整性的规则,即表的约束。
约束用来确保数据的准确性和一致性,数据的完整性就是对数据的准备性和一致性的一种保证。
常见的约束条件有:
1.primary key :主键约束,用于唯一标识对应的记录
主键,又称主码,由表中的一个字段或多个字段组成,能够唯一地表示表中地一条记录。主键约束要求主键字段的数据唯一,并且不允许为空。
主键分为两种类型:单字段主键和复合主键。
每个数据表中最多只能有一个主键。
1.单字段主键
①创建表时指定主键
语法格式为:字段名 数据类型 primary key; //primary :主要的
例:创建books表,并设置bookid字段为主键。
查询:describe books4;
②为已存在的表添加主键约束
语法格式:
alter table 表名 modify 字段名 数据类型 primary key;
例:将books3中的bookname字段修改为主键。
③删除主键约束
语法格式:alter table 表名 drop primary key;
例:删除books3表的bookname字段的主键约束。
2. 复合主键
复合主键指主键由多个字段组成。
①创建表时指定复合主键
其语法格式为为:primary key (字段名1,字段名2,....字段名n);
例:创建books5表,设置product_id,region_code为复合主键。
②为已存在的表添加复合主键
语法格式如下:
alter tale 表名 add primary key (字段名1,字段名2,.....字段名n)
2.foreign key:外键约束
外键在两个表的数剧之间建立关联,它可以是一个阻断或者多个字段。
一个表可以由一个或者多个外键。一个表的外键可以为空值,若不为空值,则每一个外键指必须等于另一个表中主键的某个值。
注意:关联值得是在关系数据库中,相关表之间的联系。它可以通过相同或者相容的字段或字段组来表示的
子表的外键必须关联父表的主键.且关联字段的数据类型必须匹配。
定义外键后,不允许在主表中删除与子表具有关联关系的记录。
主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的哪个表即主表
从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的哪个表即主表
1.创建表时添加外键约束
语法格式:
constraint 外键名 foreign key (从表的外键字段名) references 主表名 (主表的主键字段名) //references :查询// constraint:限制,约束
例:创建一个数据表books6;在books6表上创建外键约束,其中books4为主表,books6表为从表。
让books6的键borrowbookid作为外键关联到books4的主键bookid。
2.为已存在的表添加外键约束
语法格式:alter table 从表名 add constraint 外键名 foreign key (从表的外键字段名) references 主表名(主表的主键关键字段名); //constraint :约束 foreign:外交的 references:涉及
其中,"外键名"是指从表创建的外键约束的名字。
例:创建图书表books和借阅表borrow,为借阅表borrow创建外键。
Alter table borrow add constraint bks foreign key(Borrowbookid) rederences books(bookid)
通过select*from information_schema.KEY_COLUMN_USAGE;这条命令查询数据库中所有表的外键和主键
3.删除外键约束
语法格式:alter table 从表名 drop foreign key 外键名;
例:删除books6表Borrowbookid字段的外键约束,外键约束名为fk_bks_brw.
3.not null 非空约束
非空约束(Not null Constraint)指字段的值不能为空。
对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错
1.创建表时添加非空约束
语法格式:字段名 数据类型 NOT NULL;
例:创建commpany表,并设置commpany_id字段为主键,commpany_address为非空主键。
2.为已经存在的表添加非空约束
语法格式:alter table 表名 modify 字段名 新数据类型 not null;
例:为已存在的commpany表中的commpany_name添加一个非空约束
3.删除非空约束
语法格式:alter table 表名 modify 字段名 数据类型
例:删除从commpany表中的commpany字段的非空约束。
4.UNIQUE:唯一性约束
唯一约束要求该列值唯一,允许为空,不允许重复
唯一约束可以确保一列或者几列不出现重复值
-
创建表时添加唯一约束
语法格式:字段名 数据类型 UNIQUE
例:创建数据表commpany,并将commpany_id字段设置为主键,commpany_address为非空约束,commpany_name字段设置为唯一约束。
-
为已经存在的表添加唯一约束
语法格式:alter table 表名 modify 字段名 新数据类型 unique;
例:将commpany表中的commpany_name字段修改为唯一约束。
-
删除唯一约束
语法格式:alter table 表名 drop index 唯一字段 //index:索引
例:删除commpany数据表中的commpany_name的唯一字段
5.default:默认值约束
若数据表中某列定义为默认约束,在用户插入新的数据行时,如果没有为该列指定数据。那么数据库系统就会自动将默认值赋给该列。默认值也可以是NULL
-
创建表时添加默认约束
语法格式:字段名 数据类型 default 默认值;
例:创键default1表,并将default1_id 字段设置为主键,default1_name字段设置为唯一性约束,default_address字段设置为非空约束、default1_tel字段的默认值设置为”0371-“。
-
为已存在的表添加默认约束
语法格式:alter table 表名 modify 字段名 新数据类型 default 默认值;
例:为default1表中的DEFAULT1_tel字段添加默认约束,默认值为"0731-";
-
删除默认约束
语法格式:alter table 表名 modify 字段名 数据类型;
拓展:创建表时指定字段值自动增加
在MySQL中,AUTO_INCREMENT字段的初始值是1,每增加一条记录,字段值自动加1,但一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须设置为主键。AUTO_INCREMENT约束所在字段可以是任何整数类型。(TINYINT,SMALLINT,BIGINT)
1.创建表时指定字段值自动增加
//AUTO_INCREMENT:自动增加
语法格式:字段名 数据类型 primary key AUTO_INCREMENT;
例:创建commpany表,并将commpany_id字段设置为主键,其值自动增加,commpany_address 字段设置为非空约束,commpany_name字段设置为唯一约束,commpany_tel字段的默认值设置为"0371-"
2.为已存在的表设置字段值自动增加
语法格式:alter table 表名 modify 字段名 新数据库类型 auto_increment[=n];
参数说明如下:
[IF NOT EXISTS] :可选子句,该子句可防止创建数据库服务器中已存在的新数据库的错误,即不能在MySQL服务器中创建具有相同名称的数据库。
例:设置commpany表中的commpany_id字段值自动增加
3.删除字段的自动增长
语法格式:alter table 表名 modify 字段名 数据类型;
例:删除commpany表中的commpany_id字段值的自动增加