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权限.对于决定在架构中如何组织对象,安全性是应该考虑的因素.

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

第一章 T-SQL查询和编程基础 T-SQL语言基础(1)的更多相关文章

  1. SQL查询和编程基础

    本文转自http://www.cnblogs.com/Jolinson/p/3552786.html 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基 ...

  2. Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解

    Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...

  3. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  4. Hibernate原生SQL查询多表关联,SQL语句要注意的问题

    Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...

  5. 20165310 学习基础和C语言基础调查

    学习基础和C语言基础调查 做中学体会 阅读做中学之后,了解老师关于五笔练习.减肥.乒乓和背单词的经历,不禁联想到自己学古筝的经历. 成功的经验 兴趣 我其实小时候学过一段时间古筝,但是那时候是因为父母 ...

  6. 20165234 预备作业2 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...

  7. 20165318 预备作业二 学习基础和C语言基础调查

    20165318 学习基础和C语言基础调查 技能学习经验 我们这一代人,或多或少的都上过各种兴趣班,舞蹈钢琴画画书法,我也是如此.可这些技能中,唯一能拿的出手的就是舞蹈了.按照<优秀的教学方法- ...

  8. 20165230 学习基础和C语言基础调查

    20165230 学习基础和C语言基础调查 技能学习经验 我擅长弹钢琴.小时候我曾上过很多兴趣班,比如钢琴.跳舞.书法.绘画等等,唯一坚持至今的只有钢琴.仔细一算学习钢琴至今已有12年,不能说已经精通 ...

  9. 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.一种比大多数人(超过90%以上)更好的技能 说句实话,我还没有那种特别特别自信的.说我能拿得出手的.所谓能超过百分之九十以上的人的技能.毕竟人外有人,天外有天. 姑且算上 ...

  10. 20165235 学习基础和C语言基础调查

    20165235 学习基础和C语言基础调查 首先第一个问题:你有什么技能比大多人(超过90%以上)更好?感觉很难回答这种问题,其实我对很多东西挺感兴趣的,如果非要拿出一种比较突出的技能的话我感觉就是象 ...

随机推荐

  1. 尚学堂requireJs课程---3、私有和公有属性和方法

    尚学堂requireJs课程---3.私有和公有属性和方法 一.总结 一句话总结: 在 [模块] 的基础上,在return对象里面的方法和属性就是公有的(因为外部可以访问),不在的就是私有的 < ...

  2. EXCEL中自定义格式输入的数据怎么完整复制

    在用设置单元格式里 自定义 输入数值 如图,B列的数据,我复制后,用选择性粘贴到别的地方,还是无法将75FG4Y2一起复制过去,只能复制过去FG 怎么办? ===>先把这些复制到一个记事本里,再 ...

  3. 2.oracle数据库:[1]oracle简易客户端安装方法

      准备oracle简易客户端程序,如果没有请到oracle网站下载www.oracle.com,可以下载基本包及其他扩展程序包,例如:如果要使用sqlplus则需要下载sqlplus包,笔者下载了i ...

  4. dokcer部署code-server web版vscode

    #dokcer部署code-server web版vscode codercom/code-server:latest不支持插件在线安装 codercom/code-server:v2目前为最新版1. ...

  5. EncryptHelper加密对象-工具类

    using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.W ...

  6. JavaScript基础入门09

    目录 JavaScript 基础入门09 Event 自定义右键菜单 获取鼠标按键 获取鼠标坐标 获取键盘按键 页面中位置的获取 浏览器的默认行为 冒泡 什么是冒泡 小练习 JavaScript 基础 ...

  7. python基础知识(保留字和标识符、变量、常量、基本数据类型)

    保留字 保留字是python语言中已经被赋予特定意义的一些单词,开发程序时,不可以作为变量.函数.类.模块和其他对象的名称来使用例如:import 关键字输入后会变色 通过代码进行查看 import ...

  8. Python爬虫学习==>第四章:MySQL的安装

    学习目的: 掌握MySQL数据库的安装 正式步骤 Step1:安装数据库 百度MySQL,下载软件 端口设置 设置密码,我的密码123456 下一步 下一步 查看MySQL服务器是否启动 PS:未申明 ...

  9. Unity中的全局坐标系和局部坐标系

      全局坐标系 描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系.在Unity场景中创建的物体都是以全局坐标系中的坐标原点(0,0,0)来确定各自的位置的. 局部坐标系 每个物体都有其独立的坐 ...

  10. Python学习之认知(二)

    第二章(二) 2.1.5 变量 ​ 变量:将运算的中间结果暂存到内存,以便后续程序调⽤. 变量的命名规则: ​ 1.变量由字母, 数字,下划线搭配组合⽽成 ​ 2.不可以⽤数字开头,更不能是全数字 ​ ...