SqlServer基础:约束
为了减少输入错误和保证数据库数据的完整性,可以对字段设置约束,例如考试成绩,其范围应该为0-100。约束是为了保证数据的完整性而实现的一套机制,约束包括:主键约束、外键约束、Unique约束、Check约束、默认值和允许空六种机制。
主键约束:这个不用多说了,设置主键就是保证列中的值的唯一不重复。
外键约束:外键的目的就是为了限制取值。
例如:分类表category(Nid-主键,categoryName),产品表Product(Nid,ProductName,CategoryId-外键),设置后Product表中的CategoryId的取值只能是category表中的Nid的值。

如上图,如果在Product表中插入一条:insert into Product values('绿茶',9),则报错:
INSERT 语句与 FOREIGN KEY 约束"FK_Product_Product"冲突。该冲突发生于数据库"Interview",表"dbo.Category", column 'Nid'。
语句已终止。
Unique约束:是指定该字段列里的数据不允许出现重复。例如在部门表里,部门名称是不能重复的,那么将部门表里的“部门名称”设置为Unique约束。
设置方法如下:在表设计器窗格里右击空白处,在弹出的快捷菜单中选择【索引与键】选项,点击【添加】就会在左边的框中添加一个名为IX_表名的选项,然后在右边的框中的【类型】选为唯一键,【列】设置为要约束的列,关闭,保存即可。
Unique约束与主键的区别:Unique约束可以输入Null值,主键不能;在一个表中可以定义多个Unique约束的字段,而主键字段只能有一个。
Check约束:Check约束可以用来限制字段里的值在某个允许的范围内。例如员工通讯录表中的生日,其输入范围应该是1940到1990之间。
设置Check约束的方法如下:展开表选项,在约束上右键新建约束,然后在表达式中添加逻辑关系,如:(Member>10) and (Member<20),关闭,保存!
默认值约束:默认值就不用解释了,就是当没有明确的去插入数据时,默认填充的值。
设置方法如下:打开表设计,选中列,在下面的列属性中有【默认值或绑定】,填写值即可;
允许空约束:就是在设计表时,每一个项最后的是否允许为空了啦
SqlServer基础:约束的更多相关文章
- Data Base sqlServer基础知识
sqlServer 基础知识 大纲 创建数据库 1 创建表 2 备份表 3 删除表 4 修改表 5 查询出重复的数据 6 增删改查 7 添加约束 8 分页存储过程 9 排序 10 类型转换 11 ...
- sqlServer基础知识
sqlServer 基础知识 大纲 创建数据库 1 创建表 2 备份表 3 删除表 4 修改表 5 查询出重复的数据 6 增删改查 7 添加约束 8 分页存储过程 9 排序 10 类型转换 11 ...
- SqlServer基础语法
历史 有很多软件公司开发了数据库产品,其中微软公司的数据库产品命名为 SQL Server,也称 MS SQL Server. 1989年 Ashton-Tate/Microsoft SQL Serv ...
- (2.10)Mysql之SQL基础——约束及主键重复处理
(2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...
- 数据库基础——(SQLserver)约束
数据库定义:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 .net - ...
- SqlServer基础之(触发器)
概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触 ...
- SqlServer基础复习
一.数据类型 包括整数类型(可以用来做主键)的如bit,int ,samllint,tinyint,bigint,存储的范围不同,常用的有int,bigint等:树脂类型decimal(p, ...
- (转)SqlServer基础之(触发器)(清晰易懂)
阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器 概念: 触发器(trigger)是SQL server 提供给程序员和数据分析 ...
- SqlServer基础语句练习(一)
学了不少东西,感觉自己的sql语句还是很不好,从基础学起吧. 来一段sql脚本: create database tongji go use tongji go create table studen ...
随机推荐
- OpenCV show two cameras 同时显示两个摄像头
用OpenCV同时显示两个摄像头的内容的代码如下: #include <iostream> #include <stdio.h> #include <tchar.h> ...
- ICursor查询后的排序问题
为某表做剔除整合处理,各行相关.起初使用 ICursor pCursor = pTable.Search(null,false); 语句查询,ICursor的第一行并没有指向表的第一行,虽然不是第一行 ...
- JSONP - 跨域AJAX
基础概念 在进入本文正题之前,我们需要先了解一些基础概念(如果你已经对这些基础有所了解,可跳过此段落). 同源策略和跨域概念 同源策略(Same-orgin policy)限制了一个源(orgin)中 ...
- [转]C#开发ActiveX控件,.NET开发OCX控件案例
引自:百度 http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...
- top指令
top - :: up :, user, load average: 0.00, 0.01, 0.05 Tasks: total, running, sleeping, stopped, zombie ...
- 双机冗余备份和负载均衡策略(Mysql Cluster入门安装配置指南)
MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.MySQL Clus ...
- 简单的form表单操作(Servlet)
Servlet模型 [表单的处理][模型(1)] ●HTML网页 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- PHP Static Self 的区别
<?php class Human{ public static function whoami() { echo "来自父类的whoami"; } public stati ...
- Mybatis resultMap空值映射问题解决
Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age,数据库中的 ...
- PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口
要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...