MSSQL系列 :表相关操作列操作(唯主键默认检查外键非空)约束临时表

Posted QQ:359855043

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSSQL系列 :表相关操作列操作(唯主键默认检查外键非空)约束临时表相关的知识,希望对你有一定的参考价值。

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\'代表不删除 默认值约束
)

 6.相关系统表

查询表、列、约束、索引信息

--查询表、列、约束、索引信息
sp_help StuInfo

 

 

 查询字段信息

--查询字段信息
sp_columns StuInfo

 

 注:个人微信公众号

个人QQ号

 

 

以上是关于MSSQL系列 :表相关操作列操作(唯主键默认检查外键非空)约束临时表的主要内容,如果未能解决你的问题,请参考以下文章

mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享

mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享

Hive 表结构操作

sql server 语句操作大全

MSSQL系列 :数据库的相关操作(增删改查)

SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束