zoukankan      html  css  js  c++  java
  • 第一章 T-SQL查询和编程基础 T-SQL语言基础(1)

    T-SQL查询和编程基础(1)

    1.1 理论背景

    SQL是为查询和管理关系型数据库管理系统(RDBMS)中的数据而专门设计的一种标准语言.

    RDBMS是一种基于关系模型的数据库管理系统,关系模型则是一种用于表示数据的语义模型,基于两种数学理论:集合论和谓词逻辑.

    1.1.1 SQL

    SQL是基于关系模型的ANSI和ISO标准语言,专门设计用于查询和管理RDBMS中的数据.

    SQL有几种不同类型的语句,包括:

    数据定义语句:用于处理数据对象的定义 (DDL,Data Definition Language----CREATE,ALTER,DROP)

    数据处理语言:用于查询和修改数据 (DML,Data Manipulation Language----SELECT,INSERT,UPDATE,DELETE,MERGE)

    数据控制语言:用于处理权限管理 (DCL,Data Control Language----GRANT,REVOKE)

    1.1.2 集合论

    所谓'集合'是把我们直观或思维中确定的,相互间有明确区别的那些对象m视为一个整体M,这一整体M就称为集合(称m为集合M的元素)

     

    1.1.3 谓词逻辑(Predicate Logic)

    谓词逻辑是关系模型基于的另一个数学分支.

    谓词就是用来刻画事物是否具有某种性质或满足某种表达式条件的一个词项,也就是true或false.在关系模型中,谓词用于维护数据的逻辑 完整性和定义它的结构.

    谓词也可以用于对数据进行过滤以定义其子集等多种应用场合,

    例如:要查询Employee表,而且只要返回来自销售部门的雇员信息,就可以在查询过滤条件中使用谓词"部门(department)为销售(sales)"--(T-SQL表达式就是:department='sales').

    例如:在Employee表中定义一个约束(constraint),只有薪资大于0的雇员数据才可以保持到表中.这里的谓词是"薪资(salary)大于0"--(T-SQL表达式就是:salary>0)

    注:在集合论中,可以用谓词来定义集合.

    1.1.4 关系模型(Relational Model)

     关系模型是一个用于表示数据的语义模型,其理论基础是集合论和谓词逻辑.

    关系模型的目标是要用最少的或完全无冗余地支持完整数据的持久化表示,而且还要将数据完整性(强制的数据一致性)定义为模型的一部分.(RDBMS则可以实现这样的关系模型,并提供存储,管理,实施强制的数据完整性,以及查询数据的手段).

    关系模型也有与之相关的概念,例如:命题(proposition),域(domain),n元关系(n-ary relation),n重元祖(n-tuple),序偶(ordered pair),等等.......

     a.命题,谓词和关系

    关系:

    在集合论中,关系是集合的一种表示.在关系模型中,关系是相关信息的一个集合,在数据库的实现中就表现为数据表.

    关系模型的一个关键要点就是:一个关系代表一个集合.对关系进行操作(基于关系代数)的结果,得到的还是一个关系.

     命题,谓词

     为数据库设计数据模型时,所有数据都是用关系(数据表)来表示的.

    确定一个命题(proposition),用于表示数据库中要保存的信息.命题就是必须为真(true)或假(false)的一个断言或语句.

    例如:为真的一行插入到某个表中,为假不插入到这张表中!

    对命题进行形式化(formalize)处理,也就是从命题中分析出具体的数据(关系本身),并定义其结构(关系的标题)

    例如:根据命题来创建它的谓词.而关系的标题则组成了属性的一个集合(set).在关系模型中,属性是没有顺序的.

    b.缺少的值

    二值谓词逻辑,三值谓词逻辑,四值谓词逻辑

    二值:true,false

    三值:true,false,unknown(null)

    四值:true,false,有用的unknown,没有用的unknown

    c.约束(Constraint)

     关系模型最大的优点之一就是数据完整性定位为模型的一部分.完整性是通过规则(或约束)来实施的.

    实施完整性:

    1.最简单的方法,设置属性的类型和是否允许空值(即是否支持NULL)--实施所谓的域完整性

    2.约束的例子--提供完整性的候选键

    候选键是指在关系中能够防止同一元祖(数据行)多次出现的属性集(一个或多个属性).候选键的谓词能够唯一地标识一行数据,在关系中可以定义多个候选键!(候选键具有唯一性)

    当然,可以任意选择一个候选键作为主键.

    超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
    候选键(candidate key):不含有多余属性的超键称为候选键
    主键(primary key):用户选作元组标识的一个候选键程序主键

    3.约束的例子--提供完整性的外键

    外键是在关系(称为引用关系,referencing relation)中的一个或多个属性上定义的,通过它来引用另一个(或者,也可能是同一个)关系中的候选键.

    这种约束要求引用关系中外键的属性值要与被引用关系的候选键的属性值相一致.

    d.规范化(Normalization)

    第一范式----表中的行必须是唯一地.行的唯一性是通过在表中定义一个唯一地主键而实现的.

    第二范式----满足第一范式;其次要求非键属性(nonkey attribute)和候选键属性之间必须满足一定的条件.

    (如果要获得任何非键属性值,就必须提供同一行中某个候选键的所有属性值.如果知道了一个候选键的所有属性值,就能够找到任意行的任意属性值.)

    第三范式----满足第二范式;其次,所有非键属性必须非传递依赖于候选键.意味着所有非键属性都必须互相独立,也就是说,一个非键属性不能依赖于其他非键属性.

    1.1.5 数据生命周期

    联机事务处理(OLTP,Online Transactional Processing)

    数据仓库(DW,Data Warehouse)

    联机分析处理(OLAP,Online Analytical Processing)

    数据挖掘(DM,Data mining)

    1.2 SQL Server 体系结构

    SQL Server体系结构,涉及的实体有:SQL Server实例,数据库,模式,以及数据库对象.

    1.2.1 SQL Server实例

    SQL Server实例是指安装的一个SQL Server数据库引擎/服务.

    (同一台计算机上可以安装多个SQL Server 的实例) 

    1.2.2 数据库

    可以将数据库认为是各种对象的容器,这些对象可以是,表(table),视图(view),存储过程(stored procedure),等等......每个SQL Server实例可以包含多个数据库.

     系统数据库包括:master,Resource,model,tempdb,msdb...

    (数据库在物理上由数据文件和事务日志文件组成.)

    (SQL Server可以同时写多个数据文件,但某一时刻只能以顺序方式写一个日志文件.)

    (多个数据文件在逻辑上按照文件组(filegroup)的形式进行分组管理)

    (文件扩展名:.mdf .ldf .ndf)

    1.2.3 架构和对象

    数据库是一种对象的容器.一个数据库包含多个架构,而每个架构则又包含多个对象,这些对象可以是表,视图,存储过程等.

    可以在架构级别上控制对象的访问权限.例如:可以为一个用户授予某个架构上的SELECT权限.对于决定在架构中如何组织对象,安全性是应该考虑的因素.

    架构也是一个命名空间,用作对象名称的前缀.(当在代码中引用对象时,推荐总是使用由两部分构成的对象名称,也就是,架构+对象名)

  • 相关阅读:
    20180925-7 规格说明书-吉林市2日游
    第二周例行报告psp
    20180918-1 词频统计
    第一周例行报告psp
    第一周博客作业2018091-2
    20181009-9 每周例行报告
    20180925-1 每周例行报告
    20180925-7 规格说明书-吉林市2日游
    20180925-5 代码规范,结对要求
    20180925-4 单元测试,结对
  • 原文地址:https://www.cnblogs.com/youguess/p/5006261.html
Copyright © 2011-2022 走看看