《数据库原理及应用》数据操纵功能的实现与视图索引的创建实验报告
实验报告数据库实验系统(3篇)

第1篇一、实验目的1. 理解数据库系统的基本概念和原理。
2. 掌握数据库的创建、修改、删除和查询等基本操作。
3. 熟悉SQL语言,并能够运用SQL语言进行数据库的操作。
4. 了解数据库的安全性和完整性控制方法。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio Code三、实验内容1. 数据库的创建与修改2. 数据表的创建与修改3. 数据的插入、删除和查询4. 视图的创建与修改5. 存储过程的创建与调用6. 数据库的安全性与完整性控制四、实验步骤1. 数据库的创建与修改(1)创建数据库```sqlCREATE DATABASE mydb;``````sqlALTER DATABASE mydb CHARACTER SET utf8;```2. 数据表的创建与修改(1)创建数据表```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender CHAR(1));```(2)修改数据表```sqlALTER TABLE students ADD COLUMN email VARCHAR(50);```3. 数据的插入、删除和查询(1)插入数据```sqlINSERT INTO students (id, name, age, gender) VALUES (1, '张三', 20, '男');``````sqlDELETE FROM students WHERE id = 1; ```(3)查询数据```sqlSELECT FROM students;```4. 视图的创建与修改(1)创建视图```sqlCREATE VIEW student_info AS SELECT id, name, age, genderFROM students;```(2)修改视图```sqlALTER VIEW student_info ASSELECT id, name, age, gender, email FROM students;```5. 存储过程的创建与调用(1)创建存储过程```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE id = student_id;END //DELIMITER ;```(2)调用存储过程```sqlCALL get_student_info(1);```6. 数据库的安全性与完整性控制(1)设置用户权限```sqlGRANT SELECT, INSERT, UPDATE, DELETE ON mydb. TO 'username'@'localhost' IDENTIFIED BY 'password';```(2)设置数据完整性```sqlALTER TABLE students ADD CONSTRAINT chk_age CHECK (age >= 18);```五、实验结果与分析1. 数据库创建成功,字符集设置为utf8。
创建数据库表与索引---实验报告2

