《ASP.NET2.0 Web数据库开发教程 教学课件 ppt 作者 宫继兵 第8章 利用ADO.NET操作数据库 》由会员分享,可在线阅读,更多相关《ASP.NET2.0 Web数据库开发教程 教学课件 ppt 作者 宫继兵 第8章 利用ADO.NET操作数据库 (106页珍藏版)》请在金锄头文库上搜索。
1、第8章 利用ADO.NET操作数据库,本章要点及学时安排,了解结构化查询语言(SQL) 了解ADO.NET的工作原理和特点 掌握ADO.NET中包含各对象的使用方法及相互关系 了解ADO.NET和ADO之间的关系 熟悉并掌握在学生信息管理系统中ADO.NET类的使用方法,本章授课学时为8学时 练习和上机学时为3-4学时,-本章要点,-学时安排,教学内容,关系型数据库简介 结构化查询语言简介 ADO.NET简介和ADO的比较 ADO.NET中包含对象的介绍和使用说明 SqlDataSource控件简介 ADO.NET类在学生管理信息系统中的应用,8.1 关系型数据库简介,1. 基本概念 关系型数
2、据(Relation Data) 以集合论中的关系概念为基础发展起来,它以关系数学模型来表示数据关系,关系数学模型中以二维表的形式来描述数据,模型中无论是实体还是实体间的联系均由单一的结构类型关系来表示。 关系型数据库(Relation Database) RDB是存储在计算机上的、可共享的、有组织的关系型数据的集合。关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。,8.1 关系型数据库简介,1. 基本概念 关系型数据库管理系统(Relation Database Management System, RDBMS) RDBMS是位于操作系统和关
3、系型数据库应用系统之间的数据库管理软件,它允许用户定义、创建和维护数据库,并提供数据的受控访问,例如:SQL Sever、ACCESS、Sybase、ORACLE等都是典型的数据库管理软件。,8.1 关系型数据库简介,2. 关系数据库的特点 早期人们使用网状数据库和层次数据库已能很好地解决数据的集中和共享问题,但在数据独立性和抽象级别上仍有所欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系数据库则可较好地解决了这些问题。 关系数据库理论出现于60年代末到70年代初。1970年,IBM的研究员E.F.Codd博士发表“大型共享数据银行的关系模型”一
4、文提出了关系模型的概念。后来Codd又陆续发表多篇文章,奠定了关系数据库的基础。关系模型有严格的数学基础,抽象级别比较高,实体与实体间的联系都用关系表示,其数据结构简单、清晰,便于理解和使用,同时存取路径对用户透明,具有较高的数据独立性和更好的安全保密性。,8.1 关系型数据库简介,3. 关系模型的组成 由关系数据结构、关系操作集合、关系完整性约束三部分组成: (1) 关系数据结构通常是较单一的,实体与实体间的联系都可表示为二维表的关系。常采用实体关系模型(Entity-Relationship Model,简称E-R Model)来描述,它运用真实世界中事物与关系的观念,来解释资料库中的抽象
5、的资料架构。实体关系模型利用图形的方式(实体-关系图)来表示资料库的概念设计,有助于设计过程中的构思及沟通讨论。 (2) 关系操作规定了关系数据可实施的一组操作,关系模块中常用的操作包括:数据查询、选择、投影、连接、并、交、差、除、数据操作、增加、删除、修改。 (3) 关系完整性约束是对关系的某种约束条件,完整性约束包括有:实体完整性、参照完整性、用户定义完整性。,8.1 关系型数据库简介,【例 8-1】关系型数据库的设计和建立 在本章中将以教学管理系统中最基础的教师、学生和课程三者信息管理为例讲解。 1)关系模型,8.1 关系型数据库简介,【例 8-1】关系型数据库的设计和建立 2)数据库设
6、计 教师信息表teaInfo,包含字段有:工号(t_no)、姓名(t_name)、年龄(age)、职称(degree); 课程信息表couInfo,包含字段有:课号(c_no)、课程名称(c_name)、任课教师工号(t_no)、开课专业(major)、学时(time); 学生信息表stuInfo,包含字段有:学号(s_no)、姓名(s_name)、性别(gender)、年龄(age)、专业(major)、照片(pic)。 教师信息表中,工号(t_no)字段作为该表的主键(keyword);课程信息表中,课号(c_no)字段作为该表的主键;学生信息表中,学号(s_no)字段作为该表的主键。 教
7、师表中的姓名(t_name)字段作为和课程信息表关联的外键;学生信息表中的专业(major)字段作为和课程信息表关联的外键。,8.1 关系型数据库简介,【例 8-1】关系型数据库的设计和建立 3)数据库建立 详细建立过程可上机操作并参见教材内容。,8.2 结构化查询语言,SQL全称是“结构化查询语言(Structured Query Language)”,是专门用来与关系数据库管理系统(RDBMS)通信的一套语言,它是一种说明性语言而非程序性语言,它是一种接近英语的自然语言,简单易学。它包含定义、操纵、查询和控制四个部分,是一套发展得非常成熟的数据库操纵语言。,8.2.1 SQL语言简介,SQ
8、L语言最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。目前,SQL语言已被确定为关系数据库系统的国际标准语言,被绝大多数商品化关系数据库系统采用,如Oracle 、Sybase、DB2、Informix、SQL Server这些数据库管理系统都支持SQL语言作为查询语言。 SQL有两种使用方法,一种是与用户交互的方式联机使用,称为交互式SQL;另一种是作为子语言嵌入到其它语言中使用,称为宿主型SQL,适用于程序设计人员用高
9、级语言编写应用程序与数据库打交道,嵌入到主语言中。,8.2.1 SQL语言简介,1. SQL的组成 SQL主要分成四个部分: (1) DDL(Data Definition Language:数据定义语言)用于定义SQL模式、基本表、视图和索引。 (2) DML(Data Manipulation Language:数据操作语言)分成数据查询和数据更新两类,其中数据更新又分成插入、删除和修改三种操作。 (3) DCL(Data Control Language:数据控制语言)包括对基本表和视图的授权,完整性规则的描述,事务控制语句等。 (4) 嵌入式SQL作为子语言嵌入到其它语言中使用,涉及到
10、SQL语句嵌入在宿主语言程序中的使用规则。,8.2.1 SQL语言简介,2. SQL的优点 SQL是一个非过程化的语言,它一次处理一条记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。 SQL是统一的语言,SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,高级的命令在几天内便可掌握。以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。 SQL是所有关系
11、数据库的公共语言,由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。使得所有用SQL编写的程序都是可以移植的。,8.2.1 SQL语言简介,3. SQL与SQL Server的关系 SQL Server是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言。TSQL是结构化查询语言SQL的一种,支持ANSI SQL92标准。 SQL Server所使用的数据库查询语言称为Transact-SQL,它是SQL Server的核心,Transact-SQL强化了原有的SQL关键字以进行数据的存取,储存及处理
12、等功能,Transact-SQL扩充了流程控制指定,可以使用户方便的编写功能强大的存储过程;存储过程存放在服务器端,并预先编译过,执行速度非常块,触发是一种特殊的存储过程,用来确保SQL Server数据库引用的完整性;用户可以建立插入,删除和更新触发以控制相关的表格中对数据列的插入,删除和更新;用户还可以使用规则(Rule)、缺省(default)以及限制(Constraints),来协助将新的数值套用到表格中去。,8.2.2 使用Select语句从表中检索数据,SQL查询语句一般称为SQL-Select命令。基本形式是Select-From-Where查询块,多个查询块允许嵌套。SQL查询
13、可以很方便地从一个或多个表中检索数据,查询是高度非过程化的,用户只需说明“做什麽”,而不必指出“如何做”。Select查询语句是SQL中使用频度最高、结构较复杂、功能也较完善的语句。 SQL查询的基本格式如下:,SELECT ALL|DISTINCT 别名,别名 INTO 新表名 FROM 别名,别名 WHERE GROUP BY HAVING ORDER BY ASC|DESC,1. 简单查询 简单查询是最基本的查询 ,通常只对单个表格进行查询。 例:查看所有学生的基本信息。 Select * From stuInfo (Select子句里的*用于表示全部字段) 例:查出年龄是20岁学生的姓
14、名及性别。 Select s_name, gender From stuInfo Where age =20 例:查出年龄是20岁的男学生的姓名(多条件查询)。 Select s_name From stuInfo Where age=20 and gender=1 例:查询课程表couInfo中所有代课老师的工号(存在一名教师带多门课的情况) Select Distinct t_no From couInfo 例:查询所有学生的基本信息,并按年龄升序排序。 Select * From stuInfo Order By age ASC 例:查找姓王的所有学生基本信息。 Select * fro
15、m stuInfo Where s_name like “王%”,8.2.2 使用Select语句从表中检索数据,2. 多表查询 前面介绍的简单查询只涉及到一个表,如果查询涉及到两个或多个表,就要进行联接运算。由于SQL是高度非过程化的,所以用户只需在From子句中指出各个表的名称,在Where子句中指出联接条件即可,联接运算由系统去完成。 例:查找出姓名为张涛学生的所选课程名称和学生的年龄。 Select couInfo.c_name, stuInfo.age From couInfo, stuInfo Where stuInfo.s_name=”张涛” and couInfo.major=
16、stuInfo.major 其中,“表名.字段名”方式用于指定特定表的特定字段(若多个表中此字段不重名,表名可省略),Where子句中“couInfo.major = stuInfo.major”条件部分用于限定两个表中major字段的关联(联接,外键)。,8.2.2 使用Select语句从表中检索数据,8.2.2 使用Select语句从表中检索数据,3. 嵌套查询 嵌套是指在Select-From-Where查询块内部再嵌入另一个查询块,称之为子查询。 在嵌套查询中,Where子句的条件常用到谓词in。 在嵌套查询中主查询的Where子句中,可用Exists表示存在。如果子查询结果非空,则满足条件,Not Exists表示不存在。 例:查询职称为讲师的所有教师所教课程的名称。 Select c_name From couInfo Where t_name In (Select t_name From teaInfo Where degree=”讲师”) 例:若存在职称为教授且