版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理与应用(第3版)第1章 数据库概述1.1 数据管理的发展 1.2 数据独立性1.3 数据库系统的组成1.4 数据库应用结构 1.1 数据管理的发展 1.1.1 文件管理 1.1.2 数据库管理1.1.1 文件管理应用程序1文件1应用程序2文件2应用程序n文件n文件系统文件管理系统示例应用程序A2应用程序A1学生基本信息管理学生选课管理学生信息文件F1课程信息文件F2学生选课信息文件F3文件管理系统的缺点 编写应用程序不方便 数据冗余不可避免应用程序依赖性 不支持对文件的并发访问 数据间联系弱 难以按用户视图表示数据 无安全控制功能1.1.2 数据库管理应用程序1应用程序2应用程序nD
2、BMS数据库数据库管理系统实现示例应用程序A1学生基本信息管理学生有关的数据库应用程序A2学生选课管理数据库管理系统数据库管理系统的优点 相互关联的数据的集合 较少的数据冗余 程序与数据相互对立保证数据的安全、可靠最大限度地保证数据的正确性数据可以并发使用并能保证一致性相互关联的数据的集合数据库中的数据不是孤立的,数据与数据之间是相互关联的。也就是说,在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的联系。学生课程学生与课程之间的联系较少的数据冗余 数据库中的数据被统一管理,合理组织,任何对数据的操作都由数据库管理系统DBMS完成。DBMSDBMS数据具有较高的独立性数据独立性是指
3、数据的组织和存储方法与应用程序互不依赖、彼此独立的特性。保证数据的安全、可靠 数据库技术要能够保证数据库中的数据是安全、可靠的。 有效地防止数据库中的数据被非法使用或非法修改 数据遭到破坏时能立刻将数据完全恢复主动安全被动安全安全机制备份恢复最大限度地保证数据的正确性 保证数据正确的特性在数据库中称之为数据完整性。学生的年龄200岁数据可并发使用并能保证数据的一致性 在多个用户同时使用数据库时,能够保证不产生冲突和矛盾,保证数据的一致性和正确性。并发操作示例10张票订8张票:10-8=2订4张票:10-6=4421010?1.2 数据独立性数据独立性包含两个方面逻辑独立性物理独立性物理独立性是
4、指当数据的存储结构发生变化时,比如,从链表存储改为哈希表存储,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,比如增加一些列、删除无用列等,也不影响应用程序的特性。 1.3 数据库系统的组成 应用程序1应用程序2应用程序n数据库管理系统(DBMS)数据库核心用户类型系统管理员:负责数据库的规划、设计、协调、维护和管理等工作,主要是为了保证数据库正确和高效的运行。应用程序开发人员:负责使用某个程序设计语言编写数据库应用程序,这些应用程序通过向数据库管理系统发出SQL请求获得对数据库的访问,并将数据库管理系统返回的结果按照一定格式显示给用户。最终用户:是数据库应用程序的使用
5、者。1.4 数据库应用结构数据库应用结构是指数据库运行的软、硬件环境。通过这个环境,用户可以访问数据库中的数据。四种最常见的应用结构:集中式结构文件服务器结构客户/服务器结构互联网应用结构 1.4.1 集中式应用结构 应用程序数据库大型机按键信息终端字符终端1终端n终端2客户端优点是可以实现集中管理,安全性好。缺点是费用昂贵,不能真正划分应用程序的逻辑。 1.4.2 文件服务器结构 优点在于实现的费用比较低廉,而且配置非常灵活。缺点是,由于所有的应用处理都要在客户端完成,因此客户端的个人计算机必须要有足够的能力。 应用程序数据库网络文件服务器文件文件请求工作站1工作站n工作站2客户端应用程序应
6、用程序1.4.3 客户/服务器结构 优点:应用程序或应用逻辑可以根据需要划分在服务器和客户工作站中,同时减少了网络流量。 应用程序数据库服务器数据请求结果工作站1工作站n工作站2客户端应用程序应用程序1.4 互联网应用结构 优点:最终用户应用软件的安装和维护都非常简单,客户端不再需要安装、配置应用软件的工作。这些工作只需在Web服务器上完成,从而减少客户端与服务器端软件配置的不一致以及不同版本应用软件所带来的问题。 客户端应用程序数据库数据库服务器页面请求页面个人机1个人机n个人机2数据请求结果Web服务器浏览器浏览器浏览器第2章 数据库系统结构 2.1 数据和数据模型 2.2 概念层数据模型
7、 2.3 组织层数据模型 2.4 数据库系统的结构2.1 数据和数据模型1.数据人们从实际中抽取的感兴趣的事物特征。有一定的格式,如,性别是一个汉字的字符。格式的规定是数据的语法,而数据的含义是数据的语义。 数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。 通过解释、推论、归纳、分析和综合等方法,从数据所获得的有意义的内容称为信息。示例数据:(张三,9912101,男,1981,计算机系,应用软件)解释:张三是9912101班的男生,1981年出生,计算机系应用软件专业。2022/7/11 18:4727数据信息解释2.1.2 数据模型对于模型,人们并不陌生。建筑模型 飞机模型
8、计算机中的模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具数据模型(data model)也是一种模型,它是对现实世界数据特征的抽象。2022/7/11 18:4728数据模型(续)数据库管理系统是基于某种数据模型对数据进行组织的,因此,了解数据模型的基本概念是学习数据库知识的基础。在数据库领域中,数据模型用于表达现实世界中的对象,即将现实世界中杂乱的信息用一种规范的、形象化的方式表达出来。2022/7/11 18:4729数据模型(续)数据模型即要面向现实世界,又要面向机器世界,因此需满足三个要求:能够真实地模拟现实世界;容易被人们理解;能够方便地在计算
9、机上实现。2022/7/11 18:47302. 数据模型模型是现实世界感兴趣的内容的抽象特征的模拟和抽象。(是理解系统的思维工具)数据模型是用来抽象、表示和处理现实世界中的数据和信息的。(如:数据库、文件)数据模型应满足三个条件:能比较真实地模拟现实世界;容易被人们理解;便于在计算机上实现。数据模型(续)数据模型实际上是模型化数据和信息的工具。根据模型应用的不同目的,可以将模型分为两大类:概念层数据模型(概念模型),从数据的语义视角来抽取模型,是按用户的观点来对数据和信息进行建模。组织层数据模型(组织模型)。从数据的组织层次来描述数据。2022/7/11 18:4732概念层数据模型从数据的
10、应用语义视角来抽取现实世界中有价值的数据并按用户的观点对数据进行建模。主要用在数据库的设计阶段,与具体的数据库管理系统无关,与具体的实现方式无关。2022/7/11 18:4733组织层数据模型从数据的组织方式来描述数据。主要有:层次模型网状模型关系模型对象-关系模型是从计算机系统的观点对数据进行建模,与所使用的数据库管理系统有关。2022/7/11 18:4734现实世界信息世界:概念模型机器世界:具体DBMS支持的数据模型转换人的认识抽象现实世界客观事物的抽象过程 数据的两个特征静态特性:包括数据的基本结构、数据间的联系和数据中的约束。 动态特征:指定义在数据上的操作。比如对学生的基本信息
11、可以查询、修改和增加新记录等。 2.2 概念层数据模型1. 基本概念2. 实体-联系模型2022/7/11 18:47371. 基本概念概念层数据模型是指抽象现实系统中有应用价值的元素及其关联关系,反映现实系统中有应用价值的信息结构,并且不依赖于数据的组织层数据模型。用于对信息世界建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的工具,也是数据库设计人员和业务领域的用户之间进行交流的工具。2022/7/11 18:4738基本概念(续)概念层数据模型应该:具有较强的语义表达能力;能够方便、直接地表达应用中的各种语义知识;简单、清晰,易于被用户理解。是面向用户、面向现实世界
12、的数据模型,与具体的DBMS无关。常用概念模型:实体-联系模型、语义对象模型2022/7/11 18:47392. 实体-联系模型由P. P. S. Chen于1976年提出,即通常所说的E-R方法。这种方法由于简单、实用,因此得到了广泛的应用,也是目前描述信息结构最常用的方法。实体-联系方法使用的工具称为E-R图。也把这种描述结果称为E-R模型。2022/7/11 18:4740 2.2 概念层数据模型 概念层次模型实际上是现实世界到机器世界的一个中间层次。 概念层次模型:抽象现实系统中有应用价值的元素及其关联,反映现实系统中有应用价值的信息结构,不依赖于数据的组织结构。 概念模型用于信息世
13、界的建模,是现实世界到信息世界的第一层抽象。是数据库设计人员和用户之间进行交流的工具 。是面向用户、面向现实世界的数据模型,是与DBMS无关 。常用的概念模型:实体-联系模型、语义对象模型 实体-联系模型 实体 属性 联系 实体具有公共性质的可相互区分的现实世界对象的集合。可以是具体的事物,也可以是抽象的概念或联系具体的事物:学生、课程、职工抽象的联系:学生选课实体的表示方式在E-R图中用矩形框表示实体,把实体名写在框内,比如学生实体可以表示为:学生属性实体所具有的特征或性质。身高年龄性别体重属性的表示方式 用圆角矩形或椭圆框表示,框内写上属性名,并用连线连到相应实体。学生学号姓名性别2022
14、/7/11 18:4746联系 联系是数据之间的关联集合,是客观存在的应用语义链 。实体内部的联系:一个实体内属性之间的联系。职工实体内部的职工号和职工的部门经理号实体之间的联系:不同实体之间的联系。课程实体和学生实体之间的选课联系。联系的表示方式 实体之间的联系用菱形框表示,框内写上联系名,并用连线与有关的实体相连。 联系名实体1实体2联系的种类一对一联系(1:1)一对多联系(1:n)多对多联系(m:n) 如果实体A中的每个实例在实体B中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体A与实体B具有一对一联系, 记作:1 : 1。 一对一联系(1:1)一对一联系的例子部门和正经理(假
15、设一个部门只有一个正经理,一个人只当一个部门的经理)、系和正系主任(假设一个系只有一个正主任,一个人只当一个系的主任)都是一对一联系。 管理经理部门11一对多的联系 如果实体A与实体B之间存在联系,并且对于实体A中的一个实例,实体B中有多个实例与之对应;而对实体B中的任意一个实例,在实体A中都只有一个实例与之对应,则称实体A到实体B的联系是一对多的。 记作: 1 : n 有部门和职工两个实体,并且有语义:一个部门可以有多名职工,但是一个职工只在一个部门工作。则部门和职工之间的联系是一对多的,我们把这种联系命名为工作。一对多联系的例子工作部门职工1n多对多的联系 如果实体A与实体B之间存在联系,
16、并且对于实体A中的一个实例,实体B中有多个实例与之对应;而对实体B中的一个实例,在实体A中也有多个实例与之对应,则称实体A到实体B的联系是多对多的。 记作:m : n 多对多联系的例子 有学生和课程两个实体,并且有语义:一个学生可以修多门课程,一门课程可以被多个学生修。那么学生和课程之间的联系就是多对多的,我们把这种联系命名为选课。学生课程选课mn关联多个实体的联系顾客购买商品:每个顾客可以从多个售货员那里购买商品,并且可以购买多种商品;每个售货员可以向多名顾客销售商品,并且可以销售多种商品;每种商品可由多个售货员销售,并且可以销售给多名顾客。 mnp顾客商品售货员销售2.3 组织层数据模型2
17、.3.1 关系数据模型的数据结构2.3.2 关系数据模型的数据操作2.3.3 关系数据模型的数据完整性约束关系数据模型的数据结构把数据看成是二维表中的元素,而这个二维表就是关系 用关系(表格数据)表示实体和实体之间联系的模型称为关系数据模型示例:学生基本信息表一些基本术语关系(relation) :就是二维表,它满足如下性质:关系表中的每一列都是不可再分的基本属性。 表中各属性不能重名。 表中的行、列次序并不重要。学号姓名年龄性别所在系出生日期年月日0611101李勇21男计算机系1987460611102刘晨20男计算机系198812150611103王敏20女计算机系19888210621
18、101张立20男信息管理系198863不是基本属性不是关系一些基本术语(续)属性(attribute) :二维表中的每个列称为一个属性(或叫字段)。 每个属性有一个名字,称为属性名。二维表中对应某一列的值称为属性值;二维表中列的个数称为关系的元数。如果一个二维表有n个列,则称其为n元关系。一些基本术语(续)值域(domain)二维表中属性的取值范围称为值域。如:“年龄”取值为0150的整数“性别” 的取值为“男”和“女”一些基本术语(续)元组(tuple):二维表中的一行数据称为一个元组(记录值)。(0611101,李勇,21,男,计算机系)(0611102,刘晨,20,男,计算机系)(061
19、1103,王敏,20,女,计算机系)(0621101,张立,20,男,信息管理系)(0621102,吴宾,19,女,信息管理系)元组一些基本术语(续)分量(component):元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。例如,元组(0611101,李勇,21,男,计算机系),有5个分量:0611101、李勇、21、男、计算机系一些基本术语(续)关系模式(relation schema):二维表的结构称为关系模式,或者说,关系模式就是二维表的表框架或表头结构。设有关系名为R,属性分别为A1,A2,An,则关系模式可以表示为: R(A1,A2,An)如果将关系模式理解为
20、数据类型,则关系就是该数据类型的一个具体值。一些基本术语(续)关系数据库(relation database):对应于一个关系模型的所有关系的集合称为关系数据库。候选码(candidate key):如果一个属性或属性集的值能够惟一标识一个关系的元组而又不包含多余的属性,则称该属性或属性集为候选码。候选码也称为候选键或候选关键字。在一个关系上可以有多个候选码。一些基本术语(续)主码(primary key):当一个关系中有多个候选码时,可以从中选择一个作为主码。每个关系只能有一个主码。主码也称为主键或主关键字,用于惟一地确定一个元组。主码可以由一个属性组成,也可以由多个属性共同组成。注意:不能
21、根据关系在某时刻所存储的内容来决定其主码。主码示例学生关系模式:(学号,姓名,年龄,性别,所在系)选课关系模式:(学号,课程号,成绩):一个学生对一门课程只能有一次考试;(学号,课程号,考试次数,成绩):一个学生对一门课程可有多次考试。一些基本术语(续)主属性(primary attribute)和非主属性(nonprimary attribute)包含在任一候选码中的属性称为主属性。不包含在任一候选码中的属性称为非主属性。术语对比关系术语一般的表格术语关系名表名关系模式表头(表所含列的描述)关系(一张)二维表元组记录或行属性列分量一条记录中某个列的值关系模型的数据操作 关系模型的操作对象是集
22、合(也就是关系)非关系型数据库系统中典型的操作是一次一行或一次一个记录。集合处理能力是关系系统区别于其他系统的一个重要特征。关系数据模型的数据操作主要包括四种:查询、插入、删除和修改数据。 关系模型的数据完整性约束 数据的完整性是指保证数据正确性的特征。数据完整性是一种语义概念,包括两方面:与现实世界中应用需求的数据的相容性和正确性;数据库内数据之间的相容性和正确性。实体完整性 参照完整性用户定义的完整性实体完整性实体完整性指的是关系数据库中所有的表都必须有主码。 而且表中不允许存在如下的记录:无主码值的记录主码值相同的记录参照完整性参照完整性一般是指实体(表)之间的关联关系。 在关系数据库中
23、用外码来实现参照完整性。外码一般出现在联系所对应的关系中,用于表示两个或多个实体之间的关联关系。外码实际上是表中的一个(或多个)属性,它引用某个其他表(特殊情况下,也可以是外码所在的表)的主码。 外码引用例1学生专业属于(学号, 姓名, 专业号, )(专业号,专业名)外码引用例2学生课程修课(学号,姓名,)(课程号,课程名, )(学号, 课程号, 成绩, )参照完整性规则参照完整性规则就是定义外码与主码之间的引用规则。对于外码,一般应符合如下要求:或者值为空;或者等于其所应用的关系中的某个元组的主码值。外码说明:外码不一定要与被引用列同名,只要它们的语义相同即可。外码为空示例职工(职工号,职工
24、名,部门号,工资级别)部门(部门号,部门名)如果某新来职工还没有被分配到具体的部门,则其“部门号”就为空值;如果职工已经被分配到了某个部门,则其部门号就有了确定的值(非空值)。用户定义的完整性也称为域完整性或语义完整性。按应用语义,属性数据有:类型与长度限制:方便计算机操作;取值范围限制:防止属性值与应用语义矛盾。示例:成绩:0 . 100 或 优、良、中、及格、不及格2.4 数据库系统的结构 2.4.1 模式的基本概念 2.4.2 三级模式结构 2.4.3 数据库的模式映像功能与数据独立性 考察数据库系统的结构可以有多种不同的层次或不同的角度。从数据库管理角度看,数据库系统通常采用三级模式结
25、构。这是数据库系统的内部结构; 从数据库最终用户角度看,数据库系统的结构分为集中式结构、文件服务器结构、客户/服务器结构等。这是数据库系统的外部结构。2.4.1 模式的基本概念模式是用给定的数据模型对具体数据的描述。模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。关系模式是关系的“型”或元组的结构共性的描述。关系模式表头 (关系模式)元组属性1属性2属性n示例:学生关系模式:学生(学号,姓名,年龄,性别,所在系) 关系与实例模式的一个具体值称为模式的一个实例,在关系数据库中就是一个元组。关系实例2.4.2 三级模式结构关系数据库中的模式是关系的。外模式也是关系
26、的或接近关系的,它们的内容来自模式 。内模式不是关系的,它是数据的物理存储方式。外模式也称为用户模式、子模式。 用户对现实系统中感兴趣整体的局部数据结构的描述。 是DB整体数据结构的子集或局部重构。 是保证数据库安全的一个措施。 模式 也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据描述。 是数据库系统结构的中间层。既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具和环境无关。 内模式也称为存储模式。是对整个数据库的底层表示,它描述了数据的存储结构,比如数据的组织与存储方式,如是顺序存储、B树存储还是散列存储、索引按什么方式组
27、织、是否加密等。与物理层不一样,它不涉及物理记录的形式,也不考虑具体设备的柱面或磁道大小。 数据库的模式映像功能与数据独立性 三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在内部实现这三个抽象层次的联系和转换,数据库管理系统在三级模式之间提供了两层映象:外模式/模式映象模式/内模式映象是数据库管理系统的基本功能之一。维护DB数据与DB应用程序相互独立,从而使DB应用程序不随DB数据的逻辑或存储结构的变动而变动。 模式间的映象外模式/模式映象 对于每个外模式,数据库管理系统都有一个外模
28、式/模式映像,它定义了该外模式与模式之间的对应关系。当模式改变时,可用外模式/模式定义语句,调整外模式/模式映象定义,从而保持外模式不变。保证了数据与程序的逻辑独立性。模式/内模式映象 模式/内模式映像定义了数据库的逻辑结构与存储结构之间的对应关系。当存储结构改变时,只需要对模式/内模式映像做相应的修改,就可以保持模式不变,从而也不必改变应用程序。保证了数据与程序的物理独立性。三个模式小结模式(即全局逻辑结构)是数据库的中心与关键,它独立于数据库系统的其他层。设计数据库系统时也是首先设计数据库系统的逻辑模式。内模式依赖于数据库的全局逻辑结构,但独立于数据库的用户视图,也就是外模式,也独立于具体
29、的存储设备。外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。 三个模式小结(续)应用程序一般是在外模式描述的结构上编写的与数据库系统的模式和存储结构独立。不同的应用程序可以共用同一个外模式。数据库系统的两级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出来。数据的存取由DBMS负责,因此,用户不必考虑存取路径等细节,从而简化了应用程序的编制,减少了对应用程序的维护和修改工作。 数据库原理与应用(第3版)第3章 SQL语言基础及数据定义功能 3.1 SQL语言概述3.2 数据类型 3.
30、3 创建数据库3.4 创建与维护关系表概述SQL(Structured Query Language)是用户操作关系数据库的通用语言。包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。已成为关系数据库的标准语言。所有的关系数据库管理系统都支持SQL。 3.1 SQL语言概述 3.1.1 SQL语言的发展 3.1.2 SQL语言的特点3.1.3 SQL语言功能概述 3.1.1 SQL语言的发展1986年10月美国ANSI公布最早的SQL标准。 1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89(SQL1)。1992年11月,ISO又公布了新的SQL标准,称为S
31、QL-92(SQL2) (以上均为关系形式)。1999年颁布SQL-99(SQL3),是SQL92的扩展。3.1.2 SQL语言的特点1. 一体化2. 高度非过程化3. 简洁4. 使用方式多样3.1.3 SQL语言功能概述SQL功能命令动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE四部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。 3.2 数据类型数值类型 字符串类型日期时间类型货币类型精确数值类型精确数值类型说明存储空间bigint存储从263 (9,223,372,036,85
32、4,775,808)到263-1 (9,223,372,036,854,775,807) 范围的整数8字节int存储从231 (2,147,483,648 ) 到 231-1 ( 2,147,483,647 ) 范围的整数。4字节smallint存储从215 (32,768 ) 到 215-1 (32,767 ) 范围的整数2字节tinyint存储从 0 到 255 之间的整数。1字节bit存储1或0。如果一个表中有不多于8个的bit列,则这些列公用一个字节存储1字节numeric(p,s)或decimal(p,s)定点精度和小数位数。使用最大精度时,有效值从 1038 +1 到 1038 -
33、1。其中,s为精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从1到最大精度之间的值。最大精度为38。s为小数位数,指定小数点右边可以存储的十进制数字的最大个数,0 = s = p。s的默认值为0最多17字节近似数值数类型近似数值类型说明存储空间float(n)存储从-1.79E + 308至-2.23E 308、0以及2.23E308至1.79E + 308范围的浮点数。n有两个值,如果指定的n在124之间,则使用24,占用4字节空间;如果指定的n在2553之间,则使用53,占用8字节空间。若省略(n),则默认为53 4字节或8字节real存储从3.40E + 38到3.
34、40E + 38范围的浮点型数4字节字符串类型普通编码字符串类型统一字符编码字符串类型二进制字符串类型普通编码字符串类型普通编码字符串类型说明存储空间char(n)固定长度的普通编码字符串类型,n表示字符串的最大长度,取值范围为18000 n个字节。当实际字符串所需空间小于n时,系统自动在后边补空格varchar(n)可变长度的字符串类型,n表示字符串的最大长度,取值范围为18000字符数2字节额外开销text最多可存储231-1 (2,147,483,647) 个字符每个字符1个字节varchar(max)最多可存储231-1个字符字符数2字节额外开销说明:如果在使用char(n)或varc
35、har(n)类型时未指定n,则默认长度为1。如果在使用CAST和CONVERT函数时未指定n,则默认长度为30。统一字符编码字符串类型统一编码字符串类型说明存储空间nchar(n)固定长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为140002n字节。当实际字符串所需空间小于2n时,系统自动在后边补空格nvarchar(n)可变长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为140002*字符数2字节额外开销ntext最多可存储230-1 (1,073,741,823) 个统一字符编码的字符每个字符2个字节nvarchar(max)最多可存储230-1个统一字符编码的字
36、符2*字符数2字节额外开销二进制字符串类型二进制字符串类型说明存储空间binary(n)固定长度的二进制数据,n的取值范围为18000n字节varbinary(n)可变长度的二进制数据,n的取值范围为18000。字符数2字节额外开销image可变长度的二进制数据,最多为231-1 (2,147,483,647)个十六进制数字每个字符1个字节varbinary(max)可变长度的二进制数据,最多为231-1 (2,147,483,647)个十六进制数字字符数2字节额外开销日期时间类型日期时间类型说明存储空间date定义一个日期,范围为 到 。字符长度10位,默认格式为:YYYY-MM-DD。YY
37、YY表示4位年份数字,范围从0001到9999;MM表示2位月份数字,范围从01到12;DD表示2位日的数字,范围从 01 到 31(最大值取决于具体月份)3字节time(n)定义一天中的某个时间,该时间基于24小时制。默认格式为:hh:mm:ss.nnnnnnn,范围为00:00:00.0000000到23:59:59.9999999。精确到100纳秒。n为秒的小数位数,取值范围是0到7的整数。默认秒的小数位数是7(100ns)35字节datetime定义一个采用24小时制并带有秒的小数部分的日期和时间,范围为到-,时间范围是00:00:00到23:59:59.997。默认格式为:YYYY-
38、MM-DD hh:mm:ss.nnn,n为数字,表示秒的小数部分(精确到0.00333 秒)8字节日期时间类型(续)日期时间类型说明存储空间smalldatetime定义一个采用24小时制并且秒始终为零(:00)的日期和时间,范围为到。默认格式为:YYYY-MM-DD hh:mm:00。精确到1分钟4字节datetime2定义一个结合了24小时制时间的日期。可将该类型看成是datetime类型的扩展,其数据范围更大,默认的小数精度更高,并具有可选的用户定义的精度。默认格式是:YYYY-MM-DD hh:mm:ss.nnnnnnn,n为数字,表示秒的小数位数(最多精确到100 纳秒),默认精度是
39、7位小数。该类型的字符串长度最少19 位(YYYY-MM-DD hh:mm:ss),最多27位(YYYY-MM-DD hh:mm:ss.0000000)68字节datetimeoffset定义一个与采用 24 小时制并与可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24小时制)是时区一致的。语法格式为:datetimeoffset (n),n为秒的精度,最大为7。默认格式为:YYYY-MM-DD hh:mm:ss.nnnnnnn +|-hh1:mm1,其中hh1的取值范围为-14 到 +14,mm1的取值范围为00 到 59。该类型的日期范围为到,时间范围为00:00:
40、00 到 23:59:59.9999999。时区偏移量范围为-14:00 到+14:00。该类型的字符串长度为:最少26位(YYYY-MM-DD hh:mm:ss +|-hh:mm),最多34位 (YYYY-MM-DD hh:mm:ss.nnnnnnn +|-hh:mm)810字节货币类型货币类型说明存储空间money存储922,337,203,685,477.5808到922,337,203,685,477.5807范围的数值,精确到小数点后4位8字节smallmoney存储-214,748.3648 到214,748.3647范围的数值,精确到小数点后4位4字节3.3 创建数据库3.3.1
41、 SQL Server数据库分类3.3.2 数据库基本概念3.3.3 用图形化方法创建数据库3.3.4 用T-SQL语句创建数据库3.3.1 SQL Server数据库分类两大类:系统数据库:存放维护系统正常运行的信息。用户数据库:存放用户自己的信息。系统数据库Master:最重要数据库,用于记录所有系统级信息。Msdb:保存关于报警、作业、操作员等信息Model:包含所有用户数据库的共享信息。当用户创建数据库时,系统自动将model数据库中的内容复制到新建数据库中。Tempdb:临时数据库,用于存储用户创建的临时表、用户声明的变量以及用户定义的游标数据等。3.3.2 数据库基本概念1SQL
42、Server数据库的组成2关于数据的存储分配3数据库文件的属性1SQL Server数据库的组成SQL Server将数据库映射为一组操作系统文件,这些文件被划分为两类:数据文件和日志文件。数据文件包含数据和对象,例如表、索引、存储过程和视图等。日志文件包含恢复数据库中的所有事务需要的信息。数据和日志信息不混合在同一个文件中,一个文件只由一个数据库使用。数据文件用于存放数据库数据。数据文件又分为:主要数据文件:推荐扩展名是.mdf,包含数据库的系统信息,也可存放用户数据。每个数据库都有且只能有一个主要数据文件。是为数据库创建的第一个数据文件。不能小于3MB。次要数据文件:推荐扩展名是.ndf。
43、一个数据库可以包含0n个次要数据文件。可与主要数据文件存放在不同地方。所有文件的使用对用户也是透明的。日志文件推荐扩展名为.ldf。用于存放恢复数据库的所有日志信息。每个数据库有1n个日志文件。2关于数据的存储分配数据库中数据的存储分配单位是数据页。一页是一块8KB(其中用8060个字节存放数据,另外132个字节存放系统信息)的连续磁盘空间。页是存储数据的最小空间分配单位。不允许表中的一行数据存储在不同页上(varchar(max)、nvarchar(max)、text、ntext、varbinary(max)和image数据类型除外),即行不能跨页存储。示例假设某数据表有10000行数据,每
44、行3000字节,估算其需要的空间: (10000/2) * 8KB = 40MB其中,每页中有6000字节用于存储数据,有2060个字节是浪费的。3数据库文件的属性文件名及其位置:每个文件都有一个逻辑文件名和物理文件名及物理存储位置。初始大小:指定每个文件的初始大小。增长方式:指定文件是否自动增长。最大大小:指定文件增长的最大空间限制。3.3.4 用T-SQL语句创建数据库CREATE DATABASE database_name ON PRIMARY ,.n LOG ON ,.n := ( NAME = logical_file_name , FILENAME = os_file_name
45、| filestream_path , SIZE = size KB | MB | GB | TB , MAXSIZE =max_sizeKB|MB|GB|TB| UNLIMITED , FILEGROWTH =growth_incrementKB|MB|GB|TB|% ) ,.n 示例1例1创建一个名为“学生管理数据库”的数据库,其他选项均采用默认设置。CREATE DATABASE 学生管理数据库示例2CREATE DATABASE RShDBON ( NAME = RShDB, FILENAME = D:RShDB_DataRShDB.mdf , SIZE = 10, MAXSIZE =
46、 30, FILEGROWTH = 5 )LOG ON( NAME = RShDB_log, FILENAME = D:RShDB_DataRShDB_log.ldf , SIZE = 3, MAXSIZE = 12, FILEGROWTH = 2 )示例3CREATE DATABASE studentsON PRIMARY ( NAME = students, FILENAME = F:Datastudents.mdf, SIZE = 3MB, MAXSIZE = UNLIMITED ), ( NAME = students_data1, FILENAME = D:Datastudents_
47、data1.ndf, SIZE = 5MB, MAXSIZE = 10MB, FILEGROWTH = 1MB )LOG ON ( NAME = students_log, FILENAME = F:Datastudents_log.ldf, SIZE = 2MB, MAXSIZE = 6MB, FILEGROWTH = 10% )3.4 创建与维护关系表3.4.1 用T-SQL语句实现3.4.2 用SSMS工具实现3.4.1 用T-SQL语句实现1 创建表2 定义完整性约束3 修改表结构4 删除表1 创建表CREATE TABLE ( 列级完整性约束定义, 列级完整性约束定义 , 表级完整性
48、约束定义 ) 2 定义完整性约束NOT NULL:限制列取值非空。DEFAULT:给定列的默认值。UNIQUE:限制列取值不重。CHECK:限制列的取值范围。PRIMARY KEY:定义主码。FOREIGN KEY:定义外码。说明:NOT NULL和DEFAULT只能定义在列级完整性约束处多列的CHECK约束只能定义在表级完整性约束处主码约束语法格式: PRIMARY KEY ( , n )如果是在列级完整性约束处定义单列的主码,可省略方括号部分。外码约束语法格式为:FOREIGN KEY () REFERENCES ()如果是在列级完整性约束处定义单列的外码,可省略方括号部分。UNIQUE约
49、束用于限制在一个列中不能有重复的值。语法格式为: 数据类型 UNIQUE ( , n )如果是在列级完整性约束处定义单列的UNIQUE约束,则可以省略括号部分。DEFAULT约束用于提供列的默认值。一个列只能有一个默认值约束,而且一个默认值约束只能用在一个列上。只能定义在列级完整性约束处。语法格式: DEFAULT 默认值CHECK约束用于限制列的输入值在指定的范围内。语法格式: CHECK (逻辑表达式)说明:逻辑表达式中不能包含来自多个表的列。Student表结构列名含义数据类型约束Sno学号CHAR(7)主码Sname姓名NCHAR(5)非空SID身份证号CHAR(18)取值不重Ssex
50、性别NCHAR(1)默认值为“男”Sage年龄TINYINT取值范围为1545Sdept所在系NVARCHAR(20)定义Student表CREATE TABLE Student ( Sno CHAR(7) PRIMARY KEY, Sname NCHAR(5) NOT NULL, SID CHAR(18) UNIQUE, Ssex NCHAR(1) DEFAULT 男, Sage TINYINT CHECK(Sage=15 AND Sage0), Semester TINYINT)SC表结构列名含义数据类型约束Sno学号CHAR(7)主码列,引用Student的外码Cno课程名CHAR(6)
51、主码列,引用Course的外码Grade成绩TINYINT定义SC表CREATE TABLE SC ( Sno CHAR(7) NOT NULL, Cno CHAR(6) NOT NULL, Grade TINYINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) 3 修改表结构在定义基本表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE语句实现。ALTER TABLE语句可以对表添加列、
52、删除列、修改列的定义,也可以添加和删除约束。ALTER TABLE语句语法ALTER TABLE ALTER COLUMN | ADD | DROP COLUMN | ADD 约束定义| DROP 示例例2为SC表添加“修课类别”列,此列的定义为:Type NCHAR(1),允许空。 ALTER TABLE SC ADD Type NCHAR(1) NULL例3将新添加的Type列的数据类型改为NCHAR(2)。 ALTER TABLE SC ALTER COLUMN Type NCHAR(2)示例例4为Type列添加限定取值范围为必修、选修的约束。 ALTER TABLE SC ADD CH
53、ECK(Type IN (必修, 选修) )例5删除SC表的“Type”列。 ALTER TABLE SC DROP COLUMN Type4 删除表当不再需要某个表时,可以将其删除。删除表的语句格式为:DROP TABLE , 例:删除test表:DROP TABLE test数据库原理与应用(第2版)第4章 数据操作语句4.1 数据查询功能4.2 数据更改功能4.1 数据查询功能 4.1.1 查询语句的基本结构4.1.2 简单查询4.1.3 多表连接查询4.1.4 CASE函数4.1.5 子查询 4.1.1 查询语句基本格式SELECT -需要哪些列 FROM -来自于哪些表 WHERE
54、-根据什么条件 GROUP BY HAVING ORDER BY 4.1.2 简单查询1 选择表中若干列2 选择表中的若干元组3 对查询结果进行排序4 使用聚合函数汇总数据5 对查询结果进行分组计算 1. 选择表中若干列查询表中用户感兴趣的部分属性列。例1:查询全体学生的学号与姓名。SELECT Sno,Sname FROM Student例2:查询全体学生的姓名、学号和所在系。SELECT Sname,Sno,Sdept FROM Student 查询全部列 例3查询全体学生的记录 SELECT Sno,Sname,Ssex, Sage, Sdept FROM Student等价于: SEL
55、ECT * FROM Student 查询经过计算的列 例4查询全体学生的姓名及其出生年份。 SELECT Sname, 2011 - Sage FROM Student例5含字符串常量的列:查询全体学生的姓名和出生年份,并在出生年份列前加一列,此列的每行数据均为“出生年份”常量值。 SELECT Sname, 出生年份, 2011 - Sage FROM Student改变列标题 语法:列名 | 表达式 AS 列标题或:列标题 列名 | 表达式例: SELECT Sname 姓名, 2011 - Sage 年份 FROM Student2 选择表中的若干元组消除取值相同的行查询满足条件的元组
56、消除取值相同的记录例6在修课表中查询有哪些学生修了课程,要求列出学生的学号。 SELECT Sno FROM SC结果中有重复的行。用DISTINCT关键字可以去掉结果中的重复行。DISTINCT关键字放在SELECT词的后边、目标列名序列的前边。SELECT DISTINCT Sno FROM SC 查询满足条件的元组 查询条件谓 词比较运算符=, , =, , =, NOT+比较运算符 确定范围BETWEENAND, NOT BETWEENAND确定集合IN, NOT IN字符匹配LIKE, NOT LIKE 空值IS NULL, IS NOT NULL逻辑谓词)AND, OR比较大小例7
57、查询计算机系全体学生的姓名。SELECT Sname FROM Student WHERE Sdept = 计算机系例8查询年龄在20岁以下的学生的姓名及年龄。SELECT Sname, Sage FROM Student WHERE Sage 20例9查询考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM SC WHERE Grade =20 AND Sage=23 示例例11查询年龄不在2023之间的学生姓名、所在系和年龄。SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 2
58、3等价于:SELECT Sname, Sdept, Sage FROM Student WHERE Sage 23 示例例12 对于日期类型的数据也可以使用基于围的查找。设有教师表(Teachers),有:工号(Tid)、姓名(Tname)和出生日期(BirthDate)列。查询1970年1月1日至1979年12月31日出生的教师信息。 SELECT Tid, Tname, BirthDate from Teachers WHERE BirthDate between 1970/1/1 and 1979/12/31确定集合用来查找属性值属于指定集合的元组。格式为: 列名 NOT IN(常量1,
59、 常量2,常量n)IN:当列中的值与IN中的某个常量值相等时,则结果为True,表明此记录为符合查询条件的记录。NOT IN:当列中的值与某个常量值相等时,结果为False,表明此记录为不符合查询条件的记录。示例例13 查询信息管理系、通信工程系和计算机系学生的姓名和性别。SELECT Sname, Ssex FROM Student WHERE Sdept IN (信息管理系, 通信工程系, 计算机系)等价于:SELECT Sname, Ssex FROM Student WHERE Sdept = 信息管理系 OR Sdept = 通信工程系 OR Sdept = 计算机系 示例(续)例1
60、4 查询既不是信息管理系、通信工程系,也不是计算机系学生的姓名和性别。SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (信息管理系, 通信工程系, 计算机系)等价于:SELECT Sname, Ssex FROM Student WHERE Sdept!= 信息管理系 AND Sdept!= 通信工程系 AND Sdept!= 计算机系 字符匹配一般形式为: 列名 NOT LIKE 匹配串中可包含如下四种通配符:_:匹配任意一个字符;%:匹配0个或多个字符; :匹配 中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表达 );
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流行业工作计划范文
- 低保科工作计划
- 酒店销售部工作总结及计划范文
- 2025年部门销售主管工作计划范文
- 医院信息中心工作计划范文
- 政研室工作计划
- 《E芯片试产报告》课件
- 《大学有机化学》课件
- 合同 条款 内部逻辑
- 投标合同条款
- 安徽省合肥市包河区2023-2024学年三年级上学期语文期末试卷
- 【MOOC】新媒体文化十二讲-暨南大学 中国大学慕课MOOC答案
- 2024-2025学年二年级数学上册期末乐考非纸笔测试题(二 )(苏教版)
- 2024年度智能制造生产线改造项目合同
- 2024年度食堂档口承包合同(含菜品研发)3篇
- DB32T 4578.2-2023 丙型病毒性肝炎防治技术指南 第2部分:患者管理
- 护理轮科心得
- 英语期末复习讲座模板
- 9《作息有规律》(说课稿)2024-2025学年统编版(2024)道德与法治一年级上册
- 北京市西城区2023-2024学年六年级上学期语文期末试卷
- 2025年蛇年年会汇报年终总结大会模板
评论
0/150
提交评论