1.创建表

--创建学生班级表
create table StuClass
(
  ClassId int primary key, --班级ID 主键约束
  ClassName nvarchar(30) not null unique, --班级名称 非空约束 唯一约束
  CreateDate datetime default getdate(), --创建时间 默认值约束
  IsDelete nvarchar(1) default 'N' --是否删除  默认'N'  'Y'代表删除'N'代表不删除 默认值约束
)
go

--创建学生表
create table Student
(
 StuId int primary key identity(1,1), --学生ID 主键约束 自增长
 StuName nvarchar(30) not null, --学生姓名 非空约束
 StuSex  nvarchar(2) check(stuSex='' or stuSex=''), --学生性别 只是女或者男 检查约束
 CreateDate datetime default getdate(), --创建时间 默认当前时间 默认值约束
 StuAge int, --学生年龄 无约束
 ClassId int foreign key (ClassId) references StuClass (ClassId), --班级ID 外键
 IsDelete nvarchar(1) default 'N' --是否删除  默认'N' 'Y'代表删除'N'代表不删除
)
go

--创建学生科目表
create table StuSubject(
  SubjectId int primary key, --科目ID
  SubjectName nvarchar(30) , --科目名称
)
go


--创建学生成绩表
create table StuScore(
  StuId int foreign key (StuId) references Sutdent(StuId) on delete cascade, --学生ID 外键约束 同时支持级联删除
  SubjectId int foreign key (SubjectId) references StuSubject(SubjectId) on delete cascade , --学生科目 外键约束
  StuScore float, --学生成绩 
  primary key(StuId,SubjectId) --联合主键
)
go

2.约束相关操作(添加、删除)

--添加约束的另一种方式 注意:两种方式只能用一种
--添加主键约束
alter table StuScore add constraint PK_StuScore_StuId_SubjectId  primary key (StuId)
go


--添加非空约束
alter table StuScore alter column StuScore float not null
go


--添加检查约束
alter table StuInfo  add constraint CK_StuInfo_StuSex check(StuSex='' or StuSex='')
go


--添加唯一约束
alter table StuClass  add constraint UQ_StuClass_ClassName unique(ClassName)
go


--添加默认值约束
alter table StuClass add constraint DF_StuClass_CreateDate default(getdate()) for CreateDate
go


--添加外键约束
alter table StuInfo add constraint FK_StuClass_StuInfo foreign key (ClassId) references StuClass(ClassId) on delete cascade
go


--删除单个约束
alter table StuScore  drop FK_StuClass_StuInfo
go

--删除多个约束
alter table StuScore drop constraint 
FK_StuClass_StuInfo,
PK_StuScore_StuId_SubjectId
go

3.列相关操作

--添加列
alter table StuScore add  CreateDate datetime default getdate(); 
go

--删除列
--删除列名的时候 如果存在约束 要删除约束
alter table StuScore drop  DF__StuScore__Create__403A8C7D
alter table StuScore drop column CreateDate
go

--修改列字段类型
alter table StuScore alter column StuScore float
go

--修改表名
--注意:更改对象名的任何部分都可能破坏脚本和存储过程,谨慎操作
exec sp_rename 'Student','StuInfo'
go

--修改表中的列名
--注意:更改对象名的任何部分都可能破坏脚本和存储过程,谨慎操作
exec sp_rename 'StuInfo.CreateDate','CreateTime','column'
go

4.删除表

--删除表  注意当有主从表时候 先删从表 如果设置了联级删除 那么都会删除
if exists(select count(*) from sys.objects where name='StuScore')
drop table StuScore
go

5.临时表相关操作

--删除临时表
if object_id('tempdb..#StuInfo') is not null
drop table #StuInfo
go

--创建临时表
create table #StuInfo
(
 StuId int primary key identity(1,1), --学生ID 主键约束 自增长
 StuName nvarchar(30) not null, --学生姓名 非空约束
 StuSex  nvarchar(2) check(stuSex='' or stuSex=''), --学生性别 只是女或者男 检查约束
 CreateDate datetime default getdate(), --创建时间 默认当前时间 默认值约束
 StuAge int, --学生年龄 无约束
 IsDelete nvarchar(1) default 'N'   --是否删除  默认'N'  'Y'代表删除'N'代表不删除 默认值约束
)

 

版权声明:本文为vic-tory原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/vic-tory/p/13339572.html