版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告课 程: 院 (部): 专 业: 班 级: 学生姓名: 学 号: 指导教师: 完成时间: 实验一 认识DBMS系统一、实验目的1通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。2熟悉对DBMS的操作3搭建今后实验的平台二、实验原理 企业管理器是SQL Server中最主要的工具,使用它基本上可完成SQL Server的所有管理操作,如数据库的创建和管理、数据表的创建和管理、数据库安全管理等,在本书第五课中将对其作详细介绍。查询分析器主要用于创建和执行SQL命令,以完成数据库的查询和管理工作。查询分析器和企业管理器是SQL Server的两大主要工具。服务管理器主要
2、用于启动、暂停、停止和检查本地服务的状态。SQL Server提供如下服务:SQL Server服务:该服务提供管理服务器中的所有数据库、执行T-SQL程序、执行存储过程、处理分布式查询等服务。必须启动该服务,用户才能通过客户端访问SQL Server服务器中的数据。SQL Server Agent服务:该服务用于执行作业、监视SQL Server以及激发警报。SQL Server Agent允许自动执行某些管理任务的服务,所以必须启动SQL Server Agent 服务,才能使本地或多服务器的管理任务自动运行。Microsoft Search服务:提供SQL Server全文检索功能。Di
3、stributed Transaction Coordinator服务:提供Microsoft分布式事务处理功能。MSSQL Server OLAP Service服务:支持Analysis Services的各项功能,该服务在安装了支持Analysis Services才有。 三、实验仪器和设备1. 计算机2. SQL Server 2000四、实验内容及步骤1在本地计算机上运行SQL Server2000任一版本(个人版、标准版、企业版)安装光盘,在机器上安装SQL Server2000软件,注意软件安装过程中的各安装步骤及各个步骤的参数设置2SQL Server2000 DBMS软件安装
4、完毕后,启动SQL Server服务管理器如下图所示:3从桌面“开始/程序/Microsoft SQL Server/企业管理器”菜单启动SQL Server2000企业管理器如下图所示:4打开SQL Server 2000 企业管理器后,进一步认识其操作界面,熟悉其操作环境和操作功能如下图所示:1 在SQL Server2000企业管理器中进行“附加数据库”操作如下图所示:2 从桌面“开始/程序/Microsoft SQL Server/查询分析器”菜单启动“SQL查询分析器”如下图所示:3 打开SQL查询分析器后,进一步认识其操作界面,熟悉其操作环境和操作功,为今后的数据查询操作实验作准备
5、如下图所示:七、实验总结:Microsoft SQL Server 2000是一个数据定义、数据管理、数据控制功能极强的关系数据库管理系统(RDBMS)软件。实验完成后,请同学们总结一下该关系数据库管理系统软件的主要功能及特点,比较一下其与你所使用过的或所熟悉的其它关系数据库管理系统的异同。 :实验二:交互式SQL语言题目:实验二:交互式SQL语言姓名: 日期:2012-03-24实验环境:软件环境:Windows 7 Ultimate SP1 (x86)SQL Server 2008 Express硬件环境:CPU:Intel Core i3 520 (2.93 GHz)内存:2G硬盘:50
6、0G 实验内容与完成情况:一、数据定义(一)、基本表操作1、建立基本表(1)创建学生表 Student,由以下属性组成:学号 SNO(INT型,主码),姓名 SNAME(CHAR型,长度为8,非空唯一),性别 SEX(CHAR型,长度为2),所在系 DEPTNO(INT型)。CREATE TABLE Student(SNOINTPRIMARY KEY,SNAMECHAR(8)NOT NULL UNIQUE,SEXCHAR(2),DEPTNOINT);(2)创建课程表 Course,由以下属性组成:课程号 CNO(INT型),课程名 CNAME(CHAR型,长度为20,非空),授课教师编号 TN
7、O(INT型),学分 CREDIT(INT型)。其中(CNO,TNO)为主码。CREATE TABLE Course(CNOINT,CNAMECHAR(20)NOT NULL,TNOINT,CREDITINT,PRIMARY KEY(CNO,TNO);(3)创建学生选课表 SC,由以下属性组成:学号SNO,课程CNO,成绩GRADE。所有属性均为 INT型,其中(SNO,CNO)为主码。CREATE TABLE SC(SNOINT,CNOINT,GRADEINT,PRIMARY KEY(SNO,CNO);(4)创建教师表 Teacher,由以下属性组成:教师编号 TNO(INT型,主码),教师
8、姓名 TNAME(CHAR型,长度为 8,非空),所在系 DEPTNO(INT型)。CREATE TABLE Teacher(TNOINTPRIMARY KEY,TNAMECHAR(8)NOT NULL,DEPTNOINT);(5)创建系表 Dept,由以下属性:系号 DEPTNO(INT型,主码),系名 DNAME(CHAR型,长度为 20,非空)。CREATE TABLE Dept(DEPTNOINTPRIMARY KEY,DNAMECHAR(20)NOT NULL);2、修改基本表(1)在 Student 表中加入属性 AGE(INT型)。ALTER TABLE Student ADD
9、AGE INT;(2)将 Student 表中的属性 SAGE 类型改为 SMALLINT 型。ALTER TABLE Student ALTER COLUMN SAGE SMALLINT;3、删除基本表(1)在所有操作结束后删除 STUDENT 表。DROP TABLE Student;(2)在所有操作结束后删除 COURSE 表。DROP TABLE Course;(3)在所有操作结束后删除 SC 表。DROP TABLE SC;(4)在所有操作结束后删除 TEACHER 表。DROP TABLE Teacher;(5)在所有操作结束后删除 DEPT 表。DROP TABLE Dept;(
10、二)索引操作1、建立索引(1)在 Student 表上建立关于 SNO 的唯一索引。CREATE UNIQUE INDEX stusno ON Student(SNO);(2)在 Course 表上建立关于 CNO 升序的唯一索引。CREATE UNIQUE INDEX coucno ON Course(CNO);2、删除索引(1)删除 Student 表上的索引 stusno。DROP INDEX stusno;(2)删除 Course 表上的索引 coucno。DROP INDEX coucno;(三)视图操作1、建立视图在插入数据的 Student 基本表上为计算机科学与技术系的学生记录
11、建立一个视图 CS_STUDENT。CREATE VIEW CS_STUDENT ASSELECT * FROM StudentWHERE DEPTNO = (SELECT DEPTNO FROM DeptWHERE DNAME = 计算机科学与技术) WITH CHECK OPTION;2、删除视图在操作结束后删除视图 CS_STUDENT。DROP VIEW CS_STUDENT;二、数据操作(一)更新操作1、插入数据(1)向 STUDENT 表插入下列数据:1001,张天,男,10,201002,李兰,女,10,211003,陈铭,男,10,211004,刘茜,女,20,211005,马
12、朝阳,男,20,22INSERT INTO Student VALUES(1001,张天,男,10,20);INSERT INTO Student VALUES(1002,李兰,女,10,21);INSERT INTO Student VALUES(1003,陈铭,男,10,21);INSERT INTO Student VALUES(1004,刘茜,女,20,21);INSERT INTO Student VALUES(1005,马朝阳,男 ,20,22);(2)向 COURSE 表插入下列数据:1,数据结构,101,42,数据库,102,43,离散数学,103,44,C 语言程序设计,10
13、1,2INSERT INTO Course VALUES(1,数据结构,101,4);INSERT INTO Course VALUES(2,数据库,102,4);INSERT INTO Course VALUES(3,离散数学,103,4);INSERT INTO Course VALUES(4,C语言程序设计,101,2);(3)向 SC 表插入下列数据:1001,1,801001,2,851001,3,781002,1,781002,2,821002,3,861003,1,921003,3,901004,1,871004,4,901005,1,851005,4,92INSERT INTO
14、 SC VALUES(1001,1,80);INSERT INTO SC VALUES(1001,2,85);INSERT INTO SC VALUES(1001,3,78);INSERT INTO SC VALUES(1002,1,78);INSERT INTO SC VALUES(1002,2,82);INSERT INTO SC VALUES(1002,3,86);INSERT INTO SC VALUES(1003,1,92);INSERT INTO SC VALUES(1003,3,90);INSERT INTO SC VALUES(1004,1,87);INSERT INTO SC
15、 VALUES(1004,4,90);INSERT INTO SC VALUES(1005,1,85);INSERT INTO SC VALUES(1005,4,92);(4)向 TEACHER 表插入下列数据:101,张星,10102,李珊,10103,赵天应,10104,刘田, 20INSERT INTO Teacher VALUES(101,张星,10);INSERT INTO Teacher VALUES(102,李珊,10);INSERT INTO Teacher VALUES(103,赵天应,10);INSERT INTO Teacher VALUES(104,刘田, 20);(5
16、)向 DEPT 表插入下列数据:10,计算机科学与技术20,信息INSERT INTO Dept V ALUES(10,计算机科学与技术);INSERT INTO Dept VALUES(20,信息); .2、修改数据将张星老师数据结构课的学生成绩全部加 2 分UPDATE SC SET GRADE = GRADE + 2 WHERE CNO IN (SELECT CNO FROM Course,TeacherWHERE Course.TNO = Teacher.TNOAND Teacher.TNAME=张星);3、删除数据删除马朝阳同学的所有选课记录DELETE FROM SC WHERE
17、SNO IN (SELECT SNO FROM Student WHERE SNAME = 马朝阳);(二)查询操作1、单表查询(1)查询所有学生的信息。SELECT * FROM Student;结果:1001张天男 10201002李兰女 10211003陈铭男 10211004刘茜女 20211005马朝阳男2022(2)查询所有女生的姓名。SELECT SNAME FROM Student WHERE SEX = 女;结果:李兰刘茜(3)查询成绩在 80 到 89 之间的所有学生选课记录,查询结果按成绩的降序排列。SELECT * FROM SC WHERE GRADE = 80 AN
18、D GRADE = 89 ORDER BY GRADE DESC;结果:100418710023861001285100518510022821001180(4)查询各个系的学生人数。SELECT DEPTNO,count(SNO) FROM Student GROUP BY DEPTNO;结果:1032022、连接查询查询信息系年龄在 21 岁以下(含 21 岁)的女生姓名及其年龄。SELECT SNAME, AGE FROM Student, Dept WHERE Student.DEPTNO = Dept.DEPTNOAND Dept.DNAME = 信息 AND AGE = 21 AN
19、D SEX = 女;结果:刘茜213、嵌套查询(1)查询修课总学分在 10 学分以下的学生姓名。SELECT SNAME FROM Student WHERE SNO IN (SELECT SNO FROM SC,Course WHERE SC.CNO = Course.CNOGROUP BY SNO HAVING SUM(CREDIT) 18 and 年龄800),部门号char(50),-(b)定义参照完整性foreign key(职工号) references Worker(职工号) )-Section(部门号,名称,经理名,地址,电话号码)create table Section (-
20、定义部门号为部门表的主码部门号char(10) primary key,-(f)部门名称不能为空且不能重复,定义约束名为UK_dName;名称char(10)not nullconstraint UK_dName unique,经理名char(10),地址char(50),电话char(15),-(b)定义参照完整性foreign key(部门号) references Section(部门号) );go-()使用SQL语言分别向两个表中插入行记录,验证上面的各种约束条件;-验证部门名称不能为空且不能重复,定义约束名为UK_dName;insert into Section values(a0
21、01,市场部门,李永,北工,);insert into Section values(a002,营销部门,李刚,北工,);insert into Section values(a003,营销部门,李忠,北工,);insert into Section values(a003,null,李吧,北工,);insert into Worker values(a,王明,20,市场营销员,2000,a001);insert into Worker values(a,李村,29,市场营销员,2000,a001);-验证职工的工资不能为空,且不能小于;insert into Worker values(a,
22、罗杰,19,销售员,null,a002);insert into Worker values(a,李红,24,销售员,700,a002);-验证职工的姓名不能为空;insert into Worker values(a,null,32,经理,5000,a002);-验证职工的年龄不能小于岁,并且不能超过岁;insert into Worker values(a,李永,61,经理,5000,a001);insert into Worker values(a,黄鹂,17,副经理,4500,a002);-查询部门表和职工表的数据-()将职工的年龄改为不能小于岁,并且不能大于岁;alter table
23、 Workerdrop constraint w_age;alter table Worker add constraint w_age check(年龄16 and 年龄65)-验证职工年龄不能小于岁,并且不能大于岁insert into Worker values(a,李芳,15,副经理,4500,a002);insert into Worker values(a,李姓,66,副经理,4500,a002);-()定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModiDate);在-职工表上定义修改和插入数据的触发器,-定义表create table tb
24、l_Emp_Log(id int identity primary key,eNo char(20),eSalary money,Username char(20),ModiDate Datetime)-定义插入数据的触发器create trigger insert_Emp on Workerafter insertas begin insert into tbl_Emp_Logselect 职工号, 工资, User_name(), getDate() from Inserted;enddrop trigger insert_Emp-验证触发器insert into Worker value
25、s(a,周涛,29,市场营销员,2000,a001);insert into Worker values(a,霍利,28,市场营销员,2000,a001);select * from tbl_Emp_Log;drop table tbl_Emp_Log;-定义修改工资的触发器create trigger update_Emp on Workerafter updateas if update(工资)begin declare eSeleryOld money,eSeletyNew moneyselect eSeleryOld=工资from Deletedselect eSeletyNew=工资
26、from Insertedif(eSeleryOldeSeletyNew)insert into tbl_Emp_Log select 职工号, 工资, User_name(), getDate() from Inserted;enddrop trigger update_Emp-验证触发器insert into Worker values(a,莉莉,29,营销员,3500,a001);insert into Worker values(a,李丽,28,市场营销员,4500,a001);update Worker set 工资=5500 where 职工号=a,update Worker se
27、t 工资=8500 where 职工号=a,select * from tbl_Emp_Log;drop table tbl_Emp_Log;select *from Worker;select *from Section;-删除表drop table Worker;drop table Section;use mastergo -删除数据库workdrop database work; 4.3 出现的问题:写触发器的时候按照书本的SQL语句来写出现错误。4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题):因为书上用的数据库软件和我们现在用的软件不一样所以按老师上课教的稍微改动一
28、下就可以运行了实验五 通过嵌入式 SQL 访问数据库实验内容:编写嵌入式 C 程序,编程实现了对“学生课程数据库”的访问和操作:对 Student 表中的年龄进行更新。系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。一. 实验环境介绍。实验五是在之前完成的实验一的基础上进行的。系统配置为:CPU: P3 800内存:512MB硬盘:30G软件系统:WINDOWS 2000ADVANCED SERVER。在实验一中,我们已经成功安装了 KingbaseES V4.1,形成本实验所需要的环境。其中安装路径为 C:Program Files 目录下。二.编写含嵌入式 C 程序
29、test,扩展名为.pc。EXEC SQL BEGIN DECLARE SECTION; /*说明主变量 deptname,HSno,HSname,Char deptname20; *HSsex,HSage,NEWAGE。*/Char HSno9;Char HSname20;Char HSsex2;Int HSage;Int NEWAGE;EXEC SQL END DECLARE SECTION; /*声明部分结束*/long SQLCODE;EXEC SQL INCLUDE sqlca; /*定义 SQL 通信区*/int main(void)intcount = 0;charyn;/*变量
30、 yn 代表 yes 或者 no*/printf(Please choose the department name(CS/MA/IS): ); /*为主变量 deptname 赋值*/scanf(%s, &deptname);EXEC SQL CONNECT TO 学生课程数据库localhost:54321 USERSYSTEM/MANAGER;/*连接数据库 TEST*/EXEC SQL DECLARE SX CURSOR FOR/*说明游标,为查询和更新做准备*/SELECT Sno, Sname, Ssex, SageFROM StudentWHERE SDept = :deptna
31、me;EXEC SQL OPEN SX;/*打开游标。*/for ( ; ; )/*用循环结构逐条处理结果集的记录*/EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;/*游标向前推进一行,取结果送主变量*/if (sqlca.sqlcode != 0)break;/*其中参数 0 代表 SUCCESS*/if(count+ = 0)/*如果是第一行的话,先打出行头*/printf(n%-10s %-20s %-10s %-10sn, Sno, Sname, Ssex, Sage);printf(%-10s %-20s %-10s %-1
32、0dn, HSno, HSname, HSsex, HSage);printf(UPDATE AGE(y/n)?);doscanf(%c,&yn);while(yn != N & yn != n & yn != Y & yn != y);if(yn = y | yn = Y)/*如果选择修改的操作。*/printf(INPUT NEW AGE:);scanf(%d,&NEWAGE);/*用户输入新年龄,存放在主变量EXEC SQL UPDATE Student*NEWAGE 中。*/SET Sage = :NEWAGEWHERE CURRENT OF SX;/*对 Student 表中的年龄进
33、行更新。*/EXEC SQL CLOSE SX;/*关闭游标。*/EXEC SQL COMMIT WORK;/*提交更新。*/EXEC SQL DISCONNECT 学生课程数据库; /*断开连接。*/三.对 C 程序进行处理,生成可执行文件。本实验是在 windows 环境下对 C 程序进行预编译和编译、链接的。没有给出 Linux 环境下的编译过程,读者如果有兴趣,可以自行实验。1. 预编译。本实验中,test.pc 存放在 C:Program FilesBasesoftKingbaseES4.1bin 目录下,与预处理程序 esqlc 存放在同一目录下,这样做的目的是便于之后的三步处理过
34、程,不需要特别指定存放路径。如果存放在其他目录下,只需要在文件名前指定完整路径即可。(1)“开始”“运行”,输入 cmd 命令,进入命令行编辑器。(2)命令行编辑器默认的路径为 C:Documents and Settings用户名,我们首先需要转到预处理程序 esqlc 所在的目录下。键入:cd C:Program FilesBasesoftKingbaseES4.1bin。(3)进行预编译。esqlc -I C:Program FilesBasesoftKingbaseES4.1include -o test.c test.pc(4)如果预编译成功,则自动生成一个.c 文件。结果提示可能会
35、有一个“WARNING:EXEC SQL SQLCA: SQL language extension”,但对结果不造成影响。2. 编译和链接。经过预处理之后,生成了标准的 C 语言程序 test.c,就可以使用标准的 C 语言编译器进行编译了。本实验直接使用命令行的方式对该 C 程序进行编译和链接。(1)编译。在编译过程中需要使用到 cl.exe 程序,cl.exe 是 Visual C+ 的编译器名称。如果安装Visual C+在 C:Program FilesMicrosoft Visual StudioVC98 下,则其编译器 cl.exe 所在路径应该是 C:Program Files
36、Microsoft Visual StudioVC98Bin。在 cl 后面可以加上各类参数命令,进行不同的操作。本实验中使用到的“/c”命令是表示只编译,不链接,相当于在 Visual C+6.0 中,选择Build菜单下的Compile。编译命令如下:cl /c /DWIN32 /IC:Program FilesBasesoftKingbaseES4.1include /Fotest.obj test.c(2)链接。由于在编译时我们选用“/c”命令只对 test.c 进行了编译并没有进行链接,而该 C 程序执行需要链接 esql.lib 函数库,所以在链接时我们需要指定这个库文件的路径。链接命令如下:link /out:test.exe test C:Program FilesBasesoftKingbaseES4.1libesql.lib最后生成可执行文件 test.exe,即可实现具体功能。遇到的问题和解决方案:1. 在进行预编译时,键入命令 esqlc -i C:Program FilesBasesoftKingbaseES4.1include -otest.c test.pc 出错。答:这是由于大小写没有注意区分的原因。-I 的语法要求使用大写,而-o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国涡流泵行业渠道建设与销售网络优化报告
- 2026中国新能源汽车热管理部件市场现状及投资评估报告
- 2026深圳数据中心建设市场需求分析及投资评估研究报告
- 2026中国极限运动防护装备测试标准与国际认证对接障碍分析报告
- 2026商业广场物业管理行业市场分析及运营模式创新与行业竞争分析报告
- 2026中国水果蔬菜行业市场现状供需考察及产业发展策略评估
- 2026中国消费电子行业市场现状发展分析及投资评估规划分析研究报告
- 网站建设项目调研书模板
- 2026中国智能机器人协作工业市场需求分析及资金流向规划研究报告
- 2026青蛙农业科技发展政策支持与农产品全球市场开拓分析报告
- 2026年秋季学期每周国旗下讲话稿
- 医务人员参与学术讲课取酬的合规管理专家共识解读总结2026
- 九上语文《唐诗三百首》要点梳理
- 2026年版医疗器械经营监督管理办法试卷测试题及答案
- 2025-2026学年湖北省武汉市江岸区八年级上册期中物理试卷 含答案
- 2025年贵州黔南人力资源开发有限责任公司招聘劳务派遣制专职民兵教练员5人笔试备考试题及答案解析
- 《五粮浓香型白酒智能化酿造体系要求》编制说明
- 2026年及未来5年市场数据中国采购代理行业市场发展数据监测及投资战略咨询报告
- 2025年工厂化学品安全操作培训
- 2026年交通运输局招考面试题及答案
- 儿童喘息性疾病合理用药指南
评论
0/150
提交评论