Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies 读书笔记之三

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies  读书笔记之三
 
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的 SQL Server 版本。《Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies》包括了9本书,分别介绍了SQL Server 2008的一些特性和技术,内容图文并茂、非常直观、浅显易懂。本系列读书笔记分9篇,分别介绍每本书的一些值得关注的内容。
 
 
Book III – Interacting with Your Data  操作数据
首先,本节第一步就介绍了 数据库的范式,数据库的设计范式是数据库设计所需要满足的规范,避免数据库存储大量不需要的冗余信息。
第一范式(1NF,First Normal Form: No Repeating Groups)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。
第二范式(2NF,Second Normal Form: Dependent on the Whole Key)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求每一个非主关键字段必须直接且仅依赖主关键字字段。换句换说,如果任何一个非主关键字段(non-primary column)是直接依赖于其他非主关键字段(non-primary column),则这个表的设计不符合第三范式。
第二范式和第三范式的最大区别是:第二范式强调非主关键字段必须依赖于整个主关键字段(组合关键字段列表,composite key),而不是部分关键字段列表。而第三范式强调的是:非主关键字段必须依赖于主关键字,而不是其他非主关键字段。也就是说,每一个字段或列必须依赖于整个主关键字段列(第二范式),且仅仅主关键字段列(第三范式)。
当然,我们为了提高系统的性能,必要时违反范式(Denomalizing your database),增加冗余数据到数据库。
 
接下来第二章介绍了SQL Server的优化,包括使用执行计划、创建和维护统计信息等。介绍的比较简单,值得看一下。
 
后面的章节介绍了查询设计器(Query Designer)、更新数据、视图等等,比较简单,可以很快跳过去。
 
最后一部分,介绍了高级查询主题,包括事务、全文检索(Full-text Search)、Outer Joins和查询XML数据等等。
Microsoft 在最近的SQL Server的版本中增加了对XML 的重大支持,XML 数据可以存放在XML数据类型的列中,或者nvarchar(MAX) 数据类型中。在SQL Server 2008中,提供了如下的XML 方法,用来查询和更新XML数据。
Query – 该方法用来从XML文档中查询单一节点。
Value – 该方法用来从XML文档中检索单一值。
Exist – 该方法用来检查一个特定的值是否存在于XML文档中。
Nodes – 该方法用来从XML文档中检索多个值,通常用来以table的格式显示XML数据。
Modify – 该方法更新XML文档的数据。
 
关于XML 数据的查询,这里简单演示其中相关的SQL 脚本:
--Declare the variable for the XML instance
DECLARE  @myXML xml
--Create the XML instance
SET  @myXML = '
<Root>
<Contact ContactID=''101'' ContactName=''Homer Simpson''>
<ContactInformation>
<email>[email]Homer@springfield.com[/email]</email>
<Cell>1-123-555-1234</Cell>
</ContactInformation>
</Contact>
<Contact ContactID=''102'' ContactName=''Marge Simpson''>
<ContactInformation>
<email>[email]Marge@springfield.com[/email]</email>
<Cell>1-123-555-5678</Cell>
</ContactInformation>
</Contact>
</Root>'
--Use the query method to query the XML instance
SELECT  @myXML.query('/Root/Contact/ContactInformation/email/text()')
 
DECLARE  @ContactID int
--Retrieve value of ContactID for the 2nd row [2]
SET  @ContactID = @myXML.value('(/Root/Contact/@ContactID)[2]', 'int')
--Display the value
SELECT  @ContactID
 
DECLARE  @dataExists bit
--See if Homer Simpson exists in the XML instance
SET  @dataExists = @myXML.exist('/Root = (''Homer Simpson'')')
SELECT  @dataExists
 
--Retrieve the nodes
SELECT
MyTable . cols . value ( '@ContactName' ,  'varchar(35)') AS Name,
MyTable . cols . query ( 'ContactInformation/email' )  AS [Email],
MyTable . cols . query ( 'ContactInformation/Cell' )  AS [CellPhone]
FROM  @myXML.nodes('/Root/Contact') MyTable(cols)
 
欢迎访问 [url]http://blog.entlib.com/[/url] 开源ASP.NET博客平台,了解更多的读书笔记。









本文转自 entlib.com 51CTO博客,原文链接:http://blog.51cto.com/entlib/136695,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL Oracle 关系型数据库
技术经验解读:【读书笔记】SQL语言基础
技术经验解读:【读书笔记】SQL语言基础
|
3月前
|
SQL 关系型数据库 数据管理
Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
【5月更文挑战第14天】Microsoft SQL Server 是微软公司开发的一款关系型数据库管理系统
61 2
|
3月前
|
SQL 关系型数据库 MySQL
《SQL必知必会》_读书笔记
《SQL必知必会》_读书笔记
38 1
|
3月前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
3月前
|
SQL 存储 数据安全/隐私保护
|
3月前
|
数据库
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
|
3月前
|
监控 数据库 开发工具
使用Telegraf+Grafana监控Microsoft SQLServer数据库
使用Telegraf+Grafana监控Microsoft SQLServer数据库
125 1
|
3月前
|
SQL 存储 关系型数据库
《SQL必知必会》读书笔记(二)
《SQL必知必会》读书笔记
39 0
《SQL必知必会》读书笔记(二)
|
3月前
|
SQL 关系型数据库 MySQL
《SQL必知必会》读书笔记(一)
《SQL必知必会》读书笔记
59 0
《SQL必知必会》读书笔记(一)
|
3月前
|
SQL 数据库连接 数据库
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
200 0