SQL---------表的约束
表的约束
防止同一条数据完全重复:主键约束(primary key)唯一键约束(unique),自增长;
防止数据为空: 非空约束(not noll),默认值;
防止乱填数据: 外键, 定义数据类型,check;
1 主键约束(Primary key constraint)要求主键能够唯一区分每一行数据,主键可以是一列也可是几列组合成主键,并且不允许为空,表中的数据按照主键有序排列,
l 语句操作: alter table stuinfo add constraint pk-sruno primary key(stuno)
l 表格操作:在表的设计界面,在相应的列上,右击-"设为主键"/"删除主键";
2 唯一约束(unique constraint)要求该列唯一,允许为空,但只能出现一个空值
l 语句操作:alter table stuinfo add constraint unique(stuid)
l 表格操作:在表的设计界面上,右击--“索引/键”在弹出窗口上,点击左下角“添加”,右侧属性列表,修改类型——唯一键,设置列
例子 qq 号与qq邮箱的关系
3 检查约束(check constraint)某列取值范围 格式限制等 例如 有关年龄的限制
4 默认约束(default constraint)某列的默认值
语句操作:sxex varchar(2) default('男'),
表格操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值
例子insert into Studente(sno,sname,sbirthday,class) values('201','小王','1974-06-03','95031')
5 外键约束(foreeign key constraint)用于建立两表之间的关系,需要制定引用主表的那一列
三、自增长列:标识列,Identity列
1.不能手动向里面填值。如果要写insert语句的话,则语句应当把这一列忽略
2.自增长列主要用于整型、长整型,Decimal类型。
3.不要随便把自增长列作为主键。
--
操作:在表的设计界面中,选中相应的列,在下面的属性面版——“标识规范”--选择是
防止有些该填的没有填:
一、非空约束
不能为NULL。
操作:在表的设计界面中“允许NULL值”中的复选框去掉。
二、默认值。
如果不给列赋值的话,会使用默认值填上。
操作:在表的设计界面,选择相应的列,在下面的属性面版中——默认值
防止乱填:
一、Check约束。
按照某种规则对数据进行检查。
操作:在表的设计界面中,右击相应的列,选择“CHECK约束”在弹出的对话框中,设置约束的名称和表达式。
二、外键约束。主表,从表。
主表是用来约束从表的。外键应当建在从表上。
使用主表的主键来约束从表外键。
从表中的外键列是不能随便乱填内容的,它只能填写主表主键中存在的数据。
一旦建立起外键关系来,从表的外键不能乱填,反过主表中的主键列也不能乱删除乱改。
级联删除的设置——整理
操作:先建好主表,在从表的设计界面上,右击-“关系”,在弹出的对话框中选择“添加”,在右边属性列表中设“表和列的规范”
三、类型。
完整性包括
1 实体完整性
数据行不能存在重复
2 域完整性
实现了对输入到特定列的数值的限制
3 引用的完整性
1 要求子表中的相关项必训在主表中也存在
2 如果建立了主表和子表 则 子表中的相关项目的数据,在主表中必须存在
3主表中相关的项数据更改了,则子表中的数据也要相应的更改
4在删除子表前主表不能删除
四 自定义完整性
创建表包括选择字段的名称 数据类型 定义是否为空 设置默认值 主键 外键关系 检查约束等 。表中没有合适的列作为主键可以创建标示列。
sql 中存在的5中约束
添加约束的方法: alter table 表名 add constraint 约束名 约束类型
具体的约束说明
约束名取名规则 :
主键 pk-stuno
唯一 uq
默认 de
检查 ck
外键 fk
代码添加约束书写方法(以表格stuinfo)
添加主键约束:
添加唯一键约束:alter table stuinfo add constraint unique(stuid)
添加默认约束键: alter table stuinfo add constraint df-stuadddress default(‘地址不详’)for stuaddress
添加检查约束:alter table stuinfo add constraint ck-stuage check(stuage between 13 and 40 )
添加外约束键: ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)
SQL---------表的约束的更多相关文章
- SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束
创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...
- SQL Server— 存在检测、建库、 建表、约束、外键、级联删除
/******************************************************************************** *主题: SQL Server- 存 ...
- SQL Server建库-建表-建约束
----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...
- 5-06使用Sql 语句为表添加约束
约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...
- [Nhibernate]SchemaExport工具的使用(二)——创建表及其约束、存储过程、视图
目录 写在前面 文档与系列文章 表及其约束 存储过程 视图 总结 写在前面 由于一直在山西出差,有几天没更新博客了.昨晚回到家,将博客园最近三天更新的文章搜集了一下,花费了半天的时间,看了看,有些文章 ...
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
- sql语句添加约束
sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
- SQL 数据类型、约束、索引及视图
一.数据类型:整数:int,bigint,smallint小数:float,real,decimal(长度,精度),numeric(长度,精度)字符:char(n),varchar(n) 8000英文 ...
随机推荐
- Expression<Func<T,TResult>>和Func<T,TResult> 与AOP与WCF
1>>Expression<Func<T,TResult>>和Func<T,TResult>http://www.cnblogs.com/xcsn/p/ ...
- mvc web api 保存多个实体类的方法
先说一下我的业务需求,挺简单的. 就是在设计角色和权限的页面中,需要一个角色对应多条权限记录,那么在保存的时候,我的处理方式是,先删除该角色的所有权限,然后再保存所有的权限. 这样的话问题就来了,用默 ...
- Flex圆角矩形
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...
- CMSIS Example - osMutex osMutexWait osMutexRelease
osMutexDef( Mutex ); osMutexId mutex; void Thread0( void * arg); void Thread1( void * arg); osThread ...
- inline-block 前世今生
曾几何时,display:inline-block 已经深入「大街小巷」,随处可见 「display:inline-block; *display:inline; *zoom:1; 」这样的代码.如今 ...
- 【M32】在未来时态下发展程序
1.在未来时态下发展程序,就是接受“事情总会变化”的事实,并准备应对之策. 2.记住,程序的维护者通常不是最初的开发者,因此,设计和实现的时候,应该考虑别人更好地理解,修改自己的程序. 3.重要的一点 ...
- Android游戏开发:物理游戏之重力系统开发--圆形自由落体Demo
本节为大家提供有关物理游戏的知识,讲解了一个简单的圆形自由落体Demo的编写.. Java代码 package com.himi; import java.util.Random; import ja ...
- [Angular 2] Move and Delete Angular 2 Components After Creation
After the original order is set, you can still leverage methods on the Angular 2 ViewContainer to re ...
- MAC下配置gradle用eclipse 打包android程序
1.下载gradle binhttp://gradle.org/gradle-download/ 2.配置gradle,http://www.douban.com/note/311599602/htt ...
- cocos2d-x在android下的编译
$(call import-add-path,E:/cocos2d-2.0-x-2.0.3) include $(BUILD_SHARED_LIBRARY) http://www.cnblogs.co ...