四、出现的问题及解决方案
1、通过对本次实验主要学习了如何用企业管理器和SQL语句两种方法创建“学生档案表”“课程信息表”、“教学任务表”等6张数据表,并对创建好的表进行修改以及在表上创建索引,但后面对于要用SQL语句创建“课程信息表”、“教学任务表”等数据表却很有难度,所以后来只选择了用企业管理器直接创建;
实验要求:
1、在已经建立的数据库中创建表;
2、了解表与表之间的逻辑依赖关系;
3、修改表结构;
4、建立索引。
二、实验环境
Microsoft SQL Server 2000
三、实验内容及完成情况
3_4_1在“教学管理”数据库中使用Transact—SQL命令创建表
create table学生档案
(学号char(8)primary key check(学号like('[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')),
创建一个名为“学生成绩表”的表
3_4_3修改表结构
alter table学生档案
alter column姓名varchar(8)
alter table学生成绩表
add总成绩real default null
alter table学生成绩表
add constraint shuliang1 check(平时成绩>=0 and平时成绩<=100)
r(8),默认为空值
alter table教学任务表
add教师姓名varchar(50) default null
运行结果如图所示:
3_5_5为“教学任务表”中的“年度”添加约束条件,使得年度大于2000年
数据库索引实验总结

数据库索引实验总结一、实验目的本次实验旨在通过实际操作,深入理解数据库索引的工作原理及优化方法。
通过创建、修改和删除索引,观察查询性能的变化,从而更好地在实际应用中选择和设计合适的索引。
二、实验内容1. 创建索引:在数据库表上创建不同类型的索引,如单列索引、复合索引等。
2. 索引查询性能测试:对带有索引的表进行查询,观察查询性能的提升。
3. 索引维护:更新、删除索引,观察其对查询性能的影响。
4. 索引优化:根据查询需求,优化索引设计,提高查询效率。
三、实验过程1. 创建索引:选择合适的表和列,创建单列索引和复合索引。
使用相应的SQL语句,例如`CREATE INDEX index_name ON table_name (column_name);`。
2. 查询性能测试:使用SELECT语句对带有索引的表进行查询,并记录查询时间。
与未带索引的表查询时间进行对比,观察查询性能的提升。
3. 索引维护:更新、删除索引,观察查询性能的变化。
例如,使用`ALTER TABLE table_name DROP INDEX index_name;`删除索引。
4. 索引优化:根据查询需求和数据量,调整索引设计。
例如,添加或删除列、调整索引类型等。
观察优化后的查询性能。
四、实验结果通过实验,我们发现创建索引可以有效提高查询性能。
单列索引适用于在某列上频繁进行查询的情况,而复合索引适用于多列同时进行查询的情况。
同时,我们也发现不合理的索引设计可能会降低性能,因此需要根据实际需求进行优化。
五、实验总结通过本次实验,我们深入了解了数据库索引的工作原理及优化方法。
在实际应用中,应根据查询需求和数据量合理选择和设计索引,以提高数据库的查询效率。
同时,需要注意避免过度索引和不合理的设计,以免降低数据库性能。
数据库视图实验报告

数据库视图实验报告一、实验目的本次实验的主要目的是深入理解数据库视图的概念、特点和用途,并通过实际操作掌握如何创建、修改和使用视图来优化数据库的查询和管理。
二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。
三、实验原理1、视图的定义视图是一种虚拟表,它是从一个或多个基本表(或视图)导出的表。
视图本身并不包含数据,而是根据定义从基本表中动态获取数据。
2、视图的优点提供数据的逻辑独立性:当基本表的结构发生变化时,只要视图的定义不变,用户通过视图所得到的数据仍然是一致的。
简化数据查询和操作:可以将复杂的查询定义为视图,使用户能够更方便地获取所需的数据。
增强数据安全性:可以通过视图限制用户对敏感数据的访问,只展示用户有权查看的部分数据。
四、实验内容与步骤1、创建视图使用以下语句创建一个名为`student_info_view` 的视图,该视图包含学生表`students` 中的学号、姓名、年龄和专业信息:```sqlCREATE VIEW student_info_view ASSELECT student_id, student_name, age, majorFROM students;```2、查询视图通过以下语句查询创建的视图:```sqlSELECT FROM student_info_view;```3、修改视图修改视图的定义,增加一个成绩列`grade` ,语句如下:```sqlALTER VIEW student_info_view ASSELECT student_id, student_name, age, major, gradeFROM students;```4、删除视图使用以下语句删除视图:```sqlDROP VIEW student_info_view;```五、实验结果与分析1、创建视图成功后,通过查询视图能够获取到预期的学生信息,证明视图的定义和数据提取是正确的。
索引和视图实验报告

7-1编程在teaching 数据库中的student 表的sname 列上创建唯一索引IDX_sname。
USE teachingGOCREATE UNIQUE INDEX IDX_sname ON student(sname)7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。
USE teachingIF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc')DROP INDEX student.scGOCREATE INDEX IDX_sc ON student(studentno,classno)7-3 重新组织teaching 数据库中student 表上的IDX_sc 索引。
USE teachingALTER INDEX IDX_sc ON dbo.student REORGANIZE7-4 重新生成teaching 数据库中student 表上的IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。
USE teachingALTER INDEX IDX_sname ON dbo.studentREBUILD WITH(PAD_INDEX =ON,FILLFACTOR= 80,SORT_IN_TEMPDB =ON)7-5 重新生成teaching 数据库中student 表上的C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。
USE teachingGOCREATE UNIQUE CLUSTERED INDEX C_studentnoON dbo.student(studentno)WITH(PAD_INDEX =ON,FILLFACTOR= 70,DROP_EXISTING =ON)7-6 删除teaching 数据库中student 表上的聚集索引C_studentno 和非聚集索引UC_classno。
数据库SQL视图的创建及使用实验报告(共5篇)[修改版]
![数据库SQL视图的创建及使用实验报告(共5篇)[修改版]](https://img.taocdn.com/s3/m/caaefa23580102020740be1e650e52ea5518ce3e.png)
第一篇:数据库SQL 视图的创建及使用实验报告《数据库基础》实验报告班级__计算机111__学号__xxxxxxxx__姓名__xxx___完成日期____6.20___实验室__理工楼310_ 指导老师xxx成绩____100______实验四、视图的创建及使用(一)实验目的(1)加深对视图的理解。
(2)掌握使用管理工具创建和使用视图的方法。
(3)掌握使用SQL创建和使用视图的方法。
(二)实验内容(1)使用“图书借阅”数据库,在管理工具中创建视图“借阅_计算机图书”,包含借阅类别为“计算机”的图书的信息:(读者编号,姓名,书号,书名,借阅日期)。
(2)直接使用SQL定义(1)中要求的视图并对其进行查询。
(3)在管理工具中建立各类视图(如单表视图、多表视图、分组视图、基于视图的视图等)。
(4)尝试使用insert、update、delete更新视图。
(三)实验具体步骤(1)使用“图书借阅”数据库,在管理工具中创建视图“借阅_计算机图书”,包含借阅类别为“计算机”的图书的信息(读者编号,姓名,书号,书名,借阅日期)。
create view 借阅_计算机图书(Duno,Duname,Shuno,Shuname,JYtime)asselect Duzhe.Duno,Duname,Tushu.Shuno,Shuname, JYtime from Tushu,Duzhe,Jieyue whereDuzhe.Duno=Jieyue.Duno and Tushu.Shuno,=Jieyue.Shuno and Liebie='计算机'(2)直接使用SQL定义(1)中要求的视图并对其进行查询。
select * from 借阅_计算机图书(3)在管理工具中建立各类视图用管理工具建立:在管理工具中,打开图书借阅数据库,右击视图,新建视图,然后依照要求建立各种视图。
《数据库基础》实验报告SQL语句:create view 单表视图asselect Shuname,Shuno,Zuozhe from Tushucreate view 多表视图asselect Shuname,Shuno,Zuozhefrom Tushu,Jieyuewhere Tushu.Shuno,=Jieyue.Shunocreate view 分组视图(Shuno,Duno)asselect Shuno,Duno from Jieyue group by Shunocreate view 基于视图的视图asselect Duno,Duname,Danwei from 单表视图where Sex = '男'(4)尝试使用insert、update、delete更新视图。
数据库原理实验报告视图的创建和管理

天津商业大学学生实验报告开课实验室: 403 机房开课时间 2014年 3月 24日实验报告 2014年5月 6日一、实验目的通过实验,使学生深刻理解数据库中有关视图的各种概念,熟练使用SQL语句来创建所需要的视图,对视图进行查询等操作。
二、实验内容1、利用SQL SERVER管理平台创建、查看和删除视图。
2、利用SQL语句创建、查询和删除数据库视图。
三、实验要求本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。
开始实验前,必须进行预习,实验过程中,先集中由老师进行具体要求和注意事项的讲解,然后各自独立在机器上完成实验。
实验过程中出现问题,在实验指导老师帮助下解决。
四、实验准备复习视图的概念,写出实验中创建视图对象的SQL语句。
五、实验原理、方法和手段1、创建视图的基本操作1)启动SQL SERVER管理平台,选择要创建视图的数据库文件夹“学生管理”数据库,选择其中的“视图”对象,单击鼠标右键。
2)选择“新建视图”命令,打开SQL SERVER视图设计窗口。
创建一张选修了3号课程成绩在70分以上的学生信息视图。
3)打开“添加表”窗口,添加学生关系表和成绩表。
4)在“视图建立”窗口,选择“学生”表中的学号和姓名,“成绩”表中的课程号和成绩,作为视图的显示列。
设置视图中各属性列的名称。
5)单击工具栏“执行”按钮,完成视图的创建。
2、查看和修改视图视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在企业管理器中对它进行修改。
3、删除视图删除视图的方法是:首先要在企业管理器中,将鼠标指针指向数据库中的视图文件夹,单击右键。
在随后出现的弹出菜单中,选择“删除”项,会出现删除视图对话框。
选中欲删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。
六、实验步骤1、利用SQL SERVER管理平台创建以下视图。
1)创建一个计算机系学生信息的视图VIEW1,在实验报告中给出操作步骤和执行视图的结果。
《数据库原理及应用》实验报告 创建数据库和表

