数据库上机(一):数据对象的定义

数据库上机(一):数据对象的定义

1.实验目的
理解和掌握数据库DDL语言,能够熟练的使用SQL DDL语句创修改和删除数据库、模式和表。
2.实验内容和要求
一、SQL定义语句
1.用SQL定义语句创建符合如下条件的数据库:
数据库名为:学生数据库,模式:默认模式
数据文件的物理文件名为:主数据文件Students_data.mdf(逻辑文件同名),日志文件:Students_log.ldf(逻辑文件同名),存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。)
2.选用已建立的“学生数据库”,用SQL定义语句创建符合如下条件的表C-1到C-4(注意各种完整性约束)
上述两题,界面方式或命令方式均需要熟练掌握
表C-1 Student表结构
列名 说明 数据类型 约束
Sno 学号 普通编码定长字符串,长度为7 主键
Sname 姓名 普通编码定长字符串,长度为10
Ssex 性别 普通编码定长字符串,长度为2
Sage 年龄 微整型(tinyint)
Sdept 所在系 普通编码不定长字符串,长度为20
Sid 身份证号 普通编码定长字符串,长度为10
Sdate 入学日期 日期
表C-2 Course表结构
列名 说明 数据类型 约束
Cno 课程号 普通编码定长字符串,长度为10 主键
Cname 课程名 普通编码不定长字符串,长度为20
Credit 学时数 整型
Semester 学分 小整型

表C-3 SC表结构
列名 说明 数据类型 约束
Sno 学号 普通编码定长字符串,长度为7 主键,引用Student的外键
Cno 课程号 普通编码定长字符串,长度为10 主键,引用Course的外键
Grade 成绩 小整型

表C-4 Teacher表结构
列名 说明 数据类型 约束
Tno 教师号 普通编码定长字符串,长度为8
Tname 教师名 普通编码定长字符串,长度为10
Salary 工资 定点小数,小数点前4位,小数点后2位

  1. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
    (1) 在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
    (2) 将Course表中Credit列的类型改为:tinyint。
    (3) 删除Student表中的Sid和Sdate列。
    (4) 为Teacher表添加主键约束,其主键为:Tno。

表C-1 Student表中的记录,本次上机使用窗口方式录入数据
录入数据时请务必保证数据格式与定义的数据类型一致,否则会报错。
学号 姓名 性别 年龄 系别 身份证号 入学日期
0811101 李勇 男 21 计算机系
0811102 刘晨 男 20 计算机系
0811103 王敏 女 20 计算机系
0811104 张小红 女 19 计算机系
0821101 张立 男 20 信息管理系
0821102 吴宾 女 19 信息管理系
0821103 张海 男 20 信息管理系
0831101 钱小平 女 21 通信工程系
0831102 王大力 男 20 通信工程系
0831103 张姗姗 女 19 通信工程系

表C-2 Course表中的记录
Cno Cname Credit Semester
C001 高等数学 4 1
C002 大学英语 3 1
C003 大学英语 3 2
C004 计算机文化学 2 2
C005 VB 2 3
C006 数据库基础 4 5
C007 数据结构 4 4
C008 计算机网络 4 4

表C-3 SC表中的记录
Sno Cno Grade
0811101 C001 96
0811101 C002 80
0811101 C003 84
0811101 C005 62
0811102 C001 92
0811102 C002 90
0811102 C004 84
0821102 C001 76
0821102 C004 86
0821102 C005 73
0821102 C007 NULL
0821103 C001 50
0821103 C004 80
0831101 C001 50
0831101 C004 80
0831102 C007 NULL
0831103 C004 78
0831103 C005 65
0831103 C007 NULL

表C-4 Teacher表中的记录
Tno Tname Salary
T001 张美霞 5000
T002 王洪林 5500
T003 李丽芬 4800
T004 周良水 6000
T005 吴翔 7000

请按照下面的格式提交本次实验报告
实验报告应包括:实验标题、实验目的,实验内容,实验结果,实验小结
其中实验结果应包含本次数据对象的定义SQL语句,并对建好的对象进行截图。
实验小结主要提交在实验中遇到的问题及解决方法。

实验步骤如下:
本次实验使用的是SQLserver 2008R
(1)右键ReportServer,选择新建数据库,输入数据库名称为“学生数据库”,数据文件的物理文件名改为为:主数据文件Students_data.mdf(逻辑文件同名),日志文件:Students_log.ldf(逻辑文件同名),存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。)如图所示:点击确定,则创建数据库成功,这是手动创建,下面我们用SQL语句创建。
在这里插入图片描述
SQL语句创建数据库如下:

Create DataBase 学生数据库
ON primary(
name = 'Students_data.mdf' ,
FILENAME  = 'D:\Data\Students_data.mdf'
)
log on(
name = 'Students_log.ldf' ,
FILENAME  = 'D:\Data\Students_log.ldf'
)

(2)刷新一下左侧的数据库就可以看到新建的学生数据库了。
在这里插入图片描述
(3)建表:如下两种方法二选一就可以。推荐使用第二种,方便快捷。
方法1:界面方式建表,点击学生数据库,右击表,然后新建表,在表中录入列名,数据类型,以及相关约束,约束就是设置sno主键,直接右击Sno,设置为主键就可以。
在这里插入图片描述
方法2:命令方式建表
点击新建查询,输入以下SQL语句,然后点击执行。执行完之后,刷新一下表。

Create Table Student(
Sno CHAR(7) Primary key ,
Sname CHAR(10) ,
Ssex CHAR(2),
Sage tinyint,
Sdept varchar(20),
Sid CHAR(20),
Sdate date
)  ;

