当前位置:首页 » 编程语言 » sql2005约束
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql2005约束

发布时间: 2022-09-12 08:21:22

sql 2005 ‘CHECK约束’ 和 ‘规则’ 区别

一、约束
约束定义关于列中允许值的规则,是强制完整性的标准机制。

使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。SQL Server 2005支持五类约束:
1. NOT NULL指定不接受NULL值的列。
2. CHECK 约束对可以放入列中的值进行限制,以强制执行域的完整性。CHECK约束拒绝所有在检测条件中取值为false的值。可以为每列指定多个CHECK约束。下例显示名为chk_id约束的创建,该约束确保只对此关键字输入指定范围内的数字,以进一步强制执行主键的域。
CREATE TABLE cust_sample
(
cust_id int PRIMARY KEY,
cust_name char(50),
cust_address char(50),
cust_credit_limit money,
CONSTRAINT chk_id CHECK(cust_id BETWEEN 0 and 10000)
)
3. UNIQUE约束:对于 UNIQUE 约束中的列,表中不允许有两行包含相同的非空值。主键也强制执行唯一性,但主键不允许空值。UNIQUE 约束优先于唯一索引。
4. PRIMARY KEY 约束标识列或列集,这些列或列集的值唯一标识表中的行。在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入NULL值。在数据库中NULL是特殊值,代表不同于空白和0值的未知值。建议使用一个小的整数列作为主键。每个表都应有一个主键。
一个表中可以有一个以上的列组合,这些组合能唯一标识表中的行,每个组合就是一个候选键。数据库管理员从候选键中选择一个作为主键。例如,在part_sample表中,part_nmbr和part_name都可以是候选键,但是只将part_nmbr选作主键。

CREATE TABLE part_sample
(
part_nmbr int PRIMARY KEY,
part_name char(30),
part_weight decimal(6,2),
part_color char(15)
)

5. FOREIGN KEY约束标识表之间的关系。
一个表的外键指向另一个表的候选键。当外键值没有候选键时,外键可防止操作保留带外键值的行。在下例中,order_part 表建立一个外键引用前面定义的part_sample表。通常情况下,order_part在order表上也有一个外键,下面只不过是一个简单示例。
CREATE TABLE order_part
(
order_nmbr int,
part_nmbr int
FOREIGN KEY REFERENCES part_sample(part_nmbr) ON DELETE NO ACTION,
qty_ordered int
)
如果一个外键值没有候选键,则不能插入带该值(NULL除外)的行。如果尝试删除现有外键指向的行,ON DELETE子句将控制所采取的操作。
ON DELETE子句有两个选项:
A、NO ACTION指定删除因错误而失败。
B、CASCADE 指定还将删除包含指向已删除行的外键的所有行。
如果尝试更新现有外键指向的候选键值,ON UPDATE 子句将定义所采取的操作。它也支持NO ACTION和CASCADE选项。

列约束和表约束
约束可以是列约束或表约束:
列约束被指定为列定义的一部分,并且仅适用于那个列(前面的示例中的约束就是列约束)。
表约束的声明与列的定义无关,可以适用于表中一个以上的列。
当一个约束中必须包含一个以上的列时,必须使用表约束。
例如,如果一个表的主键内有两个或两个以上的列,则必须使用表约束将这两列加入主键内。假设有一个表记录工厂内的一台计算机上所发生的事件。假定有几类事件可以同时发生,但不能有两个同时发生的事件属于同一类型。这一点可以通过将type列和time列加入双列主键内来强制执行。
CREATE TABLE factory_process
(
event_type int,
event_time datetime,
event_site char(50),
event_desc char(1024),
CONSTRAINT event_key PRIMARY KEY(event_type,event_time)
)

二、规则:

