全体数据的逻辑结构和特征的描述
,是全部用户的公共数据视图。一个数据库只有一个模式,模式处于三级结构的中间层。定义模式时不只要定义数据的逻辑结构,并且要定义数据之间的联系,定义与数据有关的安全性完整性要求
数据库用户(包括应用程序员和最终用户)可以看见和使用的局部数据的逻辑结构和特征的描述
,是数据库用户的数据视图
,是与某一应用有关的数据的逻辑表示
。外模式是模式的子集。一个数据库能够有多个外模式。外模式是保证数据安全性的一个有力措施。
它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式
。为了可以在内部实现数据库的3个抽象层次的联系和转换,数据库管理系统在三级模式之间提供了两层映射。html
保证数据与程序的逻辑独立性
。保证数据与程序的物理独立性
。数据模型是一种对客观事物抽象化的表现形式。它对客观事物加以抽象,经过计算机来处理现实世界中的具体事物。它客观地反映了现实世界,易于理解,与人们对外部事物描述的认识相一致。程序员
数据模型由数据结构、数据操做、完整性约束组成。
数据结构
:是对系统静态特征的描述。描述对象包括数据的类型、内容、行政和数据之间的相互关系。
数据操做
:是对系统动态特征的描述,是对数据库中各类对象实例的操做。
完整性约束
:是完整性规则的集合。他定义了给定数据模型中数据及其联系所具备的制约和依存规则。sql
层次模型
:用树形结构表示实体类型及实体间联系的数据模型成为层次模型。网状模型
:用有向图结构表示实体类型及实体间联系的数据模型成为网状模型。用网状模型编写应用程序及其复杂,数据的独立性较差。关系模型
:以二维表来描述数据。在关系模型中,每一个表有多个字段列和记录行,每一个字段列有固定的属性(数字、字符、日期等)。关系模型数据结构简单、清晰、具备很高的数据独立性,所以是目前主流的数据库数据模型。关系
:二维表元组
:二维表一行,表中的记录属性
:二维表一列,用类型和值表示域
:每一个属性取值的变化范围,如性别的域为{男,女}关系模型中的数据约束:数据库
实体完整性约束
:约束关系的主键属性值不能为空参照完整性约束
:关系之间的基本约束用户定义的完整性约束
:反应具体应用中数据的语义要求第一范式(1NF)、2NF、3NF、鲍依斯-科得范式(BCNF)、4NF、5NF。其中,NF是Normal Form的缩写。通常状况下,只要把数据规范到第三范式标准便可知足须要。安全
1NF
:在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单位。2NF
:1NF基础上,消去非主属性对键的部分函数依赖3NF
:2NF基础上,消去非主属性对键的传递函数依赖BCNF
:3NF基础上,消去主属性对键的传递函数依赖4NF
:BCNF基础上,消去表中的多值依赖实体是指客观存在并可相互区别的事物,也能够是抽象的概念或关系。实体之间有三种关系。服务器
学生与学生的身份证号
一个学生只属于一个班,一个班有多名学生
一个学生能够选择多门课,一门课也有多名学生
详细说明数据结构
Oracle在并行处理、实时性、数据处理速度方面都有较好的性能。数据库设计
关系数据库
关系数据库是支持关系模型的数据库。关系模型由关系数据结构、关系操做集合和完整性约束3部分组成。函数
关系数据结构
:在啊关系模型中数据结构单一,现实世界的实体以及实体间的联系均用关系来表示,实际上关系模型中数据结构就是一张二维表关系操做集合
:关系操做分为关系代数、关系演算、具备关系代数和关系演算双重特色的语言(SQL语言)完整性约束
表
:表是包含数据库中全部数据的数据库对象,由行和列组成,用于组织和存储数据。字段
:表中每列成为一个字段,字段具备本身的属性,如字段类型、字段大小等。其中,字段类型是字段最重要的属性,它决定了字段可以存储哪一种数据。索引
:索引是一个单独的、无力的数据库结构。它是依赖于表创建的,在数据库中索引是数据库程序无需对整个表进行扫描,就能够在其中找到所需的数据。视图
:视图是从一张或多张表中导出的表(也称虚拟表),是用户查看数据表中数据的一种方式。表中包括几个被定义的数据列与数据行,其结构和数据创建在对表的查询基础上。存储过程
:存储过程是一组为了完成特定功能的SQL语句集合(包含查询、插入、删除和更新等操做),经编之后以名称的形式储存在SQL Server服务器端的数据库中,由用户经过制定存储过程更的名字来执行。当这个存储过程被调用执行时,这些操做也会被同时执行。“”
或[]
内的标识符。该标识符能够不符合标识符的格式规则。在一个数据库中建立了一个数据库对象后,数据库对象的完整名称应该由服务器名、数据库名、拥有者名和对象名
4部分组成
[[[server.][database].][owner_name].]object_name
服务器、数据库和全部者的名称即所谓的对象名称限定符。当引用一个对象时,不须要指定服务器、数据库和全部者,能够利用句号标出他们的位置,从而省略限定符。
指定了全部4哥部分的对象名称被称为彻底合法名称。post
删除数据库时必须知足如下条件
删除数据库后应当即备份master数据库,由于删除数据库将更新master数据库中的信息。
基本数据类型详情
char、varchar、nchar、nvarchar的区别:
建立用户自定义数据类型
语法:
sp_addtype [ @typename = ] type, [ @phystype = ] system_data_type [ , [ @nulltype = ] 'null_type' ] ;
实例:
USE test EXEC sp_addtype postcode,'char(8)','not null'
删除用户自定义数据类型
语法:
sp_droptype [ @typename = ] 'type'
实例:
USE test EXEC sp_droptype postcode
Microsost SQL Server 2008提供多种强制数据完整性的机制。
约束是SQL Server提供的自动强制数据完整性的一种方式,它是经过定义列的取值规则来维护数据的完整性,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询分析器也使用约束定义生成高性能的查询执行计划。
当在表中已建立主键,但又要保证其余数据列的值惟一时,可使用UNIQUE约束。
使用UNIQUE约束能够确保在非主键列中部输入重复的值。UNIQUE约束和PRIMARY KEY约束都具备强制惟一性,但想要强制一列或多列组合(不是PRIMARY KEY)的惟一性时,应使用UNIQUE约束而不是PRIMARY KEY约束。
能够对一个表定义多个UNIQUE约束,但只能定义一个PRIMARY KEY约束。并且UNIQUE约束容许NULL。当与参与UNIQUE约束的任何值一块儿使用时,每列只容许一个NULL。FOREIGN KEY约束能够引用UNIQUE约束。
操做:
表->设计->索引/键->增长 列:选择列 类型:惟一键
CHECK约束经过限制输入到列中的值来强制域的完整性。此类约束相似于FOREIGN KEy约束,能够控制放入到列中的值。
表->设计->CHECK约束->增长 表达式:old>18 and old<100
默认约束使用户可以定义一个值,每当用户没有在某一列中输入值时,则将所定义的值提供给这一列。若是用户对此列没有特定的要求,可使用默认约束来为此列输入默认值。
即便列为NOT NULL,设置默认约束后,可不进行输入,会使用默认值。
操做
表->设计->选中列->列属性 默认值或绑定:https://image.baidu.com/s/101.jpg
FK适用于创建两个表数据之间链接的一列或多列。经过将保存表中主键值的一列或多列增长到另外一个表中,可建立两个表之间的连接,这个列就成为第二个表的外键。
操做
表->设计->关系->增长 表和列规范:选择主键表的列和外键表的列 INSERT和UPDATE规范 删除规则 不执行任何操做:报错不执行 级联:删除主键表列的同时将关联的外键表中的列同时删除 更新规则 级联:更新主键表列的同时将关联的外键表中的列同时更新
SQL的主键和外键的做用:
外键取值规则:空值或参照的主键值。
在一对一关系中,大部分相关信息都在一个表中。特色
一对多关系是最多见的关系类型,是指表A中的行能够在表B中有许多匹配行,可是表B中的行只能在表A中有一个匹配行
若是在相关列中只有一列是主键或具备惟一约束,则建立的是一对多关系。
多对多关系是指关系中每一个表的行在相关表中具备多个匹配行。在数据库中,多对多关系的创建是依靠第3哥表即链接表实现的,链接表包含相关的两个表的主键列,而后从两个相关表的主键列分别建立与连接表中匹配列的关系。
视图是一种经常使用的数据库对象,它将查询的结果以虚拟表的形式存储在数据中。视图并不在数据库中以存储数据集的形式存在。视图的结构和内容是创建在对表的查询基础之上的,和表同样包括行和列,这些行列数据都来源于其所引用的表,而且是在引用视图过程当中动态生成的。
视图中的内容是有查询定义来的,而且视图和查询都是经过SQL语句定义的,他们有着许多相同和不一样之处。
× | 视图 | 查询 |
---|---|---|
存储 | 视图存储为数据库设计的一部分, | 查询不存储 |
排序 | 只有当视图包括TOP子句才能排序视图 | 能够排序任何查询结果 |
加密 | 能够加密视图 | 不能加密查询 |
能够禁止全部用户访问数据库的基表,而要求用户只能经过视图操做数据。这种方法能够保护用户和应用程序不受某些数据库修改的影响
标准视图:保存在数据库中的SELECT查询语句,即一般意义上理解的视图。 索引视图:建立有索引的视图成为索引视图。他通过计算并存储有本身的数据,能够提升某些类型查询的性能,尤为适用于聚合许多行的查询,但不太适合于常常更新的基本数据集。 分区视图:是在一台或多台服务器间水平联结一组表中的分区数据,以使数据看上去来源于一个表。