实验三 数据的组织与查询
实验目的
掌握数据表的索引、排序、检索与查询等操作。
实验内容
1、数据表索引的建立、打开、更新、删除与关闭。 2、数据表记录的排序。 3、数据表数据的检索。 4、数据表数据的查询。
实验环境
SQL环境。
实验过程
一、数据表索引的建立
SQL语句: CREATE INDEX <索引文件名> ON ……
例3-1: 对学生表按学号建索引, 生成索引文件SYXH SQL语句: CREATE INDEX SYXH ON STUDENT(Sno) 显示的结果:记录按学号的升序(由小到大)排列。
二、索引的打开
SQL语句: 用SELECT语句直接打开。
例3-2:在已打开学生表的情况下,再另打开索引文件SYXH, 显示 全部学生的记录
SQL语句: SELECT * FROM STUDENT WITH(INDEX=SYXH)
三、索引的更新
修改表记录时,只要索引是打开的,系统就会自动修改索引,否则,
就要用重新索引命令修改。
SQL语句: DBCC SHOWCONTIG, DBCC DBREINDEX 四、索引的关闭
不再打开就是关闭。
五、索引的删除
首先要关闭索引,然后才能删除索引文件。 SQL语句: DROP INDEX 主表名.<索引名>
例: 删除已建的SYXH
SQL语句: DROP INDEX STUDENT.SYXH 六、数据表记录的排序
6
排序:是对记录按某些字段值重新排列顺序,生成新的数据表文件。 SQL语句: SELECT … FROM … WHERE … ORDER BY … 例3-3:对学生表按学生年龄降序排序,生成排序文件STS1
SQL语句: SELECT * INTO STS1 FROM STUDENT ORDER BY Sage DESC 七、数据表数据的检索
检索:只能在索引过的数据表中查找数据。 SQL语句:SELECT … FROM … WHERE …
例3-4:对学生表已按学号建过索引,检索学号为95002的学生的记录, 并显示出来
SQL语句: SELECT * FROM STUDENT WITH (INDEX=SYXH) WHERE Sno=’95002’ 八、数据表数据的查询
查询:不依赖索引,可以直接在数据表中查找数据。 SQL语句:SELECT … FROM … WHERE …
例3-5: 在学生表中,找出计算机系的全部学生,并显示 SQL语句: SELECT * FROM STUDENT WHERE Sdept=’CS’
7
实验四 数据计算与多数据表的操作
实验目的
掌握数据表的计算功能与对多个数据表的操作。
实验内容
1、数据表记录个数的统计。 2、数据表数据的求和。 3、数据表数据的求平均值。 4、数据表数据的汇总。 5、多工作区的选择。
6、两个表之间的数据更新。
7、两个表(主表与多个从表)之间的关联。 8、两个表之间的连接。
实验环境
SQL环境。
实验过程
一、数据表记录个数的统计
统计:对记录个数的计数,结果为非负整数(≥0)。 SQL语句: SELECT COUNT(*) FROM … WHERE … 例4-1: 统计学生表中数学系的学生人数
SQL语句: SELECT COUNT(*) FROM STUDENT WHERE Sdept=’MS’ 二、数据表数据的求和
求和:对数据表中记录数值型(N,F,I等)字段的值求代数和。 SQL语句: SELECT SUM(*) FROM … WHERE …
例4-2: 在选课表中, 求出学号为95002的学生所选课的总成绩 SQL语句: SELECT SUM(*) FROM STUDENT WHERE Sno=’95002’ 三、数据表数据的求平均值
求平均值:对数据表中记录数值型(N,F,I等)字段的值求平均值。 SQL语句: SELECT AVG(*) FROM … WHERE …
例4-3: 在选课表中, 求出学号为95002的学生所选课的平均成绩 SQL语句: SELECT AVG(*) FROM STUDENT WHERE Sno=’95002’
四、数据表数据的汇总
汇总: 对数据表中记录数值型(N,F,I等)字段的值按某关键字的值求代
数和。其结果放在另外一个数据表中(汇总表)。
8
SQL语句: SELECT * INTO <新表文件名> FROM <表文件名> GROUP BY … 例4-4: 在选课表中, 按课程号汇总的成绩 Create(Cno char(4),avgg int);
SQL语句: SELECT Cno,avg(grade) INTO HZB1(Cno,avgg) FROM SC GROUP BY Cno 五、多工作区的选择 工作区: VFP系统中为同时使用多个数据表而开辟的内存缓冲区, 可用数字,
字母(只能表示前10个)来表示。
SQL语句: 在SELECT 语句中指出短语CROSS JOIN 可实现
六、两个表之间的数据更新
数据更新:就是用另一个工作区表的数据来修改当前工作区表的数据。 SQL语句: UPDATE <表名> SET … WHERE (子查询语句)
七、两个表(主表与多个从表)之间的关联
关联:又称为关系连接,逻辑连接,它是在主表与从表之间建立一种
逻辑关系,当主表记录指针移动时,从表也随之移动,这样有 利于相关修改与查询。
SQL语句:SELECT … FROM … WHERE … 八、两个表之间的连接
连接: 又叫物理连接, 它由两个表横向连接, 生成新的表。 SQL语句: SELECT * FROM … CROSS JOIN …
9
实验五 触发器与存储过程的设计
实验目的
掌握SQL中的存储过程的设计,了解触发器的内容。
实验内容
1、存储过程的设计。 2、触发器的实现。
实验环境
SQL环境。
实验过程
一、存储过程的设计
1、有关概念
存储过程是由SQL语句及控制流语句组成的集合。调用一个存储过程,可以一次性地执行过程中的所有语句。从这一点来说,它类似于程序。
存储过程由用户建立,它作为数据库的一个成分,存在于数据库中。 存储过程类似VFP中的过程(函数、子程序),它可以接受参数,也可以返回参数。存储过程可以被客户端、其他存储过程或触发器调用。
以SP_为前缀的存储过程是SQL提供的系统存储过程; 以XP_为前缀的存储过程是扩展的存储过程; 关联到表上的存储过程称为触发式存储过程。
2、存储过程的建立 语句格式:
CREATE PROCEDURE 存储过程名[;分组号]
[{ @参数名 数据类型 } [VARYING][=参数的默认值][OUTPUT][,…] [WITH {RECOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION}] [FOR REPLICATION] AS SQL语句[…] 3、存储过程的的执行 语句格式:
EXECUTE 过程名 [参数表] 4、修改存储过程 语句格式:
ALTER PROCEDURE 存储过程名 [;分组号]
[{ @参数名 数据类型 } [VARYING][=参数的默认值][OUTPUT][,…] [WITH {RECOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION}] [FOR REPLICATION] AS SQL语句[…] 5、删除存储过程 语句格式:
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《数据库原理》实验指导书--2011最新版 - 图文(2)在线全文阅读。
相关推荐: