学习总结

sql数据库实训总结

时间:2021-02-03 20:23:54 学习总结 我要投稿

sql数据库实训总结

  sql数据库实训总结,SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。下面是小编分享的sql数据库实训总结,欢迎阅读!

sql数据库实训总结

  sql数据库实训总结【1】

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

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

  一个数据页是8k大小。

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

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

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

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

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

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

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

  sqlserver 有两种类型的区:

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

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

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

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

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

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

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

  为何会这样呢?

  其实很简单:

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

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

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

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

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

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

  我们有下面一个表,

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

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

  索引名 细节 索引的列

  member_corporation_link nonclustered located on primary corp_no

  member_ident clustered, unique, primary key located on primary member_no

  member_region_link nonclustered located on primary region_no

  memberfirstname nonclustered located on primary firstname

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

  select m.member_no, m.firstname, m.region_nofrom dbo.member as mwhere m.firstname like 'k%' and m.region_no > 6 and m.member_no < 5000go sql server 会根据索引方式,优化成下面方式来执行。

  select a.member_no,a.firstname,b.region_nofrom(select m.member_no, m.firstname from dbo.member as m where m.firstname like 'k%' and m.member_no < 5000) a , -- 这个查询可以直接使用 memberfirstname 非聚集索引,而且这个非聚集索引覆盖了所有查询列-- 实际执行时,只需要 逻辑读取 3 次

  (select m.member_no, m.region_no from dbo.member as mwhere m.region_no > 6) b

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

  where a.member_no = b.member_no

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

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

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

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

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

  select a.member_no,a.firstname,b.region_nofrom(select m.member_no, m.firstname from dbo.member as mwhere m.firstname like 'k%' -- 1/26 数据) a,

  (select m.member_no, m.region_no from dbo.member as mwhere m.region_no > 6 and m.member_no < 5000-- 1/3 * 1/ 2 数据) bwhere a.member_no = b.member_no

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

  比如下面的查询语句

  select m.member_no, m.firstname, m.region_nofrom dbo.member as m with (index (0))where m.firstname like 'k%' and m.region_no > 6 and m.member_no < 5000go

  select m.member_no, m.firstname, m.region_nofrom dbo.member as m with (index (1))where m.firstname like 'k%' and m.region_no > 6 and m.member_no < 5000goselect m.member_no, m.firstname, m.region_nofrom dbo.member as m with (index (membercovering3))where m.firstname like 'k%' and m.region_no > 6 and m.member_no < 5000goselect m.member_no, m.firstname, m.region_nofrom dbo.member as m with (index (memberfirstname, member_region_link))where m.firstname like 'k%' and m.region_no > 6 and m.member_no < 5000go

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

  对于 0 ,1 的意义如下:

  如果存在聚集索引,则 index(0) 强制执行聚集索引扫描,index(1) 强制执行聚集索引扫描或查找(使用性能最高的一种)。

  如果不存在聚集索引,则 index(0) 强制执行表扫描,index(1) 被解释为错误。

  总结知识点:

  简单来说,我们可以这么理解:sql server 对于每一条查询语句。

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

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

  作为它实际执行的计划。

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

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

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

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

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

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

  使用索引的意义

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

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

  使用索引的代价

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

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

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

  创建索引的列

  主键

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

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

  不创建索引的列

  很少在查询中被引用

  包含较少的惟一值

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

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

  excellent for high performance data loading (parallel bulk load and parallel index creation after load)

  excellent as a partition to a partitioned view or a partitioned table

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

  何时创建聚集索引?

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

  独特, 狭窄, 静止: 最重要的条件

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

  例如:

  identity

  date, identity

  guid (only when using newsequentialid() function)

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

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

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

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

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

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

  sql数据库实训总结【2】

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

  理论应该与时间相结合。

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

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

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

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

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

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

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

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

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

  记得第一天来这里时,心里不可避免的有些疑惑:不知道老板怎么样,应该去怎么做,要去感谢什么等等。

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

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

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

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

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

  第四是感受到学校和社会的距离:在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。

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

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

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

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

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

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

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

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

  要与社会交流。

  为社会做贡献。

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

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

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

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

  sql数据库实训总结【3】

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

  从学到和掌握到的东西来说,在书本上学到的东西非常不牢固,然而实训真的让我受益匪浅!实训第一天到教室时,看到老师给我们讲试训的内容与要求,然后告诉我们一些要完成的任务与作业,然后根据试训的内容与要求授课,让我们从实践中去体会所学的知识。

  说实话,对于SQL Server 数据库,我所学到的知识很不牢固,当时在课堂上听课所记住的也并不多,所以在试训开始时,真的不知道该干些什么?有一种“何去何从”的`感觉!但随着老师的教课和讲解,以及和同学的讨论,再结合自己所知道的知识和老师所发放下的课程内容,根据这些实际的情况,我对自己将要做的事也有了兴趣和信心。

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

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

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

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

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

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

  使我们掌握了insert into,deleted from,update set,以及select*from语句的的相关知识和运用。

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

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

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

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

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

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

【sql数据库实训总结】相关文章:

SQL数据库简历模板09-28

金工实训实训报告09-20

审计实训报告总结01-29

java实训报告总结09-24

外贸实训报告总结01-06

会计实训报告总结11-14

测量实训报告总结01-01

实训总结与体会02-26

钳工实训个人总结04-08

电话礼仪实训报告总结07-07