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

MSSQL系列 (二):表相关操作、列操作、(唯一、主键、默认、检查、外键、非空)约束、临时表的更多相关文章

  1. MS SQL巡检系列——检查外键字段是否缺少索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  2. MySQL 非空约束位置不同对自增列造成的影响

    MySQL版本 select version(); +------------+ | version() | +------------+ | 5.7.21-log | +------------+ ...

  3. glance系列二:glance部署及操作

    一 简单架构图示参考 更新中... 二 部署glance yum install memcached python-memcachedsystemctl enable memcached.servic ...

  4. MongoDB 系列(二) C# 内嵌元素操作 聚合使用

    "_id" : "639d8a50-7864-458f-9a7d-b72647a3d226","ParentGuid" : "00 ...

  5. dplyr 数据操作 列操作(select / mutate)

    在R中,我们通常需要对数据列进行各种各样的操作,比如选取某一列.重命名某一列等. dplyr中的select函数子在数据列的操作上也同样表现了它的简洁性,而且各种操作眼花缭乱. select(.dat ...

  6. MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表

    表相关操作(二)之约束条件.关联关系.复制表 一.约束条件  1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # ...

  7. MySQL数据库(三)--表相关操作(二)之约束条件、关联关系、复制表

    一.约束条件  1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # 标识该字段不能为空,默认NULL,可设置NOT ...

  8. MySql学习笔记【三、表相关操作】

    创建表 CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, ... ) 如: CREATE TABLE test_table ...

  9. 第八章| 1. MySQL数据库|库操作|表操作

    1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的 ...

随机推荐

  1. jmeter跨线程组传值和jmeter跨线程组调用

    Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组.那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使用呢?这里以已登录接口返回的access ...

  2. 微信小程序-页面跳转与参数传递

    QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...

  3. vscode启动vue项目出错,给了管理员权限没用

    今天在安装vue环境测试项目的时候, 发现vscode调用终端异常,语句无法运行,百度上给的解决方法是给管理员权限 给了以后发现没用,怎么试都没用,然后想到了,重启大法,然后问题就完美解决了

  4. intellij配置github

    一.在IDEA中设置Git,在File-->Setting->Version Control-->Git-->Path to Git executable选择你的git安装后的 ...

  5. elasticSearch中集群状态的guan'l

    es中集群出现上面的问题一般是磁盘空间不够引起的,就是node节点所在的磁盘空间不足引起的 es整个集群放在c盘,都快满了 说明es的磁盘已经快被使用完了,我们可以临时更新下磁盘空间大小 修改 ES分 ...

  6. 搞定ReentrantReadWriteLock 几道小小数学题就够了

    | 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...

  7. activiti学习笔记一

    activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...

  8. 云计算课程实验之安装Hadoop及配置伪分布式模式的Hadoop

    一.实验目的 1. 掌握Linux虚拟机的安装方法. 2. 掌握Hadoop的伪分布式安装方法. 二.实验内容 (一)Linux基本操作命令 Linux常用基本命令包括: ls,cd,mkdir,rm ...

  9. 浅谈并查集&种类并查集&带权并查集

    并查集&种类并查集&带权并查集 前言: 因为是学习记录,所以知识讲解+例题推荐+练习题解都是放在一起的qvq 目录 并查集基础知识 并查集基础题目 种类并查集知识 种类并查集题目 并查 ...

  10. 数据库管理与迁移(Liquibase)

    SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...