`
e_kissday
  • 浏览: 11891 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

增加约束的语句

阅读更多
增加约束的语句2008-07-17 16:34---添加主键约束
alter table 表名
add constraint 约束名 primary key (主键)
---添加唯一约束
alter table 表名
add constraint 约束名 unique (字段)
---添加默认约束
alter table 表名
add constraint 约束名 default ('默认内容') for 字段
--添加检查check约束,要求字段只能在1到100之间
alter table 表名
add constraint 约束名 check (字段 between 1 and 100 )
---添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)
alter table 从表
add constraint 约束名
foreign key(关联字段) references 主表(关联字段)
GO
sql server中删除约束的语句是:
alter table 表名 drop constraint 约束名
sp_helpconstraint 表名 找到数据表中的所有列的约束

-----------在创建表时创建约束------------
7.2.1 主关键字约束
主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE 和TEXT 类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL 属性。
定义主关键字约束的语法如下:
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
各参数说明如下:


constraint_name
指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。
CLUSTERED | NONCLUSTERED
指定索引类别,CLUSTERED 为缺省值。其具体信息请参见下一章。
column_name
指定组成主关键字的列名。主关键字最多由16 个列组成。

例7-3: 创建一个产品信息表,以产品编号和名称为主关键字
create table products (
p_id char(8) not null,
p_name char(10) not null ,
price money default 0.01 ,
quantity smallint null ,
constraint pk_p_id primary key (p_id, p_name)
) on [primary]

7.2.2 外关键字约束
外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为 TEXT 或IMAGE 数据类型的列创建外关键字。外关键字最多由16 个列组成。
定义外关键字约束的语法如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name1[, column_name2,…,column_name16])
REFERENCES ref_table [ (ref_column1[,ref_column2,…, ref_column16] )]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ]
[ NOT FOR REPLICATION ]
各参数说明如下:

REFERENCES
指定要建立关联的表的信息。
ref_table
指定要建立关联的表的名称。
ref_column
指定要建立关联的表中的相关列的名称。
ON DELETE {CASCADE | NO ACTION}
指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是NO ACTION,则SQL Server 会产生一个错误,并将父表中的删除操作回滚。NO ACTION 是缺省值。
ON UPDATE {CASCADE | NO ACTION}
指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是NO ACTION,则SQL Server 会产生一个错误,并将父表中的更新操作回滚。NO ACTION 是缺省值。
NOT FOR REPLICATION
指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用。
例7-4:创建一个订货表,与前面创建的产品表相关联
create table   orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
constraint pk_order_id primary key (order_id) ,
foreign key(p_id, p_name) references products(p_id, p_name)
) on [primary]
注意:临时表不能指定外关键字约束。
7.2.3 惟一性约束
惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列中输入重复的值。惟一性约束指定的列可以有NULL 属性。由于主关键字值是具有惟一性的,因此主关键字列不能再设定惟一性约束。惟一性约束最多由16 个列组成。
定义惟一性约束的语法如下:
CONSTRAINT constraint_name
UNIQUE [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])

例7-5:定义一个员工信息表,其中员工的身份证号具有惟一性。

create table employees (
emp_id char(8),
emp_name char(10) ,
emp_cardid char(18),
constraint pk_emp_id primary key (emp_id),
constraint uk_emp_cardid unique (emp_cardid)
) on [primary]

7.2.4 检查约束
检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。可以对每个列设置符合检查。
定义检查约束的语法如下:
CONSTRAINT constraint_name
CHECK [NOT FOR REPLICATION]
(logical_expression)
各参数说明如下:
NOT FOR REPLICATION
指定检查约束在把从其它表中复制的数据插入到表中时不发生作用。
logical_expression
指定逻辑条件表达式返回值为TRUE 或FALSE。
例7-6: 创建一个订货表其中定货量必须不小于10。
create table   orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
quantity smallint,
constraint pk_order_id primary key (order_id),
constraint chk_quantity check (quantity>=10) ,
) on [primary]
注意:对计算列不能作除检查约束外的任何约束。

7.2.5 缺省约束
缺省约束通过定义列的缺省值或使用数据库的缺省值对象绑定表的列,来指定列的缺省值。SQL Server 推荐使用缺省约束,而不使用定义缺省值的方式来指定列的缺省值。有关绑定缺省约束的方法请参见“数据完整性”章节。
定义缺省约束的语法如下:
CONSTRAINT constraint_name
DEFAULT constant_expression [FOR column_name]
例7-7:
constraint de_order_quantity default 100 for   order_quantity
注意:不能在创建表时定义缺省约束,只能向已经创建好的表中添加缺省约束。


7.2.6 列约束和表约束
对于数据库来说,约束又分为列约束(Column Constraint)和表约束(Table Constraint)。
列约束作为列定义的一部分只作用于此列本身。表约束作为表定义的一部分,可以作用于
多个列。
下面举例说明列约束与表约束的区别。
例7-8:
create table products (
p_id char(8) ,
p_name char(10) ,
price money default 0.01 ,
quantity smallint check (quantity>=10) , /* 列约束 */
constraint pk_p_id primary key (p_id, p_name) /* 表约束 */
分享到:
评论

相关推荐

    sql server中增加约束的语句、各种语句

    #### 一、增加约束的SQL语句 在 SQL Server 中,约束是用来确保表中的数据符合特定规则的一种机制。常用的约束包括:主键约束、唯一约束、默认值约束、检查约束以及外键约束。 **1. 主键约束(Primary Key)** ...

    mysql 增加列语句

    在本篇内容中,我们将深入探讨如何使用SQL语句在MySQL中增加列,并结合源码和工具的角度来理解这一过程。 首先,增加列的基本SQL语法如下: ```sql ALTER TABLE 表名 ADD COLUMN 新列名 数据类型; ``` 例如,如果...

    数据库技术与应用 使用Alter语句增加学生表的外键约束学习任务书.doc

    在《数据库技术与应用》这门课程中,学生将学习如何使用SQL语言中的ALTER语句来对已存在的表进行修改,特别是增加约束条件,以此来提升数据的规范化和管理效率。 ALTER语句是SQL语言中用于修改已有表结构的关键命令...

    SQL语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等

    SQL 语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等 SQL 语句是关系数据库管理系统的核心组成部分,用于管理和操作数据库。下面是 SQL 语句的总结,包括创建数据库、创建表、修改表结构、增删...

    EPCQ  nios程序固化

    此步骤还需要在Qsys的约束文件(qsf)中增加约束语句,例如“set_global_assignment-name ENABLE_INIT_DONE_OUTPUT ON”,以确保初始化完成后的输出信号正确设置。 在软件层面,Eclipse是嵌入式开发者广泛使用的...

    达梦数据库常用sql语句语法

    ### 达梦数据库常用SQL语句语法 #### 一、新建表 在达梦数据库中创建新表时,可以通过以下语法实现: ```sql CREATE TABLE [表名] ( [自动编号字段] INT IDENTITY(1,1) PRIMARY KEY, [字段1] NVARCHAR(50) ...

    达梦数据库建表操作SQL语句大全.pdf

    若需要向已存在的表中添加新的字段,可以使用ALTER TABLE语句,例如 `ALTER TABLE [表名] ADD [新字段名] NVARCHAR(50) NULL`,该语句会在指定表中增加一个名为“新字段名”的新字段,类型为NVARCHAR(50),并且...

    oracle常用SQL语句(汇总版).docx

    ALTER 语句可以修改表的名称、增加或修改字段、添加约束条件等。 三、其他相关知识点 1. 事物处理 在执行 DML 语句时,需要使用事物处理来确保数据的一致性和完整性。使用 COMMIT 命令来确认事物处理的结束,并...

    SQL_Sever数据库语句大全.zip

    增加约束条件 正则表达式提取定义函数 正则条件匹配(结果返回 True 或 False) 字段类型 定义及解释 字段拼接 And逻辑值使用 Between And查询区间数据 Case When判断语句 Cast数值转文本函数 distinct去重 等等

    oracle使用sql语句增加字段示例(sql删除字段语句)

    在本文中,我们介绍了如何使用 SQL 语句在 Oracle 中增加、修改、删除字段,以及如何重命名表和列、创建带主键的表、删除主键约束和添加主键约束。这些操作都是数据库管理系统中非常重要的一部分,正确地使用它们...

    SQL语句增加字段、修改字段、修改类型、修改默认值

    以上就是关于如何使用SQL语句增加字段、修改字段、修改类型、修改默认值以及添加/删除约束的一些基本操作。这些操作是数据库维护工作中非常常见的一部分,掌握它们可以帮助我们更灵活地管理数据库结构,以适应不断...

    sql语句使用大全策略

    本文将深入探讨SQL语句的大全,特别是关于创建、管理表以及约束的使用。 首先,创建数据库是数据库管理的基础。在SQL中,你可以使用`CREATE DATABASE`语句来新建一个数据库,如`CREATE DATABASE database-name`。另...

    完整性约束,特别是参照完整性约束(主外键)

    3. **增加约束**:再次应用完整性约束,包括主键约束、外键约束和其他用户定义的约束。例如,重新设置`Depts`、`Students`、`Reports`和`Courses`表的完整性约束,并添加针对`班级`、`Ssex`和`Sage`的新约束。 4. *...

    sqlserver中如何用代码增加约束最强文档[文].pdf

    删除约束的语句如下,用于移除已存在的约束: ```sql alter table 表名 drop constraint 约束名 ``` 3. **通过sp_helpconstraint查找约束** 使用系统存储过程`sp_helpconstraint`可以查看表中的所有列及其约束...

    2实验二通过SQL语句创建与管理数据表[收集].pdf

    添加列:我们可以使用 ALTER TABLE 语句添加列,例如给 Student 表增加身高(以米单位)Stature 列: ```sql ALTER TABLE Student ADD Stature numeric(4, 2) CHECK (Stature <= 3.0 AND Stature >= 0) ``` 删除列:...

    sql修改表结构语句.doc

    `ALTER TABLE`允许我们对现有的数据库表进行各种类型的修改操作,比如添加新列、删除旧列、修改列的数据类型、增加约束等。这对于数据库的日常管理和维护至关重要。 ### 常用的ALTER TABLE语句详解 #### 1. 添加新...

    经典SQL server语句大全

    删除主键可以释放表中的主键约束。 三、索引操作 9. 创建索引:CREATE [UNIQUE] INDEX idxname ON tabname(col....) 创建索引可以提高查询速度,但需要谨慎操作,否则可能会降低查询速度。 10. 删除索引:DROP ...

    数据库建表操作SQL语句大全

    - **自动编号字段**:通常作为主键使用,`int IDENTITY(1,1)`表示该字段为整型自增字段,起始值为1,每次增加1。 - **字段1**:类型为`nVarChar(50)`,表示最多可以存储50个字符,`DEFAULT '默认值'`表示该字段的...

    泛型封装的sql语句

    然而,随着业务需求的复杂性增加,SQL语句可能会变得越来越繁琐,维护起来也相当困难。为了解决这个问题,开发者通常会采用泛型(Generic)技术来封装SQL语句,提高代码的可复用性和可读性。本文将深入探讨如何利用...

    经典SQL语句大全(各种sql语句)

    6. **增加列**:`ALTER TABLE tabname ADD COLUMN col type` 添加新列到表中。在某些数据库系统如DB2中,列添加后无法删除,数据类型也无法更改。 7. **添加/删除主键**:`ALTER TABLE tabname ADD PRIMARY KEY(col...

Global site tag (gtag.js) - Google Analytics