01 数据库课程导入一、数据库:是指存储在计算机内的可组织可共享的信息的集合。
数据库特征:数据按一定的数据模型组织、描述和储存可为各种用户共享冗余度较小数据独立性较高易扩展二、数据库的逻辑结构1)层次型2)网状型3)关系型4)面向对象型三、提高数据库效率方式1)缓存数据2)索引3)高性能硬件四、数据库模型1)概念模型:从用户角度分析,绘制E-R图2)逻辑模型:从计算机角度分析的,绘制数据库模型图3) 物理模型:指的是数据库的存储结构,以及索引。
五、数据库设计步骤1)需求分析阶段(收集分析需求)2)概要设计阶段(从用户角度分析,绘制E-R图)3)详细设计阶段(从数据库角度分析的,绘制数据库模型图)4)实施阶段(创建数据库、数据表、建立关联、索引,并对数据表进行规范化检查)六、学好数据库能做什么1)DBA数据库管理员2)数据挖掘02 数据模型一、数据模型分类1)概念模型2)逻辑模型(分为层次型、网状型、关系型、面向对象型)3)物理模型二、数据模型的三大要素1)数据结构2) 数据操作3)完整性约束(包括实体完整性、参照完整性和用户定义的完整性)三、概念模型组成部分1)实体:用矩形表示,表示客观存在的可以描述的事物。
2)属性:用椭圆形表示,表示实体的特征。
3)码:用于唯一标识实体的属性。
4)域:代表属性的取值范围,例如Sex取值范围是男,女。
5)实体型:用实体名及其属性名集合来抽象同类实体的(例如学生(学号,姓名,性别,出生年份,系,入学时间))6)实体集:同一类型实体的集合7)关系:表示实体间的关系(有1:1 ,1:n,n:1 ,m:n)用菱形表示。
四、绘制E-R图步骤1)标识实体2)标识实体的属性3)标识实体关联五、逻辑模型层次模型:是最早的逻辑模型a)每个节点的父节点都是唯一的b)只能表示1对多的关系c)每个记录类型可以选择一个属性排序,叫做码字段b)任何记录只有按照路径查看才有意义e)任何子女记录都不能脱离父记录而存在f)根节点没有父节点1)多对对关系在层次模型中的表示a) 采用冗余节点法:也就是通过增加2个节点,把多对多关系分解成2个1对多关系。
例如: 学生与课程是m:n关系,分解成:学生到课程1:n,课程到学生1:n。
b) 采用虚拟节点法:是通过增加2个虚拟节点,把多对多关系分解成2个1对多关系。
所谓虚拟节点就是一个引用,指向所引用的节点。
2)对层次模型的操作a) 增加、修改、删除、查询,同时必须满足完整性约束(指的是数据记录能够正确的反应实际情况)b) 层次模型的完整性约束:1)添加的子节点必须拥有父节点2)当删除1个节点时,会同时删除该节点所有子节点3)更新时,必须保证一致性3)层次模型的存储结构a)邻接法(又叫层次序列链接法):按照树的前序遍历结果实现相邻存储。
b)子女-兄弟链接发:是通过给每个节点设置2个指针,分别指向做左边的子节点和最近的兄弟节点。
4)层次模型的优缺点a)优点: 结构清晰、查询效率高、提供了较好的完整性支持b)缺点:对m:n关系表示不自然、插入和删除限制多、访问子女节点必须通过父节点、命令复杂网状模型:1)特点a)可以有多个节点无父节点b)一个节点可以由多个父节点2)网状跟层次的区别a)可以有多个节点无父节点b)一个节点可以由多个父节点c)网状模型允许两个结点之间有多种联系(复合联系)d)网状模型可以更直接地去描述现实世界e)层次模型实际上是网状模型的一个特例3)网状模型存储结构:常用的方法为:单向链接、双向链接、环状链接、向首链接4)优缺点优点:a)能够直观的描述数据b)具有较高的性能。
缺点: a)结构复杂,规模越大越复杂。
b)操作复杂,不易用户使用。
关系模型1)术语a)关系:就是表b)元组: 就是一行c)属性: 就是一列d)主码:就是主键,用于唯一标示一条记录(例如学号)03 关系数据库一、笛卡尔乘积:是n个关系相乘的结果。
例如:D1为学生集合(T)= {张群,徐晶,王刚} D2为性别集合(S)= {男,女}D1与D2的笛卡尔乘积共6条记录,是拿D1中每条记录与D2中所有记录匹配。
二、关系代数运算:集合运算、关系运算、比较运算、逻辑运算1)集合运算a)并(U)例如:A U B,返回A表中全部数据,B表中全部数据,对于2表重复的内容只保留一个。
b)差(-)例如:A - B,返回A表有并且B表没有的记录。
c)交(n)例如:A n B,返回A表、B表共有的记录。
2)术语1)元组的连串:表示元祖中包含的分量的集合。
例如:若r = (r1 ,…,rn),s = (s1 ,…,sm),则定义r 与s的连串为:定义rs的连串= (r1 ,…,rn ,s1 ,…,sm)2)关系的度:就是关系包含的属性的数量。
3)象集Zx:假设x='张三',表示求x列中值等于张三的分量所对应的Z列中分量的集合(消除重复) 4)选择:σA<5(R),表示从R中选择A列小于5的行。
注意:选择是根据条件筛选,返回的表的结构与原表一致。
5)投影Π...(R):从关系R中取若干列组成新的关系。
例如:ΠA(R)表示从R中选择A列,返回新的关系,只包含A列。
6)连接: R 连接S = {rs连串| r ∈R ∧s ∈S ∧r*A+θ S*B+ },表示对R*S进行筛选,筛选条件为r[A] θ S*b+;6.1)自然链接:从笛卡尔乘积中自动匹配列名相同且分量值相等的记录,并消除重复的列。
6.2)外链接:把舍弃的记录也保存到新关系中,对于不匹配的列显示NULL。
a)左外链接:例如A left join B:返回左表中全部记录,对于未匹配的右表中的列设置为NULL。
b)右外链接:例如A right join B:返回右表中全部记录,对于未匹配的左表中的列设置为NULL。
c)完整链接:例如A full join B:返回2表中全部记录,对于未匹配的列设置为NULL。
完整链接的结果为:(左外结果+右外结果-重复行)7)除法例如:关系R(X,Y),S(Y,Z)R ÷ S = {Tr[X] | tr∈R ∧Πy(S) ⊆ Yx}返回R中符合条件的分量集合。
条件:R中X列分量对应的象集Yx,包含S中Y列的投影Πy(S)04 关系数据库标准语言SQL一、SQL:结构化查询语言,86年成为ANSI标准,87成为ISO标准。
可以使用Sql完成数据库生命周期内全部任务。
二、SQL特点:1)综合统一2)高度非过程化3)面向集合的操作方式4)以同一种语法结构提供多种使用方式5)语言简洁,易学易用三、SQL组成部分1)数据定义语言(DDL):用于创建、修改、删除数据库对象(例如数据库、表、视图、索引),动词create、alter、drop。
2)数据查询语言(DQL):用于查询数据,动词select。
3)数据操纵语言(DML):用于添加、修改、删除数据。
动词insert、delete、update。
4)数据控制语言(DCL):用于权限控制。
动词grant、revoke。
四、SqlServer服务控制1)使用SqlServer配置管理器2)使用命令启动服务:net start 服务名停止服务:net stop 服务名五、关系数据库的三个模式1、外模式:指的是为满足某一应用定义的视图,是对整体数据的部分展示。
外模式可以有多个。
2、模式:指的是数据库的逻辑结构。
是对数据的整体展示。
只有一个。
3、内模式:指的是数据文件的组织和存储,只有一个。
六、数据库分类1)系统数据库(master、model、msdb、tempdb)2)用户数据:指用户自己创建的七、数据库文件组成1)数据文件,扩展名是mdf、ndf。
2)日志文件,记录对数据库所做的操作,扩展名是ldf。
八、创建数据库create database databaseName on [primary](Name="逻辑名称",FileName="物理路径",Size=10MB,MaxSize=100MB,FileGrowth:1M|10%)log on{Name="逻辑名称",FileName="物理路径",Size=10MB,MaxSize=100MB,FileGrowth:1M|10%}go-- 删除数据库drop database databaseName九、数据库对象1)Schema:架构,用于分类管理数据库对象,便于权限控制。
2)表:用于存储数据3) 视图:是虚拟的表,不存储数据。
4)索引:用于加快查找效率5)存储过程:由多条sql语句组成的一个代码块,类似于C语言函数,存储在数据库中。
6)函数:为实现某个功能编写的代码块7) 触发器:监控某动作的发生,并做出反应十、Schema1)创建:CREATE SCHEMA name AUTHORIZATION userName2)删除: drop schema name [cascade]sqlserver不支持cascade十一、集合操作1)union:并,把2个查询的结果合并,默认会消除重复,使用All可以保留重复。
2)intersect:交,返回2个结果集共同的部分。
3)except:差,返回2个结果的茶差集。
数据表设计一、常用数据类型1)数字类型:int、float2)文本类型:char、varchar3)时间类型:datetime4)布尔类型:bit5)货币类型: money二、创建表1)创建列(定义列名、数据类型)2)设置约束建表语法:create table tableName(columnName dbType constraint)修改表:alter table tableNameadd|alter column|drop column--添加一列ALTER TABLE <表名> ADD <列名> <数据类型> 约束--修改一列ALTER TABLE <表名> ALTER COLUMN <列名> <数据类型> 约束--删除一列ALTER TABLE <表名> DROP COLUMN <列名>--修改表名EXEC sp_rename <原表名> , <新表名> --修改列名EXEC sp_rename <表名.原列名> , <新列名> , 'column'删除表drop table tableName三、数据完整性指数据表中的数据能够正确的反应实际情况。
约束类型:1、主键约束:用于唯一标识一条记录,前缀pk。