sql数据库实训总结.docx

上传人:b****0 文档编号:9802209 上传时间:2023-05-21 格式:DOCX 页数:11 大小:23.49KB
下载 相关 举报
sql数据库实训总结.docx_第1页
第1页 / 共11页
sql数据库实训总结.docx_第2页
第2页 / 共11页
sql数据库实训总结.docx_第3页
第3页 / 共11页
sql数据库实训总结.docx_第4页
第4页 / 共11页
sql数据库实训总结.docx_第5页
第5页 / 共11页
sql数据库实训总结.docx_第6页
第6页 / 共11页
sql数据库实训总结.docx_第7页
第7页 / 共11页
sql数据库实训总结.docx_第8页
第8页 / 共11页
sql数据库实训总结.docx_第9页
第9页 / 共11页
sql数据库实训总结.docx_第10页
第10页 / 共11页
sql数据库实训总结.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

sql数据库实训总结.docx

《sql数据库实训总结.docx》由会员分享,可在线阅读,更多相关《sql数据库实训总结.docx(11页珍藏版)》请在冰点文库上搜索。

sql数据库实训总结.docx

sql数据库实训总结

Infact,everyoneknowswhattheywant,butnoteveryonehasthecouragetoexpressit.简单易用 轻享办公(页眉可删)

sql数据库实训总结

  sql数据库实训总结,SQL是StructuredQueryLanguage(结构化查询语言)的缩写。

SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

下面是分享的sql数据库实训总结,欢迎阅读!

  sql数据库实训总结【1】

  我在sqlserver索引基础知识系列中,第一篇就讲了记录数据的基本格式。

  那里主要讲解的是,数据库的最小读存单元:

数据页。

  一个数据页是8k大小。

  对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。

  而是变化达到一定数量级后才会作这个操作。

  这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。

  区是管理空间的基本单位。

  一个区是八个物理上连续的页(即64kb)。

  这意味着sqlserver数据库中每mb有16个区。

  为了使空间分配更有效,sqlserver不会将所有区分配给包含少量数据的表。

  sqlserver有两种类型的区:

  统一区,由单个对象所有。

  区中的所有8页只能由所属对象使用。

  混合区,最多可由八个对象共享。

  区中八页的每页可由不同的对象所有。

  通常从混合区向新表或索引分配页。

  当表或索引增长到8页时,将变成使用统一区进行后续分配。

  如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。

  为何会这样呢?

  其实很简单:

  读或写8kb的时间与读或写64kb的时间几乎相同。

  在8kb到64kb范围之内,单个磁盘i/o传输操作所花的时间主要是磁盘取数臂和读/写磁头运动的时间。

  因此,从数学上来讲,当需要传输64kb以上的sql数据时,

  尽可能地执行64kb磁盘传输是有益的,即分成数个64k的操作。

  因为64kb传输基本上与8kb传输一样快,而每次传输的sqlserver数据是8kb传输的8倍。

  我们通过一个实例来看有and操作符时候的最常见的一种情况。

  我们有下面一个表,

  createtable[dbo].[member]([member_no][dbo].[numeric_id]identity(1,1)notnull,[lastname][dbo].[shortstring]notnull,[firstname][dbo].[shortstring]notnull,[middleinitial][dbo].[letter]null,[street][dbo].[shortstring]notnull,[city][dbo].[shortstring]notnull,[state_prov][dbo].[statecode]notnull,[country][dbo].[countrycode]notnull,[mail_code][dbo].[mailcode]notnull,[phone_no][dbo].[phonenumber]null,[photograph][image]null,[issue_dt][datetime]notnulldefault(getdate()),[expr_dt][datetime]notnulldefault(dateadd(year,1,getdate())),[region_no][dbo].[numeric_id]notnull,[corp_no][dbo].[numeric_id]null,[prev_balance][money]nulldefault(0),[curr_balance][money]nulldefault(0),[member_code][dbo].[status_code]notnulldefault())

  这个表具备下面的四个索引:

  索引名细节索引的列

  member_corporation_linknonclusteredlocatedonprimarycorp_no

  member_identclustered,unique,primarykeylocatedonprimarymember_no

  member_region_linknonclusteredlocatedonprimaryregion_no

  memberfirstnamenonclusteredlocatedonprimaryfirstname

  当我们执行下面的sql查询时候,

  selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwherem.firstnamelikek%andm.region_no6andm.member_no5000gosqlserver会根据索引方式,优化成下面方式来执行。

  selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelikek%andm.member_no5000)a,--这个查询可以直接使用memberfirstname非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取3次

  (selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6)b

  --这个查询可以直接使用member_region_link非聚集索引,而且这个非聚集索引覆盖了所有查询列--实际执行时,只需要逻辑读取10次

  wherea.member_no=b.member_no

  不信,你可以看这两个sql的执行计划,以及逻辑读信息,都是一样的。

  其实上面的sql,如果优化成下面的方式,实际的逻辑读消耗也是一样的。

  为何sqlserver不会优化成下面的方式。

  是因为and操作符优化的另外一个原则。

  1/26的数据和1/6的数据找交集的速度要比1/52的数据和1/3的数据找交集速度要慢。

  selecta.member_no,a.firstname,b.region_nofrom(selectm.member_no,m.firstnamefromdbo.memberasmwherem.firstnamelikek%--1/26数据)a,

  (selectm.member_no,m.region_nofromdbo.memberasmwherem.region_no6andm.member_no5000--1/3__1/2数据)bwherea.member_no=b.member_no

  当然,我们要学习sql如何优化的话,就会用到查询语句中的一个功能,指定查询使用哪个索引来进行。

  比如下面的查询语句

  selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(0))wherem.firstnamelikek%andm.region_no6andm.member_no5000go

  selectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index

