描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302527466丛书名: 计算机系列教材
编辑推荐
本书以计算机科学与技术、软件工程专业的本科学生为主要适用对象,以培养研究型和应用型复合人才以及“卓越工程师”类型实用人才为主要目标。本书在内容选取上,先有适当的理论知识回顾,对当前应用广泛的数据库管理系统进行介绍,再安排丰富的实验案例讲解及大量的实验技能训练,从而达到“以实验促教学”和“以理论促实验”的结合。全书论述清晰、通俗易懂,案例选择面向学生、贴近实际,力争让学生看得懂、学得会、记得牢、用得上。
内容简介
本书以培养研究型人才和“卓越工程师”类型应用人才为目标,编写时面向应用,不追求深奥,讲求“够用、实用”,目的是通过大量案例的学习与实践,让读者熟练掌握管理、访问数据库的各项基本技能,加强实践动手能力,力争让读者看得懂、学得会、用得上、记得牢。本书主要包括以下内容: 数据库原理实验的基本要求和教学管理规范、数据库基本原理概述、数据库标准语言SQL介绍、数据库实验指导及实验要求,并给出多个数据库应用实例。
本书在注重数据库基础知识训练的同时,特别注重数据库应用技能培养与训练,可作为计算机科学与技术、软件工程和信息管理等相关专业的数据库实验课程教材或教学参考书,也可以作为数据库课程设计的参考资料,还可供数据库应用系统开发人员和数据库管理人员参考。
本书在注重数据库基础知识训练的同时,特别注重数据库应用技能培养与训练,可作为计算机科学与技术、软件工程和信息管理等相关专业的数据库实验课程教材或教学参考书,也可以作为数据库课程设计的参考资料,还可供数据库应用系统开发人员和数据库管理人员参考。
目 录
目录
第1章引言1
1.1数据库原理实验教学目标1
1.2数据库原理实验教学安排2
1.2.1课程具体内容及基本要求3
1.2.2实验项目安排3
1.3数据库原理实验管理规范4
1.4数据库原理实验的考评5第2章数据库原理概述6
2.1数据库的相关概念6
2.1.1数据、数据管理、数据库与数据库系统6
2.1.2数据管理技术的发展8
2.1.3数据模型9
2.1.4关系数据库13
2.1.5数据库保护与控制15
2.1.6数据库设计18
2.2数据库管理系统(DBMS)24
2.2.1DBMS概述24
2.2.2DBMS的基本功能24
2.2.3DBMS系统结构25
2.2.4RDBMS产品概述28
2.2.5选择数据库管理系统产品的依据31第3章关系数据库语言SQL和TransactSQL34
3.1SQL概述34
3.1.1SQL标准34
3.1.2SQL的特点34
3.1.3TransactSQL36
3.1.4SQL规范36
3.2实例数据库37
3.2.1供应管理数据库37
3.2.2供应管理数据库实例数据37
3.3数据定义功能39
3.3.1定义数据库39
3.3.2定义基本表43
3.3.3定义索引53
3.4数据查询功能55
3.4.1SELECT语句的基本语法55
3.4.2简单查询56
3.4.3连接查询63
3.4.4嵌套查询68
3.4.5集合查询74
3.4.6查询结果的处理78
3.5数据更新功能78
3.5.1插入数据79
3.5.2修改数据81
3.5.3删除数据82
3.6SQL的视图功能84
3.6.1视图的概念与作用84
3.6.2定义视图85
3.6.3视图的操作88
3.7存储过程91
3.7.1存储过程定义91
3.7.2存储过程的优点91
3.7.3存储过程的分类92
3.7.4常用系统存储过程93
3.7.5本地存储过程94
3.8数据库安全性97
3.8.1安全性控制概述97
3.8.2用户、用户权限与角色99
3.8.3权限管理102
3.8.4数据库安全综合应用举例104
3.9数据库完整性110
3.9.1数据库完整性概述110
3.9.2实体完整性111
3.9.3参照完整性112
3.9.4用户定义的完整性113
3.9.5触发器117
3.10数据库恢复技术125
3.10.1数据库恢复技术简介125
3.10.2数据备份126
3.10.3恢复策略129
3.11TransactSQL附加的语言元素131
3.11.1TransactSQL的语法元素131
3.11.2常量和变量133
3.11.3表达式137
3.11.4流程控制语句137
3.11.5函数139第4章实验内容及实验指导144
4.0数据库实验案例144
4.1实验1安装和配置SQL Server 2008(选做)156
4.2实验2数据定义实验165
4.3实验3数据库数据导入导出实验(实验数据的准备)(选做)176
4.4实验4数据库的附加(数据库实用程序)(选做)182
4.5实验5数据库的简单查询实验183
4.6实验6数据库的连接查询实验187
4.7实验7数据库的嵌套与集合查询实验191
4.8实验8数据库的综合查询实验(选做)197
4.9实验9数据库的数据更新实验203
4.10实验10视图的定义和管理实验207
4.11实验11存储过程实验(选做)212
4.12实验12数据库安全性实验(选做)217
4.13实验13数据库完整性实验(选做)222
4.14实验14数据库备份与恢复实验(选做)233参考文献244
第1章引言1
1.1数据库原理实验教学目标1
1.2数据库原理实验教学安排2
1.2.1课程具体内容及基本要求3
1.2.2实验项目安排3
1.3数据库原理实验管理规范4
1.4数据库原理实验的考评5第2章数据库原理概述6
2.1数据库的相关概念6
2.1.1数据、数据管理、数据库与数据库系统6
2.1.2数据管理技术的发展8
2.1.3数据模型9
2.1.4关系数据库13
2.1.5数据库保护与控制15
2.1.6数据库设计18
2.2数据库管理系统(DBMS)24
2.2.1DBMS概述24
2.2.2DBMS的基本功能24
2.2.3DBMS系统结构25
2.2.4RDBMS产品概述28
2.2.5选择数据库管理系统产品的依据31第3章关系数据库语言SQL和TransactSQL34
3.1SQL概述34
3.1.1SQL标准34
3.1.2SQL的特点34
3.1.3TransactSQL36
3.1.4SQL规范36
3.2实例数据库37
3.2.1供应管理数据库37
3.2.2供应管理数据库实例数据37
3.3数据定义功能39
3.3.1定义数据库39
3.3.2定义基本表43
3.3.3定义索引53
3.4数据查询功能55
3.4.1SELECT语句的基本语法55
3.4.2简单查询56
3.4.3连接查询63
3.4.4嵌套查询68
3.4.5集合查询74
3.4.6查询结果的处理78
3.5数据更新功能78
3.5.1插入数据79
3.5.2修改数据81
3.5.3删除数据82
3.6SQL的视图功能84
3.6.1视图的概念与作用84
3.6.2定义视图85
3.6.3视图的操作88
3.7存储过程91
3.7.1存储过程定义91
3.7.2存储过程的优点91
3.7.3存储过程的分类92
3.7.4常用系统存储过程93
3.7.5本地存储过程94
3.8数据库安全性97
3.8.1安全性控制概述97
3.8.2用户、用户权限与角色99
3.8.3权限管理102
3.8.4数据库安全综合应用举例104
3.9数据库完整性110
3.9.1数据库完整性概述110
3.9.2实体完整性111
3.9.3参照完整性112
3.9.4用户定义的完整性113
3.9.5触发器117
3.10数据库恢复技术125
3.10.1数据库恢复技术简介125
3.10.2数据备份126
3.10.3恢复策略129
3.11TransactSQL附加的语言元素131
3.11.1TransactSQL的语法元素131
3.11.2常量和变量133
3.11.3表达式137
3.11.4流程控制语句137
3.11.5函数139第4章实验内容及实验指导144
4.0数据库实验案例144
4.1实验1安装和配置SQL Server 2008(选做)156
4.2实验2数据定义实验165
4.3实验3数据库数据导入导出实验(实验数据的准备)(选做)176
4.4实验4数据库的附加(数据库实用程序)(选做)182
4.5实验5数据库的简单查询实验183
4.6实验6数据库的连接查询实验187
4.7实验7数据库的嵌套与集合查询实验191
4.8实验8数据库的综合查询实验(选做)197
4.9实验9数据库的数据更新实验203
4.10实验10视图的定义和管理实验207
4.11实验11存储过程实验(选做)212
4.12实验12数据库安全性实验(选做)217
4.13实验13数据库完整性实验(选做)222
4.14实验14数据库备份与恢复实验(选做)233参考文献244
前 言
前言
数据库原理是计算机科学与技术和软件工程等专业的核心课程,是理论与实践相结合的重要课程。该课程既具有系统的理论价值,也具有广泛的应用领域,对培养学生的专业理论知识和专业实践能力至关重要。目前几乎所有高校的计算机学院、软件学院和信息学院的相关专业都将“数据库原理”和“数据库原理实验”课程作为专业核心课程;为增强学生的实践应用能力,服务于研究型和应用型复合人才培养目标,近年来很多学校的相关专业都修改了教学计划,压缩理论教学课时数,相应增加实验类课程教学课时数。
为适应当前培养研究型和应用型复合人才与“卓越工程师”人才的需要,我们在多年教学与实践经验的基础之上,结合当前教学计划的修订和学生学习的实际需要,编写了这本符合新型培养目标要求的《数据库实验教程》,将数据库标准语言SQL的主要内容在实验课堂先进行讲解、举例,然后给出大量的实验题目要求,让学生进行充分的实验训练,做到真正理解、掌握数据库管理系统的原理和数据管理技术,并能融会贯通,熟练运用其进行各种数据管理操作,提升学生分析问题、解决问题的能力,达到“数据库原理实验”课程的教学目标。
本书注重理论与实践相结合,密切联系实际,基本覆盖数据库应用的各个方面,满足高等院校培养研究型和应用型复合人才的要求。
本书以计算机科学与技术、软件工程和信息管理等专业的本科学生为主要适用对象,以强化学生的原理性知识和实践能力为宗旨,以培养研究型和应用型复合人才以及“卓越工程师”类型实用人才为主要目标。在内容选取上,先有适当的理论知识回顾,对当前应用广泛的数据库管理系统进行介绍,再安排丰富的实验案例讲解及大量的实验技能训练,从而达到“以实验促教学”和“以理论促实验”的完美结合。
本书的主要特点如下:
(1) 通用型。本书独立于具体的数据库原理教科书,重点放在数据库管理系统的数据管理功能的介绍与训练上,基本涵盖数据库管理的常用操作。
(2) 思路清晰。以案例为线索,所选择的实验案例既能覆盖知识点,贴近学生生活实际,又接近工程实际需要。每个案例都贯穿数据库实验的各个阶段,重点放在让读者理解实际应用,掌握分析问题和解决问题的能力上,着重训练读者分析问题、理解问题、解决问题的能力。
(3) 通俗易懂。以案例为线索,将复杂的概念用读者容易理解的简洁语言描述出来。通过详细的案例解决方案的介绍,循序渐进地启发学生理解数据库操作的内涵,熟练完成相应的数据库操作。
(4) 重在实用。本书强调动手实践,从建立数据库、基本表到数据查询、数据更新、数据控制等,全过程覆盖,让读者学习完本书之后,熟练掌握数据库管理系统的各项数据库管理功能,并能够融会贯通,在以后的实际数据管理工作中灵活运用。
(5) 由浅入深。每个实验原理的讲解和之后的实验要求都由浅入深,难度逐渐增加,循序渐进锻炼学生的实践能力。
(6) 提供教学资源。为了方便教学,本书提供应用案例中所有实例数据。
本书是作者在多年从事“数据库原理”和“数据库原理实验”教学的基础上编写的,编写时根据作者多年的教学经验,针对实际应用问题求解,强调数据库实验的系统性和实践性,案例选择面向学生、贴近实际,力争让学生看得懂、学得会、记得牢、用得上。
本书第1章由周爱武编写,主要介绍数据库实验的目标、要求、管理以及评价考核体系;第2章由周爱武、琚川徽编写,主要回顾数据库的基本原理和数据库管理系统的主要功能;第3章由周爱武、罗罹编写,介绍SQL的功能及应用,第4章由周爱武、肖云编写,本章先给出每个数据库实验的目的与实验指导练习内容,再给出具体的实验要求让学生独立完成。全书由周爱武负责统稿。
安徽大学计算机科学与技术学院的领导、数据库课程组全体教师和学生对本书的编写工作给予了大力支持,并提出了许多宝贵意见,作者在此表示衷心的感谢。
由于作者水平有限,书中难免出现一些疏漏和错误,不足之处在所难免,欢迎广大读者提出宝贵的批评意见和改进建议,谢谢。
数据库原理是计算机科学与技术和软件工程等专业的核心课程,是理论与实践相结合的重要课程。该课程既具有系统的理论价值,也具有广泛的应用领域,对培养学生的专业理论知识和专业实践能力至关重要。目前几乎所有高校的计算机学院、软件学院和信息学院的相关专业都将“数据库原理”和“数据库原理实验”课程作为专业核心课程;为增强学生的实践应用能力,服务于研究型和应用型复合人才培养目标,近年来很多学校的相关专业都修改了教学计划,压缩理论教学课时数,相应增加实验类课程教学课时数。
为适应当前培养研究型和应用型复合人才与“卓越工程师”人才的需要,我们在多年教学与实践经验的基础之上,结合当前教学计划的修订和学生学习的实际需要,编写了这本符合新型培养目标要求的《数据库实验教程》,将数据库标准语言SQL的主要内容在实验课堂先进行讲解、举例,然后给出大量的实验题目要求,让学生进行充分的实验训练,做到真正理解、掌握数据库管理系统的原理和数据管理技术,并能融会贯通,熟练运用其进行各种数据管理操作,提升学生分析问题、解决问题的能力,达到“数据库原理实验”课程的教学目标。
本书注重理论与实践相结合,密切联系实际,基本覆盖数据库应用的各个方面,满足高等院校培养研究型和应用型复合人才的要求。
本书以计算机科学与技术、软件工程和信息管理等专业的本科学生为主要适用对象,以强化学生的原理性知识和实践能力为宗旨,以培养研究型和应用型复合人才以及“卓越工程师”类型实用人才为主要目标。在内容选取上,先有适当的理论知识回顾,对当前应用广泛的数据库管理系统进行介绍,再安排丰富的实验案例讲解及大量的实验技能训练,从而达到“以实验促教学”和“以理论促实验”的完美结合。
本书的主要特点如下:
(1) 通用型。本书独立于具体的数据库原理教科书,重点放在数据库管理系统的数据管理功能的介绍与训练上,基本涵盖数据库管理的常用操作。
(2) 思路清晰。以案例为线索,所选择的实验案例既能覆盖知识点,贴近学生生活实际,又接近工程实际需要。每个案例都贯穿数据库实验的各个阶段,重点放在让读者理解实际应用,掌握分析问题和解决问题的能力上,着重训练读者分析问题、理解问题、解决问题的能力。
(3) 通俗易懂。以案例为线索,将复杂的概念用读者容易理解的简洁语言描述出来。通过详细的案例解决方案的介绍,循序渐进地启发学生理解数据库操作的内涵,熟练完成相应的数据库操作。
(4) 重在实用。本书强调动手实践,从建立数据库、基本表到数据查询、数据更新、数据控制等,全过程覆盖,让读者学习完本书之后,熟练掌握数据库管理系统的各项数据库管理功能,并能够融会贯通,在以后的实际数据管理工作中灵活运用。
(5) 由浅入深。每个实验原理的讲解和之后的实验要求都由浅入深,难度逐渐增加,循序渐进锻炼学生的实践能力。
(6) 提供教学资源。为了方便教学,本书提供应用案例中所有实例数据。
本书是作者在多年从事“数据库原理”和“数据库原理实验”教学的基础上编写的,编写时根据作者多年的教学经验,针对实际应用问题求解,强调数据库实验的系统性和实践性,案例选择面向学生、贴近实际,力争让学生看得懂、学得会、记得牢、用得上。
本书第1章由周爱武编写,主要介绍数据库实验的目标、要求、管理以及评价考核体系;第2章由周爱武、琚川徽编写,主要回顾数据库的基本原理和数据库管理系统的主要功能;第3章由周爱武、罗罹编写,介绍SQL的功能及应用,第4章由周爱武、肖云编写,本章先给出每个数据库实验的目的与实验指导练习内容,再给出具体的实验要求让学生独立完成。全书由周爱武负责统稿。
安徽大学计算机科学与技术学院的领导、数据库课程组全体教师和学生对本书的编写工作给予了大力支持,并提出了许多宝贵意见,作者在此表示衷心的感谢。
由于作者水平有限,书中难免出现一些疏漏和错误,不足之处在所难免,欢迎广大读者提出宝贵的批评意见和改进建议,谢谢。
作者2019年1月于安徽大学
免费在线读
第3章关系数据库语言SQL
和TransactSQL3.1SQL概述〖*4/5〗3.1.1SQL标准SQL是Structured Query Language的缩写,即结构化查询语言。作为关系数据库的标准语言,SQL最初是基于IBM的System R研制的,1986年被美国国家标准化组织(ANSI)批准为关系数据库的标准语言;1987年,国际标准化组织(ISO)把ANSI SQL作为国际标准,这个标准在1992年进行了修订(SQL92),1999年再次修订(SQL99),2003年、2008年和2011年分别更新了国际标准。作为一种访问关系型数据库的标准语言,SQL问世以来得到了最为广泛的应用,著名的商用数据库管理系统产品(如Oracle、IBM DB2、Sybase、INGRES、MS SQL Server)都支持它,当前十分流行的开源数据库产品(如Postgre SQL、MySQL等)也支持它。
一般情况下,提起SQL标准,涉及的内容主要是SQL92里最基本或者最核心的一部分。SQL92本身是分级的,包括入门级、过渡级、中间级和完全级。不过,SQL标准包含的内容实在太多,而且有很多特性对新的SQL产品也越来越不重要。从SQL99之后,标准中符合程度的定义就不再分级,而是改成了核心兼容性和特性兼容性。
各种不同的数据库管理系统产品对SQL的支持往往与标准存在细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。
3.1.2SQL的特点
SQL集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体,是一个通用的、功能极强的关系数据库语言,充分体现了关系数据语言的特点和优点。
1. 综合统一
SQL集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义数据库、定义关系模式、录入数据以及数据库的查询、更新、维护、数据库重构、数据库安全性、完整性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境,在数据库系统建成投入运行后,还可根据用户需要随时、逐步地修改模式,并不影响数据库系统的运行,从而使系统具有良好的可扩充性。
2. 高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成数据操作请求,必须指定存取路径,对用户极其不便。采用SQL进行数据操作,用户只须提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程均由数据库管理系统自动完成。这不但大大减轻了用户负担,也有利于提高数据独立性。
3. 面向集合的操作方式
SQL采用集合操作方式,不仅查询结果是元组的集合,数据查询、插入、删除、更新操作的对象也是元组的集合。
而非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都只能是一条记录。例如,查询所有平均成绩在80分以上的学生姓名,用户必须说明完成该请求的具体处理过程,即如何用循环结构按照某条路径一条一条地把满足条件的学生记录读取出来。
4. 以同一种语法结构提供两种使用方式
SQL有两种使用方式,既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互使用方式,用户可以在数据库管理系统的环境中,从终端键盘上直接输入SQL命令语句对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C、C 、PB、Java、PHP、Python等)编写的程序中,供程序员在应用程序中访问数据库时使用;且在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同使用方式的机制,为用户提供了极大的灵活性与方便性。
5. 语言简洁,易学易用
SQL功能极其强大,但是十分简洁,易学易用,完成数据管理的核心功能只用了10个命令动词,如表31所示,并且SQL的语法类似于英语自然语言,学习和使用均十分简单。表31SQL的命令动词SQL功能命 令 动 词数据定义CREATE、DROP、ALTER数据查询SELECT数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE、DENY3.1.3TransactSQL
SQL作为关系数据库的标准语言,被关系数据库管理系统产品广泛采用,如Oracle、MS SQL Server、IBM DB2、Informix、MySQL、Sybase 等数据库系统。各种数据库管理系统产品在支持标准SQL的同时,往往又增加一些自己的特定功能,形成各具特色的SQL版本。TransactSQL(TSQL)就是Microsoft公司在其数据库管理系统产品MS SQL Server中对ANSI标准SQL的一个实现。
TransactSQL是结构化查询语言SQL的增强版本,与ANSI SQL标准兼容,而且在标准SQL的基础上还进行了许多扩展,更加方便用户使用。TransactSQL已经成为SQL Server数据库管理系统的核心。
3.1.4SQL规范
为了使读者能够方便地阅读本书中关于SQL的内容,首先简要说明本书中SQL语句的书写格式,在介绍SQL语句的基本语法结构时,语句成分的基本书写格式如表32所示。表32SQL语句格式说明语句成分表 达 格 式说明SQL关键字大写字母如 SELECT、INSERT用户必须提供的参数用“< >”括起来, “”不是语句成分SQL语句中用户必须提供的信息,如、多选一选项用“|”分隔,“|” 不是语句成分如ASC|DESC可选项用“[]”括起来,“[”和“]”不是语句成分如[TOP 2]重复项[, …,n],重复多次,用“,”分隔重复项[…n],重复多次,用“ ”空格分隔注释用“”引导或放在“/”与“/”之间注意: 在本书的例题中,为输入方便,SQL语句一般都用大写字母书写,但实际应用中,SQL并不区分大小写,用大写或小写输入都可以。
在数据库管理系统中和在编程语言中输入SQL语句时,多个语句成分之间用一个或多个空格分隔,语句中并列元素之间用逗号分隔,字符串用单引号括起来,切记一定要用英文标点符号!
3.2实例数据库〖*4/5〗3.2.1供应管理数据库本章在介绍SQL的各项功能时,大部分举例都采用一个实例数据库——供应管理数据库SPJ,该数据库是记录一些供应商供应图31供应管理数据库ER图多个工程项目各种零部件数据的,实际应用中,每个供应商可以给多个工程项目供应多种零部件,每个工程项目可以使用多个供应商供应的多种零部件,每种零部件可以由多个供应商供应,被多个工程项目使用,因此供应商、工程项目、零部件三者之间是多对多的联系。供应管理数据库的概念结构ER图如图31所示(实体的属性在图中省略)。
SPJ数据库包括S,P,J,SPJ 四个关系模式。
(1) 供应商表S(SNO,SNAME,STAT,CITY)。
供应商表S 的属性有供应商代码(SNO)、供应商名(SNAME)、供应商资质状态(STAT)、供应商所在城市(CIIY)属性,供应商代码(SNO)是主码。
(2) 零部件表P(PNO,PNAME,COLOR,WT)。
零件表P的属性有零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WT)属性,零件代码(PNO)是主码。
(3) 工程项目表J(JNO,JNAME,CITY)。
工程项目表J的属性有工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)属性,工程项目代码(JNO)是主码。
(4) 供应情况表SPJ(SNO,PNO,JNO,QTY)。
供应情况表SPJ有供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应量(QTY)属性,QTY表示某供应商供应某种零件给某工程项目的数量,供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)三者的组合是主码,供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)三者均是外码,分别参照供应商、零部件、工程项目三个表的主码。
3.2.2供应管理数据库实例数据
为方便举例,本书为SPJ数据库中的基本表设计了一些实例数据,见表33~表36。读者在进行实际操作练习时可以根据需要向表中添加更多的数据。表33供应商表SSNOSNAMESTATCITYS001天津安贝儿B天津S002北京启明星A北京S003北京新天地C北京S004天津丰泰盛B天津S005上海普丰C上海S006合肥四达B合肥表34零部件表PPNOPNAMECOLORWTP001螺母红12P002螺栓绿17P003螺钉旋具蓝14P004螺钉旋具红14P005凸轮蓝40P006齿轮红30表35工程项目表JJNOJNAMECITYJ001北京三建北京J002长春一汽长春J003新安弹簧厂天津J004临江造船厂天津J005唐山机车厂唐山J006新新无线电厂常州J007铭泰半导体厂南京续表表36供应情况表SPJSNOPNOJNOQTYS001P001J001200S001P001J003100S001P001J004700S001P002J002100S002P003J001400S002P003J002200S002P003J004500S002P003J005400S002P005J001400S002P005J002100S003P001J001200S003P003J001200S004P005J001100S004P006J003300S004P006J004200S005P002J004100S005P003J001200S005P006J002200S005P006J0045003.3数据定义功能
SQL的数据定义功能用来定义数据库中各种对象,包括定义数据库、定义基本表、定义索引和定义视图等。
和TransactSQL3.1SQL概述〖*4/5〗3.1.1SQL标准SQL是Structured Query Language的缩写,即结构化查询语言。作为关系数据库的标准语言,SQL最初是基于IBM的System R研制的,1986年被美国国家标准化组织(ANSI)批准为关系数据库的标准语言;1987年,国际标准化组织(ISO)把ANSI SQL作为国际标准,这个标准在1992年进行了修订(SQL92),1999年再次修订(SQL99),2003年、2008年和2011年分别更新了国际标准。作为一种访问关系型数据库的标准语言,SQL问世以来得到了最为广泛的应用,著名的商用数据库管理系统产品(如Oracle、IBM DB2、Sybase、INGRES、MS SQL Server)都支持它,当前十分流行的开源数据库产品(如Postgre SQL、MySQL等)也支持它。
一般情况下,提起SQL标准,涉及的内容主要是SQL92里最基本或者最核心的一部分。SQL92本身是分级的,包括入门级、过渡级、中间级和完全级。不过,SQL标准包含的内容实在太多,而且有很多特性对新的SQL产品也越来越不重要。从SQL99之后,标准中符合程度的定义就不再分级,而是改成了核心兼容性和特性兼容性。
各种不同的数据库管理系统产品对SQL的支持往往与标准存在细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。
3.1.2SQL的特点
SQL集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体,是一个通用的、功能极强的关系数据库语言,充分体现了关系数据语言的特点和优点。
1. 综合统一
SQL集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义数据库、定义关系模式、录入数据以及数据库的查询、更新、维护、数据库重构、数据库安全性、完整性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境,在数据库系统建成投入运行后,还可根据用户需要随时、逐步地修改模式,并不影响数据库系统的运行,从而使系统具有良好的可扩充性。
2. 高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成数据操作请求,必须指定存取路径,对用户极其不便。采用SQL进行数据操作,用户只须提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程均由数据库管理系统自动完成。这不但大大减轻了用户负担,也有利于提高数据独立性。
3. 面向集合的操作方式
SQL采用集合操作方式,不仅查询结果是元组的集合,数据查询、插入、删除、更新操作的对象也是元组的集合。
而非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都只能是一条记录。例如,查询所有平均成绩在80分以上的学生姓名,用户必须说明完成该请求的具体处理过程,即如何用循环结构按照某条路径一条一条地把满足条件的学生记录读取出来。
4. 以同一种语法结构提供两种使用方式
SQL有两种使用方式,既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互使用方式,用户可以在数据库管理系统的环境中,从终端键盘上直接输入SQL命令语句对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C、C 、PB、Java、PHP、Python等)编写的程序中,供程序员在应用程序中访问数据库时使用;且在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同使用方式的机制,为用户提供了极大的灵活性与方便性。
5. 语言简洁,易学易用
SQL功能极其强大,但是十分简洁,易学易用,完成数据管理的核心功能只用了10个命令动词,如表31所示,并且SQL的语法类似于英语自然语言,学习和使用均十分简单。表31SQL的命令动词SQL功能命 令 动 词数据定义CREATE、DROP、ALTER数据查询SELECT数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE、DENY3.1.3TransactSQL
SQL作为关系数据库的标准语言,被关系数据库管理系统产品广泛采用,如Oracle、MS SQL Server、IBM DB2、Informix、MySQL、Sybase 等数据库系统。各种数据库管理系统产品在支持标准SQL的同时,往往又增加一些自己的特定功能,形成各具特色的SQL版本。TransactSQL(TSQL)就是Microsoft公司在其数据库管理系统产品MS SQL Server中对ANSI标准SQL的一个实现。
TransactSQL是结构化查询语言SQL的增强版本,与ANSI SQL标准兼容,而且在标准SQL的基础上还进行了许多扩展,更加方便用户使用。TransactSQL已经成为SQL Server数据库管理系统的核心。
3.1.4SQL规范
为了使读者能够方便地阅读本书中关于SQL的内容,首先简要说明本书中SQL语句的书写格式,在介绍SQL语句的基本语法结构时,语句成分的基本书写格式如表32所示。表32SQL语句格式说明语句成分表 达 格 式说明SQL关键字大写字母如 SELECT、INSERT用户必须提供的参数用“< >”括起来, “”不是语句成分SQL语句中用户必须提供的信息,如、多选一选项用“|”分隔,“|” 不是语句成分如ASC|DESC可选项用“[]”括起来,“[”和“]”不是语句成分如[TOP 2]重复项[, …,n],重复多次,用“,”分隔重复项[…n],重复多次,用“ ”空格分隔注释用“”引导或放在“/”与“/”之间注意: 在本书的例题中,为输入方便,SQL语句一般都用大写字母书写,但实际应用中,SQL并不区分大小写,用大写或小写输入都可以。
在数据库管理系统中和在编程语言中输入SQL语句时,多个语句成分之间用一个或多个空格分隔,语句中并列元素之间用逗号分隔,字符串用单引号括起来,切记一定要用英文标点符号!
3.2实例数据库〖*4/5〗3.2.1供应管理数据库本章在介绍SQL的各项功能时,大部分举例都采用一个实例数据库——供应管理数据库SPJ,该数据库是记录一些供应商供应图31供应管理数据库ER图多个工程项目各种零部件数据的,实际应用中,每个供应商可以给多个工程项目供应多种零部件,每个工程项目可以使用多个供应商供应的多种零部件,每种零部件可以由多个供应商供应,被多个工程项目使用,因此供应商、工程项目、零部件三者之间是多对多的联系。供应管理数据库的概念结构ER图如图31所示(实体的属性在图中省略)。
SPJ数据库包括S,P,J,SPJ 四个关系模式。
(1) 供应商表S(SNO,SNAME,STAT,CITY)。
供应商表S 的属性有供应商代码(SNO)、供应商名(SNAME)、供应商资质状态(STAT)、供应商所在城市(CIIY)属性,供应商代码(SNO)是主码。
(2) 零部件表P(PNO,PNAME,COLOR,WT)。
零件表P的属性有零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WT)属性,零件代码(PNO)是主码。
(3) 工程项目表J(JNO,JNAME,CITY)。
工程项目表J的属性有工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)属性,工程项目代码(JNO)是主码。
(4) 供应情况表SPJ(SNO,PNO,JNO,QTY)。
供应情况表SPJ有供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应量(QTY)属性,QTY表示某供应商供应某种零件给某工程项目的数量,供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)三者的组合是主码,供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)三者均是外码,分别参照供应商、零部件、工程项目三个表的主码。
3.2.2供应管理数据库实例数据
为方便举例,本书为SPJ数据库中的基本表设计了一些实例数据,见表33~表36。读者在进行实际操作练习时可以根据需要向表中添加更多的数据。表33供应商表SSNOSNAMESTATCITYS001天津安贝儿B天津S002北京启明星A北京S003北京新天地C北京S004天津丰泰盛B天津S005上海普丰C上海S006合肥四达B合肥表34零部件表PPNOPNAMECOLORWTP001螺母红12P002螺栓绿17P003螺钉旋具蓝14P004螺钉旋具红14P005凸轮蓝40P006齿轮红30表35工程项目表JJNOJNAMECITYJ001北京三建北京J002长春一汽长春J003新安弹簧厂天津J004临江造船厂天津J005唐山机车厂唐山J006新新无线电厂常州J007铭泰半导体厂南京续表表36供应情况表SPJSNOPNOJNOQTYS001P001J001200S001P001J003100S001P001J004700S001P002J002100S002P003J001400S002P003J002200S002P003J004500S002P003J005400S002P005J001400S002P005J002100S003P001J001200S003P003J001200S004P005J001100S004P006J003300S004P006J004200S005P002J004100S005P003J001200S005P006J002200S005P006J0045003.3数据定义功能
SQL的数据定义功能用来定义数据库中各种对象,包括定义数据库、定义基本表、定义索引和定义视图等。
评论
还没有评论。