SQLServe_使用T-SQL语句创建数据库、创建表以及表的约束

2024-05-27 04:32

本文主要是介绍SQLServe_使用T-SQL语句创建数据库、创建表以及表的约束,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

if exists(select * from sysdatabases where name='school')
begindrop database school
end
gocreate database school
on primary
(name='school_data',							--主数据文件的逻辑名称filename='F:\project\school_data.mdf',  				--主数据文件的物理名称及地址size=5mb,								--主数据文件的初始大小maxsize=100mb,								--主数据文件的最大值filegrowth=15%								--主数据文件的增长率
)
log on
(name='school_log.ldf',					--数据日志文件的逻辑名称filename='F:\project\school_log.mdf',			--数据日志文件的物理名称及地址size=2mb,						--数据日志文件的初始大小filegrowth=1mb						--数据日志文件的增长速度
)
go--建表
use school	
go
--1.年级表
if exists(select * from sysobjects where name='Grade')
begindrop table Grade
end
gocreate table Grade
(GradeId int Identity(1,1) not null,GradeName nvarchar(50) not null
)
go--2.学生表
--如果要创建的表已存在,那么就删除
if exists(select * from sysobjects where name='Student')
begindrop table Student
end
go
create table Student
(StudentNo nchar(8) not null,StudentName nvarchar(20) not null,LoginPwd nvarchar(20) not null,Sex nchar(1) not null,GradeId int not null,Phone nvarchar(20) not null,Address nvarchar(50) not null,BornDate nvarchar(50) not null,EMail nvarchar(50) not null 
)--3.科目表
if exists(select * from sysobjects where name='Subject')
begindrop table Subject
end
gocreate table Subject
(SubjectId int identity(1,1) not null,SubjectName nvarchar(20) not null,ClassHour int not null,GradeId int not null
)--4.成绩表
if exists(select * from sysobjects where name='Result')
begindrop table Result
end
gocreate table Result
(Id int identity(1,1) not null,StudentNo nchar(8) not null,SubjectId int not null,StudentResult int not null, --0-100之间ExamDate datetime not null  --默认为当前日期
)--约束
--1.年级表约束
alter table Grade
add constraint PK_GradeId primary key(GradeId)  --主键约束
go
alter table Grade
add constraint UQ_GradeName unique (GradeName)	--唯一约束
go
--2.学生表约束
alter table Student
add constraint PK_StudentNo primary key(StudentNo)
go
alter table Student
add constraint CK_StudentNocheck check(StudentNo like 'S20118[0-9][0-9]')--检查约束
go
alter table Student
add constraint CK_LoginPwd check (len(LoginPwd)>=6 and len(LoginPwd)<=12)
go
alter table Student
add constraint FK_Student_GradeId foreign key(GradeId) references Grade(GradeId)
go
alter table Student
add constraint CK_Sex check(sex in ('男','女'))
go
alter table Student
add constraint CK_Phone check(Phone like '1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
go
alter table Student
add constraint DF_Address default('学生宿舍') for Address
go
alter table Student
add constraint CK_BornDate check(BornDate>1990-1-1)
go
alter table Student
add constraint CK_Email check(Email like '%@%')
go--科目表约束
alter table Subject
add constraint PK_SubjectId primary key(SubjectId)
go
alter table Subject
add constraint CK_ClassHour check(ClassHour>0)
go
alter table Subject
add constraint FK_Subject_GradeId foreign key(GradeId) references Grade(GradeId)
go--成绩表约束
alter table Result
add constraint PK_Id primary key(Id)
go
alter table Result
add constraint FK_Result_StudentNo foreign key(StudentNo) references Student(StudentNo)
go
alter table Result
add constraint FK_Result_SujectId foreign key(SubjectId) references Subject(SubjectId)
go

这篇关于SQLServe_使用T-SQL语句创建数据库、创建表以及表的约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
http://www.chinasem.cn/article/1006513

相关文章

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma