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. 成为python程序员,对疫情过后的毕业生来说,真是一个不错的方向吗?

    Python最近几年,一直被炒得很火,这其中有商业因素,但更重要的是即将到来的人工智能时代,而python就恰好是最适合的编程语言. 所以无论是在职的人,还是在校的学生,都想着跟上这一趋势,但,在今年 ...

  2. 删库吧,Bug浪——我们在同一家摸鱼的公司

    那些口口声声, Bug越来越难写人的,应该盯着你们: 像我一样,我盯着你们,满眼恨意. IT积攒了几十年的漏洞, 所有的死机.溢出.404和超时, 像是专门为你们准备的礼物. 圈复杂度.魔鬼变量.内存 ...

  3. VMware 15安装Ubuntu 16.04并配置环境

    VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行,可安装各种软件与应用等 ...

  4. 入门大数据---Flume整合Kafka

    一.背景 先说一下,为什么要使用 Flume + Kafka? 以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将 Flume 聚合 ...

  5. ES6躬行记 笔记

    ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向

  6. 通过网络经过路由器映射电脑ip到外网路由器

    一.内网自己电脑做服务器 自己电脑ip为192.168.0.104 首先先把自己路由器ip192.168.1.82映射到外网路由器,其中外网路由器ip为59.40.0.196 让后本机ip地址192. ...

  7. 教你如何开发一个完败Miracast的投屏新功能

      手机与电视,是陪伴在我们生活最常见,陪伴最长久的智能设备.迅猛发展的移动终端与通信技术,赋予了手机更广阔多元的应用生态,大屏电视则以大视野和震撼影音,弥补了手里方寸带来的视觉局限.而今,手机的延伸 ...

  8. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

    python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSgl7bz python100经典练习题python ...

  9. 关于SQL SERVER 的日期格式化

    --日期格式化Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), G ...

  10. 面试之Hashtable和ConcurrentHashMap

    那么要如何保证HashMap的线程安全呢? 方法有很多,比如使用Hashtable或者Collections.synchronizedMap,但是这两位选手都有一个共同的问题:性能.因为不管是读还是写 ...