SQL Server 2005系列教学(11) 约束

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
约束:此部分内容在此做一简短介绍,详细内容会放入到数据库实践课中介绍
如何在现有表上增加主键
alter table 表名 add constraint 主键名 primary key(字段)
alter table testkey add constraint pk_id primary key(id)
如何删除主键:
alter table 表名 drop constraint 主键名
alter table testkey drop constraint pk_id

check 约束: 限定数据必须在指定的范围内,此范围以外不能存放到表中。
通过企业管理器和SQL两种方式来管理
企业管理器:略。。。
SQL 命令:
如何在新建表时创建一个CHECK约束:
create table testkey
(id int  not null,
name varchar(10),
sex char(2),
age int
constraint ck_sex check (age>=18 and age<=60)
)
drop table testkey;
如何在现有表上创建CHECK约束:
alter table 表名 add constraint 约束名 check (约束条件)
对testkey的性别作一个约束,只能是男或女
alter table testkey add constraint ck_性别 check (sex='男' or sex='女')
select * from testkey
insert into testkey values (2,'狗剩','中',30)
如何删除CHECK约束:
alter table 表名 drop constraint 约束名
alter table testkey drop constraint ck_sex
UNIQUE 约束: 限制某些字段值不允许出现重复,但为主键不同,一个表只能有一个主键,但可以有多个UNIQUE约束
企业管理器:略
SQL命令: 
如何在现有表上创建 UNIQUE 约束
alter table  表名 add constraint 约束名 unique (约束条件)
对yuangong表的姓名作一个UNIQUE  约束
alter table yuangong add constraint uk_name unique (姓名)
insert into yuangong (编号,姓名,性别) values ('0020','刘满','男')
如何在新建表时创建UNIQUE约束,参考CHECK约束.
如何删除UNIQUE约束
alter table 表名 drop constraint 约束名
alter table yuangong drop constraint uk_name

create table 员工表
(
员工编号 int not null identity constraint PK_编号 primary key,
姓名 nvarchar(10) not null,
性别 bit constraint DF_性别 default 1,
年龄 tinyint constraint CK_性别 check(年龄 between 15 and 40),
籍贯 nvarchar(15) constraint CK_籍贯 check(籍贯 in('北京','南京','东京','西京')),
联系电话 varchar(20) constraint CK__联系电话 check(联系电话 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or 联系电话 like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or 联系电话 like '0[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or 联系电话 like '0[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or 联系电话 like '0[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
省份 nvarchar(2),
通讯地址 nvarchar(20),
工作日期 datetime  constraint df_工作日期 default getdate()
)
 
规则:作用和CHECK约束相同:用于限制数据的合法性.
约束必须依赖于表的某一列才能创建.但是规则不用,规则作为一个对象单独存在.但是必须要绑定到列上
才能起作用.而且可以同时绑定到多个表的多个列上.

创建一个规则:
企业管理器:

SQL命令:
创建规则:
create rule 规则名
as 
  语句
如:限制年龄只能在18--60
create rule age
as
  @age between  18 and 60  
实现绑定:
sp_bindrule '规则名','表名.列名'
如:
sp_bindrule 'age','yuangong.年龄'
测试:插入一条记录年龄为70,则不成功
解除绑定:
sp_unbindrule '表名.列名'
如:
sp_unbindrule 'yuangong.年龄'
删除规定:
drop rule 规则名
如:  drop rule age
默认值: 某字段最有可能出现的情况,如果没有手动指定值,则系统自动填入默认值.
企业管理器创建,绑定,解除绑定,删除默认值
利用SQL命令来管理默认值:
创建:  create default 默认值名
       as
         值
 create default bumen
as
'技术部'
绑定:
sp_bindefault '默认值名','表名.列名'
如:
sp_bindefault 'bumen','yuangong.部门'
测试:...
解除绑定:
sp_unbindefault '表名.列名'
如:
sp_unbindefault 'yuangong.部门'
删除默认值:
drop default 默认值名
如:
drop default bumen



 本文转自 dufei 51CTO博客,原文链接:http://blog.51cto.com/dufei/80761,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
42 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
73 0
|
16天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
15 0
|
6天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
59 6
|
6天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
10天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
23天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
27天前
|
SQL 数据库
sqlserver建库建表建约束,删库删表删约束的示例总结
sqlserver建库建表建约束,删库删表删约束的示例总结
10 0