数据库实验.docx

上传人:b****5 文档编号:30354669 上传时间:2023-08-13 格式:DOCX 页数:17 大小:718.04KB
下载 相关 举报
数据库实验.docx_第1页
第1页 / 共17页
数据库实验.docx_第2页
第2页 / 共17页
数据库实验.docx_第3页
第3页 / 共17页
数据库实验.docx_第4页
第4页 / 共17页
数据库实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据库实验.docx

《数据库实验.docx》由会员分享,可在线阅读,更多相关《数据库实验.docx(17页珍藏版)》请在冰豆网上搜索。

数据库实验.docx

数据库实验

实验一认识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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1