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'代表不删除 默认值约束
)
MSSQL系列 (二):表相关操作、列操作、(唯一、主键、默认、检查、外键、非空)约束、临时表的更多相关文章
- MS SQL巡检系列——检查外键字段是否缺少索引
前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...
- MySQL 非空约束位置不同对自增列造成的影响
MySQL版本 select version(); +------------+ | version() | +------------+ | 5.7.21-log | +------------+ ...
- glance系列二:glance部署及操作
一 简单架构图示参考 更新中... 二 部署glance yum install memcached python-memcachedsystemctl enable memcached.servic ...
- MongoDB 系列(二) C# 内嵌元素操作 聚合使用
"_id" : "639d8a50-7864-458f-9a7d-b72647a3d226","ParentGuid" : "00 ...
- dplyr 数据操作 列操作(select / mutate)
在R中,我们通常需要对数据列进行各种各样的操作,比如选取某一列.重命名某一列等. dplyr中的select函数子在数据列的操作上也同样表现了它的简洁性,而且各种操作眼花缭乱. select(.dat ...
- MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表
表相关操作(二)之约束条件.关联关系.复制表 一.约束条件 1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # ...
- MySQL数据库(三)--表相关操作(二)之约束条件、关联关系、复制表
一.约束条件 1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # 标识该字段不能为空,默认NULL,可设置NOT ...
- MySql学习笔记【三、表相关操作】
创建表 CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, ... ) 如: CREATE TABLE test_table ...
- 第八章| 1. MySQL数据库|库操作|表操作
1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的 ...
随机推荐
- RockeMQ安装与入门
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,淘宝开发团队认为存储部分可以进一步优化,2011年初,Linkin开源 ...
- 05、MyBatis 缓存
1.MyBatis缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.缓存可以极大的提升查询效率. 1).一级缓存 public Employee getEmpById( ...
- PHP利用FTP上传文件连接超时之开启被动模式解决方法
初始代码: <?php $conn = ftp_connect("localhost") or die("Could not connect"); ftp ...
- 用Map+函数式接口来实现策略模式
用Map+函数式接口来实现策略模式 目前在魔都,贝壳找房是我的雇主,平时关注一些 java 领域相关的技术,希望你们能在这篇文章中找到些有用的东西.个人水平有限,如果文章有错误还请指出,在留言区一起交 ...
- Day10-微信小程序实战-交友小程序-创建friendList字段实现好友关系(添加好友功能)--内附代码
回顾:之前我们进行了删除的功能,以及对message消息的增删,下面实现添加好友的功能 我们先在数据库中,在message这个字段的list里面,添加上测试号的id,就是模拟这个两个测试号要加我主号的 ...
- 重学ASP.NET Core 中的标记帮助程序
标记帮助程序是什么 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素. 例如,内置的 ImageTagHelper 可以将版本号追加到图片名称. 每当图片发生变化时 ...
- shell把字符串中的字母去掉,只保留数字
1 编辑测试文件 [root@hz-kvm cephdisk3]# cat > 1.txt <<EOF> 120Tib> EOF 2 显示文件[root@hz-kvm c ...
- JS动画三剑客——setTimeout、setInterval、requestAnimationFrame
一.前言 前端实现动画效果主要有以下几种方法:CSS3中的transition 和 animation ,Javascript 中可以通过定时器 setTimeout.setinterval,HTML ...
- 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之MySQL配置
mysql高并发配置 要在mysqld下设置 1. 修改back_log参数值:由默认的50修改为500.(每个连接256kb,占用:125M) back_log=500 back_log值指出MyS ...
- MySQL 索引结构 hash 有序数组
MySQL 索引结构 hash 有序数组 除了最常见的树形索引结构,Hash索引也有它的独到之处. Hash算法 Hash本身是一种函数,又被称为散列函数. 它的思路很简单:将key放在数组里,用 ...