执行成功后则建表完成,刷新一下表,可以在学生数据库中看到Student表,如图所示。
在这里插入图片描述
(4)利用上述两种方法的其中一种,继续建剩下的三张表。如图所示
Course表,SQL命令,如图所示。
在这里插入图片描述

Create Table Course(
Cno CHAR(10) Primary key ,
Cname varchar(20),
Credit int,
Semester smallint 
)  ;

SC表,SQL命令,如图所示。
在这里插入图片描述

Create Table SC(
Sno CHAR(7) ,
Cno CHAR(10) ,
Grade smallint,
Primary key(Sno, Cno) ,
FOREIGN KEY (Sno) REFERENCES Student(Sno) ,
FOREIGN KEY (Cno) REFERENCES Course(Cno) 
)  ;

Teacher表,SQL命令,如图所示。

在这里插入图片描述

Create Table Teacher(
Tno char(8),
Tname char(10),
Salary numeric(6,2)
)  ;

4、写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。SQL语句如下
(1) 在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
(2) 将Course表中Credit列的类型改为:tinyint。
(3) 删除Student表中的Sid和Sdate列。
(4) 为Teacher表添加主键约束,其主键为:Tno。

Alter Table Teacher ADD  Title nchar(4) ;
Alter Table Course Alter column Credit tinyint ;
Alter Table Student Drop Column Sid  ;
Alter Table Student Drop Column Sdate  ;
Alter Table Teacher ADD PRIMARY KEY(Tno) ;

5.录入数据,可以使用窗口方式直接录入,右键dbo.student,选择编辑前200行,录入数据就可以了,剩余三张表也是如此操作。操作完成后如下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.实验小结
通过本次实验我理解和掌握数据库DDL语言,能够熟练的使用SQL DDL语句创修改和删除数据库、模式和表。本次实验在使用SQL语句对表进行操作的过程中,可能出现报错提示并没有发现此表,解决方法是将默认选中的系统数据库改成自己建立的学生数据库,然后操作就可以,如图所示
在这里插入图片描述
附加内容:
也可以直接使用SQL语句建表,设置约束,并录入数据。
SQL语句如下,直接执行此语句就可以:
第一张Student表,有两列不需要插入,所以要指定列插入。

Create Table Student(
Sno CHAR(7) Primary key ,
Sname CHAR(10) ,
Ssex CHAR(2),
Sage tinyint,
Sdept varchar(20),
Sid CHAR(20),
Sdate date
);
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0811101','李勇','男',21,'计算机系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0811102','王晨','男',20,'计算机系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0811103','王敏','女',20,'计算机系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0811104','张小红','女',20,'计算机系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0821101','张立','男',20,'信息管理系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0821102','吴宾','男',19,'信息管理系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0821103','张海','男',20,'信息管理系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0831101','钱小平','女',21,'通信工程系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0831102','王大力','男',20,'通信工程系') ;
insert into Student (Sno,Sname,Ssex,Sage,Sdept)values ('0831103','张珊珊','女',19,'通信工程系') ;

第二章Course表,因为是满列的,可以不指定列,直接插入,SQL语句如下,执行语句就可以。

Create Table Course(
Cno CHAR(10) Primary key ,
Cname varchar(20),
Credit int,
Semester smallint 
)  ;
insert into Course values ('C001','高等数学',4,1) ;
insert into Course values ('C002','大学英语',3,1) ;
insert into Course values ('C003','大学英语',3,2) ;
insert into Course values ('C004','计算机文化学',2,2) ;
insert into Course values ('C005','VB',2,3) ;
insert into Course values ('C006','数据库基础',4,5) ;
insert into Course values ('C007','数据结构',4,4) ;
insert into Course values ('C008','计算机网络',4,4) ;

第三张SC表,也可以采用不指定插入,SQL语句如下:

Create Table SC(
Sno CHAR(7) ,
Cno CHAR(10) ,
Grade smallint,
Primary key(Sno, Cno) ,
FOREIGN KEY (Sno) REFERENCES Student(Sno) ,
FOREIGN KEY (Cno) REFERENCES Course(Cno) 
)  ;
insert into SC values('0811101','C001',96) ;
insert into SC values('0811101','C002',80) ;
insert into SC values('0811101','C003',84) ;
insert into SC values('0811101','C005',62) ;
insert into SC values('0811102','C001',92) ;
insert into SC values('0811102','C002',90) ;
insert into SC values('0811102','C004',84) ;
insert into SC values('0821102','C005',73) ;
insert into SC values('0821102','C007',NULL) ;
insert into SC values('0821103','C001',50) ;
insert into SC values('0821103','C004',80) ;
insert into SC values('0831103','C001',50) ;
insert into SC values('0831101','C004',80) ;
insert into SC values('0831102','C007',NULL) ;
insert into SC values('0831103','C004',78) ;
insert into SC values('0831103','C005',65) ;
insert into SC values('081103','C007',NULL) ;



最后一张Teacher表,我们可以采用同时插入多条。直接执行就可以啦。

Create Table Teacher(
Tno char(8),
Tname char(10),
Salary numeric(6,2)
)  ;
insert into Teacher values
('T001','张美霞',5000.00),
('T002','王洪林',5500.00),
('T003','李丽芬',4800.00),
('T004','周良水',6000.00),
('T005','吴翔',7000.00) ;

本文原创,Author WangGuodong,如果对你有帮助点个赞再走吧,谢谢!

发布了46 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/nuist_NJUPT/article/details/105115183