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

--创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建--
--exists关键字:括号里边能查询到数据则返回‘true’ 否则返回‘false’
if exists(select * from sysdatabases where name = 'School')
--exists返回‘true’则执行删除数据库操作--
drop database School

--exists返回‘false’则表明数据库不存在,直接创建
create database School
on primary
(
--主数据库文件--
name = 'School', --主数据文件逻辑名
fileName = 'D:\project\School.mdf', --主数据文件物理逻辑名
size = 5MB, --初始值大小
maxsize = 100MB, --最大大小
filegrowth = 15% --数据文件增长量
)
log on
(
--日志文件--
name = 'School_log',
filename = 'D:\project\School_log.ldf',
size = 2MB,
filegrowth = 1MB
)
go

----------------------------------------使用T-SQL创建employee数据库------------------------------------
create database employee
on primary
(
--主要数据文件--
name = 'employee1',
filename = 'D:\project\employee1.mdf',
size = 10MB,
filegrowth = 10%
),
(
--次要数据文件--
name = 'employee2',
filename = 'D:\project\employee2.ndf',
size = 20MB,
maxsize = 100MB,
filegrowth = 1MB
)
log on
(
--第一个日志文件--
name = 'employee_log1',
filename = 'D:\project\employee_log1.ldf',
size = 10MB,
filegrowth = 1MB
),
(
--第二个日志文件--
name = 'employee_log2',
filename = 'D:\project\employee_log2.ldf',
size = 10MB,
maxsize = 50MB,
filegrowth = 1MB
)

---------------------------------查询已存在的数据库信息---------------------------
select * from sysdatabases

---------------------------------删除数据库------------------------------------
drop database School

---------------------------------创建Student数据库表----------------------------
--1、选择操作的数据库--
use School
go

--判断表是否存在--
if exists(select * from sysobjects where name = 'Student')
drop table Student

--2、创建表---
create table Student
(
--具体的列名 数据类型 列的特征(是否为空)--
StudentNo int identity(2,1) not null,
LoginPwd nvarchar(20) not null,
StudentName nvarchar(20) not null,
Sex int not null,
GradeId int not null,
phone nvarchar(50) not null,
BornDate datetime not null,
Address nvarchar(255),
Email nvarchar(50),
IDENTITYcard varchar(18)
)
go

---查看所有数据库对象(数据库表)---
select * from sysobjects

drop table Student

----------------------创建subject课程表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'subject')
drop table subject

use School
go

---创建subject课程表--
create table subject
(
SubjectNo int not null identity(1,1),
SubjectName nvarchar(50),
ClassHour int,
GradeID int
)

----------------------------------------创建Result成绩表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'Result')
drop table Result

use School
go

---创建Result成绩表--
create table Result
(
StudentNo int not null,
SubjectNo int not null,
ExamDate Datetime not null,
StudentResult int not null
)

-----------------------------------------创建Grande年级表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建--------
if exists(select * from sysobjects where name = 'Grade')
drop table Grade

use School
go

---创建Grande年级表--
create table Grade
(
GradeId int not null,
GrandeName nvarchar(50)
)

-----------------------------------------T-SQL添加约束-------------------------
--给StudentNo添加主键约束---
alter table Student
add constraint pk_StuNo primary key(StudentNo)

--给身份证添加唯一约束--
alter table Student
add constraint uq_StuIdcard unique(IDENTITYcard)

---给地址address添加默认约束--
alter table Student
add constraint df_stuaddress default('地址不详') for Address

---删除地址address默认约束---
alter table Student
drop constraint df_stuaddress

----------出生日期添加检查约束--------
alter table Student
add constraint ck_stuBorndate check(Borndate > '1980-01-01')

---------与Grand(年级表)建立主外键关系--------

--1、添加Grade主键(操作Grade)---
alter table Grade
add constraint pk_graid primary key(GradeId)

--2、添加Grade外键(操作Student)--
alter table Student
add constraint fk_stuGradeID foreign key(GradeId) references Grade(GradeId)

-------------------给subject课程表添加约束-----------------------

----给subjectNo列添加主键约束------
alter table subject
add constraint pk_SubID primary key(SubjectNo)

------给课程名称subjectName添加非空约束;-----
-----with nocheck:已经存在数据不通过check约束-------
alter table subject with nocheck
add constraint ck_subName check(SubjectName is not null)

-----学时必须大于0-----
alter table subject with nocheck
add constraint ck_ClassHour check(ClassHour > 0)

-----与Grade年级表添加主外键约束----
alter table subject with nocheck
add constraint fk_GradeID foreign key(GradeID)
references Grade(GradeID)

----------给result成绩表添加约束------------

