一:约束类型
主键约束(primary key constraint)
唯一性约束(unique constraint)
检查约束(check constraint)
默认约束(default constraint)
外键约束(foreign key constraint)
空值约束(null)
二:主键约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。
PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①.在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;
②.对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。
PRIMARY KEY既可用于列约束,也可用于表约束。
--主键约束创建方式一: 在建表时直接创建
--建表
CREATE TABLE student(
ID INT,
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1)
CONSTRAINT STD_PRIM PRIMARY KEY(ID)
--PRIMARY KEY(ID) --简写方式,这里就没有给约束起一个名字
)
/*
CONSTRAINT中文意思为约束,在这里意味着创建一个约束
STD_PRIM为创建的约束名称
PRIMARY KEY(ID)为主键约束,这里是将ID字段设置为主键
*/
--主键约束创建后,ID字段必须有值,且唯一
INSERT INTO student VALUES(1,'张三,29,100)
--主键约束创建方式二: 修改表创建
CREATE TABLE student(
ID INT NOT NULL,
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1)
)
--在使用修改表的方式增加约束,
ALTER TABLE student
ADD CONSTRAINT STD_PRIM PRIMARY KEY(ID) --STD_PRIM这个名字在删除约束时可以用到
ADD PRIMARY KEY(ID) --简写方式,没有起约束名,删除约束时就不方便了
-------------------------------------------------------------------------------
--自动增加字段,创建字段时直接设置成主键方式
CREATE TABLE student(
ID INT IDENTITY PRIMARY KEY,--如果直接写成IDENTITY,则默认为(1,1)
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1)
)
INSERT INTO student(STDNAME,STDAGE,STDMARK) VALUES('张三',25,100)
INSERT INTO student(STDNAME,STDAGE,STDMARK) VALUES('李四',25,100)
INSERT INTO student(STDNAME,STDAGE,STDMARK) VALUES('王五',25,100)
INSERT INTO student(STDNAME,STDAGE,STDMARK) VALUES('赵六',25,100)
INSERT INTO student(STDNAME,STDAGE,STDMARK) VALUES('林奇',25,100)
三:唯一性约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
使用惟一性约束的字段允许为空值;
一个表中可以允许有多个惟一性约束;
可以把惟一性约束定义在多个字段上;
惟一性约束用于强制在指定字段上创建一个惟一性索引
/*惟一性约束*/
--我们现在将STDNAME字段加一个唯一性约束
--创建表时创建约束
CREATE TABLE student(
ID INT NOT NULL,
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1)
PRIMARY KEY(ID), --主键约束
UNIQUE(STDNAME)--唯一性约束,不能接受相同的值了,如果需要删除约束就给约束起个名字
)
--或者修改表创建约束
ALTER TABLE student
ADD UNIQUE(STDNAME)
INSERT INTO student VALUES(1,'张三',NULL,100)
INSERT INTO student VALUES(2,'李四',NULL,100) --此句出错
INSERT INTO student VALUES(2,NULL,NULL,100) --但是可以接受NULL
四:检查约束
检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
一个表中可以定义多个检查约束;
每个CREATE TABLE语句中每个字段只能定义一个检查约束;
当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
检查约束中不能包含子查询。
--检查约束
--创建表时创建约束
CREATE TABLE student(
ID INT NOT NULL,
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1)
PRIMARY KEY(ID), --主键约束
UNIQUE(STDNAME),--唯一性约束
CHECK(STDAGE>=0 AND STDAGE <=100),--检查约束,要求年龄在0-100之间
)
--或者修改表创建约束
ALTER TABLE student
ADD CHECK(STDAGE>=0 AND STDAGE <=100)
INSERT INTO student VALUES(3,'当当',NULL,100) --如果字段允许NULL,是可以接受NULL
INSERT INTO student VALUES(4,'地地',200,100) --这在可以看到如果值超出范围是INSERT失败的
五:默认约束(default constraint)
默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
--默认(DEFAULT)约束
CREATE TABLE student(
ID INT NOT NULL,
STDNAME NVARCHAR(10),
STDAGE INT,
STDMARK NUMERIC(4,1),
ADDRESS NVARCHAR(100) DEFAULT '湖北武汉', --增加了一个地址字段,并给出默认值
PRIMARY KEY(ID), --主键约束
UNIQUE(STDNAME),--唯一性约束
CHECK(STDAGE>=0 AND STDAGE <=100),--检查约束,要求年龄在0-100之间
)
--或者修改表创建约束,注意这里写法有点不一样
ALTER TABLE student
ADD DEFAULT '武汉' FOR ADDRESS
INSERT INTO student(ID,STDNAME,STDAGE,STDMARK) VALUES(1,'当当',30,100)
六:空值约束(null)
--空值约束,就是设定字段允不允许接受NULL
CREATE TABLE student(
ID INT NOT NULL,
STDNAME NVARCHAR(10) NOT NULL,
STDAGE INT NULL,
STDMARK NUMERIC(4,1) NULL
)
INSERT INTO student VALUES(1,NULL,NULL,100) --错误
INSERT INTO student VALUES(1,'张三',NULL,100) --正确
--删除约束
ALTER TABLE student
DROP CONSTRAINT STD_DEFAULT
--显示表结构及内容
SELECT * FROM student
--删除表
DROP TABLE student
分享到:
相关推荐
在Oracle中,增、删、改(DML)操作和分页查询是数据库管理的基础任务,下面我们将详细讨论这些知识点。 1. **增加(Add)** 在提供的存储过程`AddSystem`中,可以看到Oracle如何通过PL/SQL来执行插入操作。首先,...
在SQL(结构化查询语言)中,我们使用`CREATE TABLE`语句来定义表的结构,包括字段名、数据类型、约束等。例如: ```sql CREATE TABLE Students ( ID INT PRIMARY KEY, Name VARCHAR(255), Age INT, Major ...
在本次实验中,主要涉及了插入(INSERT)、删除(DELETE)和更新(UPDATE)三种基本操作。例如,INSERT INTO 语句用于向表中插入新的数据行,UPDATE 用于修改现有数据,而 DELETE 用于删除指定条件的数据行。 2. ...
【第三章教学内容与学习指南1】主要涵盖了关系数据库语言SQL的学习,这是一门重要的IT技术,用于管理和处理数据库。本章计划分配6个学时,通过QQ在线直播方式进行教学,参与者可以加入指定的QQ群进行互动。 在教学...
2. 数据操纵语言(DML):分为数据查询和数据更新,如SELECT语句用于查询,INSERT、DELETE和UPDATE语句用于数据的增删改。 3. 嵌入式SQL语言的使用规定:将SQL语句嵌入到宿主语言(如Pascal、FORTRAN、VB、C#等)中...
通过以上对SQL Server中常用的查询语句的解析,我们可以看到这些语句覆盖了数据库管理中的各个方面,从简单的数据增删改查到复杂的连接操作和高级查询技术,这些知识对于高效管理和利用SQL Server数据库至关重要。
第三章“添加、更新与删除数据”关注DML操作,如INSERT、UPDATE和DELETE语句的使用,确保学生能熟练地在数据库中进行数据的增删改操作。 第四章“单表查询”讲解SELECT语句和各种查询技巧,包括按条件查询、聚合...
第3章《表的创建与修改》深入探讨了表的创建和维护。此章节将介绍如何定义表的字段、设置主键、外键,以及如何使用ALTER TABLE语句进行表的修改。此外,还会讨论索引前导的知识,为后续章节的学习打下基础。 第4章...
第三章,表的创建与修改,深入探讨了在SQL Server 2000中操作表的方法。读者将学习如何使用SQL语句(如CREATE TABLE、ALTER TABLE和DROP TABLE)创建新表、修改现有表结构以及删除不再需要的表。同时,也会接触到...
在实验中,我们使用了多种完整性控制方法,例如非空约束、主键约束和外键约束等。这些约束可以确保数据的正确性和一致性。 本实验对数据库安全性和完整性控制的各个方面进行了详细的实验和分析,为数据库管理员和...
**第三章:SQL Server Management Studio (SSMS)** SSMS是SQL Server的主要管理工具,这里会详细解释如何使用SSMS连接到数据库,进行数据库对象的浏览、创建和修改。还会介绍查询编辑器和Transact-SQL(T-SQL)的...
21. **数据的增删改** - INSERT插入新记录,UPDATE更新现有记录,DELETE删除记录。 通过以上知识点的学习,你将能够熟练地在MySQL数据库中进行数据的管理、检索和分析。实践是检验真理的唯一标准,所以记得多动手...
DML涉及对数据库中数据的增删改操作。INSERT用于向表中添加新记录,UPDATE用于修改已有的记录,而DELETE用于删除特定的记录。 【数据查询语言(DQL)】 DQL是SQL的核心,主要由SELECT语句构成,用于从数据库中提取...
B、C选项错误,新表不是临时表,可以进行增删改操作;D选项正确。 6. SQL Server的索引,A、B、C选项正确。聚集索引决定物理顺序,非聚集索引决定逻辑顺序;一个表仅能有一个聚集索引,但可以有多个非聚集索引;...
然后,可以通过该视图进行增删改操作,例如: ```sql INSERT INTO 年龄视图 (学号, 姓名, 年龄) VALUES ('S001', '小红', 20); ``` 7. 视图的查询 例如,创建一个视图,显示选修了2号课程成绩大于90分的学生情况...
这要求学生理解实体关系模型(ER模型)和数据库设计的范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 2. **唯一性约束**:部分字段需要具有唯一性,允许或不允许空值。这涉及主键和唯一键的概念...