北方工业大学数据库实验报告.docx
《北方工业大学数据库实验报告.docx》由会员分享,可在线阅读,更多相关《北方工业大学数据库实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
数据库技术I(2010年秋)
序号:
数据库技术I实验报告
系别:
班级:
姓名:
学号:
成绩:
评语:
指导教师签字:
日期:
实验一数据库的建立及数据维护
一、实验目的
1.学会使用企业管理器和查询分析器创建数据库、创建基本表和查看数据库属性。
2.学会使用企业管理器和查询分析器向数据库输入数据,修改数据,删除数据的操作。
3.在SOLServer查询分析器中完成复杂查询及视图定义。
二、实验环境及要求
数据库实验要求如下环境,服务器端:
Windows2000/xp、数据库服务器(SQLServer2005)、Web服务器(IIS5.0)和ASP。
客户端:
IE5.0、VB6.0。
要求:
1、根据以上数据字典,画出该数据库的ER图,完成数据库的概念结构设计;
2、将ER图转换成逻辑关系模式,判断逻辑数据库模式中的各个关系(表)是第几范式,如果没有达到第三范式或BC范式,请进行规范化。
完成数据库的逻辑结构设计。
3、通过企业管理器或者查询分析器实现关系模式的存储,包括确定主码、外部码等。
4、通过企业管理器或查询分析器向数据库中输入数据。
5、打开数据库SQLServer2005的查询分析器,用SQL语言完成以下语句。
并通过实验结果验证查询语言的正确性,将每个SQL语言及结果存盘,以备老师检查。
(1)求全体学生的学号、姓名和出生年份。
(2)求每个系的学生总人数并按降序排列。
(3)求选修了课程号为002或003的学生的学号、课程名和成绩。
(4)检索选修某课程的学生人数多于3人的教师姓名。
(5)查询所有未选课程的学生姓名和所在系。
(6)求每个同学的课程成绩的最高分,查询结果项包括:
学生姓名、课程号及最高分。
(7)求所有讲授数据结构课程的教师姓名
(8)查询所有选修了李正科老师的课程的学生信息
三、实验步骤及结果
1、SQLServer2005服务管理器使用
1.启动数据库服务软件SQLServer2005:
在程序菜单中选择MicrosoftSQLServer2005
点击Studio后,出现连接到服务器,点击“连接”按钮,启动SQLServer2005数据库服务。
2.在SQLServer2005中建立数据库:
在对象资源管理器中选择数据库单击右键,新建数据库。
在新建数据库窗口中,数据库名称输入数据库的名称。
2、查询分析器的使用
在“文件”菜单中选择新建--->使用当前连接查询,点击使用当前连接查询后,出现新的工作区窗口,输入sql语句。
点击执行按钮,出现查询结果窗口。
3、程序编写与结果
selectSname,Sno,'YearofBirth:
',2014-SagefromStudent
selectSdept,COUNT(Sdept)as总人数
fromStudent
groupbySdept
orderbySdept
selectSno,Cno,Grade
fromScore
whereCno='002'orCno='003'
selectTname
fromTeacher,Score
whereTeacher.Cno=Score.Cno
groupbyTname
havingCOUNT(Score.Sno)>3
selectSname,Student.Sdept
fromStudent
whereSnonotin
(selectSnofromScore)
selectSname,Cno,Grade最高分
fromScorex,Student
where(Student.Sno=x.Sno)
andx.Gradein
(selectMAX(Grade)
fromScore
whereScore.Sno=x.Sno
groupbySno)
selectTname
fromTeacher
whereCnoin
(selectCno
fromCourse
whereCname='数据结构')
selectStudent.*
fromStudent,Teacher,Score
WhereStudent.Sno=Score.Sno
andTeacher.Cno=Score.Cno
andTeacher.Tname='李正科'
use111
go
createtableS1
(Snovarchar(10),
Snamevarchar(20),
SDvarchar(50),
SAint)
insertintoS1
selectSno,Sname,Sage,Ssex
fromStudent
whereSdept='CS'
4、ER图
四、实验中的问题及解决方法
1、代码编写时我总是忘记用英文符号,导致程序出现错误。
检查之后改正。
2、在使用select语句时,没有将列名明确,如将student.sno写成sno导致错误。
在查过书上的资料后改正。
五、实验总结
通过本次实验,我复习了SQL数据库的用法,表,视图等操作。
通过题目,练习了对SQL查询语句的编写和调试,真正将书本上所学的知识利用到了实践当中。
在实验中遇到了很多问题,通过问老师、看书查资料等方法得到了解决,为今后进一步学习数据库打下了基础。
实验二C/S结构的数据库编程
一、实验目的
1.学会配置ODBC数据源,熟悉使用ODBC进行数据库应用程序的设计,通过ODBC接口对数据库进行操作。
2.学会通过ADO访问数据库,熟悉使用ADO技术进行数据库应用程序的设计,通过ADO接口对数据库进行操作。
二、实验环境及要求
数据库实验要求如下环境,服务器端:
Windows2000/xp、数据库服务器(SQLServer2005)、Web服务器(IIS5.0)和ASP。
客户端:
IE5.0、VB6.0。
要求:
通过一门编程工具(VS2005C#或.net)编写访问数据库的应用程序,编程序设计良好的一个人机交互界面,列出实验一中的查询,将SQL语句嵌入VS2005中完成“实验一”中的10个数据库查询语句的结果显示。
也可选择其他编程工具开发。
三、实验步骤及结果
1、建立ODBC数据源
(1)在“控制面板”中的“管理工具”下双击“数据库(ODBC)”图标,打开“ODBC数据源管理器”,或者通过:
开始→设置→控制面板→管理工具→数据源ODBC。
在“ODBC数据库管理器”中可以选择“用户DSN”、“系统DSN”、“文件DSN”。
(2)如果要添加一个新的数据源可以单击“添加”按钮,选择“系统DSN”选项卡,单击“添加”按钮。
弹出“创建新数据源”对话框。
(3)选择驱动程序SQLServer,单击“完成”按钮。
弹出“创建到SQLServer的新数据源”。
(4)单击“下一步”,出现选择SQLServer数据库服务器对登录帐户的身份验证方式的对话框,可以选择Window身份验证或SQLServer身份验证。
单击“下一步”,在“更改默认的数据库为”下拉列表框中选择“sales”。
(5)单击“下一步”,弹出对话框,单击“完成”按钮,弹出对话框,完成数据源的配置。
(6)单击“完成”。
即可进行测试数据源,若系统提示测试成功,则表示DSN设置正确。
单击“确定”,即完成系统DSN的建立。
2、VS2005开发环境中连接数据库
(1)启动SQLServer2005后,单击“文件”菜单,选择“新建”,“项目”。
(2)VisualC#---〉Windows应用程序---〉确定,会自动生成窗体Form1
(3)工具箱---〉数据---〉DataGridView拖入Form1
(4)在此控件上单击右键—>属性—>DataSource
(5)点击此属性值下箭头-->添加项目数据源
(6)点击数据库-->下一步-->新建连接,弹出添加连接窗口,将SQLserver2005的服务器名称复制。
粘贴到添加连接窗体中的服务器名中,点击下拉菜单选择数据库。
点击“确定”,生成连接。
点“下一步”再点“下一步”选择表,点击完成。
运行程序。
3、通过连接字符串连接数据库
添加两个控件richTextBox1和button1。
上边通过控件已经生成过连接字符串,可以复制
4、程序编写与结果
privatevoidForm1_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“sCDBDataSet3.Teacher”中。
您可以根据需要移动或移除它。
this.teacherTableAdapter.Fill(this.sCDBDataSet3.Teacher);
//TODO:
这行代码将数据加载到表“sCDBDataSet1.student1”中。
您可以根据需要移动或移除它。
this.student1TableAdapter.Fill(this.sCDBDataSet1.student1);
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectSno,cno,gradefromScorewhere(So='002'orcno='003')";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetString(0)+""+sdr.GetString
(1)+""+sdr.GetInt32
(2)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
{
}
privatevoidrichTextBox1_TextChanged(objectsender,EventArgse)
{
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectSno,Sname,2014-Sagefromstudent1";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetString(0)+""+sdr.GetString
(1)+""+sdr.GetInt32
(2)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectcount(Sdept)fromstudent1groupbysdept";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetInt32(0)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectTnamefromTeacher,ScorewhereSo=TogroupbyTnamehavingcount(So)>3";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetString(0)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectSname,student1.Sdeptfromstudent1whereSnonotin(selectSnofromScore)";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetString(0)+""+sdr.GetString
(1)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
stringConStr="DataSource=911-57;InitialCatalog=scdb;IntegratedSecurity=True";//连接字符串
SqlConnectionconn=newSqlConnection(ConStr);//建立一个数据库连接实例
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand();//用于执行SQL语句
cmd.Connection=conn;
cmd.CommandText="selectSname,Cno,GradefromScoreScore,Student1where(Student.Sno=Score.Sno)andScore.Gradein(selectMAX(Grade)fromScorewhereScore.Sno=Score.SnogroupbySno)";
cmd.CommandType=CommandType.Text;
SqlDataReadersdr=cmd.ExecuteReader();//执行
richTextBox1.Text="";
while(sdr.Read())//每次读一条记录读完停止
{
richTextBox1.Text+=sdr.GetString(0)+""+sdr.GetString
(1)+""+sdr.GetInt32
(2)+"\n";//读出的的字符串赋值给控件
}
conn.Dispose();//销毁连接
}
}
}
四、实验中的问题及解决方法
1、代码编写时我总是忘记用英文符号,导致程序出现错误。
检查之后改正。
2、在编写按钮的程序时应先打开form,左键双击需编写的按钮,在指定位置处编写。
3、在更换电脑后,程序中的计算机号需改正。
4、sdr.GetString语句应与调出的属性数量一致。
五、实验总结
通过本次实验,我学会了配置ODBC数据源,并用其进行了数据库应用程序的设计,通过ODBC接口对数据库进行了操作。
在实验中遇到了很多问题,通过问老师、看书查资料等方法得到了解决,为今后进一步学习数据库打下了基础