-------添加多个约束---------
alter table Result
add
constraint pk_No_subID_date primary key(StudentNo,SubjectNo,ExamDate),
constraint df_examdate default(getdate()) for ExamDate,
constraint ck_StudentResult check(StudentResult between 0 and 100),
constraint fk_StuNo foreign key(StudentNo) references Student(StudentNo),
constraint fk_subNo foreign key(SubjectNo) references Subject(SubjectNo)

--删除多个约束--
alter table Result
drop constraint pk_No_subID_date,fk_subNo,fk_StuNo,ck_StudentResult,df_examdate

--------更改列的数据类型----------
alter table Result
alter column StudentResult int

SQL Server建库-建表-建约束的更多相关文章

  1. SQL Server跨库复制表数据错误的解决办法

    SQL Server跨库复制表数据的解决办法   跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...

  2. SQL Server 跨库复制表方法小笔记

    insert into tableA (column1,column2.....) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=127. ...

  3. SQL Server查看库、表占用空间大小

    转自:https://blog.csdn.net/yenange/article/details/50493580 查询数据文件与日志文件占用情况,查看数据大小,查看库大小 1. 查看数据文件占用(权 ...

  4. SQL Server 多库操作 库名.dbo.表名 出错的问题!

    SQL Server 多库操作 库名.dbo.表名 出错的问题! 数据库名不要用数字开头. 例如:343934.dbo.user 这就会出错.md a343934.dbo.user 就没问题!! 记住 ...

  5. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  6. 把sql server 2000的用户表的所有者改成dbo

    怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名. 推荐使用下面介绍的第二种方法,执行以下查询便可以了.sp_configure 'allow updates','1' ...

  7. 清空SQL Server数据库中所有表数据的方法

    原文:清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可 ...

  8. MS SQL SERVER 中的系统表

    MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.   2 syscomments 包含每 ...

  9. SQL Server跨库跨服务器访问实现

    我们经常会遇到一个数据库要访问另一个数据库,或者一台服务器要访问另一台服务器里面的数据库. 那么这个如何实现的呢? 相信看完这篇文章你就懂了! 同一台服务器跨库访问实现 1. 首先创建两个数据库Cro ...

  10. 干货 | RDS For SQL Server单库上云

    数据库作为核心数据的重要存储,很多时候都会面临数据迁移的需求,例如:业务从本地迁移上云.数据中心故障需要切换至灾备中心.混合云或多云部署下的数据同步.流量突增导致数据库性能瓶颈需要拆分-- 本文将会一 ...

随机推荐

  1. Ubuntu 16.04安装FTP客户端filezilla

    1.安装: sudo apt-get install filezilla 参考: http://os.51cto.com/art/201103/247564.htm

  2. Android 自己定义控件实现刮刮卡效果 真的就仅仅是刮刮卡么

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 非常久以前也过一个html5的刮刮 ...

  3. Proxy Server代理服务器(轉載)

    宽带IP城域网开通以来,单位连上了宽带网,10M的带宽让我们感受到了宽带的魅力.电信只提供7个IP地址,对任何一个单位来说都太少了,常用的解决办法是使用代理服务器.微软的MS Proxy Server ...

  4. Entity Framework性能影响因素分析

    1.对象管理机制-复杂为更好的管理模型对象,EF提供了一套内部管理机制和跟踪对象的状态,保存对象一致性,使用方便,但是性能有所降低. 2.执行机制-高度封装在EF中,所有的查询表达式都会经过语法分析. ...

  5. Spring技术内幕:Spring AOP的实现原理(五)

    7.Advice通知的实现 AopProxy代理对象生成时,其拦截器也一并生成.以下我们来分析下Aop是怎样对目标对象进行增强的.在为AopProxy配置拦截器的实现中,有一个取得拦截器配置过程,这个 ...

  6. [Elasticsearch] 集群的工作原理 - 第一部分

    本文翻译自Elasticsearch官方指南的life inside a cluster一章. ES就是为高可用和可扩展而生的. 扩展能够通过购置性能更强的server(垂直扩展或者向上扩展,Vert ...

  7. Java Map 怎样实现Key 的唯一性?

    大家都知道.在Map和Set不可存在反复元素? 可是对于内部的细节我们并不了解.今天我们就一块来 探讨一下! 1 对于 HashMap  HashSet 他们的底层数据结构的实现是:维护了一张  Ha ...

  8. __weak与__block区别分析

    API Reference对__block变量修饰符有如下几处解释: //A powerful feature of blocks is that they can modify variables ...

  9. electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!

    Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium:  ...

  10. 洛谷P1045 麦森数

    题目描述 形如2^{P}-12 ​P ​​ −1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12 ​P ​​ −1不一定也是素数.到1998年底,人们已找 ...