规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。CHECK约束是用来限制列值的首选标准方法。CHECK约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个CHECK约束。CHECK约束作为CREATE TABLE 语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。
下例创建一个规则,执行与前面主题中的CHECK约束示例相同的功能。SQL Srver2005 首选的方法是 CHECK 约束。
CREATE RULE id_chk AS @id BETWEEN 0 and 10000
GO
CREATE TABLE cust_sample
(
cust_id int
PRIMARY KEY,
cust_name char(50),
cust_address char(50),
cust_credit_limit money,
)
GO
sp_bindrule id_chk,'cust_sample.cust_id'
GO

㈡ sql server 2005中外键约束的使用

altertable[tbname外键表]
addconstraintFK_外键约束名foreignkey(外键列)
references[tbname主键表](主键列)--所引用列必须是唯一键
onupdatecascade--可选级联更新
ondeletecascade--可选级联删除

㈢ 【例】SQL server 2005 中 check约束的用法

alter table [tbname外键表]
add constraint fk_外键约束名 foreign key (外键列)
references [tbname主键表](主键列)--所引用列必须是唯一键
on update cascade--可选级联更新
on delete cascade--可选级联删除

㈣ SQL2005怎么设置约束值的范围。

CREATE TABLE Table_1
(
studentnum char(9),
courseID int,
DailyGrade decimal(5, 1) CHECK (DailyGrade>=0 AND DailyGrade<=20),
PracticeGrade decimal(5, 1)CHECK (PracticeGrade>=0 AND PracticeGrade<=30),
TestGrade decimal(5, 1) CHECK (TestGrade>=0 AND TestGrade<=50),
Grade decimal(5, 1),
CONSTRAINT pk_table_1 PRIMARY KEY CLUSTERED
(studentnum,
courseID)
)
go
后面总评就不会了 还没学到那

㈤ sql server 2005给多列添加组合唯一性约束

altertable表名
addconstraint约束名unique(列名1,列名2)

㈥ sql server 2005创建约束及查询

ADD CONSTRAINT PK_UID PRIMARY KEY(UID), 多了个逗号,在第二个IF前面就是上面这句德最后那个逗号是多余的 要去掉 可以用GO隔开两个T_Sql语句

㈦ sql Server 2005约束.

1.主键每个表只有一个,而且是聚簇索引,Unique则可以有多个。
2.创建引用完整性实际上就是建立主键和外键的关系
3.主键、外键的创建可以使用SQL语句或者使用SQL Server的图形化管理界面。以你的表为例,学员信息表中应该建立学员编号一列,将其设置为主键,成绩表中也应该有学员编号一列,设置为外键引用学员信息表中的学员编号。
4.还是以你的表为例,建立了成绩表的外键之后,就不能输入不存在的学员编号的成绩了;而且当某个学员编号有成绩时,你也不能在学员信息表中删除这个学员的记录。从而保证数据的一致性。

㈧ SQL2005中default约束

ALTER TABLE 表名 add DEFAULT ('修改后的默认值') for 字段名 WITH VALUES

注:如果该字段以前已经有默认值了,在修改之前需要先将约束删除,否则会报错
删约束的SQL:
Alter table 表名 drop constraint 约束名

关于约束名,需要先查一下,
查约束名的SQL:
select c.name from sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id('表名')
and b.name='字段名'

㈨ sql sever 2005修改数据表及约束

  1. alter table student2add s2classid tinyint;

  2. alter table student2 alter column s2name varchar(25);

  3. altertable student2 drop column s2school;

  4. alter table course2 alter column c2name varchar(15);

  5. alter table course2 add constraint ck1check(c2time>16);

  6. alter table choose2 add constraint nldefault(null) for sc2score;

㈩ SQL2005中的外键约束主要有什么作用(求详细答案)

外键是表中的一个列,其值必须在另一个表的主键中列出。外键主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联行的行。
比如,有一个客户表a,一个订单表B:客户ID为表A的主键,每个客户都有唯一的ID号,订单号为表B的主键,每个订单都有唯一的订单号。订单表中的客户ID列中的值不一定是唯一的,允许一个客户有多个订单,但客户的ID值必须在客户表A中已存在。定义外键后,要删除客户表A中的行,必须确保客户没有在订单表B中没有订单才能删除成功。