大学数据库MySQL数据表的操作基础知识总结(二)

文章详细介绍了数据完整性,包括实体完整性、域完整性、参照完整性和用户自定义完整性,并列举了各种类型的约束,如主键约束、唯一约束、检查约束、默认约束和非空约束,以及如何在SQLServer中创建和修改这些约束。此外,还提到了自增字段的设置规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.数据完整性

1.1 实体完整性主属性

1.2 域完整性

1.3参照完整性

1.4 用户自定义完整性

2.约束类型

在创建表的结构时,在该字段的数据类型后加上“Key Constarint”关键字,就可以为该字段添加主键约束

2.1主键约束(Primay Key Coustraint) 唯一性,非空性

2.2 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个

2.3检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等)

2.4默认约束 (Default Counstraint)该数据的默认值

2.5外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的列

2.6非空约束(not null Constraint)强制数据域的完整性,用来设置某个字段的值不能为空

3.修改表结构设置约束

3.1使用Alter Table 设置主键约束和外键约束

3.2添加检查约束

3.3 使用Alter Table 设置非空约束,唯一约束,默认约束

4.删除约束

5.设置自增字段


1.数据完整性

概念:数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。 它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 数据完整性分为四类

实体完整性 (Entity Integrity)、 域完整性 (Domain Integrity)、

参照完整性 (Referential Integrity)、 用户自定义完整性 (User-definedIntegrity)。

为了维护数据库的定义完整性

DBMS必须具备三个功能:(完整性定义、检查控制、违约处理都是由DBMS来完成)

  • 提供定义完整性条件约束的机制(实体完整性,参照完整性,用户定义完整性)
  • 提供完整性检查的方法(一般在 insert 、update 、delete、等语句执行后检查)
  • 违约处理 

1.1 实体完整性主属性

实体完整性也称的完整性,是指数据表中的所有行都是唯一的,确定的,所有的记录都是可以区分的。实体完整性规定了表中的主键值必须是唯一的,而且所有主属性的值都不能为空,这样才能保证实体的完整性。

列如:学生表中的学号字段(主键)对应的值每一行都不同。

1.2 域完整性

域完整性是指列的值域的完整性,通常指数据的有效性,它包括属性列中数据具有正确的数据类型,格式,数据范围,是否允许为空值等。域完整性是由确定表结构时所定义的字段的属性决定的,可以确保不会输入无效的值。

列如,学生表中的性别字段值只能取 “男”,“女”。

1.3参照完整性

实现这种引用规则(一对一,多对多),要求外码的取值只是被参照表主码的值或者取空值

关系模型的参照完整性在 create table 中用 foreign key 短语定义那些列为外码。

1.4 用户自定义完整性

用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。

DBMS提供了定义和检验这类完整性的机制,使用了和实体完整性、参照完整性相同的方法来处理他们,而不必由应用程序承担。

2.约束类型

约束(Constraint)是:Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。

在SQL Server 中有6 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)非空约束(not null Constraint)。 

创建表的结构时,在该字段的数据类型后加上“Key Constarint”关键字,就可以为该字段添加主键约束

2.1主键约束(Primay Key Coustraint) 唯一性,非空性

语法结构为:

字段名 数据类型 Primary Key

或 Constraint 约束名称 Primary Key(字段名)
Create Table 学生信息(
学号 Char(10) Primary Key,
姓名 Char(10),
年龄 Tinyint,
出生日期 DateTime);

或
Create Table 学生信息(
学号 Char(10),
姓名 Char(10),
年龄 Tinyint,
出生日期 DateTime
Constraint St_pk Primary Key(学号));

//St_pk是主键的约束名

复合主键

如果一张表的单个字段无法被定义为主键,则需要把多个字段共同设置为主键,即复合主键。

Constraint St_pk Primary Key(字段名1,字段名2)

2.2 唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个

语法结构为:

字段名 数据类型 Unique
Create Table 学生信息(
学号 Char(10) Primary Key,
姓名 Char(10) Unique,
年龄 Tinyint,
出生日期 DateTime);

2.3检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等)

字段名 数据类型 Check 表达式

2.4默认约束 (Default Counstraint)该数据的默认值

字段名 数据类型 Default 默认值;

2.5外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的列

为了防止数据丢失或无意义的数据在数据库中扩散,使数据不一致,需要设置外键

Constraint 约束名称 Foreign Key (字段名) References 主表名(字段名)

2.6非空约束(not null Constraint)强制数据域的完整性,用来设置某个字段的值不能为空

 字段名 数据类型 Not Null;

3.修改表结构设置约束

使用Create Table语句可以添加相关约束,也可以通过修改表结构语句Alter Table 命令为已经创建好的数据表设置约束。

3.1使用Alter Table 设置主键约束和外键约束

Alter Table 表名 Add Constraint 约束名 约束类型(字段名[,...N]);

其中约束类型可以是 Primary Key , Foreign Key ,Check 约束。而 Not Null,Unique,Default 约束可以通过修改表结构中的字段实现。

3.2添加检查约束

Alter Table 表名 Add Constraint [约束名] Check(约束条件)[[Not]Enforced];

其中:
[ ]表示可以省略,不填约束名的话,MySQL 会自动生成约束名;
Enforced 表示是否强制,默认是强制的,即会对改变的数据进行约束,NOT Enforced表示 Check约束不作用。

3.3 使用Alter Table 设置非空约束,唯一约束,默认约束

Alter Table 表名 Modify 字段名 数据类型 约束类型

其约束类型为Not Null,Unique,Default;

4.删除约束

4.1删除主键约束。
删除表的主键约東条件的活法格式比较简单,语法格式为:
 

ALTER TABLE 表名 DROP PRIMARY KEY

4.2删除外键约束时,需指定外键约束名称,因为一张表可设置多个外键,语法格式为:

ALTER TABIE 表名 DROP FOREIGN KBY 约束名;


4.3删除唯一约束。
使用刪除索引的方法删除唯一约束,语法格式为:

ALTER TABLB 表名DROP INDEX 字段名;


4.4删除默认与非空约束。
使用修改表结构的方法删除约束,语法格式为:

ALTER TABLB 表名MODIFY 宇段名.数据类型;


4.5删除检查约束。
删除检查约束时,需指定约束名称,因为一张表可设置多个 CHECK 约束,语法格式为
 

AITER TABLE 表名 DROP CHECK 约束名

5.设置自增字段

使用自增字段(AUTO_INCREMENT)需要遵循以下规则:

  • 5.1每张表只能有一个自增字段,数据类型一般是整数。
  • 5.2自增字段必须被设置为主键(PRIMARY KEY)或者创建唯一素引(UNIQUE),以
  • 避免序号重复
  • 5.3目增字段必领是非空(NOT NULL)属性,MysQL 会自动为自增字段设置非空约束。
修改自增字段的初始值,语法格式如下:

ALTER IABIE 表名 AUTO_INCREMENT=新的初始值;
修改自增字段的步长,语法格式如下:
SET @@ AUTO INCREMENT_ INCREMENT= 步长;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值