sqlserver数据库设计完整性与约束

 1 use StudentManageDB
 2 go
 3 --创建主键约束
 4
 5 if exists(select * from sysobjects where name=‘pk_StudentId‘)
 6 alter table Students drop constraint pk_StudentId
 7 alter table Students add constraint pk_StudentId primary key(StudentId)
 8
 9 --创建唯一约束
10 if exists(select * from sysobjects where name=‘uq_StudentIdNo‘)
11 alter table Students drop constraint uq_StudentIdNo
12 alter table Students add constraint uq_StudentIdNo  unique(StudentIdNo)
13
14 --创建检查约束
15 if exists(select * from sysobjects where name=‘ck_Age‘)
16 alter table Students drop constraint ck_Age
17 alter table Students add constraint ck_Age  check(Age between 18 and 25)
18
19 if exists(select * from sysobjects where name=‘ck_PhoneNumber‘)
20 alter table Students drop constraint ck_PhoneNumber
21 alter table Students add constraint ck_PhoneNumber  check(len(PhoneNumber)=11)
22
23
24 update Students set PhoneNumber=‘13099012876‘ where StudentId=10000
25 select * from Students
26
27 --创建默认值
28 if exists(select * from sysobjects where name=‘df_StudentAddress‘)
29 alter table Students drop constraint df_StudentAddress
30 alter table Students add constraint df_StudentAddress default(‘地址不详‘) for StudentAddress
31
32 insert into Students (StudentName,Gender,Birthday,Age,StudentIdNo ,PhoneNumber,
33 StudentAddress,ClassId)
34 values(‘李小璐‘,‘女‘,‘1989-01-12‘,24,120229198901121315, ‘13099012876‘,default,1)
35
36 insert into Students (StudentName,Gender,Birthday,Age,StudentIdNo ,PhoneNumber,
37 ClassId)
38 values(‘李小璐‘,‘女‘,‘1989-01-12‘,24,120229198901121316, ‘13099012876‘,1)
39
40 --外键约束
41 insert into StudentClass (ClassId,ClassName) values(1,‘软件1班‘)
42 if exists(select * from sysobjects where name=‘fk_ClassId‘)
43 alter table Students drop constraint fk_ClassId
44 alter table Students add constraint fk_ClassId  foreign key (ClassId) references StudentClass(ClassId)
45
46 select * from studentClass

原文地址:https://www.cnblogs.com/Spinoza/p/10010059.html

时间: 2024-10-16 13:15:29

sqlserver数据库设计完整性与约束的相关文章

MYSQL,DB2,SQLSERVER数据库不同点浅探(一)

简单地比较一下MYSQL,DB2,SQLSERVER数据库设计不同点,为日后看MYSQL源代码先打打底,今天先比较数据库对象吧: 1.DB2上关于表有一个表空间的概念,简单地说, 表空间是数据库系统中数据库逻辑结构与操作系统物理结构之间建立映射的重要存储结构,一般来说一个表空间对应一个表.DB2在表空间上分配表空间对应表的一切物理属性,比如首次分配大小,扩展大小,页面每页初始空闲空间,空闲页面占总页面百分比等.因此,DB2上的系统DBA对表的操作更多是基于表空间上.比如因为表上的删改查不可避免地

SQLServer数据库基础--E-R图、三大范式、数据库设计步骤

本书目标: 了解数据库的基本概念和范式 熟练使用SMSS.T-SQL实现建库.建表.加约束 掌握T-SQL编程,实现功能强大的查询 掌握创建索引.视图,快速访问数据库 熟悉掌握创建存储过程,实现复杂的业务规则 理解触发器的原理,掌握高级的约束 了解SQLServler安全管理 了解数据库的备份与恢复 本章目标: 了解数据库的基本概念 了解数据库设计的步骤 掌握绘制数据库E-R图 理解数据库三大范式 什么是数据库系统? 数据库系统(DBS)是一个以数据库为核心的完整的运行实体, 数据库的组成: 系

逻辑数据库设计 - 无视约束(谈外键)

有一些开发人员不推荐使用完整性约束,你可能听过以下这么几点不使用外键的原因. 1.数据更新有可能和约束冲突. 2.当前的数据库设计如此灵活,以致于不支持引用完整性约束. 3.数据库为外键建立的索引会影响性能. 4.当前使用的数据库不支持外键. 5.定义外键的语法并不简单,还需要查阅. 一.反模式:无视约束 即使第一感觉告诉你,省略外键约束能使得数据库设计更加简单.灵活,或者执行更加高效,你还是不得不在其他方面付出相应的代价 -- 必须增加额外的代码来手动维护引用完整性. 1.完整性问题 很多人对

MySQL 之【约束】【数据库设计】

1.MySQL 约束: 1.约束的概念: 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MySQL中,常用的几种约束: 约束类型: 非空 主键 唯一 外键 默认值 关键字: NOT NULL PRIMARY KEY UNIQUE FOREIGN KEY DEFAULT 1.非空约束(NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空. create table t1( id int(10) not null primary key );

数据库完整性及约束

转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688 1.  数据完整性:常用三种类型的约束保证数据完整性有域(列)完整性.实体完整性.引用完整性. 2.  实体完整性:能够唯一标识表中的第一个记录. 保证方法有主键约束.标识约束.唯一约束. 主键约束与唯一约束添加的基本语法 Alter  table  表名 addconstraint  约束名  约束类型  具体的约束说明 约束名的取名规则:约束类型_约束字段. 比如主键(Primary Key)约束:PK_Stu

数据库完整性和约束

数据库的完整性 数据库约束是保证数据库完整性的方法 ,数据库完整性分为实体完整性.域完整性和参照完整性 实体完整性 实体完整性要求表中的主键字段不能为空且不能重复: 域完整性 域完整性要求表中数据都在有效范围内: 参照完整性 参照完整性保证了相关联的表的数据一致性: 约束的使用 约束是保证表中数据完整性和一致性的手段,分为主键约束.外键约束.检查约束.唯一约束.非空约束五种: 主键约束 主键约束在每个数据表中只有一个,但主键约束可以有多个列组成: -- 添加主键约束 alter table ta

SQLserver关于教学楼中教室在某个时间段是否被占用的数据库设计

需求:关于教学楼中教室在周几某个时间段是否被占用的数据库设计 具体代码如下: -------------------教学楼维度 CREATE TABLE TeacBuild ( tbID int not null primary key, tbName varchar(100) ) insert into TeacBuild values(1,'教学楼A') insert into TeacBuild values(2,'教学楼B') insert into TeacBuild values(3

转载:SqlServer数据库性能优化详解

本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量.为达到此目的,需要了解应用程序的需求和数据的逻辑和物理结构,并在相互冲突的数据库使用之间(如联机事务处理 (OLTP) 与决策支持)权衡. 对性能问题的考虑应贯穿于开发阶段的全过程,不应只在最后实现系统时才考虑性能问题.许多使性能得

优化MySchool数据库设计之【巅峰对决】

优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每