《计算机网络与数据库技术》-上机实验五

目录

一.【实验目的】

二.【实验准备】

三.【实验内容及步骤】

(1)建立索引

(2)创建视图

(3)使用视图

四.【实验预习】

五.【实验结果】

创建表

 插入数据

 (1)建立索引

1)对Student表中的学号Sno列建立一个名为index_Sno的索引

 2)对Courses表中的课程号Cno列建立一个名为index_Cno的唯一索引。

 3)为了方便按姓名和学号查找学生,为Student表创建一个基于“姓名,学号”组合列的组合索引index_Sname_Sno.

4)为了学生成绩表Enrollment创建一个基于“学号,课程号”组合列的聚集、复合索引index_SCno.

 5)为课程信息表Courses创建一个基于“课程号,课程名”组合列的唯一、聚集、复合索引index_Cno_Cname.

(2)创建视图

1)将表Student中所有女生记录定义为一个视图(V_female),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。

 2)对表Student定义一个反映学生年龄的视图(V_age),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。

(3)使用视图

 通过视图V_female查询所有女生记录的信息。

 通过视图V_average查询学生的成绩。


一.【实验目的】

(1)熟悉索引和视图。

(2)通过操作理解和掌握索引和视图的基本操作。

二.【实验准备】

(1)已经接入局域网的网络实验室。

(2)机器上已安装 Microsoft SQL Server。

(3)建立数据库 stu,按照表 7-1、表 7-2 和表 7-3 所示建好 3 个表,并且按照图 7-17 插入数据。

7-1 Student 结构

列名

说明

数据类型

约束说明

Sno

学号

字符串,长度为10

主键

Sname

姓名

字符串,长度为 8

非空值

Ssex

性别

字符串,长度为1

非空值,取F"或M"

Sage

年龄

整数

允许为空值

Sdept

所在系

字符串,长度为15

默认为‘Computer’

7-2  Courses 结构

列名

说明

数据类型

约束说明

Cno

课程号

字符串,长度为10

主键

Cname

课程号

字符串,长度为 20

非空值

PreCno

先修课程号

字符串,长度为 6

允许为空值

Credits

学分

整数

允许为空值

7-3  Enrollment结构

列名

说明

数据类型

约束说明

Sno

学号

字符串,长度为10

主键

Cno

课程号

字符串,长度为 6

非空值

Grade

成绩

整数

允许为空值

主键为(Sno,Cno)

学生表(students)

Sno

Sname

Ssex

Sage

Sdept

20010101

Jone

M

19

Computer

20010102

Susan

F

20

Computer

20010103

Smith

M

19

Math

20030101

Allen

M

18

Automation

20030101

Danne

F

21

Art

选课表(Enrollment                              课程表(Courses

Sno

Cno

Grade

Cno

Cname

ProCno

Credits

20010101

C1

90

C1

English

4

20010102

C1

88

C2

Math

C5

2

20010102

C2

94

C3

Datebase

C2

2

20010102

C3

62

图7-17 学生选课数据库

三.【实验内容及步骤】

(1)建立索引

1)对Student表中的学号Sno列建立一个名为index_Sno的索引。

2)对Courses表中的课程号Cno列建立一个名为index_Cno的唯一索引。

3)为了方便按姓名和学号查找学生,为Student表创建一个基于“姓名,学号”组合列的组合索引index_Sname_Sno.

4)为了学生成绩表Enrollment创建一个基于“学号,课程号”组合列的聚集、复合索引index_SCno.

5)为课程信息表Courses创建一个基于“课程号,课程名”组合列的唯一、聚集、复合索引index_Cno_Cname.

(2)创建视图

1)将表Student中所有女生记录定义为一个视图(V_female),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。

2)对表Student定义一个反映学生年龄的视图(V_age),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。

(3)使用视图

通过视图V_female查询所有女生记录的信息。

通过视图V_average查询学生的成绩。


四.【实验预习】

1.索引的定义:索引是根据表中的一列或者若干开列按照一定顺序建立的列值与记录行之间的对应关系表。按索引的组织方式可分为聚集索引和非聚集索引。在数据库系统中建立索引主要作用有:

(1)快速存取数据

(2)保证数据记录的唯一性

(3)实现表与表之间的参照完整性

(4)在使用ORDER BY、GROUP BY子句进行数据检索时,利用索引可以减少排序和分组的时间。

2.索引的创建:

(1)用界面方式创建(参考课本116页)

