/********************************************************************************
*主题: SQL Server— 存在检测、建库、 建表、约束、外键、级联删除
*说明:本文是个人学习的一些笔记和个人愚见
* 有很多地方你可能觉得有异议,欢迎一起讨论 *作者:Stephenzhou(阿蒙)
*日期: 2012.08.5
*Mail:szstephenzhou@163.com
*另外:转载请著名出处。
**********************************************************************************/
--打开库master
use master
go
--判断删除已存在的数据库 stuDB
if exists(select * from sysdatabases where name = 'stuDB')
drop database stuDB
--新建数据库 stuDB
create database stuDB
on primary(
name='stuDBdata',
filename='d:\sql\stuDBdata.mdf',
size=5mb,
maxsize=unlimited,
filegrowth=10%
)
log on
(
name='stuDBlog',
filename='d:\sql\stuDBdata.ldf',
size=1mb,
maxsize=unlimited,
filegrowth=1mb
)
go
--打开
use stuDB
go
--判断是否已存在要创建的表
if exists(select * from sysobjects where name = 'stuinfo')
drop table stuInfo
--新建表
create table stuInfo
(
stuName varchar(20) not null,
stuNo varchar(20) not null,
stuSex varchar(20) not null,
stuAge int not null,
stuSeat int identity(1,1) not null,
stuAddress text not null
)
go
exec sp_help stuInfo --查看表属性
--为表添加约束
alter table stuInfo
-- with nocheck --在创建约束时忽略已存在的坏数据
add
constraint pk_stuNo primary key (stuNo),
constraint ck_stuNo check(stuNo like 's253__'),
--constraint ck_stuNo check(stuNo like 's253[0-9][0-9]'),这样会全面些。
constraint ck_stuSex check(stuSex in ('男','女')),
constraint ck_stuAge check(stuAge between 15 and 40),
constraint ck_stuSeat check(stuSeat between 1 and 30),
constraint df_stuAddress default '地址不祥' for stuAddress
go exec sp_helpconstraint stuInfo --查看约束
-- nocheck -临时禁用现有约束
alter table stuInfo
nocheck
constraint pk_stuNo --pk_stuNo改为ALL表示禁用所有约束
go
-- check -恢复现有约束
alter table stuInfo
check
constraint pk_stuNo
go
--添加数据
insert into stuInfo
values('小强','s25301','男',18,'北京海淀')
insert into stuInfo
values('旺财','s25303','女',22,'河南洛阳')
insert into stuInfo
values('梅超风','s25302','男',31,default)
insert into stuInfo
values('欧阳俊雄','s25304','男',28,'新疆威武哈')
--查看表中数据
select * from stuinfo
--打开stuDB数据库
use stuDB
go
--检查stuMarks表是否存在
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
go
--新建stuMarks表
create table stuMarks
(
marksId int identity(101,1) not null,
stuNo varchar(20) not null,
writtenExam float not null,
labExam float not null
)
go
--查看表属性
exec sp_help stuMarks
--为stuMarks建立约束
alter table stuMarks
add
constraint pk_marksId primary key(marksId),
constraint fk_stuNo foreign key(stuNo)
references stuInfo(stuNo)
on update no action --级联更新(无操作)
on delete cascade,--级联删除
constraint ck_writtenExam check(writtenExam between 0 and 100),
constraint ck_labExam check(labExam between 0 and 100)
go
--查看表约束
exec sp_helpconstraint stuMarks
insert into stuMarks
values('s25301',80,65)
insert into stuMarks
values('s25302',87,95)
insert into stuMarks
values('s25303',83,69)
insert into stuMarks
values('s25304',70,74) --查看表中是否存在约束名为 ck%
select * from sysobjects where name like 'ck%'
--存在检测
if exists(select * from sysobjects where name = 'ck_stuAge')
alter table stuInfo
drop constraint ck_stuAge
go
--创建stuAge约束
alter table stuinfo
add
constraint ck_stuAge check (stuAge between 15 and 40)
go

版权声明:本文为博主原创文章,未经博主允许不得转载。

SQL Server— 存在检测、建库、 建表、约束、外键、级联删除的更多相关文章

  1. Python-多表关联 外键 级联

    分表为什么分表 多表关联多表关系 ****** 表之间的关系 为什么要分表 多对一 一个外键 多对多 一个中间表 两个外键 一对一 一个外键加一个唯一约束外键约束 ****** foreign key ...

  2. 三、Sql Server 基础培训《进度3-是否使用外键(知识点学习)》

    学习作业3: 问题1:你觉得外键有哪些适用情况?哪些不适用情况?   问题2:本次实战案例,由你来架构,你觉得有必要建立外键吗? 说明你的理由?     ======================= ...

  3. sql server 中常用修改列 ,创建主外键操作

    表结构 CREATE TABLE [staff] ( [id] [varchar](50) NOT NUL L, [name] [varchar](50) NOT NULL, [password] [ ...

  4. SQL Server建库-建表-建约束

    ----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...

  5. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  6. C# 利用*.SQL文件自动建库建表等的类

    /// <summary> /// 自动建库建表 /// </summary> public class OperationSqlFile { SqlConnection sq ...

  7. 使用T-sql建库建表建约束

    为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容 ...

  8. MySQL建库建表

    一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...

  9. 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库

    导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的 ...

随机推荐

  1. iOS 除去图片的白色背景(接近白色),或者其它颜色的替换,获取像素点的ARGB值

    iOS 除去图片的白色背景(接近白色),或者其它颜色的替换 方法如下: //去除图片的白色背景 + (UIImage*) imageToTransparent:(UIImage*) image { / ...

  2. 小白日记12:kali渗透测试之服务扫描(二)-SMB扫描

    SMB扫描 Server Message Block 协议.与其他标准的TCP/IP协议不同,SMB协议是一种复杂的协议,因为随着Windows计算机的开发,越来越多的功能被加入到协议中去了,很难区分 ...

  3. [Javascript,JSON] JQuery处理json与ajax返回JSON实例

    转自:http://www.php100.com/html/program/jquery/2013/0905/5912.html [导读] json数据是一种经型的实时数据交互的数据存储方法,使用到最 ...

  4. Android(java)学习笔记106-2:反射机制

    1.反射机制: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...

  5. Objective-C ,ios,iphone开发基础:使用GDataXML解析XML文档,(libxml/tree.h not found 错误解决方案)

    使用GDataXML解析XML文档 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高.使用上更方便 这里主要介绍一下 ...

  6. markdown编辑

    有用的技巧之,如何实现首行空两格,把输入法切换成全角(shift+space),就可以实现一个两字符的空格了. 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 w s r s r s 文本 ...

  7. 关于delegate, category和subclass

    因为自己在学习这三个概念的时候,实在是走了很多的弯路,而且当我意识到这些概念在cocoa中很重要时,我便更糊涂了…或许从C++或者Java转过来的高手一看就明白,所以高手您随便拍砖,指正我的错误:新手 ...

  8. Remote Desktop Connection Manager介绍

    Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主要开发者 Julian Burger开发的一个远程桌面管理工具.简称为R ...

  9. 个人常用jq方法复习

    $("#elem").on({ mouseover:function(){}, mouseout:function(){}, }); $(ele).closest("di ...

  10. windows API 核心编程学习心得

    一.错误处理 在内部,当windows函数检测到错误时,它会使用“线程本地存储区”的机制将相应的错误代码与“主调线程”关联到一起. winError.h 一般在C:\Program Files\Mic ...