东北大学,数据库开发技术,课件,第3章 SQL Server 与结构化查询语言SQL.ppt
《东北大学,数据库开发技术,课件,第3章 SQL Server 与结构化查询语言SQL.ppt》由会员分享,可在线阅读,更多相关《东北大学,数据库开发技术,课件,第3章 SQL Server 与结构化查询语言SQL.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、东北大学东北大学,数据库开发数据库开发技术技术,课件课件,第第3章章 SQL Server 与结构化查询与结构化查询语言语言SQL3.1 SQL Server 2000数据库的特点 SQL Server 2000数据库是典型的服务器类型数据库,是开发C/S结构数据库应用系统常采用的数据库类型之一。 SQL Server 2000服务器提供了强有力的数据库管理功能,开发者可以使用企业管理器以可视界面的方式实现数据库,使用查询分析器运行调试SQL脚本,使用事件探查器监控对数据库的存取操作 SQL Server 2000数据库以逻辑名的方式进行标识,通过服务器名称(IP地址或主机名称)和数据库逻辑名
2、称存取数据库,例如,如果服务器名称是BYTESERVER,数据库名称是GSCoreMS,可使用BYTESERVER.GSCoreMS存取数据库。存取SQL Server 2000数据库还需要网络协议和客户端网络库文件的支持 .3.1.1 数据类型 类别类别性质性质数据类型数据类型精确数精确数字字整数整数bigintintsmallinttinyint位位bitdecimal(p,s) numeric(p,s)货币数值货币数值moneysmallmoney近似近似数字数字float(n)real日期日期时间时间datetimesmalldatetime字符串字符串定长定长char(n)char(
3、n)变长变长varchar(n)varchar(n)大量大量texttextUnicodeUnicode字符串字符串定长定长nchar(n)nchar(n)变长变长nvarchar(n)nvarchar(n)大量大量ntextntext二进制二进制数据数据定长定长binarybinary变长变长varbinaryvarbinary大量大量imageimage其它数其它数据类型据类型uniqueidentifieruniqueidentifiertabletabletimestamptimestampsql_variantsql_variantcursorcursor3.1.1 数据类型 不同数
4、据库数据类型之间的转换关系 !使用BDE作为数据库引擎时Delphi的字段对象能够存取的数据类型(长度和精度)与Paradox数据库的相应数据类型相同,使用BDE存取SQL Server 2000数据库时必须注意这样的转换关系。例如,SQL Server 2000数据库中将某字段的数据类型设计为varchar(2000),从数据库设计和实现本身的角度来看这种设计是正确的,但从开发应用程序的角度来看就未必是正确的,使用BDE存取SQL Server 2000数据库时,BDE只能处理1-255个字符,剩余字符全部截断 3.1.2 完整性约束 SQL Server 2000提供了全面的数据库完整性实
5、现支持,不仅提供了以声明方式实现大多数约束的功能,还提供了使用触发器机制和编写存储过程实现复杂业务规则的功能 SQL Server 2000声明方式实现的约束类型如下: 实体完整性实体完整性 参照完整性参照完整性 用户定义的完整性用户定义的完整性实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性不变性,应该由关系系统自动支持。3.1.2 完整性约束 实体完整性实体完整性: 若属性A是基本关系R的主属性,则属性A不能取空值例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE属性为主码(假设研究生不会重名),则其不
6、能取空值关系模型必须遵守实体完整性规则的原因:关系模型必须遵守实体完整性规则的原因:(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。的一个实体集或多对多联系。(2) 现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。性标识。(3) 相应地,关系模型中以主码作为唯一性标识。相应地,关系模型中以主码作为唯一性标识。(4) 主码中的属性即主属性不能取空值。主码中的属性即主属性不能取空值。 空值就是空值就是“不知
7、道不知道”或或“无意义无意义”的值。的值。 主属性取空值,就说明存在某个不可标识的实体,即存在不可主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。)点相矛盾,因此这个规则称为实体完整性。3.1.2 完整性约束 参照完整性:参照完整性:若属性(或属性组)F是基本关系R的外码与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值。3.1.2 完整性约束 用户定义的完整性:用户定义的完整性:用户定义
8、的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。例: 课程(课程号,课程名,学分) “课程名”属性必须取唯一值 非主属性“课程名”也不能取空值 “学分”属性只能取值1,2,3,43.1.3 SQL支持 SQL Server提供的SQL语言称为Transact-SQL与 SQL Server 通讯的所有应用程序都通过向服务器发送 Transact-SQL 语句来进行通讯,而与应用程序的用户界面无关如果能够充分利用Transact-SQL的特性,不仅能
9、够减少开发工作量,而且能够开发出高质量的数据库应用程序。SQL Server的联机帮助中详细地介绍了Transact-SQL的语法和应用示例,请读者务必花足够时间学习并掌握Transact-SQL的程序设计方法 先花少量时间全面地了解(不是掌握是了解)所采用的开发技术或开发工具能够提供的开发和应用能力,勾画出关键的技术点并拟定各点的实践顺序,然后拿一个小规模但足够复杂的题目逐步实践,直到关键技术都掌握了为止 3.1.4 数据库安全 数据库安全包括存储安全和存取安全两个方面。存储安全涉及数据库的备份和恢复技术,存取安全涉及数据库存取权限技术 SQL Server 2000提供了比较完整的备份和恢
10、复功能,例如完整备份、差异备份和相应的恢复功能,同时还能够使用检查点技术恢复数据库 SQL Server 2000提供的数据库存取安全机制分为两个层次,第一层是数据库的登录用户控制,第二层是登录用户对数据库对象的存取权限控制。SQL Server 2000的数据库登录用户有两种类型,一种是Windows局域网内的操作系统域用户,第二种是SQL Server服务器的登录用户。ADO支持两种类型的登录用户存取数据库,而BDE则只能支持服务器的登录用户这一种类型 3.2 SQL Server 2000数据库运用设计 安全设计 登录用户和密码。数据库的脚本安全保证:所有存储过程都加密 为了保护软件产品
11、必须授权才能使用,将系统运行参数,如使用单位名称、部门等报表打印时必须打印的系统参数,以及软件是否已经注册的标识存储在一个加密的存储过程中。3.2 SQL Server 2000数据库运用设计 系统参数存储过程的名称为ap_RegInfo -从存储过程中读取系统运行参数CREATE PROCEDURE dbo.ap_RegInfo WITH ENCRYPTIONASBEGIN SELECT A = XX医学院,- 学校名称:XX医学院 B = 研究生部,- 使用部门:研究生部 C = CAST(0 AS BIT) - 0未注册,1已注册END3.2 SQL Server 2000数据库运用设计
12、 数据字典(典型示例) 属性字段数据类型码可空约束代号UCodeSmallintPKN自动生成,种子0姓名UNamechar(8) N 口令PWchar(10) N默认值:0操作限制: 有一条初始记录:管理员用户0(装载实现)。 不能删除代号为0的管理员用户(使用触发器实现)。只有管理员用户登录程序可管理用户信息(应用程序实现)。 u 触发器实现约束 - 不能删除0用户(管理员用户)CREATE TRIGGER dbo.DelON dbo.UsersFOR DELETE AS BEGIN -删除代号为0,回滚 IF (SELECT UCode FROM deleted) = 0 ROLLBAC
13、KEND3.3 实现SQL Server 2000数据库 1) 确定数据库数据文件和日志文件存储路径,创建数据库。2) 创建数据库登录用户。3) 创建或修改表,创建表并设置字段的基本属性。4) 设置主码、惟一约束、Check约束和参照完整性约束。5) 装载必需的初始数据。6) 设置索引。v创建视图等其他数据库对象。7) 8) 如果数据库比较复杂,应标识出未实现的约束列表,以便在应用程序中实现。 3.3.1 创建数据库 在SQL Server 2000的企业管理器中创建数据库的过程如下 :右键单击所选服务器下的【数据库】节点,从上下文菜单中选择【新建数据库】菜单命名,然后在弹出的对话框中设置数据
14、库的逻辑名称、数据文件的存储路径和文件属性以及日志文件的存储路径和文件属性 业务简单的小型数据库不需要设置过多的参数,只要指定一个数据文件和一个日志文件就足够了。如果数据库规模很大,则需要考虑多方面的因素,认真规划数据库的设置和配置。 3.3.2 创建数据库登录用户 如果服务器中已经存在登录用户,则直接将该登录用户设置为存取数据库的用户。设置方法是:在企业管理器的控制台树中打开所创建的数据库节点,如GScoreMS。右键单击该数据库节点下的【用户】节点,从上下文菜单中选择【新建数据库用户】菜单命令,在弹出的对话框中选择登录用户并将设置该登录用户存取数据库时的用户名和该用户存取数据库的角色(权限
15、),通常应勾选“db_owner”角色 如果服务器中还未存在登录用户则打开服务器节点下的【安全性】节点,右键单击该节点下的【登录】节点,从上下文菜单中选择【新建登录】菜单命令,在弹出的对话框中设置登录用户名和密码,选择该登录用户存取的数据库 3.3.2 创建数据库登录用户 登录用户的身份验证有Windows身份验证方式和SQL Server登录验证两种模式,如果使用BDE数据库引擎存取数据库应选择SQL Server登录验证模式,使用ADO或dbExpress数据库引擎则选择Windows身份验证方式 选择【数据库访问】页 ,设置登录用户存取数据库的角色 3.3.3 创建或修改表,设置字段的基
16、本属性 通过两种方式创建表 如果将现有的其他类型数据库移植到SQL Server 2000中,可使用企业管理器中的导入工具移植表和视图等数据库对象,导入后按照运用设计修改表和约束 如果将数据库运用设计规格说明直接实现为SQL Server 2000数据库,直接使用企业管理器中的窗口界面创建和修改表及约束 在企业管理器中创建或修改表的方法很简单:右键单击所选数据库下的【表】节点,然后从上下文菜单中选择【新建表】,然后在弹出的对话框中即可设置表的字段(列)名以及字段的基本属性(数据类型、是否允许空和默认值等),同时还可以设置表的主码、惟一约束、Check约束和参照完整性约束。 3.3.3 创建或修
17、改表,设置字段的基本属性 3.3.4 设置表的属性和声明式约束 可直接在表设计窗口中提供的【属性】对话框设置表的基本属性和主码与惟一约束、Check约束以及外码约束等声明式约束 在表设计窗口中单击工具栏中的【表和索引属性】、【管理关系】、【管理索引/键】或【管理约束】按钮都可以激活【属性】对话框,该对话框提供了个页面,分别用于管理表的基本属性、表之间的关系、表的索引和候选码(主码与惟一约束)以及表的约束 3.3.5 数据库关系图 SQL Server 2000提供查看表之间关系图的工具 关系图工具虽然有点缺陷(不能生成关系图文档等),但还是比较好用的,使用关系图工具能够查看表之间的外码约束(关
18、系图),在关系图界面中还可以创建和修改表、管理索引/键以及Check约束。 右键单击数据库的【关系图】节点,从上下文菜单中选择【新建数据库关系图】菜单命令,然后在弹出的表选择向导对话框中选择需要创建到关系图中的表,按照操作要求逐步操作即可创建所选表的关系图。 充分利用关系图工具设计表及其关系3.3.5 数据库关系图 3.3.6 在Visio中使用反向工程技术生成数据库关系图 Microsoft Visio工具是一个综合性质的建模工具,使用该工具可以创建数据库的关系图模型 在Visio中通过反向工程技术功能可以获取SQL Server 2000中数据库的模式信息,也可以直接在Visio中创建数据
19、库的ER模型,然后将数据库模型创建到SQL Server 2000中 建模工具对于设计经验比较丰富的设计者比较好用,但对入门者却帮助很少,建议设计经验不够丰富的设计者尽量在纸张上设计数据库的ER模式,有了丰富的经验之后再使用建模工具辅助设计。 3.3.6 在Visio中使用反向工程技术生成数据库关系图 反向工程建立的数据库模型图TLevelPK,I2PK,I2UCodeUCodeI1I1UNameUNameCoursePK,I1PK,I1UCodeUCodeStudentPK,I1PK,I1UCodeUCodeFK5FK5SpecUCodeSpecUCodeFK3FK3PolityUCodeP
20、olityUCodeFK2FK2NationUCodeNationUCodeFK4FK4ProvinceUCodeProvinceUCodeFK1FK1DeptUCodeDeptUCodeDeptPK,I2PK,I2UCodeUCodeI1I1UNameUNameNationPK,I2PK,I2UCodeUCodeI1I1UNameUNamePolityPK,I2PK,I2UCodeUCodeI1I1UNameUNameProvincePK,I2PK,I2UCodeUCodeI1I1UNameUNameTchCrsFK1,I1FK1,I1CourseUCodeCourseUCodeFK2,I1
21、FK2,I1TeacherUCodeTeacherUCodeTeacherPK,I1PK,I1UCodeUCodeFK2LevelUCodeFK1FK1DeptUCodeDeptUCodeSpecialtyPK,I2PK,I2UCodeUCodeI1I1UNameUNameStdCrsTchFK2,I1FK2,I1StudentUCodeStudentUCodeFK1,U1,I1FK1,U1,I1CourseUCodeCourseUCodeU1U1LYearLYearFK3FK3TeacherUCodeTeacherUCodeU1LTermu:Cd:Ru:Cd:Cu:Cd:Ru:Cd:Ru:C
22、d:Ru:Cd:Ru:Cd:Ru:Rd:Ru:Cd:Ru:Cd:Ru:Cd:Cu:Cd:R一、SQL的发展史 1974年IBM圣约瑟实验室的Boyce和Chamberlin为关系数据库管理系统System-R设计的一种查询语言,当时称为SEQUEL语言(Structured English Query Language),后简称为SQL。 1981年IBM推出关系数据库系统SQL/DS后,SQL得到了广泛应用。 1986年美国国家标准协会(ANSI)公布了第一个SQL标准SQL86。 1987年,ISO通过SQL86标准。3.4 SQL语言基本知识 1989年,ISO制定SQL89标准,SQL
23、89标准在SQL86基础上增补了完整性描述。 1990年,我国制定等同SQL89的国家标准。 1992年,ISO制定SQL92标准,即SQL2。 1999年,ANSI制定SQL3标准。 在许多软件产品中,软件厂商都对SQL的基本命令集进行了扩充,将其扩展成嵌入式SQL语言。SQL Server 2000中使用Transact-SQL语言与数据库服务器打交道。 二、 SQL的特点SQL具有如下特点:1SQL(Structured Query Language)全称是结构化查询语言,是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。功能强大、能够完成各种数据库操作。2SQL语言不是一个
24、应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能。3有利于各种数据库之间交换数据、有利于程序的移植、有利于实现程序和数据间的独立性;有利于实施标准化;3.书写简单、易学易用。 三、SQL的分类1、数据定义语言(DDL:Data Definition Language)创建、修改或删除数据库中各种对象,包括表、视图、索引等。2、查询语言(QL:Query Language)按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。3、数据操纵语言(DML:Data Manipulation Language )对已经存在的数据库进
25、行记录的插入、删除、修改等操作4、数据控制语言(DCL:Data Control Language)用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视注意:在书写各种SQL 命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。 数据定义命令用于建立数据库和建立、修改、删除基本表。数据定义命令用于建立数据库和建立、修改、删除基本表。一、 建立数据库ANSI标准SQL中建立数据库(SCHEMA:模式)的命令是:CREATE SCHEMA AUTHORIZATION ;例如:创建者是温翠
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 数据库开发技术 课件 第3章 SQL Server 与结构化查询语言SQL 东北大学 数据库 开发 技术 课件 结构 查询 语言
限制150内