实验三 数据表的创建与管理实验

更新时间:2023-09-16 10:34:01 阅读量: 高中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南 京 晓 庄 学 院

《数据库原理与应用》

课程实验报告

实验三 数据表的创建与管理实验

所在院(系): 数学与信息技术学院 班级:

学号: 姓名:

1.实验目的

(1) 理解SQL Server 2005常用数据类型和表结构的设计方法。理解主键、外键含义,掌握

建立各表相关属性间参照关系的方法。

(2) 熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构,

插入及更新数据的方法。

(3) 熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方法。

2.实验要求

基本实验:

(1) 在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构:

学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号) 课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时) 学习信息(学号,课程号,考试成绩,平时成绩) 院系信息(院系号,院系名称)

要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。

(2) 依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据库

中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。

(3) 依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验使

用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。

(4) 找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。 (5) 按要求完成实验报告。 扩展实验:

(1) 在“TM”数据库中补充设计以下各表结构: 授课信息(教师号,课程号,学期)

教师信息(教师号,姓名,性别,出生日期,学历,学位,入职时间,职称,院系号) 班级信息(班级号,班级名称,专业号)

专业信息(专业号,专业名称,学制,学位)

图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类) 借书偏息(学号,图书号,借出时间,归还时间) 奖励信息(学号,奖励类型,奖励金额)

(2) 设计并实现各表之间相关属性的参照关系。

(3) 使用SQL Management Studio图形界面或Transact-SQL在“TM”数据库中创建前述各表,

并插入部分数据,要求所插入数据合理有效。

学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号)

create table stu( stu_id int primary key, name char(10),

sex char(2) check(sex in('男','女')), birthplace char(40), birthdate datetime, mingzu char(10), dept_id int,

class_id int )

insert into stu(stu_id,name,sex) values(1,'晓雪','女'); insert into stu(stu_id,name,sex) values(2,'福云','女');

院系信息(院系号,院系名称)

create table dept( dept_id int primary key, name char(40) );

课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时)

create table course( );

insert into course values(1,'晓雪','4',1,6,80);

course_id int primary key, name char(40), cmodule char(20), level int, class int

grade int,

学习信息(学号,课程号,考试成绩,平时成绩)

create table study( study_id int primary key, course_id int not null, testGrade float not null, usualGrade float,

foreign key(course_id) references course(course_id) );

教师信息(教师号,姓名,性别,出生日期,学历,学位,入职时间,职称,院系号)

create table teacher( teacher_id int primary key, name char(20) not null,

sex char(2) check(sex in('男','女')), birthdate datetime, resume char(20) not null, xuewei char(20), jobdate datetime, position char(20), dept_id int,

foreign key(dept_id)references dept(dept_id) );

insert into teacher(teacher_id,name,sex,resume)values(1,'aaa','男','本科');

奖励信息(学号,奖励类型,奖励金额)

create table award( stu_id int primary key, type char(20) not null, money float );

图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类)

create table library( book_id int primary key, name char(20) not null, author nchar(20)not null,

publishHouse nchar(20) not null, publishDate datetime, number int, price float, bookType char(20) );

班级信息(班级号,班级名称,专业号)

create table class( class_id int primary key, name nchar(10)not null, major_id int,

foreign key(major_id) references major(major_id) );

专业信息(专业号,专业名称,学制,学位)

create table major( major_id int primary key, name nchar(10) not null, xuezhi int,

position nchar(10) );

授课信息(教师号,课程号,学期)

create table teach( teacher_id int, course_id int, xueqi char(5),

primary key(teacher_id,course_id), );

借书偏息(学号,图书号,借出时间,归还时间)

create table borrow( stu_id int, book_id int,

borrowDate datetime, lendDate datetime,

primary key(stu_id,book_id) );

3.实验步骤、结果和总结实验步骤/结果

(1)合理命名并设计学生信息、课程信息、学习信息和院系信息结构(字段名,数据类型,默认值,是否主键,取值范围描述等),以表格描述相关信息。 学生信息表 字段名 Stu_id Name Sex Birthdate Resume Xuewei Jobdate Postion Dept_id 课程信息

数据类型 int Char Char Datetim Char Char Datetime Datetime int 数据类型 int Char Char int int int 默认值 无 默认值 无 是否主键 是 是否主键 是 取值范围 (男,女) 取值范围 (男,女) 字段名 Course_id Name Cmodule Level Grade class 学习信息

字段名 Study_id Course_id testGrade usualGrade

院系信息 字段名 Dept_id 数据类型 int int float flaot 默认值 是否主键 是 是 取值范围 数据类型 int 默认值 无 是否主键 是 取值范围

name char (2) 总结使用SQL Server Management Studio创建学生信息、课程信息表,修改表结构,输入或更新表数据的过程或方法; 创建学生信息表:

create table stu( stu_id int primary key, name char(10),

sex char(2) check(sex in('男','女')), birthplace char(40), birthdate datetime, mingzu char(10), dept_id int, class_id int )

修改表中列的数据类型

Alter table stu alter column birthplace nchar(20);

在表中添加新的一列

Alter table stu add column age int;

插入一条学生记录

Insert into stu(stu_id,name,sex,birthplace,dept_id,class_id) values(1,’福云’,’女’,’江苏连云港’1,1)

修改记录

Update stu set name=’晓雪’where stu_id=1;

删除记录

Delete from stu where stu_id=1;

另外我们还使用SQL Server Management Studio图形工具创建表,修改表,插入数据操作步骤:

创建学生信息表:

在“对象资源管理器”中,依次展开“数据库”→“TM”→“表”,右击选择新建表,输入表的各个字段,完成后右击保存该表,在弹出的对话框中,输入该表的表名“学生信息” 修改表结构:

右击“学生信息”表,点击“修改”,然后根据自己要修改的进行修改,如下图所示:

输入数据:

右击“学生信息表”点击“打开表”,根据字段输入相应的数据,如下图所示:

(3) 写出实验中创建学习信息、院系信息表,试验修改表结构及删除数据表、插入和更新数据时,你所编写并成功执行的T-SQL语句。

学习信息(学号,课程号,考试成绩,平时成绩)

create table study( study_id int primary key, course_id int not null, testGrade float not null, usualGrade float,

foreign key(course_id) references course(course_id) );

院系信息

create table dept( dept_id int primary key, name char(40) );

一院系信息表为例

修改表中字段的数据类型

Alter table dept alter column name nchar(20);

插入一条记录

Insert into dept values(1,’计算机与软件学院’);

更新一条记录

Update dept set name=’数学与信息技术学院’ where dept_id=1;

删除一条记录

Delete from dept where dept_id=1;

删除整张表 Drop table dept;

(4) 说明学生信息、课程信息表、学习信息、院系信息表间相关属性的合理参照关系,写出相应的数据库中添加引用完整性约束的T-SQL语句或者探索并总结使用SQL Server Management Studio图形工具在数据库中添加相应引用完整性约束的方法。

学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号)

create table stu(

stu_id int primary key, name char(10),

sex char(2) check(sex in('男','女')), birthplace char(40), birthdate datetime, mingzu char(10),

dept_id int, class_id int, foreign key (dept_id) references dept(dept_id); //这是外键参照院系信息表的主键

foreign key (class_id) references class(class_id); //这是外键,参照班级表的主键 )

院系信息(院系号,院系名称)

create table dept(

dept_id int primary key,//主键 name char(40) );

课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时)

create table course( );

course_id int primary key, name char(40), cmodule char(20), level int, class int

grade int,

学习信息(学号,课程号,考试成绩,平时成绩)

create table study( study_id int primary key, course_id int not null, testGrade float not null, usualGrade float,

foreign key(course_id) references course(course_id)//这是外键,参照课程表中主键 );

(5)扩展实验完成总结(可选)。

在数据库“TM”中,再添加些表,由于上面用的是T—SQL语句创建的,所以这边再用SQL Server Management Studio图形工具创建表。

SQL Server Management Studio图形工具创建表的步骤:

在“对象资源管理器”中,依次展开“数据库”→“TM”→“表”,右击选择新建表,输入表的各个字段,完成后右击保存该表,在弹出的对话框中,输入该表的表名。 部分截图如下所示(奖励信息表和专业信息表):

基本上和学生表、学习表、院系表创建建方法一样,注意主外键关系即可。

4.实验思考:

①你认为在教学管理中还可以增加管理哪些信息,可以再为数据库增加设计哪些表或为已有表增加设计哪些属性字段?说出理由。 答:可以增加的表

考试时间表(院系名称,课程名称,考试地点,考试时间,监考人员,监考人数) 宿舍分布表 (地区编号,宿舍楼编号,负责人姓名)

学生住宿表 (院系号,地区编号,宿舍楼编号,房间编号,姓名,班级) 增加已有表中的属性字段:

课程信息表中可以增加教室和上课时间字段

学习信息表中可以增加是否住宿和所居住宿舍号的字段

②数据表中的主键有何特性,请设计实例验证主键的特性。当相关数据表中已有数据时, 为各表之间增加参照关系时有可能会失败,为什么? 答:主键具有如下特性:

(1)不重复性。当将一列设置为主键时,则数据的取值在该列或者列组合中是唯一的,因此

主键列(或列组合)可以作为表中数据的标识列。

(2)非空性。即主键列(或列组合)的每个数据不能出现空值。 (3)唯一性。指一个表中最多只有一个主键。

创建表时可通过定义 PRIMARY KEY 约束来创建主键。 命令格式:

CREAT TABLE 表名 (列名 数据类型

CONSTRAINT 主键约束名

PRIMARY KEY [CLUSTERED |NON CLUSTERED )

主键可能所连接的字段设置的数据类型不同,各表之间增加参照关系会失败。

③总结SQL中数值数据,字符数据和日期数据常量的表示方法。思考当向某表中插入记录时,若插入记录的某字段值的数据类型或精度与该表中对应字段定义不同时,会产生哪些结果?请设计不同情况的实例加以验证。 1)数值数据

SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。INT VS SMALLINT VS TINYINT

他们的区别只是字符长度: INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数SMALLINT 型数据可以存储从-32768到32768的整数TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此, 为 安 全 起见 ,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 2)字符数据

NVARCHAR 和NCHAR 和VARCHAR和CHAR区别如下图所示:

索引效率高 程序里面定n 必须是一个介于 1 和 8,000 之间的

char(n) 使用trim去除多余的

长 数值,存储大小为 n 个字节 空白

n 必须是一个介于 1 和 8,000 之间的

varchar(n) 效率没char高 灵活 数值。存储大小为输入数据的字节的实

际长度,而不是 n 个字节

处理unicode数据类型定n 的值必须介于 1 与 4,000 之间。存

nchar(n) (所有的字符使用两个

长 储大小为 n 字节的两倍 字节表示)

处理unicode数据类型n 的值必须介于 1 与 4,000 之间。字变

nvarchar(n) (所有的字符使用两个节的存储大小是所输入字符个数的两

字节表示) 倍。所输入的数据字符长度可以为零

3)日期数据

DATETIME VS SMALLDATETIME 。

当直插入一个字段时,数据类型不一致时,出现如下图所示的错误提示:

当主键为空时,出现下图所示的错误提示:

本文来源:https://www.bwwdw.com/article/3r5h.html

Top