《数据库原理及应用》实验报告创建数据库和表题目:创建数据库和表学生姓名:XXXX1(《数据库原理及应用》实验报告一、实验目的在了解SQL Server 数据库的逻辑结构,物理结构,基本数据类型,以及表的结构特点的基础上,学会在“对象资源管理器”中创建数据库和表,重点学会使用T-SQL语句创建数据库和表。
二、实验内容按照题目要求创建一数据库,并按要求在该数据库内创建相应数据表。
在创建过程中需分别使用界面方式创建和命令方式创建。
实验题目创建用于企业管理的员工管理数据库YGGL,其逻辑文件初始大小10MB,最大50MB,自动增长,按5%比例增长,日志文件初始大小2MB,最大5MB,按1MB增长,数据库和事务日志的逻辑文件名和物理文件名采用缺省值,另在该数据库内创建3个数据表,Employees表,Departments表,Salary表,具体表结构见课本P-283页所给出三个表格。
实验准备首先明确创建数据库的用户必须是系统管理员或者是被授予使用CREATEDATABASE语句的用户;其次创建过程中必须确定数据库名,所用者,数据库大小和存储其文件;最后根据表的结构按要求创建表;三、实验程序使用T-SQL语句创建数据库YGGL:CREATE DATABASE YGGL ON (NAME='YGGL_Data',FILENAME='C:\\Program Files\\Microsoft SQLServer\\MSSQL.1\\MSSQL\\Data\\YGGL.mdf', SIZE=10MB, MAXSIZE=50MB, FILEGROWTH=10% ) LOG ON (NAME='YGGL_Log',FILENAME='C:\\Program Files\\Microsoft SQLServer\\MSSQL.1\\MSSQL\\Data\\YGGL_Log.ldf', SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=1MB ) GO使用T-SQL语句创建Employees表:USE YGGL GOCREATE TABLE Employees( EmployeeID char(6)NOT NULL PRIMARY KEY, Name char(10)NOT NULL, Education char(4)NOT NULL, Birthday datetime NOT NULL, Sex bit NOT NULL DEFAULT 1,2WorkYear tinyint NULL, Address varchar(40)NULL, PhoneNumberchar(12)NULL, DepartmentID char(3)NOT NULL, ) GO使用T-SQL语句创建Departments表:USE YGGL GOCREATE TABLE Departments( DepartmentID char(3)NOT NULL PRIMARY KEY, DepartmentName char(20)NOT NULL, Note char(100)NULL ) GO使用T-SQL语句创建Salary表:USE YGGL GOCREATE TABLE Salary( EmployeeID char(6)NOT NULL PRIMARY KEY, InCome float NOT NULL, OutCome float NOT NULL ) GO四、实验结果实验通过编写程序最终获得一新的数据库以及在该库内的三个空表如下图:Employees表Departments表Salary表3五、实验总结这学期是第一次接触SQL Server,在最初的学习过程中对SQL Server环境不是很熟悉,在课堂上学习了有关它的基本的数据类型,空值的概念,数据库的基本概念以及和数据表的相关知识,在未进行上机实验之前主要对理论知识进行掌握,但感觉不是很明白,当开始进行上机实验后,按照老师课上讲的基本操作在结合课本的相关知识,能在老师和同学的帮助下完成实验内容,我感觉很充实。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理及应用》数据操纵功能的实现与视图索引的创建实验报告
三、实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)
1.将学生、课程、选课三张表中的全部记录复制到student、course、xuanke三张表中;select*into student from学生
select*from student
select*into course from课程
select*from course
select*into xuanke from选课
select*from xuanke
2.用SQL语句将适量数据分别插入student、course、xuanke三张表中;
insert into student values('012','陈阳','20','男','数学');
insert into student values('013','李东','20','男','计算机');
insert into course values('c06 ','网店推广','网店运营');
insert into course values('c07','网店美工','网店运营');
insert into xuanke values('016','c06','90');
insert into xuanke values('017','c07','85');
3.将平均成绩低于70的学生信息存放在低于70分平均成绩表中;
select*into低于70分平均成绩from学生
where学号=some
(select学号from选课
group by学号
having avg(成绩)<70)
4.借助student、course、xuanke三张表,删除“计算机”系全体学生的选课记录及学生记录;delete from xuanke
where学号in(
select学号from student
where所在系='计算机')
delete from student
where学号in(
select学号from student
where所在系='计算机')
5.借助student、course、xuanke三张表,删除学号为“001”的相关信息(包括选课信息及
学生信息);
delete from xuanke
where学号in(
select学号from student
where学号='001')
delete from student
where学号in(
select学号from student
where学号='001')
6.将student表中学号为“002”的学生的学号修改为“S002”;
update student set学号='S002'
where学号='S002'
7.把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S_Grade(Sno,AVG_Grade);create table S_Grade
(Sno char(5),AVG_Grade int)
insert into S_Grade
select学号,avg(成绩)平均成绩from xuanke
group by学号
having avg(成绩)>'80'and学号in(
select学号from student
where性别='男')
8.把选修了课程名为“数据结构”的学生的成绩提高10%;
update xuanke set成绩=成绩*1.1
where课程号in(
select课程号from course
where课程名='数据结构')
9.把选修了“c02”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;update xuanke set成绩=成绩*1.05
where课程号='C02'and成绩<(
select avg(成绩)from xuanke
where课程号='C02')
10.把选修了“c02”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉;delete from选课
where课程号='C02'and成绩<
(select avg(成绩)from选课
where课程号='C02')
11.求C01和C04课程成绩为80分以上的学生的学号及姓名;
select姓名,学生.学号from学生,选课
where学生.学号=选课.学号and课程号in('C01','C04')
and成绩>80
12.求选修了C1课程又选修了C2课程的学生的学号;
select学号from选课
where课程号='C01'and学号in
(select学号from选课
where课程号='C02')
13.求每个系的平均年龄,并要求将结果存入数据库中;
create table系平均年龄
(系别varchar(20),平均年龄int)
insert into系平均年龄
select所在系,avg(年龄)from学生
group by所在系
select*from系平均年龄
14.建立“计算机系”的学生基本情况视图ies_student_view,该视图包括计算机系所有学生
的相关信息;
create view ies_student_view
as
select*from学生
where所在系='计算机'
15.执行ies_student_view视图并观察结果;
select*from ies_student_view
16.建立课程C01(课编号)的学生名册的视图,该名册包括学生的学号、姓名、所在系名称
和这门课的成绩;并查询结果;
go
create view学生名册
as
select学生.学号,姓名,所在系,成绩from学生,选课
where学生.学号=选课.学号and课程号='C01'
go
select*from学生名册
17.建立统计不及格情况的视图,列出不及格学生的学号、姓名和不及格的课程代码。
执行视
图并观察结果;
create view统计不及格情况
as
select学生.学号,姓名,课程号from学生,选课
where学生.学号=选课.学号and学生.学号in(
select学号from选课
where成绩<'60')
go
select*from统计不及格情况
18.修改视图ies_student_view,使该视图包括所有学生的学号、姓名、所在系。
执行
ies_student_view视图并观察结果;
alter view ies_student_view
as
select学生.学号,姓名,所在系from学生
go
select*from ies_student_view
19.删除视图ies_student_view。
并查询结果;
go
drop view ies_student_view
20.在student_course表(学生选课表)的学生学号(s_no)列上创建索引sc_sno_index;
通过SQL语句查看运行结果。
create index sc_sno_index on选课(学号)
exec sp_helpindex选课
四、实验总结:(实验中遇到的问题及解决方法,心得体会等)
在创建视图时会出现错误,没有掌握视图的机制,在编写时操作语言编写会出现错误。
不会的视图表的操作语言和同学讨论学习。
向老师询问关于视图的基本操作,改正在编写过程中遇到的错误。
在本次实验中,对数据库表的操作语言掌握的更熟悉了,了解到了视图是由数据库的基本表中选出来的数据组成的逻辑窗口,是基于表的数据组成,视图是一个虚表。