(1))wherem.firstnamelikek%andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(membercovering3))wherem.firstnamelikek%andm.region_no6andm.member_no5000goselectm.member_no,m.firstname,m.region_nofromdbo.memberasmwith(index(memberfirstname,member_region_link))wherem.firstnamelikek%andm.region_no6andm.member_no5000go

  这里index计算符可以是0,1,指定的一个或者多个索引名字。

  对于0,1的意义如下:

  如果存在聚集索引,则index(0)强制执行聚集索引扫描,index

(1)强制执行聚集索引扫描或查找(使用性能最高的一种)。

  如果不存在聚集索引,则index(0)强制执行表扫描,index

(1)被解释为错误。

  总结知识点:

  简单来说,我们可以这么理解:

sqlserver对于每一条查询语句。

  会根据实际索引情况(sysindexes系统表中存储这些信息),分析每种组合可能的成本。

  然后选择它认为成本最小的一种。

  作为它实际执行的计划。

  成本代价计算的一个主要组成部分是逻辑i/o的数量,特别是对于单表的查询。

  and操作要满足所有条件,这样,经常会要求对几个数据集作交集。

  数据集越小,数据集的交集计算越节省成本。

  的项目中,竟然出现了滥用聚集索引的问题。

  看来没有培训最最基础的索引的意义,代价,使用场景,是一个非常大的失误。

  这篇博客就是从这个角度来罗列索引的基础知识。

  使用索引的意义

  索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。

  使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。

  使用索引的代价

  索引需要占用数据表以外的物理存储空间。

  创建索引和维护索引要花费一定的时间。

  当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

  创建索引的列

  主键

  外键或在表联接操作中经常用到的列

  在经常查询的字段上最好建立索引

  不创建索引的列

  很少在查询中被引用

  包含较少的惟一值

  定义为text、ntext或者image数据类型的列

  heaps是stagingdata的很好选择,当它没有任何index时

  excellentforhighperformancedataloading(parallelbulkloadandparallelindexcreationafterload)

  excellentasapartitiontoapartitionedvieworapartitionedtable

  聚集索引提高性能的方法,在前面几篇博客中分别提到过,下面只是一个简单的大纲,细节请参看前面几篇博客。

  何时创建聚集索引?

  clusteredindex会提高大多数table的性能,尤其是当它满足以下条件时:

  独特,狭窄,静止:

最重要的条件

  持续增长的,最好是只向上增加。

  例如:

  identity

  date,identity

  guid(onlywhenusingnewsequentialid()function)

  聚集索引唯一性(独特型的问题)

  由于聚集索引的b+树结构的叶子节点必须指向具体数据。

  如果你要建立聚集索引的列不唯一,并且你指定的创建的聚集索引是非唯一的聚集索引,则会有以下情况:

  如果未使用unique属性创建聚集索引,数据库引擎将向表自动添加一个四字节uniqueifier列。

  必要时,数据库引擎将向行自动添加一个uniqueifier值,使每个键唯一。

  此列和列值供内部使用,用户不能查看或访问。

  sql数据库实训总结【2】

  实训,就是把我们在学校所学的理论知识,运用到客观实际中去,是自己所学到的理论知识有用武之地,只学不实践,那么所学的就等于零。

  理论应该与时间相结合。

  另一方面,实践卡可以为以后找工作打基础。

  通过这段时间的.实习,学到一些在学校里学不到的东西。

  因为环境不同,接触的人与事不同,从中学到的东西自然就不一样。

  要学会从实践中学习,从学习中时间。

  而且中国的紧急飞速发展,在拥有越来越多的机会的同是,也有了更多的挑战。

  对于人才的要求就会越来越高,我们不只要学号学校所学到的知识,好药不断充生活中,实践中学其他知识,不断从各方面武装自己,才能在竞争中突出自己,表现自己。

  短短两个月的工作过程是我受益很大。

  不仅让我开阔了眼界,最主要的是懂得了如何更好的为人处事。

  第一要真诚:

你可以伪装自己的面孔,但绝不可以忽略真诚的力量。

  记得第一天来这里时,心里不可避免的有些疑惑:

不知道老板怎么样,应该去怎么做,要去感谢什么等等。

  踏进大门后,之间几个陌生的人用莫名而疑惑的眼神看着我,我微笑和他们打招呼,尴尬的局面理科得到了缓解,大家都很友善的微笑欢迎我的到来。

  从那天戚,我养成了一个习惯,每天早上见到他们都要微笑的说声好。

  第二是激情与耐心:

激情与耐心,就像火与冰,看是两种完全不同的东西,却能碰撞出最美丽的火法。

  第三是主动出击:

当你可以选择的时候,把主动权握在自己手中,在实习旗舰,我会主动的协同同事工作,主动的做些力所能及的事,并会几级的寻找合适的时间跟他们交流。

  谈生活学习以及未来的工作,通过这些我就同事们走的很近,在实习中,他们会教我怎么做事见什么样的人说什么样的话,使我觉得花的了很多收获而且和他们相处的很愉快。

  第四是感受到学校和社会的距离:

在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。

  在这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎么做人,,移提高自己的能力。

  记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是学学搞笑,学生还终归保持着学生的身份,而走进企业,接触各个的客户,同事,上司等等,关系复杂。

  得去面对从未面对过的一切。

  在实际工作中,可能会遇到书本上没学到的,又可能是书本上的只是一点都用不上的情况。

  或许工作中运用到的只是很简单的问题,只要套公式是的就能完成一线任务,有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学的这么吃力呢?

这是社会与学校脱轨了吗?

也许老是是正确的。

  虽然大学生生活不像踏入社会,但总算是社会的一部分,这是不可佛人的事实。

  作为一个新世纪的大学生,应该懂得与社会上各方面的人交往,处理社会所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。

  毕竟,四年大学念完后,我已经不再是一名大学生,是社会中的一份子了。

  要与社会交流。

  为社会做贡献。

  只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格,对社会有用的人才,多接触社会是很有必要的。

  回顾实训生活,感触是很深,收获是丰硕的。

  在短暂的实训过程中,我深深的感觉到自己所学的知识的肤浅和在实践运用中知识的匮乏,刚开始的一段时间里,对一些工作无从下手,茫然不知所措,这让我感到非常的难过。

  在学校总以为自己学的不错,一旦接触到时间,菜发现自己知道的是多么少,这是菜真正领悟到学无止境的含义。

  sql数据库实训总结【3】

  为期一周的实训已经结束,从这一周中,有了很多的感悟。

  从学到和掌握到的东西来说,在书本上学到的东西非常不牢固,然而实训真的让我受益匪浅!

实训第一天到教室时,看到老师给我们讲试训的内容与要求,然后告诉我们一些要完成的任务与作业,然后根据试训的内容与要求授课,让我们从实践中去体会所学的知识。

  说实话,对于SQLServer数据库,我所学到的知识很不牢固,当时在课堂上听课所记住的也并不多,所以在试训开始时,真的不知道该干些什么?

有一种“何去何从”的感觉!

但随着老师的教课和讲解,以及和同学的讨论,再结合自己所知道的知识和老师所发放下的课程内容,根据这些实际的情况,我对自己将要做的事也有了兴趣和信心。

  所以在接下来的时间中,我们在老师的帮助下开始了数据库相关的实训。

  在这次的google订餐系统的设计过程中,我们根据该google订餐系统的功能,将其分解三大部分来完成,第一部分就是建立数据库和表,并给其添加约束;第二是角色的管理,分为管理员,订餐用户和餐馆;第三就是用编程语言建立管理菜单。

  所以试训的内容是从数据库和数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表属性,有查看表信息,修改表中数据,删除表中的数据以及修改表与删除表的操作。

  我们以SQLServer数据库为基础,建立一个google订餐系统的数据库管理体系,并将数据库与程序连接,用编程语言建立数据库管理菜单。

  老师给我们讲了库和表的创建方法,以及约束的内心及其语法结构,让我们知道了不同约束的功能和使用的环境,还给我们说了标识列的使用和作用。

  讲了数据库的操作,增删改查。

  使我们掌握了insertinto,deletedfrom,updateset,以及select__from语句的的相关知识和运用。

  其中还学到了分页查询以及多表查询。

  从这次试训中让我们更明白了一些知识,表是数据库最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际运用中使用多表,对表的规划和理解就会越深刻。

  通过这次试训,让我深刻的了解到自己的不足,要想对进行数据库更深的学习,自己得要多看有关的课外书籍,并多做练习,不懂得要多问同学和请教老师,以解决自己遇到的难题,知道更多的知识。

  实训不仅是让我们在实践中对理论知识的验证,也让我们知道我们多学的知识在社会上的运用,把所学知识和企业商业接轨。

  这次实训,不仅让我们学到了许多有关数据库的知识,老师也给我们讲了很多社会现状和就业情况,让我们不同的角度了解这个专业的就业趋势。

  让我们在今后的学习中更有动力的充实自己,曾加自己的知识面和锻炼自己各方面能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2