数据库编程.doc
《数据库编程.doc》由会员分享,可在线阅读,更多相关《数据库编程.doc(86页珍藏版)》请在咨信网上搜索。
1、个人收集整理 勿做商业用途第14章 数据库编程用户用户数据库(database)是存储在计算机里的结构化数据的集合,可以分为关系、层次和网络三种类型,通常由数据库管理系统(DBMS = DataBase Management System)软件(如Oracle、DB2、SQL Server等)对数据库进行管理,应用程序通过(标准)编程接口(如ODBC/JDBC、DAO/ADO。NET、DOM/SAX等)来访问数据库,参见图14-1.数据库管理系统图14-1 数据库应用系统结构Visual Studio为程序员提供了多种数据库编程的接口和类库,传统上是采用MFC进行ODBC、DAO和ADO编程,
2、现在则一般采用C# 和VB进行ADO。NET的Web应用编程。14。1 数据库与编程接口关系型数据库可以视为结构变量的集合,有专用的系统RDBMS进行管理,通过标准的查询语言SQL进行操作.微软平台中有多种数据库编程接口可供使用,早期常用ODBC和DAO,现在则多为ADO.NET。14。1。1 数据库与DBMS数据库(DataBase,DB)是一种记录(record)或数据的集合。数据库的结构按一定的数据模型来组织,最常用的是关系模型(relational model),其它还有层次模型(hierarchical model)和网络模型(network model)。DBMS(DataBase
3、 Management System,数据库管理系统)是用来维护数据库的软件。数据库模型决定访问数据库的查询语言。但是,DBMS的大量内部操作则是独立于数据模型的,它们取决于诸如性能(performance)、并发性(concurrency)、完整性(integrity)和从硬件故障中恢复等管理因素。在这些方面,不同的产品之间存在很大差异。早期的计算机数据存储在穿孔卡片和磁带上,后来有了磁盘的文件系统,然后才是数据库管理系统。DBMS所用的各种数据库模型中,最初是网络和层次型数据库的强势,后来是关系数据库一统天下,然后又时兴面向对象的数据库,现在热门的则是XML这种层次型数据库。最早的DBMS
4、出现在1960年代,先驱者之一是(图灵奖获得者)Charles Bachman,他设计了首批DBMS之一IDS(Integrated Data Store,集成数据存储,1960年通用电气GE公司)及其后续版本IDMS(Integrated Database Management System,集成数据库管理系统,1971年推出,可在IBM大型机上运行),因其高性能,曾被业界广泛使用.1三种数据库模型依据数据组织的方式,可以将数据库划分成如下三种模型:l 网络型典型的网络数据库模型是(COBOL语言的开发者)CODASYL(Conference on Data Systems Language
5、s,数据系统语言协会)下属的DBTG(Data Base Task Group,数据库工作组),在Charles Bachman思想的基础上开发的,于1969年发布了网络数据库模型语言规范通常称为Codasyl数据模型。上面提到的IDS和IDMS就是网络型数据库管理系统。l 层次型层次模型将数据组织成(一)父(多)子关系的树状结构,IBM公司于1968年推出的IMS(Information Management System,信息管理系统,由Vern Watts主持开发)就是一种层次型数据库管理系统,它在19701980 年代占DBMS的统治地位。现在十分热门的XML数据库也属于层次模型。l
6、关系型关系数据库模型(relational database model)最早由IBM公司的Edgar F。 Codd于1969年提出,但最初并没有受到足够的重视,例如IBM于1970年代开发的System R也只是一个研究原型。只是到了1980年代后,关系数据库才异军突起,并迅速独霸天下.主流的商用关系数据库管理系统(RDBMS = Relational DBMS)有Oracle、DB2、SQL Server和MySQL等。网络模型可真实反映现实世界中,事物之间所存在的错综复杂的网状相互关系(如人际关系)。层次模型可以看成是网络模型的子集或特例(如家族谱系),多个层次模型可以组成一个网路模型
7、.关系模型反映的则是事物间的链接或二元关系(如父子关系、夫妻关系等),简单且高效.层次和网络模型可以用多个二元关系来表示。2关系数据库模型关系数据库由表示二元关系的实体-表(table)所组成,表中的列(column)称为字段(field)、行(row)称为记录(record).如: 表12-1 学生信息表元数据学号姓名性别年龄身高电话记录1001张三男201.80123456781002李四女181.61234567891003王五男211.7234567890字段以程序员的观点,可以将关系数据库看成是特定结构变量的数组,数据库中的字段或列对应于结构中的字段,而数据库中的记录或行则可以看成是
8、结构变量的一个个具体取值.如:typedef struct int num; / ?wchar_t name5;wchar_t sex;int age;float stature;int phone; / ? StInfo;StInfo st;st.num = 004; st。name0 = L马; st.name1 = L六; st。name2 = 0; st。sex = L男;st.age = 19; st。stature = 1.68; st。phone = 45678901;在编程中还用游标(cursor)来表示表中的当前记录、用事务(transaction)来表示封装在一起的一组表的
9、变化(可以解决数据库的完整性问题).虽然用户可以自己编写程序来控制数据库文件的访问,但RDBMS能给我们带来许多便利,如:l 使用标准的文件格式如含单个表的dBASE/Xbase的DBF(Data Base File数据库文件)、单个文件可含数据库的所有表和索引的Microsoft Access的MDB(Microsoft Access DataBase微软访问数据库)文件l 索引文件访问所有DBMS都包含非常高效的索引访问例程,避免(为了使用关键字来访问记录)用户自己编写二叉树等文件访问程序的麻烦l 数据完整性保护专业DBMS大多含有对数据的保护例程,如在对含一系列变化的事务处理过程中,若不
10、能处理整个事务,则会回滚以恢复事务处理前的原始状态l 多用户访问控制大多数DBMS都提供记录加锁机制,以防止多个用户同时使用时的相互干扰。一些多用户DBMS采用C/S模型,其他采用P2P模式,都可以控制对共享文件的访问3商用RDBMS最早的商用关系型数据库管理系统是甲骨文(Oracle)公司于1979年推出的Oracle(神谕, 预言)和IBM公司于1983年推出的DB2.首个成功的微机(包括PC)上的RDBMS是C。 Wayne Ratliff于1978年在(美国)国家航空和宇宙航行局NASA的喷气推进实验室JPL开发的dBase,它在DOS时代占统治地位。它最初叫Vulcan,1980年代
11、初被AshtonTate公司购买后,才改名为dBase。1991年Ashton-Tate公司被Borland公司收购。dBase有许多变种,如狐狸软件公司于1984年推出的FoxBASE,后来改名为FoxPro。1992年被微软公司合并后,又改名为Visual FoxPro。其它变种还有Arago、Force、dbFast、dbXL、Quicksilver、Clipper、Xbase+、FlagShip、Recital、CodeBase、MultiBase和Harbour/xHarbour等,它们一般被统称xBase。PC上的另一个出名的RDBMS是Ansa Software 公司的Richa
12、rd Schwartz和Robert Shostak于1985年开发的Paradox(悖论),1987年9月被Borland公司收购,1992年推出了其Windows版.Corel公司于1990年代中从Borland公司获得了Paradox,并于1997年发布了Corel Paradox 8,它还将Paradox集成到其WordPerfect Office专业版套件中.曾经重要的大型关系数据库还有Informix软件公司于1985年推出的Informix(2001年4月被IBM收购)和Sybase公司于1987年开发的SQL Server(1988年它与微软合作为IBM开发SQL Server
13、 for OS/2,1993年在合作协议终止后,微软推出了自己的SQL Server to Windows NT)。现在非常热门的开源Web数据库MySQL也是一种RDBMS,它是由瑞典的MySQL AB公司于1995年5月23日开始推出的,2008年2月26日MySQL AB成为Sun的子公司。目前绝大多数数据库都为关系型数据库,对应的管理软件为关系型数据库管理系统RDBMS。目前主流的RDBMS有:l 甲骨文公司的Oraclel IBM公司的DB2(和Informix)l 微软公司的SQL Server(和Visual FoxPro、Access、Excel)l MySQL AB公司的My
14、SQL常用数据库文件的扩展名见表122:表122 数据库文件的扩展名AccessDB2dBaseExcelFoxProOracleParadoxSQL Server。mdb*。dbf.xls*.dbf*。db*。mdf、*。sdf4SQLSQL(Structured Query Language,结构化查询语言)(官方读作skju:l,也读作si:kwl)为关系数据库的通用查询语言,最初是由IBM公司San Jose实验室的Donald D. Chamberlin和Raymond F。 Boyce于1972年为System R关系数据库设计的.1)标准SQL于1986年和1987年分别成为美国
15、国家标准学会ANSI和国际标准化组织ISO标准SQL86(SQL87),在1989年、1992年、1999年、2003年和2006年又多次对其进行了修订SQL89、SQL92(SQL2)、SQL:1999(SQL3)、SQL:2003和SQL:2006 (ISO/IEC 9075)。下面是当前最新的ISO/IEC 9075标准系列:l ISO/IEC 9075-1:2003 (Ed. 2) Information technology - Database languages - SQL - Part 1: Framework (SQL/Framework),信息科学-数据库语言-SQL-第1
16、部分:框架(SQL/框架) l ISO/IEC 90752:2003 (Ed. 2) Information technology - Database languages - SQL - Part 2: Foundation (SQL/Foundation),信息科学数据库语言SQL-第2部分:基础(SQL/基础)l ISO/IEC 90753:2003 (Ed。 3) Information technology - Database languages - SQL Part 3: Call-Level Interface (SQL/CLI),信息科学数据库语言SQL-第3部分:调用级接口
17、(SQL/CLI)l ISO/IEC 9075-4:2003 (Ed. 3) Information technology - Database languages - SQL - Part 4: Persistent Stored Modules (SQL/PSM),信息科学数据库语言SQL-第4部分:持久存储模块(SQL/PSM)l ISO/IEC 9075-9:2003 (Ed。 2) Information technology - Database languages - SQL - Part 9: Management of External Data (SQL/MED),信息科学
18、数据库语言SQL-第9部分:外部数据管理(SQL/MED)l ISO/IEC 9075-10:2003 (Ed. 2) Information technology - Database languages - SQL - Part 10: Object Language Bindings (SQL/OLB),信息科学数据库语言SQL-第10部分:对象语言绑定(SQL/OLB)l ISO/IEC 9075-11:2003 (Ed。 1) Information technology - Database languages - SQL Part 11: Information and Defi
19、nition Schemas (SQL/Schemata),信息科学数据库语言SQL第11部分:信息与定义模式(SQL/模式)l ISO/IEC 9075-13:2003 (Ed. 2) Information technology - Database languages - SQL - Part 13: SQL Routines and Types Using the Java TM Programming Language (SQL/JRT),信息科学数据库语言SQL-第13部分:使用Java TM编程语言的SQL例程与类型(SQL/JRT)l ISO/IEC 9075-14:2006
20、(Ed. 2) Information technology Database languages - SQL Part 14: XMLRelated Specifications (SQL/XML),信息科学-数据库语言SQL第13部分:XML相关规范(SQL/XML)虽然许多DBMS支持SQL,广大程序员也熟悉SQL,但SQL标准仍处于不断变化之中,而且在不同的产品之间的SQL的语法也各不相同,如一些多媒体、面向对象、分布式和XML数据库的扩展.2)语言SQL包括查询(query)、操作(Manipulation)、定义(definition)和控制(control)四种功能。SQL有三种
21、基本的语句形式:l 数据定义语言(DDL = Data Definition Language)-用于在数据库中建立数据结构和生成对象,如表(TABLE)、索引(INDEX)和视图(VIEW)。DDL是用三种动词来操作数据库中的对象:n CREAT用于产生新对象,如CREAT 表名(列名1, 列名2, .)n ALTER用于修改现成的对象,如ALTER TABLE 表名 COLUMN 列名 数据类型n DROP用于移走对象,如DROP TABLE 表名 CASCADEl 数据控制语言(DCL = Data Control Language)-用于给处理的数据库对象授予用户优先权,优先权包括:n
22、 SELECT允许用户查询数据行n INSERT允许用户加入新行n DELETE允许用户删除行n UPDATE允许用户修改行n REFERENCES当表的索引涉及另一个表中的列时,允许用户修改所涉及的表用GRAND语句来授权,用REVOKE语句来取消授权,如:GRAND SELECT ON Tab1 TO ID, Name, AgeREVOKE SELECT ON Tab1 FROM Namel 数据操作语言(DML = Data Manipulation Language)用于数据处理,如添加、删除、修改和查询等。具体语句有:n SELECT语句用于从数据库中选出数据,其最简单的形式为:SE
23、LECT 选项列表 FROM 表名其中的选项列表可以是字段、文本或它们的组合;也可以用表示全选。SELECT语句有很多附加部分,包括:从句(WHERE和ORDER BY)、表达式、谓词(LIKE、IN、BETWEEN)、关键字(DISTINCT)、集合、联合和外部联合、相关名称、ODBC SQL文本值、SQL函数、及子查询与联合查询等。其中的WHERE从句还广泛用于DELETE、UPDATE等其他语句中n INSERT语句用于把行插入表中,其基本形式为:INSERT INFO 表名 (列的列表) VALUES(值的列表)n DELETE语句用于删除表中的行:DELETE FROM 表名 WHE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 编程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。