Sql Server快速建表

use MyDatabase
create table 学生表
(
学号 varchar(16) primary key,
姓名 varchar(8),
性别 char(2) check (性别 IN ('男','女')),
出生日期 date,
所在系 varchar(20),
专业  varchar(20),
班号 varchar(10),
联系号码 varchar(20),
QQ号码 varchar(15),
通讯地址 varchar(20)
)

create table 课程表
(
课程号 varchar(16) primary key,
课程名 varchar(30) NOT NULL,
学分   tinyint check(学分 between 1 and 8),
开课学期 tinyint check(开课学期 between 1 and 12),
课程性质 varchar(4) check(课程性质 in ('必修','选修')),
考试性质 varchar(4) check(考试性质 in ('考试','考查')),
授课时数 tinyint check(授课时数 <=68),
实践时数 tinyint check(实践时数 <=68),
平时成绩比例 numeric(1,1)
)

create table 教师表
(
教师号 varchar(16) primary key,
教师名 varchar(8) not null,
性别 char(2) check(性别 in ('男','女')),
职称 varchar(6) check(职称 in ('助教','讲师','副教授','教授')),
学历 varchar(6) check(学历 in('本科','硕士','博士','博士后')),
出生日期 date,
所在部门 varchar(30),
联系号码 varchar(20),
通讯地址 varchar(20)
)

create table 选课表
(
学号 varchar(16) not null,
课程号 varchar(16) not null,
选课学年 varchar(4),
选课学期 char(1) check(选课学期 like '[12]'),
primary key (学号,课程号,选课学年,选课学期),
foreign key(学号) REFERENCES 学生表(学号),
foreign key(课程号) REFERENCES 课程表(课程号)
)

create table 成绩表
(
学号 varchar(16),
课程号 varchar(16),
考试次数 tinyint check(考试次数 between 1 and 3),
平时成绩 tinyint,
考试成绩 tinyint,
总评成绩 tinyint,
primary key (学号,课程号),
foreign key(学号) REFERENCES 学生表(学号),
foreign key(课程号) references 课程表(课程号)
)

create table 授课表
(
课程号 varchar(16) not null,
教师号 varchar(16) not null,
学年 varchar(4),
学期 tinyint,
主讲时数 tinyint,
辅导时数 tinyint,
带实验时数 tinyint,
primary key (课程号,教师号,学年,学期),
foreign key(课程号) REFERENCES 课程表(课程号),
foreign key(教师号) REFERENCES 教师表(教师号)
)

时间: 2024-09-20 09:11:05

Sql Server快速建表的相关文章

sql server 2008 建表时不能输入空值

问题描述 在sqlserver2008建表时,有语文列,数据类型为float,建好后,在录入"语文"成绩时整数.小数都能录入,就是空值不能录入(不是NULL),因为有没有考试的"语文"成绩要空着,空着的自动为0,求解??? 解决方案 解决方案二:设置Defaultvalue成0ALTERTABLE[dbo].[Test]ADDCONSTRAINT[DF_Test_English]DEFAULT((0))FOR[English]GO[dbo].[Test]:表名[DF

sql server 2008-创建表C来联系A和B,如何选取组合主键?

问题描述 创建表C来联系A和B,如何选取组合主键? 这道题答案是AE.为什么不能有其他的组合呢?两个表的主键放在一起不可以吗?不也是唯一确定吗?而且既然可以选City列,那么LanguageName不也是一个没有重复值得列吗?

快速查看SQL Server 中各表的数据量以及占用空间大小

快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(18) ,Data varchar(18) ,index_size varchar(18) ,Unused varchar(18) ) GO INSERT #T EXEC SP_MSFOREACHTABLE 'EXEC sp_spaceused "?"' SELECT * FROM #T O

Sql Server中的表访问方式Table Scan, Index Scan, Index Seek

  Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 0.参考文献 oracle表访问方式 Index Seek和Index Scan的区别以及适用情况 1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找满足条件的数据 通过rowid扫描(table access by rowid),如果知道数据的rowid,那么直接通

SQL Server 索引和表体系结构(三)

原文:SQL Server 索引和表体系结构(三) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文 创建包含

SQL Server 索引和表体系结构(包含列索引)

原文:SQL Server 索引和表体系结构(包含列索引) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文

SQL Server中多表连接时驱动顺序对性能的影响

原文:SQL Server中多表连接时驱动顺序对性能的影响   本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)   最近在SQL Server中多次遇到开发人员提交过来的有性能问题的SQL,其表面的原因是表之间去的驱动顺序造成的性能问题,具体表现在(已排除其他因素影响的情况下),存储过程偶发性的执行时间超出预期,甚至在调

SQL Server 索引和表体系结构(二)

原文:SQL Server 索引和表体系结构(二) 非聚集索引 概述      对于非聚集索引,涉及的信息要比聚集索引更多一些,由于整个篇幅比较大涉及接下来的要写的"包含列的索引","索引碎片"等一些知识点,可能要结合起来阅读理解起来要更容易一些.非聚集索引和聚集索引一样都是B-树结构,但是非聚集索引不改变数据的存储方式,所以一个表允许建多个非聚集索引:非聚集索引的叶层是由索引页而不是由数据页组成,索引行包含索引键值和指向表数据存储位置的行定位器, 既可以使用聚集索

SQL Server 索引和表体系结构(聚集索引)

原文:SQL Server 索引和表体系结构(聚集索引) 聚集索引 概述       关于索引和表体系结构的概念一直都是讨论比较多的话题,其中表的各种存储形式是讨论的重点,在各个网站上面也有很多关于这方面写的不错的文章,我写这篇文章的目的也是为了将所有的知识点尽可能的组织起来结合自己对这方面的了解些一篇关于的详细文章出来,同时也会列出一些我自己有疑惑的地方拿出来探讨,介于表达能力有限,有些地方可能无法表达的很明了,还望大家包涵:对于文章中有不对的地方也希望大家能提出,写文章的目的就是为了共享资源