附录C 数据库上机实验

  • 格式:doc
  • 大小:296.00 KB
  • 文档页数:23

下载文档原格式

  / 23
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录C 上机实验

C.1 第4章上机实验

----------------------宇超,仅供参考------------------------------

下列实验均使用SQL Server 的SSMS工具实现。

1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):

●数据库名为:学生数据库

●主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘

中无此文件夹,请先建立此文件夹,然后再创建数据库。),初始大小为:5MB,

增长方式为自动增长,每次增加1MB。

●日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小

为:2MB,增长方式为自动增长,每次增加10%。

2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。(注:“说明”部分不作为表定义容)

3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。

(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。

ALTER TABLE Teacher ADD Title VARCHAR(4)

(2)为Teacher表中的Title列增加取值围约束,取值围为:{教授,副教授,讲师}。

ALTER TABLE Teacher ADD CONSTRAINT Title CHECK(Title IN('教授','副教授','讲师'))

(3)将Course表中Credit列的类型改为:tinyint。

注意:这里首先需要先删除Credit的约束,修改完数据类型后再重新添加约束项

ALTER TABLE Course DROP CONSTRAINT

CK__Course__Credit__2B3F6F97

ALTER TABLE Course ALTER COLUMN Credit TINYINT

ALTER TABLE Course ADD CONSTRAINT Credit CHECK (Credit>0)

(4)删除Student表中的Sid和Sdate列。

注意:这里首先需要先删除约束

ALTER TABLE Student DROP CONSTRAINT

UQ__Student__CA1E5D79B3204FCF

ALTER TABLE Student DROP CONSTRAINT

DF__Student__Sdate__3B75D760

ALTER TABLE Student DROP COLUMN Sdate,Sid

(5)为Teacher表添加主键约束,其主键为:Tno。

ALTER TABLE Teacher ADD PRIMARY KEY(Tno)

※建立数据库主要文件和日志文件

※我们可以看到D盘增加了主要数据文件.mdf和日志文件.ldf

create table Student(

Sno char(7),

Sname char(10)not null,

Ssex char(2)check(Ssex='男'or Ssex='女'),

Sage tinyint check(Sage>14 AND Sage<46),

Sdept varchar(20)default'计算机系',

Sid char(10)unique,--号

Sdate date default getdate()

primary key(Sno)

)

create table Course(

Cno char(10)primary key,

Cname varchar(20)not null,

Credit int check (Credit>0),

Semester tinyint,

)

create table SC(

Sno char(7),

Cno char(10),

C.2 第5章上机实验

本实验均在SQL Server 的SSMS工具中实现。首先在已创建的“学生数据库”中创建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示数据,然后编写实现如下操作的SQL语句,执行所写的语句,并查看执行结果。

有关建表及所需要的数据,见本章末尾

1.查询SC表中的全部数据。

SELECT*FROM SC

2.查询计算机系学生的和年龄。

SELECT Sname,Sage FROM Student WHERE Sdept='计算机系'

3.查询成绩在70~80分的学生的学号、课程号和成绩。

SELECT Sno,Cno,Grade FROM SC WHERE Grade between 70 AND 80

4.查询计算机系年龄在18~20岁的男生和年龄。

SELECT Sname,Sage FROM Student WHERE Sdept='计算机系'AND Sage BETWEEN 18 AND 20 AND Ssex='男'

5.查询C001课程的最高分。

SELECT MAX(grade)AS最高成绩FROM SC WHERE Cno='C001'

6.查询计算机系学生的最大年龄和最小年龄。

SELECT MAX(Sage)AS年长,MIN(Sage)AS年幼FROM Student WHERE Sdept='计算机系'

7.统计每个系的学生人数。

SELECT Sdept,COUNT(Sno)AS人数FROM Student GROUP BY Sdept

8.统计每门课程的选课人数和最高成绩。

SELECT Cno,COUNT(Sno)AS人数,MAX(Grade)AS最高成绩FROM SC

GROUP BY Cno

9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

SELECT Sno,COUNT(Cno)AS选课数量,SUM(Grade)AS考试总成绩FROM SC GROUP BY Sno

10.列出总成绩超过200的学生的学号和总成绩。

SELECT Sno,SUM(Grade)AS考试总成绩FROM SC GROUP BY Sno HAVING SUM(Grade)>200

11.查询选了C002课程的学生和所在系。

SELECT Sname,Sdept FROM Student st,SC sc WHERE st.Sno=sc.Sno AND Cno='C002'

或者

SELECT Sname,Sdept FROM Student WHERE Sno IN(SELECT Sno FROM SC