SQL Server Check 约束用法详解

作者:袖梨 2022-06-29


一、定义:

       CHECK 约束用于限制列中的值的范围。

       如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

       如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

 

数据库,就必须要会写约束。

运算符

含义

 

=

等于

 

>

大于

 

<

小于

 

>=

大于或等于

 

<=

小于或等于

 

<>

不等于

 

!

(Java语言中为not)

 

通配符

解释

示例

‘_’

一个字符

A Like 'C_'

%

任意长度的字符串

B Like 'CO_%'

[ ]

括号中所指定范围内的一个字符

C Like '9W0[1-2]'

[^]

不在括号中所指定范围内的一个字符

D Like ‘%[A-D][^1-2]'

二、将新的 CHECK 约束附加到表或列
    1、附加新的 CHECK 约束  
  (1)、在数据库关系图中,右击包含约束的表,然后从快捷菜单中选择"约束"命令。
  -或-
  
  为将包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"约束"命令。
  
  (2)、选择"新建"命令。"选定的约束"框显示由系统分配的新约束名。系统分配的名称以"CK_"开始,后跟表名。
  
  
  在"约束表达式"框中,为 CHECK 约束键入 SQL 表达式。例如,若要将 authors 表中 state 列的输入项限制为 New York,请键入:
  state = 'NY'
  或者,若要要求 zip 列中的输入项为 5 位数字,请键入:
  
  zip LIKE '[0-9][0-9][0-9][0-9][0-9]' 中间不能有空格
  
  若要给约束提供一个不同的名称,请在"约束名"框中键入名称。
  
  
  用复选框控制何时强制约束:


  若要在创建约束前对现有数据测试约束,请选中"创建中检查现存数据"复选框。
  
  
  若要在该表中发生复制操作时强制约束,请选中"对复制强制约束"复选框。
  
  
  若要在该表中插入或更新行时强制约束,请选中"对 INSERT 和 UPDATE 强制约束"复选框。


  
  2、定义 CHECK 约束表达式
  
  当将 CHECK 约束附加到表或列时,必须包括 SQL 表达式。
  
  可以创建简单的约束表达式在简单条件下检查数据;或使用布尔运算符创建复杂的约束表达式以在多种条件下检查数据。例如,假设 authors 表中有一个 zip 列,该列要求 5 位数字的字符串。下面的示例约束表达式确保只允许 5 位数字:
  
  zip LIKE '[0-9][0-9][0-9][0-9][0-9]'
  或者假设 sales 表中有一个名为 qty 的列,该列要求大于 0 的值。下面的示例约束确保只允许正值:
  
  qty > 0
  或者假设 orders 表限制所有信用卡订单可接受的信用卡类型。下面的示例约束确保如果用信用卡发出订单,则只接受 Visa、MasterCard 或 American Express:
  
  NOT (payment_method = 'credit card') OR
  (card_type IN ('VISA', 'MASTERCARD', 'AMERICAN EXPRESS'))


  3、定义约束表达式
  
  创建新的 CHECK 约束。
  
  在属性页的"CHECK 约束"选项卡中,使用下列语法在"约束表达式"框中键入表达式:


  {constant | column_name | function | (subquery)}
  [{operator | AND | OR | NOT}
  {constant | column_name | function | (subquery)}...]
 

二、修改 CHECK 约束
  当要更改约束表达式,或更改对特定条件启用或禁用约束的选项时,修改 CHECK 约束。
  
  I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。
  -或-
  
  为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。
  
  II、选择"CHECK 约束"选项卡。
  
  III、从"选定的约束"列表中,选择要更改的约束。
     IV、填写修改规则。

    当保存表或关系图时,约束即在数据库内被更新。

三、删除 CHECK 约束 

    当要删除对约束表达式包含的列所接受数据值的限制时,删除 CHECK 约束。
  
  
  I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。
  -或-
  
  为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。
  
  II、选择"CHECK 约束"选项卡。
  
  III、从"选定的约束"列表中选择约束。
  
  IV、选择"删除"按钮。


  注意  选择"删除"按钮将导致一个无法撤消的操作,而且不保存对数据库关系图所做的所有其它更改。若要撤消该操作,请不保存更改即关闭当前的数据库关系图和所有其它打开的数据库关系图。
  
  当保存表或关系图时,约束即从数据库中被删除。

 份证号码的约束表达式怎么写?

…….

逻辑表达式

说明

示例

AND

逻辑与

1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0;

OR

逻辑或

1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0;

NOT

逻辑非

NOT 1 = 0; NOT 0 = 1;

 

 

     右击选择表中的check约束--添加约束--写入常规表达式(sage代表代表某一字段名,并且是该字段的值)

                    sage.value >15 && sage.value<31

                    sage.value == sage

                    >  == >

                    && == and

                    sage > 15 and sage<31

                    约束电话格式:13.........  15.......  18.....   147.......

                    if(stel13....)

                    stel like '[1]'  表示stel电话的值第一个字符是1并且只能是1个字符

                    ([stel] like '[1][3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

                     OR [stel] like '[1][5][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

                     

                    验证邮箱

                           sqqemail like '[^0-9]%[@][q][q][.][c][o][m]'

                           表示第一个字符不允许是数字,第一个字符与@符号之间是任意字符。后面是固定格式

相关文章

精彩推荐