MySQL数据库中数据表的约束条件

        

目录

1.primary key :主键约束,用于唯一标识对应的记录  

1.单字段主键

2. 复合主键

2.foreign key:外键约束

1.创建表时添加外键约束

 2.为已存在的表添加外键约束

 3.删除外键约束

3.not  null 非空约束

1.创建表时添加非空约束

 2.为已经存在的表添加非空约束

 3.删除非空约束

4.UNIQUE:唯一性约束

创建表时添加唯一约束

为已经存在的表添加唯一约束

删除唯一约束

5.default:默认值约束

创建表时添加默认约束

 为已存在的表添加默认约束

删除默认约束

拓展:创建表时指定字段值自动增加

1.创建表时指定字段值自动增加

2.为已存在的表设置字段值自动增加  

3.删除字段的自动增长

语法格式: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字段值的自动增加

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值