数据库原理及应用学位辅导.doc_第1页
数据库原理及应用学位辅导.doc_第2页
数据库原理及应用学位辅导.doc_第3页
数据库原理及应用学位辅导.doc_第4页
数据库原理及应用学位辅导.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理及应用学位辅导以下几大部分:第一部分:数据库基本概念第二部分:关系代数第三部分:关系规范化第四部分:数据库安全性控制第五部分:数据库设计第六部分:SQL语句(重点)第七部分:sql server 2000第一部分:数据库基本概念一、数据库技术的发展阶段1.手工管理阶段人工管理数据不独立,不共享,冗余度大。2.文件系统阶段数据保存在文件中,访问时通过操作系统来访问数据文件。3.数据库系统阶段数据有了独立性,数据共享,减少了数据冗余。数据库管理系统(DBMS)用来管理和维护数据库的系统软件。数据库管理系统的控制功能分为哪四种:1) 数据安全性控制2) 数据完整性控制3) 并发控制4) 数据恢复特点:1) 数据结构化的2) 数据独立性高,共享性好3) 数据冗余度小。独立性:数据独立性分为两种:数据物理独立性和数据逻辑独立性。物理独立性:存储结构发生变化,全局逻辑结构不变,从而应用程序不变。逻辑独立性:全局逻辑结构发生变化,局部逻辑结构不变,从而应用程序不变。4) 有统一的控制功能二、数据库系统的组成1.数据库是存储在计算机内、有组织的,可共享的数据集合。具有集成性、共享性等特点。2.软件系统包括数据库管理系统(DBMS)、操作系统等软件。3.硬件系统4.用户用户分为终端用户、应用程序员、系统分析员和数据库管理员(DBA)三、数据库系统的体系结构一般是指内部体系结构,三级模式和二级映象1三级模式1)内模式存储模式,只有一个,叫物理级数据库。2)模式概念模式,只有一个,叫概念级数据库,它是数据库全体数据的逻辑描述。全局逻辑结构。3)外模式用户模式,视图,局部逻辑结构,外模式有多个。叫用户级数据库内模式一个,模式一个,外模式多个。内模式与模式是对应。2二级映象1)模式/内模式一个,保证数据的物理独立性。2)模式/外模式多个,保证数据的逻辑独立性四、数据库管理系统(DBMS)是一个系统软件,用来管理数据库的软件,它是数据库系统的核心部分。它包括以下功能:1 数据定义DDL定义模式,外模式,内模式。2)数据操纵功能DML查询、添加、修改和删除记录。3)数据控制功能DCL4)数据库运行和维护5)数据库建立和维护6)数据通信接口五、数据模型1现实世界、信息世界和计算机世界1)实体2)属性3)实体型4)实体集5)键属性或属性组6)域7)联系*一对一,一对多,多对多2.计算机世界1)字段2)记录3)关键字4)域3.数据模型三要素数据结构(静态特性)、数据操作(动态特性)、完整性约束逻辑数据模型:4数据模型的分类这里数据模型的分类指的是逻辑模型。分为三类:1)层次模型使用树结构描述实体以及实体之间的联系,有且只有一个结点没有父结点,叫根结点,其他结点有且只有一个父结点。典型代表是IBM的IMS系统。2)网状模型使用有向图结构描述实体以及实体之间的联系。特点有一个以上的结没有双亲,允许有两个个以上的双亲结点。典型代表是DBTG系统。3)关系模型使用二维表结构描述实体以及实体之间的联系。注意以上三种模型层次模型只能描述一对一,一对多的联系,网状模型可以描述一对一,一对多和多对多,关系模型只能描述一对一,一对多。/关系模型的代表:sql server 2000,oracle,db2,sysbase面向对象的数据模型。第二部分:关系代数一、广义笛卡尔积是指一个关系与另一个关系没有按条件进行相应的连接,且不去掉重复列和重复元组。即关系R(5个元组)和关系S有(6个元组)则关系R与关系S的笛卡尔积是30个元组。元组数是:r*s属性个数:u1+u2二、关系的性质1.关系中的每个属性都是不可分割的数据项,即原子项。2.关系中的每列不能重名,必须具有相同的数据类型。3.关系中不允许出现完全相同的元组4.关系中的行与列的顺序可以任意的。三、关系的键与关系的完整性1.候选键一个属性或属性组能保证元组的惟一性,具有惟一性和最小性的特点。学号+姓名能否保证学生的惟一。但去掉姓名仍然惟一,2.关系键也叫关键字,主码,主键,一个关系只有一个主键,从候选键中选择一个作为添加、修改、删除的变量。如果姓名不重复,则学生表中的候选键学号和姓名。则选择学号作为学生关系的主码。主属性和非主属性以及全码)主属性包含在主关系键中的属性叫主属性2)非主属性:是指不包括在候选键中。3)全码授课(学号,教师号)4关系的外键在关系R中是主键,而在关系S中不是主键,在S中叫外键。1) 外键是用来联系两个关系的。2) 主键的R是主表,S是子表或从表。3) S中外键列的值必须取自R中主键值。四、关系的完整性完整性就是保存数据的正确性、一致性和相容性,保证正确的数据存放到数据库中。分为三种:1实体完整性是指主关系键的值不能为空和重复。主关系键来保证。2.参照完整性先建立和输入主表,再建立和输入从表。3.用户自定义完整性对具体关系中的某列必须满足的约束条件。性别,年龄,月份。五、关系代数关系模型是由二维表构成的,一个二维表都是一个关系。对关系的操作,操作的对象和结果都是关系。1关系运算的分类1)传统的集合运算并集、交集、差集、广义笛卡尔积2)专门的关系运算选取、投影、连接和除2运算符3传统的集合运算如果两个关系R和S要进行传统的集合运算,要求两个关系的结构必须是相容的。1)并运算关系R与关系S的的元组合并,组成一个新的关系,去掉重复元组。并运算的结构与原结构相同。2)交运算关系R与关系S的交,是指由属于R也属于S的元组构成。3)差运算关系R与关系S的差,是指属于R而不属于S的关系构成。R-S与S-R是不同的。R交S=R-(R-S)4)广义笛卡尔积并集、交集、差集要求关系R与关系S必须是相容的,而笛卡尔积不考虑是否相容的。4.专门的关系运算分为选取、投影、连接和自然连接、除选取和投影是单目运算,连接和除是双目运算。1)选取是根据一定的条件在给定的关系R中选择若干个元组,组成一个新的关系。这种运算是对行的运算。F(R)如查询学生中性别为男的元组。性别=男(学生)2)投影关系R的投影是从R中选择若干列组成一个新的关系。列名或列号(R)如从学生关系中查找学号,姓名和性别。学号,姓名,性别(R)1,2,3(R)选择和投影组合使用时,必须先选取再投影。查询学生中性别为男的学号,姓名。学号,姓名 (性别=男(学生)3)连接分为:大于连接小于连接等值连接以上三种,都不去掉重复属性。且大于连接和小于连接在实际中没有意义。连接是一个双目运算。格式为:RS FF表示连接条件关系R与S的连接,就是从关系R与关系S的广义笛卡尔积中选择满足条件的元组。4)自然连接是最常用的一种连接,要求两个关系具有公共属性,它是一种去掉重复属性值的等值连接。自然连接就是先进行笛卡尔积,再选择,再投影。5)除二目运算,选择,投影。R(A,b,c,d)S(C,D)M元-n元:RS=(A,B)考虑元组。必须都满足的。RABCDA1B2C3D5A1B2C4D6A2B4C1D3A3B5C2D8SCDC3D5C4D6ABA1B2第二部分重点掌握关系的性质以各种键的概念、完整性和传统的集合以及专门的关系运算,必须会写关系代数表达式。第三部分:关系数据库理论关系的规范化问题一、规范化存在的问题1不合理的关系存在的问题1)数据冗余2)插入异常3)更新异常4)删除异常学生(学号,姓名,性别,系号,系名,课号,课名,成绩)2合理的关系必须满足的条件1)较小的数据冗余2)没有插入异常3)没有删除异常4)没有更新异常第3范式就满足的。3)关系规范化的目的就是将一个不合理的关系经过分解使其达到一个较少的数据冗余和消除了各种异常的合理的关系模式。二、函数依赖一个关系中各属性之间是相互联系、相互制约的。属性之间的关系用数据依赖来表示。数据依赖分为函数依赖,多值依赖和连接依赖。函数依赖是指1-3和bc范式。多值依赖是指4NF连接依赖是指5NF。1函数依赖的定义X-Y一般在讨论函数依赖时,要先找出关系的主关系键。学生关系的主键:学号+课号(学号,课号)-成绩学号-姓名,学号-性别,学号-系号,系号-系名,课号-课程名学号-课号2.函数依赖的说明1)平凡函数依赖和非平凡函数依赖如果x-y,Y是x的子集,则称为平凡。如果x-y,y不是x的子集,则称为非平凡依赖。2)函数依赖是一个关系R一直保持的一种依赖关系,不是某一个条件下才保证的。3)对于属性之间的1:1,1:n和m:n的函数依赖如果为1:1,则x-y,y-x如果为1:n,则y-x,不是x-y如果为m:n,则x和y之间不存在函数依赖。4)函数依赖是在一定的语义范畴5)与时间无关三、函数依赖的逻辑蕴涵是从基本的函数依赖中导出的函数依赖。x-y,y-zx-z闭包:设F是函数依赖集,被F逻辑蕴涵的函数依赖的全体构成的集合,称为函数依赖集的闭包。(学号,课号)-成绩学号-姓名,学号-性别,学号-系号,系号-系名,课号-课程名F学号-系名四、完全函数依赖、部分函数依赖、传递函数依赖1.完全函数依赖:只有当决定因素是多个属性的组合时,才讨论是完全,否则一定是完全函数依赖。学号-姓名(学号,课号)-成绩如果R中存在x-y,对于任何一个X的子集,都不决定y,则称为y完全函数依赖于x。2.部分函数依赖是指当决定因素也是属性组时,才讨论。(学号,课号)-姓名如果R中存在x-y,对于给定一个x的子集,也能决定y,则称则Y部分依赖于x。学号-姓名3.传递函数依赖如果关系R中,有函数依赖,x-y,y-z,则必有x-z,对于给定一个关系判断是否有完全、部分、传递,必须先找出主关系键。五、范式范式:是指一个关系要达到的标准规范。根据一个关系满足的标准把关系分为1NF,2NF,3NF,BCNF,4NF,5NF高一级范式必须先是低一级范式。11NF是指如果关系R中的所有属性都是不可分割的数据项,则称为R满足第1NF。即第一范式要求关系的属性必须是原子项。存在冗余和异常。2.2NF如果一个关系R是第一范式,如果非主属性对主关键字不存在部分函数依赖,则关系R满足第2范式。第2范式:就是消除部分函数依赖主键:学号和课号分解原则:“一事一地”的原则,即一个关系只表示一个实体或实体之间的联系。学生(学号,姓名,性别,系号,系名)课程(课号,课程名)选课(学号,课号,成绩)33NF关系R是第2范式,如果所有非主属性对主关系键不存在传递函数依赖。则关系R满足第3范式分解原则:“一事一地”学生(学号,姓名,性别,系号)系别(系号,系名)满足第3范式的关系已经达到了合理关系的条件,即最小的数据冗余,消除了异常。4.BCNF如果一个关系R满足第3NF,如果所有属性对候选键都不存在部分和传递则,满足BCNF.R(学号,姓名,课号,成绩)条件是姓名不重复。候选键: 学号+课号,姓名+课号学号-姓名,姓名学号学生(学号,姓名)选课(学号,课号,成绩)54NF4NF消除多值依赖6.5NF5NF消除连接依赖六、关系模式的分解分解的原则:一事一地。分解的条件:1) 分解必须保持函数依赖2) 分解要保证无损连接性3) 分解即要保持函数依赖,又要保证无损连接。第四部分 数据库安全保护数据库安全保护分为四种,数据库安全性控制、数据完整性控制、并发控制和数据库恢复一、 数据库的安全性数据库的安全性就是指防止非法用户进入系统执行非法操作。1 一般控制方法1)用户标识和鉴定2)用户存取权限GRANT和revoke。系统权限,对象权限。数据库对象:模式,非模式:模式对象:数据表、视图、索引、存储过程、触发器等。非模式对象:表空间、数据文件、重做日志。表,表中的某列。3)视图4)加密5)审计二、完整性控制是指保护数据库中的数据正确性、有效性和相容性。工资只能是0-9构成。学号不允许重复和为空。班号只能取自班级表。数据的完整性控制包括三种:实体完整性、参照完整性、用户自定义完整性1.完成性规则的组成由三部分构成:触发条件,约束条件,违约响应。添加、修改检查,删除时,查询不检查。约束条件:规则,什么样的满足和不满。违约响应:反应2.完整性约束条件的分类1.值约束和结构的约束值约束:如一个列定义为字符型、长度为6,数据类型、数据格式、取值范围和空值。结构约束:实体完整性、参照完整性统计约束。2)静态约束和动态约束静态约束:值约束和结构约束都是静态的。动态约束:从一种状态转换为另一种状态应满足的约束条件。三、并发控制与封锁1并发控制是保证每个事务能够得到正确的运行。一般都是指多个用户操作时。2.事务是数据库系统中执行的一个工作单元,是由用户定义的一系列语句组成。三个命令:Begin transaction:开始事务Commit;提交事务Rollback:回滚事务。2 事务的性质ACID1)原子性一个事务是一个不可分的工作单位,事务在执行时,遵守“要么全做,要么不做”。2)一致性数据库从一个状态转换为另一个状态,必须满足数据库的完整性控制。3)隔离性事务与事务之间是独立的,一事务的执行不影响另一个事务。4)持久性对数据库的改变,成功提交后,改变是永久的。4.并发控制造成的不一致性1)丢失更新2)污读3)不可重读5.解决的方法1)封锁封锁分为共享锁和排它锁。死锁和活锁2)时标四、数据库的恢复1定义当数据库遭到破坏时,必须保证在较短的时间内将数据库恢复到最近的正确状态。2.原理和技术生成冗余数据,冗余重建1)登记日志文件数据文件.mdf,日志文件.ldf记录着对数据库的更新操作,不包括查询。2)数据转储2.故障和恢复1)事务故障2)系统故障3)介质故障当数据库恢复时,对尚未完成的事务执行rollback第五部分:数据库设计一、 数据库设计概述1.设计的任务数据库设计就是在指定的具体环境下,根据用户需求,构造最优的数据库模式,并建立数据库和应用系统,。2.数据库设计的内容数据库的结构设计,数据库的行为设计前者静态设计,后者是动态设计。二、数据库设计的方法手工试凑法、直观设计法、规范化设计法、计算机辅助设计法和自动化设计法,。规范化设计方法是最常用的一种数据库设计方法。新奥尔良法。规范化设计方法有:1) 基于E-R模型的数据库设计方法2) 基于3NF的数据库设计方法3) 基于视图的数据库设计方法。三、数据库设计的步骤数据库设计按规范化设计方法分为六个步骤:需求分析阶段概念结构设计阶段逻辑结构设计阶段物理设计阶段数据库实施阶段数据库运行和维护阶段。四、需求分析阶段数据库设计的起点,最终影响到整数据库的设计。1任务对现实世界进行详细的调查研究,分析原系统,收集新资料,确定系统的边界等。2.需求分析方法SA方法,自顶向下分析方法。有两个图:一个是数据流图(DFD),数据字典(DD)数据流图中使用命名的箭头表示数据流,用圆表示处理,用矩形表示存储。数据字典是对系统中数据进行详细描述,由五个部分组成。数据项、数据结构、数据流、数据存储、数据处理过程,。需求分析阶段在调查研究的基础上,撰写需求分析说明书,在需求分析说明书中描述系统的功能及边界,并绘制数据流图和数据字典。五、概念结构设计在需求分析阶段的基础上,将需求分析得到的用户需求抽象为信息结构,即概念模型。E-R模型:实体-联系模型。1.E-R图的组成主要由三个元素,实体、联系和属性。实体在E-R图中使用矩形表示。联系在E-R图中使用菱形表示属性在E-R图中使用椭圆表示。且实体,联系和属性之间用线段连接。2.绘制E-R图分两步:1)绘制局部E-R图如教学管理系统:系别:系号,系名,系主任班级:班号,班名,地址学生:学号,姓名,性别,年龄教师:职工号,姓名,性别,职称,工资课程:课程号,课程名,学分语言义要求:一个系有多个班级,一个班有多名学生,一个学生只属于一个班级,一个学生可以选多门课,选修时有成绩,一门课由多个学生,一个教师讲授多门课,一门课由多个教师讲授。讲授的课程有学期。试绘制E-R图。属性分为实体属性和联系属性,实体的属性在绘制E-R图时直接放在某实体附近即可,如果是联系的属性必须放在联系边上,且与菱形连接。以上系统分为三个局部E-R图。组织结构E-R,选课E-R图,讲授E-R图。2)合并为全局E-R图。E-R图合并的冲突有:1)属性冲突属性值域冲突、属性的取值单位冲突2)命名冲突同名异义,单位异名同义:房间。3)结构冲突同一实体在不同应用中有不同的抽象。同一实体不同应用时有不同的属性六、逻辑结构设计一、任务在概念结构设计的基础上,从E-R图导出逻辑模型。步骤:1) 初始关系模式2) 规范化3) 评价与改进二、从E-R图中导出关系模式的转换原则1)每一个实体都转换为一个关系模式。2)对于联系的转换原则:。如果是一对一的联系,不生成第三方关系,只将任何一方的主键纳入另一个作外键即可。如果是一对多的联系,也不生成第三方,只把一方的关键字纳入多方即可。如果是多对多的联系,则生成第三方关系,第三方关系的属性是双方的主键和联系的属性。七、物理结构设计在逻辑模型的基础上,选取一个最适合的应用环境创建物理结构。八、数据库实施定义数据库结构在指定的DBMS中。九、数据库的运行和维护第六部分:SQLSQL语言是一种结构化查询语言。不是标准查询语言一、SQL的发展和特点1.发展1974年,SEQUEL,1976,1981,1982,SQL,SQL SERVER 2000,ORACLE。Sql86,sql89,sql92,sql32.特点1)简单易学,符合英文语法2)集成性语言,四个功能。数据定义,数据查询,数据操纵、数据控制。3)SQL即是自含式,又是宿主式。4)SQL是一种非过程化的语言二、SQL语言与三级模式的对应关系内模式对应于存储文件,模式对应于基本表,外模式对应于视图三、创建数据表1数据类型Int,decimal,char,nchar,varchar,nvarchar。Datetime,float。2.定义数据表的基本格式Create table 数据表名(列的定义,表约束)Create table bj(Bh char(4),Bm char(30)Xh char(2)列的定义:列名 数据类型(宽度,小数位) 列约束3.表的约束约束分为两种,一种列约束,一种是表约束。列约束与列的定义在一起,用空格间隔,作为列定义的一部分。表约束,独立于列的定义,与列的定义之间,间隔。表的约束一般应于涉及到多列使用。学号建立主键,学号和课号建立主键。1)空值约束默认为NULL,如果想不为空使用NOT NULL约束只能用于列约束,不能用于表约束。Create table 表名(学号 char(6) not null,姓名 char(8)2)主键约束不允许为空,重复值。格式:constraint 约束名 primary key(列名)如果作为列约束,列名可省,表约束列名不可省。Create table 学生(学号 char(6) primary key,姓名 char(8),Constraint aaa primary key(学号)Create table 选课(课号 char(2),学号 char(6),成绩 int,Constraint bbb primary key(学号,课号)3)惟一约束Unique要求列值不重复,但允许为空。/可以是列约束,也可以是表约束Create table 学生(学号 char(6) primary key,姓名 char(8) unique,Constraint ccc unique(姓名)4)默认值约束列约束,关键字是default。Default 值Create table 学生(学号 char(6) primary key,姓名 char(8) not null,性别 char(2) default 男)5)check约束用户自定义完整性一般用来规定域的范围,可以作列约束,也可以作表约束。Create table 学生(学号 char(6) primary key,姓名 char(8) not null unique,性别 char(2) default 男,年龄 int check(年龄 between 18 and 30)6)外键约束涉及到两个数据表,先建立主表,再建立从表。且从表的列必须与主表的列类型一致,长度一致。Constraint 约束名 foreign key(从表列名) references 主表名(列名)如果为列约束,则constraint 约束名可省,从表列名可省。Create table 学生(学号 char(6) primary key,姓名 char(8) not null,性别 char(2) check(性别=男 or 性别=女),班号 char(4) foreign key refernces 班级(班号)Create table 学生1(学号 char(6) primary key,姓名 char(8) not null,性别 char(2) check(性别=男 or 性别=女),班号 char(4) ,Constraint dddd foreign key(班号) refernces 班级(班号)4.修改数据表有三种方式Alter table 表名 方式1)add方式使用该方式可以增加列,也可以增加约束Alter table 学生 add 地址 char(50)Alter table 学生 add constraint eee check(年龄 between 20 and 60)2)alter方式用于修改列的宽度等。Alter table 表名 alter 列的定义Alter table 学生 alter 地址 char(40)不能更改列名3)drop 方式用来删除列或约束Alter table 表名 drop column 列名Alter table 表名 drop constaint 约束名5.删除数据表Drop table 表名三、索引的使用1.索引的作用加快查询速度,保证行的惟一性2.索引的分类按照索引的存放位置,索引可分为聚集索引和非聚集索引,聚集索引只有一个,就是主键,非聚集索引可以有多个。如普通索引可惟一索引。如果一个数据表建立了主键约束就是建立了一个聚集索引,如果建立了惟一约束就是建立了一个非聚集索引。3.创建索引Create uniquecluster index 索引名 on 表名(列名 排序方式)Unique:表示创建一个惟一索引。Cluster:表示创始一个聚集索引,只有一个。如果没有unique和cluster表示创建的就是非聚集的普通索引。在学生数据表中按性别创建惟一索引Create unique index xm on 学生(姓名 desc)索引不能修改,只能删除再创建。在教师数据表,按性别建立索引,性别相同按工资降序索引。这种索引叫复合索引,涉及性别和工资。Create index xbgz on 教师(性别 ,工资 desc)4.删除索引索引是属于基本表,所以在删除索引时必须指定表名.索引名。Drop index 表名.索引名四、数据查询1.select命令格式Select distinct */列表列表 top n|top n percentFrom 表1 别名,表2 表名Where 查询条件group by 分组字段 having 分组条件order by 排序字段此语句由五个子句构成分别是select子句,from子句,where子句,group by子句和order by子句。Select子句用来控制投影操作。可以表的基本列,也可以是计算列。from子句指定数据来源的数据表,可以来自一个数据表,也可以是多个数据表。Where子句,表示返回满足一定条件的元组。这是对行的操作,也就是选取。Group by子句用来进行分组,当查询是count,maX,min,sum,avg时一般都要分组。如果对分组后的结果集,再限制条件,必须使用having 分组条件。Order by 用来排序。2单表查询1)不投影不选择列使用*,没有where条件。Select * from 学生2)投影Select 列名 from 表名Select 学号,姓名 from 学生3)去掉重复元组Select distinct 性别 from 学生4)带条件的查询涉及到运算符:算术运算符: = = != 查询工资在3000元以上的教师姓名Select 姓名 from 教师 Where 工资3000特殊运算符:Between,表示范围。如查询工资2500元至4000元之间的。Select * from 教师Where 工资 between 2500 and 4000Like匹配通配符:_和%通配任何多个字符,_通配一个。找姓张的学生的学号和姓名。Select 学号,姓名 from 学生Where 姓名 like 张%In运算符表示一定范围的In是否在一个集合中。Not in都是用来子查询中。查询选修了c1或c2课程的学生的学号Select 学号 From 选课Where 课号 in (c1,c2)5)投影有可能是计算列可以在select子句中放入表达式作为计算列,并同时可以给列起别名。学生数据表中有出生日期,求学号,姓名和年龄。Getdate()Select 学号,姓名,year(getdate()-year(出生日期) as 年龄From 学生6)空值测试Is null和is not null。空值表示不确定的值,不是空格,也不是0。查询没有参加考试的学生的学号和课号。Select 学号,课号From 选课Where 成绩 is null7)统计函数Count(*/列名)统计记录数Sum(列名)求和Avg(列名)求平均值Max(列名)求最大值Min(列名)求最小值求课号为c1的最高分,最低分,总和和平均分。Select max(成绩) as 最高分,min(成绩) as 最低分,sum(成绩) as 总分,avg(成绩) as 平均分 From 选课Where 课号=c1一般用到五个统计函数必须要分组,但要考虑是否是不同类型的数据。Count对空值不统计。统计c1号课号的人数Select count(*) as 人数From 选课Where 课号=c18)分组查询按某列或某几列在行的方向上进行分组,当在查询的语义中规定对某列或几列进行统计计算时一般暑阿进行分组,如求每个部门的人数,每门课程的选课人数,每个学生的选课门数等。求男女生人数。Select 性别,coun(*) as 人数From 学生Group by 性别求各门课程的选课人数。Select 课号,coun(*) 人数From 选课Group by 课号当对分组再进一步限制条件时,必须使用having 分组条件。注意以上的五个函数只能出现在select子句和having中。绝对不允许出现在where中。如查询选课门数在5门以上的学生的学号和门数。Select 学号,count(*) as 门数From 选课Group by 学号 having count(*)=59)排序Order by 字段 asc/desc ,2连接查询当查询的数据来源于两个或两个以上的数据表时,数据表之间必须建立连接。连接可以放在from后,也可以放在where条件中与其他条件用and连接。第一种放在from后可以实现以下几种连接Inner join:内联接Left join:左连接Right join:右连接Full join :完全连接Cross join:交叉连接(笛卡尔积)一般用到的都是内联接连接条件书写格式为:From 表1 inner join 表2 on 表1.字段名=表2.字段名其中字段名是同名属性。第二种主在where后From 表1,表2Where 表1.字段名=表2.字段名 and 其他条件如查询计算机本科07班学生的学号,姓名和班名。从投影上看,从选择上看,从查询的语义上看。Select 学号,姓名,班名From 班级,学生Where 班级.班号=学生.班号 and 班名=计算机本科07Select 学号,姓名,班名From 班级 inner join 学生 on 班级.班号=学生.班号Where 班名=计算机本科07注意一点:当两个名都有同名属性时,则在属性名前一定要加上表名:即表名.字段名4.子查询和相关子查询1)子查询也叫嵌套子查询,即在一个select语句的where条件中还有select语句。外层查询与内层查询没有联系,外层查询的结果取决与内层查询返回的值。执行过程是:先执行子查询,再执行外层查询。运算符主要有= = (select max(工资) from 教师,系别 where 教师.系号=系别.系号 and 系名=计算机系) In 等价于=anyall大于所有的。2)相关子查询运行只有两个,EXISTS和not exists不返回值,子查询的投影也不是字段,只是一个*,表示子查询中是否有行返回,有则真,否则为假。且外层与内层子查询有联系,且联系语句放在子查询中。如查询选修课程的学生的学号和姓名。Select 学号,姓名 from 学生Where 学号 in (select 学号 from 选课)Select 学号,姓名 From 学生Where exists (select * from 选课 where 学生.学号=选课.学号)5.并集运算UnionSelect语句UnionSelect语句UnionSelect 语句四、数据操纵添加、修改、删除1插入数据三种:1)插入全部数据Insert into 表名 values(表达式)表达式的个数必须与表中的列数相同,且一一对应,类型一致,2)插入部分数据Insert into 表名(列名) values(表达式)3)插入多行数据Inset into 表名Select语句2.修改记录(更新)1)更新涉及一个表Update 表名 set 列名=表达式,Where 条件如果没有条件,则更新所有记录。2)更新涉及多个表在对数据进行更新时,要求只能更新一个数据表,如果涉及到多个表必须在where中使用子查询。将少数民族的学生的各科成绩加5分。Update 选课 set 成绩=成绩+5Where 学号 in (select 学号 from 学生 where 民族汉)3.删除记录1)删除涉及一个数据表Delete from 表名 where 条件如果没有条件,则删除所有记录。2)删除涉及多个数据表必须用到子查询。如将没有选课学生的删除。Delete from 学生 where 学号 not in(select 学号 from 选课)五、视图1.视图的概念视图是数据库的外模式,它是一个虚拟表,在数据库中只存放视图的定义,凡是对视图的操作都反映到基本表中。它的数据来源都是基本表。2创建视图Create view 视图名(列名)As Select语句对于创建视图的select语句不能使用order by 和distinct关键字视图的数据可以来自多个数据表,列也可以是计算列。Create view v_1AsSelect 学生.学号,姓名,性别From 学生,选课Where 学生.学号=选课.学号Select * from v_12.修改Alter view 视图名As 子查询3.删除视图视图是数据库的对象,所有删除视图时与表无关。Drop view 视图名4.查询视图凡是用到基本表的地方,都可以使用视图Select * from v_15.更新视图凡是对视图的更新都将反映到基本表中,但涉及到计算列的或视图的来源是多个数据表,则视图是不可更新的。6.使用视图的优点1)有利于数据保密2)简化查询操作3)保证数据的逻辑独立性六、数据控制权限:就是在数据库中设置的允许用户对数据对象操作的权力。在SQL server中权限分为两种:系统权限:是指用户能够对数据库系统进行操作的权力,如创建数据表、创建视图、修改数据表、创建索引等。对象权限:即用户对数据库对象的操作权力,如select,insert,update,delete数据。,角色:是权限的集合。1系统权限的授予与收回1)授予Grant 系统权限To 用户名/pulbicWith admin option将系统权限授予指定用户,并可以将得到的权限授予其他用户。Grant create table,create viewTo user12)收回Revoke 系统权限From 用户名/publicRevoke create tableFrom user12.对象权限的授予和收回Grant 对象权限(列名),On 对象名To 用户名With grant optionGrant select,update,delete,insertOn 学生To user1Grant update(学号,姓名)On 学生To user22)收回Revoke 对象权限On 对象名From 用户名第七部分 sql server 2000和程序设计一、系统数据库有四个,master,model,msdb,tempdbMaster:系统中最重要的数据库,存放着所有的系统信息。Model:是创建数据库的模板。Msdb:用于备份,恢复等计划控制的。,Tempdb:临时数据库。/二、实例数据库Pubs和northwind三、数据文件和日志文件数据文件:用来保存数据库的各种对象及数据的。可以有多个,但只有一个数据文件叫主数据文件,扩展名为.mdf,其他数据文件叫次数据文件,扩展名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论