设为首页 收藏本站
查看: 1095|回复: 0

[经验分享] 【Microsoft SQL Server 2008 技术内幕:T-SQL语言基础】一、基础篇

[复制链接]

尚未签到

发表于 2016-11-5 09:04:09 | 显示全部楼层 |阅读模式
sql2008 t-sql

写在前边
这个系列的文章纯属个人学习笔记。仅仅针对自己不熟悉的部分进行简要摘录。
更多的倾向于sql2005,2008中的新概念和新特性,可能不太适合刚刚接触t-sql的同学:)
示例数据库:
原书提供的例子数据库创建脚本
AdventureWorksLT2008
SQL2005示例数据库

关系模型基础:

约束 (Constraint)
关系模型的最大优点之一就是将数据完整性定义为模型的一部分:
1.Domain integrity: (最简单的约束)就是设置是否允许为空(null)E
2.Entity integrity: candidate key, 可以唯一标示一条记录,候选键可以做为主键,否则就被称为备用关键字(alternate key)
3.Referential integrity: foreign key

规范化 (Normalization)
形式化的数学处理过程,为了在不牺牲完整性的前提下,将数据冗余降低到最小。
第一范式:表中的行必须是唯一的,属性应该是原子的。该范式对关系的定义来说是冗余的,关系数据库一定符合该范式。行的唯一性由主键保证
DSC0000.jpg
第二范式:首先满足第一范式;其次对每一个候选键,每个非键属性必须完全依赖于整个(全部的属性)候选键。如上图,如果Orders保留了复合主键,则orderdate, customerid, companyname等属性可以通过orderid唯一决定。而orderid并不是某个候选键的全部属性(这里的复合主键即唯一候选键)。所以需要提取OrderDetails表。引入的数据冗余可以考虑以下情况:相同orderid时不同productid的订单会有orderdate, customerid, companyname三个字段的冗余。
DSC0001.jpg
第三范式:首先满足第二范式;其次,所有非键属性必须非传递依赖于候选键。就是说所有的非键属性必须相互独立,没有相互依赖。如上图,customerid和companyname都依赖于整个主键orderid,但companyname依赖于customerid,这样就形成了传递依赖:须知道orderid才能知道customerid, 须知道customerid才能知道companyname。提取Customers表后如下图:
DSC0002.jpg
第二、三范式总结:每个非键属性都必须仅依赖于全部的键,不能是其他东西。

数据生命周期(环境):

1. 联机事务处理OLTP (on line transactional processing)

  • 使用T-SQL进行增删改查的环境,注意控制数据冗余,保证完整性。
  • 不适合生成报表,因为可能涉及复杂的关联关系

2. 数据仓库DW (data warehouse)

  • 针对数据检索和生成报表的环境。
  • 为查询进行设计和优化,有意保留部分冗余
  • star schema:一个事实表(存储事实和measure),多个维度表(每个维度实现为一个包含冗余数据的表)。
  • snowflake schema:如果规范化星形模式中的一个维度,生成表示该维度的多个表,得到就是雪花形维度(snowflake dimension),包含雪花维度的模式即雪花模式
  • measure: A measure represents a column that contains quantifiable data, usually numeric, that can be aggregated. A measure is generally mapped to a column in a fact table.
  • 数据通过ETL(extract transform and load)工具被加载到DW, SQL server中由Integration Service响应ETL请求。

3. 联机分析处理 OLAP (on line analytical processing)

  • 对聚合后的数据进行在线动态分析,通常涉及频繁地不同级别的聚合(包括切片slicing和切块dicing)。
  • 使用sql server analysis service计算不同级别的聚合并保存在多维结构(cube)中

4. 数据挖掘 data mining

SQL Server体系结构:

默认数据库:

  • master: 保存数据库实例范围内的元数据信息,服务配置,所有数据库的信息,初始化信息
  • model: 新数据库的模板。修改model数据库将影响其修改后所创建的数据库
  • tempdb: 保存临时数据:work table, sort space, row versioning, etc. 服务重启后重置为model
  • msdb: 保存Agent服务的数据。Agent负责job,schedule, replication和报警。另外还保存一些sql server功能的信息,如database mail和service broker。
  • resource sql server 2005新增的。保存所有系统对象

架构(Schema)和对象:

  • Schema可以看做是各种对象的容器,这些对象可以是table, view, sp等。一个数据库可以包含多个schema,每个schema又包含很多对象。
  • 可以在Schema的级别上制定访问权限控制
  • Schema也是一个命名空间,可用作对象的前缀,如Sales.Orders表示Sales架构中的Orders表,这种表示方法称为架构限定(schema-qualified)名称。
  • 如果省略架构名,对象的搜索次序为:用户默认schema > dbo schema

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295995-1-1.html 上篇帖子: 学习SQL Server 2005不得不看的一些图书(学习中) 下篇帖子: 《Microsoft SQL Server 2008 技术内幕:T-SQL 语言基础》 数据库实例下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表