面试题:SQL SERVER 提供了那些在column上的完整性的机制? 1.PRIMARY KEY(主键)约束2.FOREIGN KEY(外键)约束3.UNIQUE(唯一性)约束4.CHECK(检查)约束5.DEFAULT(缺省值)定义6.是否可以为空 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CHECK和DEFAULTCHECK 约束CHECK 约束通过限制输入到列中的值来强制域的完整性。这与 FOREIGN KEY 约束控制列中数值相似。区别在于它们如何判断哪些值有效:FOREIGN KEY 约束从另一个表中获得有效数值列表,CHECK 约束从逻辑表达式判断而非基于其它列的数据。例如,通过创建 CHECK 约束可将 salary 列的取值范围限制在 $15,000 至 $100,000 之间,从而防止输入的薪金值超出正常的薪金范围。可以通过任何基于逻辑运算符返回结果 TRUE 或 FALSE 的逻辑(布尔)表达式来创建 CHECK 约束。对上例,逻辑表达式为:salary >= 15000 AND salary <= 100000对单独一列可使用多个 CHECK 约束。按约束创建的顺序对其取值。通过在表一级上创建 CHECK 约束,可以将该约束应用到多列上。例如,多列 CHECK 约束可以用来判明 country 列值为 USA 且 state 列值为两个字母值所对应的行。这样就允许在一处同时检查多个条件。DEFAULT 定义记录中的每一列均必须有值,即使它是 NULL。可能会有这种情况,当向表中装载新行时可能不知道某一列的值,或该值尚不存在。如果该列允许空值,就可以将该行赋予空值。由于有时不希望有可为空的列,因此如果合适,更好的解决办法可能是为该列定义 DEFAULT 定义。例如,通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft® SQL Server™ 2000 将默认值装载到该列中。说明 也可以使用 INSERT STATEMENT 语句 DEFAULT VALUES 子句显式要求 SQL Server 将默认值插入列中。如果列不允许空值且没有 DEFAULT 定义,就必须明确地指定列值,否则 SQL Server 会返回错误信息,指出该列不允许空值。将 DEFAULT 定义、为空性和对列值的插入归纳如下:列定义 无输入,无 DEFAULT 定义 无输入,DEFAULT 定义 输入空值 允许空值 NULL 默认值 NULL 不允许空值 错误 默认值 错误 DEFAULT 对象DEFAULT 对象是为特定数据库定义的。通过将其绑定到默认值要应用的每个列上,它可为不同表的列所共享。例如,如果多个表中均有 quantity 列,则可以在数据库中定义 DEFAULT 对象,当用户在任何表的 quantity 列中未输入值时在该列中插入数值 1。如果 DEFAULT 对象绑定到某列上,可在特定的表中为该列指定不同的默认值。这样在向列绑定新的默认值之前从该列中释放已有的 DEFAULT 对象。 怎么将一个表的一列数据插入到另一表中!!! 【一段输出代码本身的SQL代码】写一段SQL代码,它的输出就是这段代码。能实现否? 求一sql语句!! 求教,调用FUNCTION的方法 急 如何能执行一些Select操作时,锁住一个表,使其它事务要等这个过程完毕了才能操作? 在存储过程中能否动态指定表名,具体内详。。。 求一个SQL语句! 如何恢复数据? 在存储过程和sql中有没有for循环? 急!超怪,SQL远程连接问题! SQL Server中的datatime和Access中日期有什么不同?在线等待 帮忙啊,救命啊,急啊!
CHECK 约束通过限制输入到列中的值来强制域的完整性。这与 FOREIGN KEY 约束控制列中数值相似。区别在于它们如何判断哪些值有效:FOREIGN KEY 约束从另一个表中获得有效数值列表,CHECK 约束从逻辑表达式判断而非基于其它列的数据。例如,通过创建 CHECK 约束可将 salary 列的取值范围限制在 $15,000 至 $100,000 之间,从而防止输入的薪金值超出正常的薪金范围。可以通过任何基于逻辑运算符返回结果 TRUE 或 FALSE 的逻辑(布尔)表达式来创建 CHECK 约束。对上例,逻辑表达式为:salary >= 15000 AND salary <= 100000对单独一列可使用多个 CHECK 约束。按约束创建的顺序对其取值。通过在表一级上创建 CHECK 约束,可以将该约束应用到多列上。例如,多列 CHECK 约束可以用来判明 country 列值为 USA 且 state 列值为两个字母值所对应的行。这样就允许在一处同时检查多个条件。DEFAULT 定义
记录中的每一列均必须有值,即使它是 NULL。可能会有这种情况,当向表中装载新行时可能不知道某一列的值,或该值尚不存在。如果该列允许空值,就可以将该行赋予空值。由于有时不希望有可为空的列,因此如果合适,更好的解决办法可能是为该列定义 DEFAULT 定义。例如,通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft® SQL Server™ 2000 将默认值装载到该列中。说明 也可以使用 INSERT STATEMENT 语句 DEFAULT VALUES 子句显式要求 SQL Server 将默认值插入列中。
如果列不允许空值且没有 DEFAULT 定义,就必须明确地指定列值,否则 SQL Server 会返回错误信息,指出该列不允许空值。将 DEFAULT 定义、为空性和对列值的插入归纳如下:
列定义 无输入,
无 DEFAULT 定义 无输入,
DEFAULT 定义 输入空值
允许空值 NULL 默认值 NULL
不允许空值 错误 默认值 错误
DEFAULT 对象
DEFAULT 对象是为特定数据库定义的。通过将其绑定到默认值要应用的每个列上,它可为不同表的列所共享。例如,如果多个表中均有 quantity 列,则可以在数据库中定义 DEFAULT 对象,当用户在任何表的 quantity 列中未输入值时在该列中插入数值 1。如果 DEFAULT 对象绑定到某列上,可在特定的表中为该列指定不同的默认值。这样在向列绑定新的默认值之前从该列中释放已有的 DEFAULT 对象。