当前位置:文档之家› 北方工业大学 数据库实验报告

北方工业大学 数据库实验报告

数据库技术I(2010年秋)数据库技术I 实验报告系别:班级:姓名:学号:成绩:评语:指导教师签字:日期:实验一数据库的建立及数据维护一、实验目的1.学会使用企业管理器和查询分析器创建数据库、创建基本表和查看数据库属性。

2. 学会使用企业管理器和查询分析器向数据库输入数据,修改数据,删除数据的操作。

3. 在SOL Server查询分析器中完成复杂查询及视图定义。

二、实验环境及要求数据库实验要求如下环境,服务器端:Windows 2000/xp、数据库服务器(SQL Server 2005)、Web服务器(IIS 5.0)和ASP。

客户端:IE5.0、VB 6.0。

要求:1、根据以上数据字典,画出该数据库的ER图,完成数据库的概念结构设计;2、将ER图转换成逻辑关系模式,判断逻辑数据库模式中的各个关系(表)是第几范式,如果没有达到第三范式或BC范式,请进行规范化。

完成数据库的逻辑结构设计。

3、通过企业管理器或者查询分析器实现关系模式的存储,包括确定主码、外部码等。

4、通过企业管理器或查询分析器向数据库中输入数据。

5、打开数据库SQL Server 2005的查询分析器,用SQL语言完成以下语句。

并通过实验结果验证查询语言的正确性,将每个SQL语言及结果存盘,以备老师检查。

(1)求全体学生的学号、姓名和出生年份。

(2)求每个系的学生总人数并按降序排列。

(3)求选修了课程号为002或003的学生的学号、课程名和成绩。

(4)检索选修某课程的学生人数多于3人的教师姓名。

(5)查询所有未选课程的学生姓名和所在系。

(6)求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分。

(7)求所有讲授数据结构课程的教师姓名(8)查询所有选修了李正科老师的课程的学生信息三、实验步骤及结果1、SQL Server 2005服务管理器使用1.启动数据库服务软件SQL Server 2005:在程序菜单中选择Microsoft SQL Server 2005点击Studio后,出现连接到服务器,点击“连接”按钮,启动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 Studentgroup by Sdeptorder by Sdeptselect Sno,Cno,Gradefrom Scorewhere Cno='002'or Cno='003'select Tnamefrom Teacher,Scorewhere o=ogroup by Tnamehaving COUNT(Score.Sno)>3select Sname,Student.Sdeptfrom Studentwhere Sno not in(select Sno from Score)select Sname,Cno,Grade 最高分from Score x,Studentwhere(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,Score Where Student.Sno=Score.Sno and o=o and Teacher.Tname='李正科'use 111gocreate table S1(Sno varchar(10),Sname varchar(20),SD varchar(50),SA int)insert into S1select Sno,Sname,Sage,Ssex from Studentwhere Sdept='CS'4、ER图四、实验中的问题及解决方法1、代码编写时我总是忘记用英文符号,导致程序出现错误。

检查之后改正。

2、在使用select语句时,没有将列名明确,如将student.sno写成sno导致错误。

在查过书上的资料后改正。

五、实验总结通过本次实验,我复习了SQL数据库的用法,表,视图等操作。

通过题目,练习了对SQL查询语句的编写和调试,真正将书本上所学的知识利用到了实践当中。

在实验中遇到了很多问题,通过问老师、看书查资料等方法得到了解决,为今后进一步学习数据库打下了基础。

实验二C/S结构的数据库编程一、实验目的1.学会配置ODBC数据源,熟悉使用ODBC进行数据库应用程序的设计,通过ODBC接口对数据库进行操作。

2.学会通过ADO访问数据库,熟悉使用ADO技术进行数据库应用程序的设计,通过ADO 接口对数据库进行操作。

二、实验环境及要求数据库实验要求如下环境,服务器端:Windows 2000/xp、数据库服务器(SQL Server 2005)、Web服务器(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”、“文件DSN”。

(2)如果要添加一个新的数据源可以单击“添加”按钮,选择“系统DSN”选项卡,单击“添加”按钮。

弹出“创建新数据源”对话框。

(3)选择驱动程序SQL Server,单击“完成”按钮。

弹出“创建到SQL Server的新数据源”。

(4)单击“下一步”,出现选择SQL Server数据库服务器对登录帐户的身份验证方式的对话框,可以选择Window身份验证或SQL Server身份验证。

单击“下一步”,在“更改默认的数据库为”下拉列表框中选择“sales”。

(5)单击“下一步”,弹出对话框,单击“完成”按钮,弹出对话框,完成数据源的配置。

(6)单击“完成”。

即可进行测试数据源,若系统提示测试成功,则表示DSN设置正确。

单击“确定”,即完成系统DSN的建立。

2、VS2005开发环境中连接数据库(1)启动SQL Server 2005后,单击“文件”菜单,选择“新建”,“项目”。

(2)Visual C#---〉Windows 应用程序---〉确定,会自动生成窗体Form1(3)工具箱---〉数据---〉DataGridView 拖入Form1(4)在此控件上单击右键—>属性—>DataSource(5)点击此属性值下箭头-->添加项目数据源(6)点击数据库-->下一步-->新建连接,弹出添加连接窗口,将SQL server 2005的服务器名称复制。

粘贴到添加连接窗体中的服务器名中,点击下拉菜单选择数据库。

点击“确定”,生成连接。

点“下一步”再点“下一步”选择表,点击完成。

运行程序。

3、通过连接字符串连接数据库添加两个控件richTextBox1 和button1。

上边通过控件已经生成过连接字符串,可以复制4、程序编写与结果private void Form1_Load(object sender, EventArgs e){// TODO: 这行代码将数据加载到表“sCDBDataSet3.Teacher”中。

您可以根据需要移动或移除它。

this.teacherTableAdapter.Fill(this.sCDBDataSet3.Teacher);// TODO: 这行代码将数据加载到表“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); //建立一个数据库连接实例conn.Open(); //打开数据库连接SqlCommand cmd = new SqlCommand(); //用于执行SQL语句cmd.Connection = conn;mandText = "select Sno,cno,grade from Score where (o='002'or cno='003')";mandType = 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(); //销毁连接}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){}private void richTextBox1_TextChanged(object sender, EventArgs e){}private 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;mandText = "select Sno,Sname,2014-Sage from student1";mandType = 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(); //销毁连接}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语句mandText = "select count(Sdept)from student1 group by sdept";mandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); //执行richTextBox1.Text = " ";while (sdr.Read()) //每次读一条记录读完停止{richTextBox1.Text += sdr.GetInt32(0)+ "\n"; //读出的的字符串赋值给控件}conn.Dispose(); //销毁连接}private void button4_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;mandText = "select Tname from Teacher,Score where o=o group by Tname having count(o)>3";mandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); //执行richTextBox1.Text = " ";while (sdr.Read()) //每次读一条记录读完停止{richTextBox1.Text += sdr.GetString(0) + "\n"; //读出的的字符串赋值给控件}conn.Dispose(); //销毁连接}private void button5_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语句mandText = "select Sname,student1.Sdept from student1 where Sno not in (select Sno from Score)";mandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); //执行richTextBox1.Text = " ";while (sdr.Read()) //每次读一条记录读完停止{richTextBox1.Text += sdr.GetString(0) + " " + sdr.GetString(1) + "\n"; //读出的的字符串赋值给控件}conn.Dispose(); //销毁连接}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 = conn;mandText = "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)";mandType = 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(); //销毁连接}}}四、实验中的问题及解决方法1、代码编写时我总是忘记用英文符号,导致程序出现错误。

相关主题