BY 2012数据库《SQL Server 数据库技术》课程摘要
DEFAULT (默认值) 定义是指表中添加新行时,给表中某一列指定的默认值
格式1 :创建时定义默认值
CREATE TABLE <表名> (
<列名1> 数据类型(长度) DEFAULT 默认值
<列名1> 数据类型(长度) DEFAULT 默认值
... )
格式2:给列增加默认值
ALTER TABLE <表名1>
ADD CONSTRAINT <约束名> DEFAULT (默认值)
FOR <字段名>
例:goods表中的列g_time默认获取电脑当前日期:
ALTER TABLE goods
ADD CONSTRAINT def_g_time DEFAULT (getdate()) FOR g_time
CHECK约束:约束每个列得在表达式范围之内,约束当前列所有的值
// 注意:约束定义了后当前列所有的值都得按照它的约束来,假设在修改ALTER来添加CHECK约束时,如果之前的超过了定义的约束范围时则会报错。
例如定义了g_price约束范围为0-1000,而之前的都大于1000,超过约束的范围,那么则会如下报错
格式1:创建表达式设置约束
CRATE TABLE <表名>
(.....
<列名> 数据类型 CHECK(表达式)
.... )
例:
创建表goods 并且定义g_price的列的值大于0
CREATE TBALE goods
(
g_id CHAR(6) NOT NULL,
g_Name VARCAHR(20) NOT NULL,
g_price float CHECK(g_price>0) //设置了输入的价格得大于0
)
格式2:给列定义CHECK 约束
ALTER TABLE <表名>
ADD CONSTRAINT 约束名 CHECK(表达式)
例:给goods设置g_discount 列取值范围为0.5-1.0
ALTER TABLE goods
ADD CONSTRAINT ck_g_discount CHECK(g_discount>0.5 AND g_discount<1.0)
修改CHECK约束,CHECK修改原则是首先删除现有的CHECK约束,然后新添加CHECK约束
如:修改goods表中price的取值范围
首先删除原理的CHECK约束:
ALTER TABLE goods DROP CONSTRAINT ck_price
添加新约束:
ALTER TABLE goods
ADD CONSTRAINT ck_price CHECK(g_price>10 AND g_price<100) //约束大于10小于100