1、数据库技术 I(2010 年秋)序号:数据库技术 I 实验报告系别:班级:姓名:学号:成绩:评语:指导教师签字: 日期:实验一 数据库的建立及数据维护一、 实验目的1.学会使用企业管理器和查询分析器创建数据库、创建基本表和查看数据库属性。2. 学会使用企业管理器和查询分析器向数据库输入数据,修改数据,删除数据的操作。3. 在 SOL Server 查询分析器中完成复杂查询及视图定义。二、 实验环境及要求数据库实验要求如下环境,服务器端:Windows 2000/xp、数据库服务器(SQL Server 2005)、Web 服务器(IIS 5.0)和 ASP。客户端:IE5.0、VB 6.0。要
2、求:1、 根据以上数据字典,画出该数据库的 ER 图,完成数据库的概念结构设计;2、 将 ER 图转换成逻辑关系模式,判断逻辑数据库模式中的各个关系(表)是第几范式,如果没有达到第三范式或 BC 范式,请进行规范化。完成数据库的逻辑结构设计。3、 通过企业管理器或者查询分析器实现关系模式的存储,包括确定主码、外部码等。4、 通过企业管理器或查询分析器向数据库中输入数据。5、 打开数据库 SQL Server 2005 的查询分析器,用 SQL 语言完成以下语句。并通过实验结果验证查询语言的正确性,将每个 SQL 语言及结果存盘,以备老师检查。(1) 求全体学生的学号、姓名和出生年份。(2) 求
3、每个系的学生总人数并按降序排列。(3) 求选修了课程号为 002 或 003 的学生的学号、课程名和成绩。(4) 检索选修某课程的学生人数多于 3 人的教师姓名。 (5) 查询所有未选课程的学生姓名和所在系。(6) 求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分。(7) 求所有讲授数据结构课程的教师姓名(8) 查询所有选修了李正科老师的课程的学生信息三、 实验步骤及结果1、SQL Server 2005 服务管理器使用1启动数据库服务软件 SQL Server 2005:在程序菜单中选择 Microsoft SQL Server 2005点击 Studio 后,出现连接
4、到服务器,点击“连接”按钮,启动 SQL Server 2005 数据库服务。2在 SQL Server 2005 中建立数据库:在对象资源管理器中选择数据库单击右键,新建数据库。在新建数据库窗口中,数据库名称输入数据库的名称。2、查询分析器的使用在“文件”菜单中选择新建-使用当前连接查询,点击使用当前连接查询后,出现新的工作区窗口,输入 sql 语句。点击执行按钮,出现查询结果窗口。3、程序编写与结果select Sname ,Sno,Year of Birth:,2014-Sage from Studentselect Sdept,COUNT(Sdept) as 总人数from Stude
5、ntgroup by Sdeptorder by Sdeptselect Sno,Cno,Gradefrom Scorewhere Cno=002or Cno=003select Tnamefrom Teacher,Scorewhere Teacher.Cno=Score.Cnogroup by Tnamehaving COUNT(Score.Sno)3select Sname,Student.Sdeptfrom Studentwhere Sno not in(select Sno from Score)select Sname,Cno,Grade 最高分from Score x,Studen
6、twhere(Student.Sno=x.Sno)and x.Grade in(select MAX(Grade)from Scorewhere Score.Sno=x.Snogroup by Sno)select Tnamefrom Teacherwhere Cno in(select Cnofrom Coursewhere Cname=数据结构)select Student.*from Student,Teacher,ScoreWhere Student.Sno=Score.Snoand Teacher.Cno=Score.Cnoand Teacher.Tname=李正科use 111go
7、create table S1(Sno varchar(10),Sname varchar(20),SD varchar(50),SA int)insert into S1select Sno,Sname,Sage,Ssexfrom Student where Sdept=CS4、ER 图四、 实验中的问题及解决方法1、 代码编写时我总是忘记用英文符号,导致程序出现错误。检查之后改正。2、 在使用 select 语句时,没有将列名明确,如将 student.sno 写成 sno 导致错误。在查过书上的资料后改正。五、 实验总结通过本次实验,我复习了 SQL 数据库的用法,表,视图等操作。通过题
8、目,练习了对 SQL 查询语句的编写和调试,真正将书本上所学的知识利用到了实践当中。在实验中遇到了很多问题,通过问老师、看书查资料等方法得到了解决,为今后进一步学习数据库打下了基础。实验二 C/S 结构的数据库编程一、实验目的1.学会配置 ODBC 数据源,熟悉使用 ODBC 进行数据库应用程序的设计,通过 ODBC 接口对数据库进行操作。2.学会通过 ADO 访问数据库,熟悉使用 ADO 技术进行数据库应用程序的设计,通过 ADO接口对数据库进行操作。二、实验环境及要求数据库实验要求如下环境,服务器端:Windows 2000/xp、数据库服务器(SQL Server 2005)、Web 服
9、务器(IIS 5.0)和 ASP。客户端:IE5.0、VB 6.0。要求:通过一门编程工具(VS2005 C#或.net)编写访问数据库的应用程序,编程序设计良好的一个人机交互界面,列出实验一中的查询,将 SQL 语句嵌入 VS 2005 中完成“实验一”中的 10 个数据库查询语句的结果显示。也可选择其他编程工具开发。三、实验步骤及结果1、建立 ODBC 数据源(1)在“控制面板”中的“管理工具”下双击“数据库(ODBC)”图标,打开“ODBC数据源管理器”,或者通过:开始设置控制面板管理工具数据源 ODBC。在“ODBC数据库管理器”中可以选择“用户 DSN” 、“系统 DSN”、“文件
10、DSN”。(2)如果要添加一个新的数据源可以单击“添加”按钮,选择“系统 DSN”选项卡,单击“添加”按钮。弹出“创建新数据源”对话框。 (3)选择驱动程序 SQL Server,单击“完成”按钮。弹出“创建到 SQL Server 的新数据源”。(4)单击“下一步”,出现选择 SQL Server 数据库服务器对登录帐户的身份验证方式的对话框,可以选择 Window 身份验证或 SQL Server 身份验证。 单击“下一步”,在“更改默认的数据库为”下拉列表框中选择“sales”。(5)单击“下一步”,弹出对话框,单击“完成”按钮,弹出对话框,完成数据源的配置。 (6)单击“完成”。即可进
11、行测试数据源,若系统提示测试成功,则表示 DSN 设置正确。单击“确定”,即完成系统 DSN 的建立。2、VS2005 开发环境中连接数据库(1)启动 SQL Server 2005 后,单击“文件”菜单,选择“新建”,“项目”。(2)Visual C#-Windows 应用程序-确定 ,会自动生成窗体 Form1(3)工具箱-数据-DataGridView 拖入 Form1(4)在此控件上单击右键属性DataSource(5)点击此属性值下箭头添加项目数据源(6)点击数据库下一步新建连接 ,弹出添加连接窗口,将 SQL server 2005的服务器名称复制。粘贴到添加连接窗体中的服务器名中
12、,点击下拉菜单选择数据库。点击“确定”,生成连接。点“下一步” 再点“下一步”选择表,点击完成。运行程序。3、通过连接字符串连接数据库添加两个控件 richTextBox1 和 button1。上边通过控件已经生成过连接字符串,可以复制4、程序编写与结果private void Form1_Load(object sender, EventArgs e)/ TODO: 这行代码将数据加载到表“sCDBDataSet3.Teacher”中。您可以根据需要移动或移除它。this.teacherTableAdapter.Fill(this.sCDBDataSet3.Teacher);/ TODO:
13、这行代码将数据加载到表“sCDBDataSet1.student1”中。您可以根据需要移动或移除它。this.student1TableAdapter.Fill(this.sCDBDataSet1.student1);private void button3_Click(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr);
14、 /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = conn;cmd.CommandText = “select Sno,cno,grade from Score where (So=002or cno=003)“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while (sdr.Read() /
15、每次读一条记录 读完停止richTextBox1.Text += sdr.GetString(0) + “ “ + sdr.GetString(1) + “ “ + sdr.GetInt32(2) + “n“; /读出的的字符串赋值给控件conn.Dispose(); /销毁连接private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)private void richTextBox1_TextChanged(object sender, EventArgs e)private
16、void button1_Click(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = conn;cmd.CommandText
17、= “select Sno,Sname,2014-Sage from student1“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while (sdr.Read() /每次读一条记录 读完停止richTextBox1.Text += sdr.GetString(0) + “ “ + sdr.GetString(1) + “ “ + sdr.GetInt32(2)+ “n“; /读出的的字符串赋值给控件conn.Dispose();
18、 /销毁连接private void button2_Click(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = conn;cm
19、d.CommandText = “select count(Sdept)from student1 group by sdept“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while (sdr.Read() /每次读一条记录 读完停止richTextBox1.Text += sdr.GetInt32(0)+ “n“; /读出的的字符串赋值给控件conn.Dispose(); /销毁连接private void button4_Cl
20、ick(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = conn;cmd.CommandText = “select Tname
21、 from Teacher,Score where So=To group by Tname having count(So)3“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while (sdr.Read() /每次读一条记录 读完停止richTextBox1.Text += sdr.GetString(0) + “n“; /读出的的字符串赋值给控件conn.Dispose(); /销毁连接private void button5_
22、Click(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = conn;cmd.CommandText = “select Sna
23、me,student1.Sdept from student1 where Sno not in (select Sno from Score)“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while (sdr.Read() /每次读一条记录 读完停止richTextBox1.Text += sdr.GetString(0) + “ “ + sdr.GetString(1) + “n“; /读出的的字符串赋值给控件conn.Disp
24、ose(); /销毁连接private void button6_Click(object sender, EventArgs e)string ConStr = “Data Source=911-57;Initial Catalog=scdb;Integrated Security=True“; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQL语句cmd.Connection = c
25、onn;cmd.CommandText = “select Sname,Cno,Grade from Score Score,Student1 where (Student.Sno=Score.Sno) and Score.Grade in (select MAX(Grade) from Score where Score.Sno=Score.Sno group by Sno)“;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行richTextBox1.Text = “ “;while
26、 (sdr.Read() /每次读一条记录 读完停止richTextBox1.Text += sdr.GetString(0) + “ “ + sdr.GetString(1) +“ “ + sdr.GetInt32(2) +“n“; /读出的的字符串赋值给控件conn.Dispose(); /销毁连接四、 实验中的问题及解决方法1、 代码编写时我总是忘记用英文符号,导致程序出现错误。检查之后改正。2、 在编写按钮的程序时应先打开 form,左键双击需编写的按钮,在指定位置处编写。3、 在更换电脑后,程序中的计算机号需改正。4、 sdr.GetString语句应与调出的属性数量一致。五、实验总
27、结通过本次实验,我学会了配置 ODBC 数据源,并用其进行了数据库应用程序的设计,通过 ODBC 接口对数据库进行了操作。在实验中遇到了很多问题,通过问老师、看书查资料等方法得到了解决,为今后进一步学习数据库打下了基础。实验三 数据库的建立及数据维护一、 实验目的1、 学会通过 IIS 配置 Web 服务器,建立虚拟目录2、 学会在 IE 浏览器中查看 ASP.NET 网页的执行结果3、 掌握 ASP.NET 技术实现简单的动态网页的制作。二、实验环境及要求1.实验环境:Windows7,SQLServer2008,Visual Studio 2010。 2.实验要求:设计网页,显示“实验一”
28、中 11 个查询的结果。三、实验步骤及结果1、实验步骤1) 在 Microsoft Visual Studio 2008(以下简称 VS2008)中添加一个 ASP.NETWeb 应用程序项目,名称为 scdb; 2) 在 scdb 项目上点击右键-添加-新建项; 3) 选择 web 窗体,名称 Query_Result_1.aspx;点击添加; 4) 生成一个页面,点击页面下方的“设计”按钮,跳转到设计页面; 5)点击左侧的“工具箱”,选择“数据”中“GridView”拖拽到右侧的设计页面中; 6)点击 GridView 任务中“选择数据源”下拉框,选择“新建数据源”,在选择“数据库”,为数
29、据源指定 ID 为 SqlDataSourcescdb,点击“确定”; 7)点击“新建连接”,弹出链接窗口,服务器名称:(local),在选择数据库与名中,选择自己建立的数据库名,“scdb”;再点击“测试连接”,弹出“测试连接成功”,即连接数据库成功,点击“确定”; 8)在下拉框中选择“scdbConnectionString”,点击“下一步”; 9)在“希望如何从数据库中检索”选择“指定自定义 SQL 或存储语句”,点击“下一步”,在 SELECT 标签下,点击“查询生成器”,点击“Student”,点击“添加”,点击“关闭”,关闭“添加表”对话框; 10)在查询生成器,选择 Sno,Sn
30、ame 两列,然后添加表达式 2012 Sage, 点击“执行查询”,生成器底部会产生查询结果,然后点击“确定”; 11)点击“下一步” 12)点击“测试查询”则出现查询结果,即查询数据成功,然后点击“完成”结束。 13)点击“GridView 任务”中的“编辑列”,会出现编辑框。 14)在“选定的字段”中点击“Sno”出现 Sno 属性框,在“外观”中的“HeaderText”后面的编辑框中将“Sno”改为“学号”。 15)“Sname”与“Expr1”的列名修改操作与“Sno”的相同,点击“确定”结束; 16)在“GridView 任务”中的“自动套用格式”中选择自己喜欢的界面风格; 17
31、)点击“源”,切换源代码页面,修改无标题页面中的标题为“查询 1 结果”; 18)右键单击“解决方案”中的“Query_Result_1.aspx”,选择“在浏览器中查看”。四、实验中的问题及解决方法1、 配置 IIS 的问题,需要选中全部 IIS 组件,然后新建虚拟目录配置网站。2、因为对程序的不熟悉,导致实验没能在规定时间内做完。五、实验总结通过本次实验,我学会了配置 IIS 并建立虚拟目录,了解了关于 ASP.NET 的一些相关知识,使用 Visual Studio 进行编写,虽然最终没能完成,但我懂得了如何在 IE 上执行自己编写的网页,实现简单的动态网页制作与数据库在网页上的显示功能。此次实验使我收益匪浅。