数据库实验.docx
《数据库实验.docx》由会员分享,可在线阅读,更多相关《数据库实验.docx(17页珍藏版)》请在冰豆网上搜索。
数据库实验
实验一认识DBMS
实验目的:
通过对某个数据库管理系统的安装使用,初步了解DBMS的工作环境和系统构架。
实验要求:
熟悉DBMS的安装、配置及使用。
搭建今后实验的平台。
如SQLSERVER2008、MySQL5.6、Oracle11g。
实验内容:
一、下载安装程序包,可到MySQL官方网站下载
二、安装
双击下载的安装文件,然后使用默认选项安装即可,中间需要输入root用户的密码。
三、安装成功
1、出现WorkbenchGUI页面,安装成功,登录localinstanceMySQL56
实验二创建数据库与表
实验目的:
熟悉通过SQL对数据库进行操作。
实验要求:
使用SQL语句和可视化工具建立一个学生-课程数据库,了解数据库的基本数据类型、主键和外键,以及表的结构特点。
实验内容:
创建数据库
createDATABASESchool;
创建学生表
CreatetableStudent(snointegerprimarykey,snamevarchar(20),sageinteger,ssexvarchar
(2));
创建课程表
CreatetableCourse(cnointegerprimarykey,cnamevarchar(50),cteachervarchar(20));
创建选课表
CreatetableSC(snointeger,cnointeger,gradeinteger);
使用MySQLWorkbench连接数据库,在中间的编辑器输入SQL语句,点击上方的闪电按钮
执行SQL语句,会在下发的Output栏显示创建成功。
刷新左侧的SCHEMAS栏目,会发现school数据库创建成功,展开table会发现创建的3个表。
实验三表数据的基本查询、插入、修改和删除
实验目的:
使用SQL语句和可视化工具对数据进行插入、修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
通过本实验,要熟练掌握SELECT、INSERT、UPDATE、DELETE语句的语法和使用方法与数据的完整性。
实验内容:
1.插入数据
在Student表中插入下列数据:
200215121,李勇,20,男
200215122,刘晨,19,女
insertintostudent(sno,sname,sage,ssex)values('200215121','李勇',20,'男');
insertintostudent(sno,sname,sage,ssex)values('200215122','刘晨',19,'女');
在Course表中插入以下数据:
查询结果如下:
Select*fromstudent;
2.修改数据可以直接在查询出的表格内修改,然后点击Apply保存,也可以使用sql语句
updatestudentsetsage=20wheresno=200215122;
3.删除数据可以直接在查询出的表格选择一行,然后点击
删除,然后点击Apply保存,也可以使用sql语句
Deletefromstudentwheresno=200215122;
实验四数据的复杂查询和连接查询
实验目的:
数据查询时数据库中最基本的操作,也是使用最频繁的操作,因此必须掌握SQL的查询语句(SELECT语句)的使用方法。
实验要求:
本实验要求掌握表的数据条件查询、数据排序、函数和多表操作时数据连接查询的操作方法。
实验内容:
1.查询年龄大于19岁的女同学的姓名,按学号排序
selectsno,snamefromstudentwheressex='女'andsage>=19orderbysno;
2.连接查询
1)查询每个学生及其选修课程的情况。
Select*fromstudent,scwherestudent.sno=sc.sno;
2)查询有不及格课程的学生姓名及课程。
Selectsname,cnamefromstudentsinnerjoinscons.sno=sc.snoinnerjoincoursecono=owheresc.grade<60;
实验五触发器(可选)
实验目的:
学习触发器的使用,体会触发器执行的时机,加深对触发器功能和作用的理解。
实验要求:
在数据库中创建新增、修改、删除触发器,然后在相关的表上执行INSERT、UPDATE或DALETE语句,观察他们的执行结果。
实验内容:
添加学生选课数量字段um。
添加学生选课触发器,选课新增后该学生的选课数量字段加1,退选后该字段减1.
CREATETRIGGER`add_cname`AFTERINSERTON`sc`FOREACHROW
begin
updatestudentsetcnum=cnum+1wheresno=new.sno;
end;
CREATETRIGGER`add_cname`AFTERINSERTON`sc`FOREACHROW
begin
updatestudentsetcnum=cnum+1wheresno=new.sno;
end;
实验六数据库完整性
实验目的:
了解数据库系统中数据完整性控制的基本方法,熟练掌握常用CREATE或ALTER在创建或修改表时设置约束,验证数据库系统数据完整性控制。
实验要求:
结合school数据库中的各个表,设置相关的约束,要求包括主键约束、外键约束、唯一约束、检查约束、非空约束等,掌握各约束的定义方法。
设计一些示例数据,验证完整性检查机制。
实验内容:
修改sc主键为联合主键
ALTERTABLE`school`.`sc`
CHANGECOLUMN`cno``cno`INT(11)NOTNULL,
DROPPRIMARYKEY,
ADDPRIMARYKEY(`sno`,`cno`);
添加学生选课数量字段um。
ALTERTABLE`school`.`student`
ADDCOLUMN`cnum`INT;
修改学生选课字段为非空,默认为0
ALTERTABLE`school`.`student`
CHANGECOLUMN`cnum``cnum`INT(11)NOTNULLDEFAULT0;
添加学号外键
ALTERTABLE`school`.`sc`
ADDCONSTRAINT`student`
FOREIGNKEY(`sno`)
REFERENCES`school`.`student`(`sno`)
ONDELETENOACTION
ONUPDATENOACTION;
实验七数据库的权限管理
实验目的:
了解数据库系统中数据访问控制的基本方法,了解使用SSMS如何给用户授权,熟练掌握常用GRANT和REVOKE进行权限控制,验证数据库系统的访问控制。
实验要求:
创建新的数据库用户,对上一实验建立的表进行权限设置,检查数据库用户的权限,撤销用户权限。
实验内容:
1.创建用户用户名test,密码1234:
insertintomysql.user(Host,User,Password)values("localhost","test",password("1234"));
2.授权test用户拥有testDB数据库的所有权限
grantallprivilegesonschool.*totest@localhostidentifiedby'1234';
flushprivileges;//刷新系统权限表
3.指定select,update权限给test用户:
grantselect,updateonschool.*totest@localhost;
4.删除用户
DeleteFROMuserWhereUser='test'andHost='localhost';
5.revokeallprivilegesonschool.*fromtest@localhost;
实验八学生选课管理系统的设计与实现(可选)
实验目的:
通过实现一个简单的管理系统,熟悉数据库的使用方法并了解数据库在软件中的地位与作用。
实验要求:
使用任意一种编程语言(如Java、PHP)结合学生选课数据库实现一个管理系统,可以添加学生、课程数据、并选课打分并查询结果。
实验内容:
使用jsp+servlet建立一个选课的网页。
创建DynamicWebProject,项目名为School
复制MySQL安装目录下C:
\ProgramFiles(x86)\MySQL\ConnectorJ5.1.27/mysql-connector-java-5.1.27-bin.jar文件到项目的WebContent/WEB-INF/lib文件夹下
新建Servlet,名为Course
在doGet方法中添加
try{
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/school","root","123456");
Statementstatement=connection.createStatement();
ResultSetrs=statement.executeQuery("select*fromcourse");
Listlist=newArrayList();
while(rs.next()){
CourseModelc=newCourseModel();
c.setCno(rs.getInt("cno"));
c.setCname(rs.getString("cname"));
c.setCteacher(rs.getString("cteacher"));
list.add(c);
}
request.setAttribute("list",list);
rs.close();
connection.close();
}catch(Exceptione){
e.printStackTrace();
}
RequestDispatcherd=request.getRequestDispatcher("course.jsp");
d.forward(request,response);
新建Jsp,course.jsp
修改为
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@pageimport="com.school.CourseModel,java.util.*"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
CourseList课程编号 | 课程名 | 授课教师 |
---|
<%for(CourseModelc:
(List)request.getAttribute("list")){%>
<%=c.getCno()%> | <%=c.getCname()%> | <%=c.getCteacher()%> |
<%}%>
新建ClassCourseModel,修改为
packagecom.school;
publicclassCourseModel{
publicintgetCno(){
returncno;
}
publicvoidsetCno(intcno){
o=cno;
}
publicStringgetCname(){
returncname;
}
publicvoidsetCname(Stringcname){
ame=cname;
}
publicStringgetCteacher(){
returncteacher;
}
publicvoidsetCteacher(Stringcteacher){
this.cteacher=cteacher;
}
privateintcno;
privateStringcname;
privateStringcteacher;
}
项目运行到Tomcat,访问http:
//localhost:
8080/School/Course