数据库实体完整性

263 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天

实体完整性

一、 主键约束

1、鼠标步骤

①展开“数据库”节点,展开“表”节点。

②右击表,选择“设计”。

③右击某“字段”,选择“设置主键”,保存。

image.png 2、SQL语句

①创建表时

CREATE TABLE <表名>

  (

<列名1>   <数据类型>  [CONSTRAINT <主键约束名>]  PRIMARY KEY  [CLUSTERED| NONCLUSTERED]

   )



例题: 建立“学生1”表时,为“学号”字段建立主键。

USE 学生管理  

CREATE  TABLE  学生1                 

(

  学号   char(8)  NOT  NULL  primary  key ,                  

姓名  nvarchar(20)  NOT  NULL,       

  性别  nchar(1)  NOT  NULL  ,            

  生日  date   NULL,                            

  籍贯  nvarchar(30)  NULL,                  

  党员  bit    NULL,               

  高考成绩  decimal (5,1)  NULL,  

  邮箱  nvarchar(30)  NULL              

)

GO

 

②修改表时

ALTER  TABLE  表名

ADD

CONSTRAINT  约束名

PRIMARY  KEY  

{(字段名[,…n])}

 

例题: 修改“学生1”表,为“学号”字段建立主键。

USE  学生管理

GO

ALTER TABLE  学生1

ADD  CONSTRAINT  pk_学号

PRIMARY KEY (学号)

GO

 

选择主键的原则:

1、最少性(尽量选择单个键作为主键)

2、稳定性(尽量选择更新少的列作为主键)

提问:

1、主键允许为空吗?

2、主键可以有多个列组成吗?

二、唯一约束

1、鼠标步骤

①展开“数据库”节点,展开“表”节点。

②右击表,选择“设计”。

③右击选择“索引/键”,然后单击“添加”。

image.png ④选择“类型”为“唯一键”,并命名名称,最后关闭。

⑤保存、刷新。

image.png 2、SQL语句

①建立表时

CREATE TABLE <表名>

  (

<列名1>   <数据类型>  [CONSTRAINT <唯一键约束名>]  UNIQUE  

  )



例题: 建立“学生1”表时,为“姓名”建立唯一性。

USE 学生管理  

CREATE  TABLE  学生1                 

(

  学号   char(8)  NOT  NULL,                  

姓名  nvarchar(20)  NOT  NULL  UNIQUE,       

  性别  nchar(1)  NOT  NULL  ,            

  生日  date   NULL,                            

  籍贯  nvarchar(30)  NULL,                  

  党员  bit    NULL,               

  高考成绩  decimal (5,1)  NULL,  

  邮箱  nvarchar(30)  NULL              

)

GO

 

②修改表时

ALTER  TABLE  表名

ADD

CONSTRAINT  约束名

UNIQUE  {(字段名[,…n])}

 

例题: 修改“学生1”表,为“姓名”建立唯一性。

USE  学生管理

GO

ALTER TABLE  学生1

ADD  CONSTRAINT  uq_姓名

UNIQUE  (姓名)

GO

 

注意:主键与唯一键的区别

image.png 三、标识列—IDENTITY列

表中没有合适的列作为主键怎么办?

标识列总结:

①整型

②自动产生,不用录入

③可以设成主键

④若删除一些中间记录,标识值不会重新开始

image.png

image.png

image.png 标识增量:一次加几       标识种子:从几开始****

 

例题:

USE 学生管理  

CREATE  TABLE  学生1                 

(

ID  int  not null  identity(1,1) primary  key ,

学号   char(8)  NOT  NULL,                  

…….                               

)

**
**