资源预览内容
第1页 / 共108页
第2页 / 共108页
第3页 / 共108页
第4页 / 共108页
第5页 / 共108页
第6页 / 共108页
第7页 / 共108页
第8页 / 共108页
第9页 / 共108页
第10页 / 共108页
亲,该文档总共108页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 数据库应用开发,8.1 数据库概述首先简单地介绍一下关系数据库的一些基本概念和知识,在此基础上结合ADO.NET和C#读者可以完成一般的数据库应用开发。如果之前没有接触过数据库,建议读者参考相关资料进行补习。如果读者已经对ADO和数据库技术有一定的了解,本章也有一定的篇幅介绍ADO.NET与先前技术相比的特性与改进以方便读者快速掌握ADO.NET开发的精髓。,8.1.1 关系数据库模型,数据库是指以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。例如,把一个学校的教师、学生和课程等数据有序地组织起来,存储在计算机磁盘上,就构成了一个数据库。数据库概念提出后,先后出现了几种数据模型,其中关系模型具有数据结构简单灵活、易学易懂且有雄厚的数学基础等特点,现已成为数据库的标准。关系数据库是以关系模型来组织的。关系模型中数据的逻辑结构是一张二维表,它由行和列组成。例如,表8.1是在学生信息管理系统中使用的一个Students表,用来描述学生的属性。,表8.1 Students表,8.1.1 关系数据库模型,一个关系数据库一般由多个表组成,表与表之间可以以不同的方式相互关联。例如,表8.2是在学生信息管理系统中使用的另一个表Courses,用来描述课程的属性。,表8.2 Courses表,在这个表中,CourseNo(课程号)字段是Courses表的主键,因为它是唯一的。,8.1.1 关系数据库模型,由于一名学生可以选修多门课程,而一门课程又可由多名学生来选修,因此Students和Courses表之间是一种多对多的关系。这个关系可以用一个成绩表Scroe来表示,即学生所学的课程对应成绩信息,该表将学生的学号与课程号进行了关联,表8.3显示了该表的部分记录。,表8.3 Score表,Score表的CourseNo字段引用自Courses表,StudentNo字段引用自Students表,这里的CourseNo字段和StudentNo字段又可称之为Score表的外键,分别指向Courses表和Students表的主键。这样,要唯一标识出Score表的一条记录,必须使用StudentNo和CourseNo两个字段的组合。所以Score表的主键就是这两个字段的组合。,8.1.2 结构化查询语言(SQL),作为用来在DBMS中访问和操作的语言,SQL(结构化查询语言)的语句通常分为四类:一是DDL(Data Definition Language,数据定义语言)语句,用来创建、修改或删除数据库中各种对象,包括表、视图、索引等;二是DML(Data Manipulation Language,数据操作语言)语句,用来对已经存在的数据库进行记录的插入、删除、修改等操作;三是QL(Query Language,查询语言)语句,用来按照指定的组合、条件表达式或排序检索已存在的数据库中数据,但不改变数据库中的数据;四是DCL(Data Control Language,数据控制语言)语句,用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视等。下面简单介绍一下SQL常用的语句。1. SELECT语句一个典型的SQL查询可以从指定的数据库表中“选择”信息,这时就需要使用SELECT语句来执行。它的最简单形式是:SELECT * FROM tableName,1. SELECT语句,其中,星号(*)用来指定从数据库的tableName表中选择所有的字段(列)。例如,若要查询Courses表中所有记录,则可用下列语句:SELECT * FROM Courses若要从表中选择指定字段的记录,则将星号(*)用字段列表来代替,多个字段之间用逗号分隔,例如:SELECT CourseNo, Credit, CourseName FROM Courses则执行的结果如表8.4所示,可以看出查询的结果记录集合(简称为“结果集”)中的字段顺序是由SELECT语句中的字段顺序来决定的。,表8.4 Courses表执行SELECT的结果,1. SELECT语句, WHERE子句 在数据表查询SELECT语句中,经常还需要通过设定查询的条件来获取特定要求的记录,这是通过WHERE子句来实现的,它的一般形式如下:SELECT column1, column2, FROM tableName WHERE condition例如,若将Score表中成绩(score)在80分以上的记录查询出来,则可有下列语句:SELECT StudentNo, Score FROM Scores WHERE Score=80WHERE子句中的条件可以(大于)、=(大于等于)、=(等于)、(不等于)和LIKE等运算符。其中,LIKE用于模糊条件的查询,它可以使用星号(*)和问号(?)等通配符,星号(*)表示可以出现0个或多个字符,问号(?)表示该位置处只能出现1个字符。例如:SELECT * FROM Scores WHERE StudentNo LIKE 21*,WHERE子句,则将Score表中所有学号以21打头的记录查询出来。注意,LIKE后面的字符串是以单引号来标识。再如:SELECT * FROM Scores WHERE StudentNo LIKE 210105?则将Scores表中所有学号以210105打头的,且学号为8位的记录查询出来。需要说明的是,在许多DBMS中,LIKE后面字符串中的通配符用“%”来代替“*”,用“_”来代替“?”。WHERE子句中的条件还可用AND(与)、OR(或)以及NOT(非)运算符来构造复合条件查询,例如:若查询Scores表中成绩(score)在70分到80分之间的记录,则可有下列语句:SELECT * FROM Scores WHERE score=70,1. SELECT语句, ORDER BY子句在关系模型中行是没有顺序的,但是用户可能希望查询的结果按某种顺序显示。这就需要在数据表查询SELECT语句中使用ORDER BY子句来按序输出结果集。如下面的形式:SELECT column1, column2, FROM tableName WHERE condition ORDER BY col1, col2, ASC或SELECT column1, column2, FROM tableName WHERE conditionORDER BY col1, col2, DESC其中,ASC表示升序(从低到高),DESC表示降序(从高到低),当在ORDER BY子句中没有指定ASC/DESC时,则按默认的升序进行排列。col1、col2、分别用来指定是按什么字段来排序。当指定多个字段时,则先按col1排序,当有相同col1的记录时,则相同的记录按col2排序,依此类推。例如:SELECT * FROM Scores ORDER BY StudentNo,CourseNo则查询的结果集是按学生号和课程号进行升序排列。,1. SELECT语句, INNER JOIN语句在进行多个数据表查询时,总希望将多个表的某几个字段作为结果集的内容。例如,学生信息管理系统中,常需要将学生成绩按学号、姓名、课程名称、成绩的记录查询出来,这时就需要对Score、Student和Course三个表的数据合并成单个结果集,这种合并称为表的“联接”,我们可以通过在SELECT查询中使用INNER JOIN(内联)操作来实现。INNER JOIN的最简单形式是:SELECT column1, column2, FROM table1INNER JOIN table2 ON table1.columnName = table2.columnName INNER JOIN将table1和table2表进行内联,其联接的条件由ON子句来设定。通过ON子句来指定这两个表中的哪些列进行比较,从而确定最终需要合并的记录。例如:SELECT Scores.StudentNo,Scores.CourseNo,Courses.CourseName,Scores.ScoreFROM Scores INNER JOIN Courses ON Scores.CourseNo = Courses.CourseNoORDER BY StudentNo, CourseNo,8.1.2 结构化查询语言(SQL),2. INSERT语句INSERT语句是用来向表中插入一个新的记录。该语句的常用形式是:INSERT INTO tableName(col1, col2, col3, colN) VALUES (val1,val2,val3,valN)其中,tableName用来指定插入新记录的数据表,tableName后跟一对圆括号,包含一个以逗号分隔的列(字段)名的列表,VALUES后面的圆括号内是一个以逗号分隔的值列表,它与tableName后面的列名列表是一一对应的。需要说明的是,若某个记录的某个字段值是字符串,则需要用单引号来括起来。例如:INSERT INTO Students(StudentNo, StudentName) VALUES (21010503, 张小峰)将在Student中插入一个新行,其中StudentNo(学号)为“21010503”,StudentName(学生姓名)为“张小峰”,对于该记录的其它字段值由于未指定值,其结果由系统决定。,8.1.2 结构化查询语言(SQL),3. UPDATE语句UPDATE语句用于更新表中的数据。该语句的常用形式是:UPDATE tableName SET column1=value1, column2=value2, columnN=valueN WHERE condition该语句可以更新tableName表中一行记录或多行记录的数据,这取决于WHERE后面的条件。关键字SET后面是以逗号分隔的“列名/值”列表。例如:UPDATE Students SET StudentName = 王鹏 WHERE StudentNo = 21010503将学号为“21010503”的记录中的StudentName字段内容更新为“王鹏”。,8.1.2 结构化查询语言(SQL),4. DELETE语句DELETE语句用来从表中删除记录,其常用形式如下:DELETE FROM tableName WHERE condition该语句可删除tableName表中一行或多行记录,这取决于WHERE后面的条件。例如:DELETE FORM Students WHERE StudentNo LIKE 210105*则将Student表中所有以210105开头的学号的记录删除。,8.2 ADO.NET概述,8.2.1 ADO.NET基本概念与特点在.NET中数据库的访问是通过ADO.NET完成的。ADO.NET是微软公司ADO(Active Data Object)技术的升级版本。为了保持对ADO技术的兼容性,ADO.NET不但能够访问那些使用新的.NET数据提供程序的数据源,也可访问那些现有的ADO OLEDB数据提供程序。ADO.NET是为基于消息的Web应用程序而设计的,同时也能为其他应用程序结构提供良好的功能。以前ADO操作主要依赖于两层结构并且是基于连接的,连接断开后就只能通过重新新建连接才能实现存取,而在ADO.NET中,数据处理被延伸到三层以上的结构,程序员也需要采用无连接应用模型。通过支持对数据的松耦合访问,ADO.NET减少了与数据库的活动连接数目(即减少了多个用户争用数据库服务器上的有限资源的可能性),从而实现了最大限度的数据共享。下面就介绍一下ADO.NET的主要特点:,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号