(2)利用SQL命令创建索引。

命令语句:

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX 索引名。

UNIQUE:表示为表或视图创建唯一索引。

CLUSTERED:表示创建聚集索引。

NONCLUSTERED:表示创建非聚集索引。

3.重建索引:命令语句:ALTER INDEX

4.索引的删除:SQL命令语句:DROP INDEX,也可通过界面方式删除索引。

5.视图的概念:视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图想关联的基本表。

6.创建视图:

(1)通过界面f方式创建视图(课本70页)

(2)命令语句:CREATE VIEW

7.查询视图:命令语句:SELECT

8.更新视图:命令语句:INSERT/UPDATE/DELETE

视图更新条件:创建视图的SELECT语句中没有聚合函数,不包含从基本表列通过计算所得的列,FROM子句中至少包含一个基本表。

9.修改视图定义:命令语句:ALTER VIEW,也可通过界面方式修改。

10.删除视图:命令语句:DROP VIEW,也可以通过通过对象资源管理器删除视图。


五.【实验结果】

创建表
CREATE TABLE student (  
    Sno VARCHAR(10) PRIMARY KEY,  
    Sname VARCHAR(8) NOT NULL,  
    Ssex VARCHAR(1) NOT NULL CHECK (Ssex IN ('F', 'M')),  
    Sage INT NULL,  
    Sdept VARCHAR(15) DEFAULT 'Computer'  
);

CREATE TABLE Courses (  
    Cno VARCHAR(10) PRIMARY KEY,  
    Cname VARCHAR(20) NOT NULL,  
    PreCno VARCHAR(6) NULL,  
    Credits INT NULL  
);
CREATE TABLE Enrollment (  
    Sno VARCHAR(10) NOT NULL,  
    Cno VARCHAR(6) NOT NULL,  
    Grade INT NULL,  
    PRIMARY KEY (Sno, Cno)  
);
 插入数据
INSERT INTO student 
VALUES('20010101', 'Jone', 'M', 19, 'Computer'),  
 ('20010102', 'Susan', 'F', 20, 'Computer'),   
 ('20010103', 'Smith', 'M', 19, 'Math'),
('20030101', 'Allen', 'M', 18, 'Automation'),  
 ('20030102', 'Danne', 'F', 21, 'Art')

INSERT INTO Enrollment   
VALUES ('20010101', 'C1', 90),  
       ('20010102', 'C1', 88),  
       ('20010102', 'C2', 94),  
       ('20010102', 'C3', 62);
INSERT INTO Courses   
VALUES ('C1', 'English', '', 4),  
       ('C2', 'Math', 'C5', 2),  
       ('C3', 'Datebase', 'C2', 2);
 1)建立索引
1)对Student表中的学号Sno列建立一个名为index_Sno的索引
CREATE INDEX index_Sno ON Student (Sno);

 

 2)对Courses表中的课程号Cno列建立一个名为index_Cno的唯一索引。
CREATE UNIQUE INDEX index_Cno ON Courses (Cno);

 3)为了方便按姓名和学号查找学生,为Student表创建一个基于“姓名,学号”组合列的组合索引index_Sname_Sno.
CREATE INDEX index_Sname_Sno ON Student(Sname,Sno);

4)为了学生成绩表Enrollment创建一个基于“学号,课程号”组合列的聚集、复合索引index_SCno.
CREATE CLUSTERED INDEX index_SCno ON Enrollment (Sno, Cno);

 

 5)为课程信息表Courses创建一个基于“课程号,课程名”组合列的唯一、聚集、复合索引index_Cno_Cname.
CREATE UNIQUE CLUSTERED INDEX index_Cno_Cname ON Courses(Cname, Cno);

2)创建视图
1)将表Student中所有女生记录定义为一个视图(V_female),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。
CREATE VIEW V_female AS  
SELECT *  
FROM Student  
WHERE Ssex = 'F';

 2)对表Student定义一个反映学生年龄的视图(V_age),在SQL编辑器窗口中输入和执行语句,并通过对象资源管理器来显示结果。
CREATE VIEW V_age AS  
SELECT Sname, Sage AS '年龄'  
FROM Student

3)使用视图
 通过视图V_female查询所有女生记录的信息。
SELECT *
FROM V_female;

 

 通过视图V_average查询学生的成绩。
CREATE VIEW V_average AS  
SELECT *,Grade AS '成绩'  
FROM Enrollment
SELECT * 
FROM V_average;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值