数据库学习报告专业班级:信管1303学号:姓名:数据库学习报告在大三上学期的时候我们已经学习过数据库的一些基本知识,这一学期在李老师的带领下我们对数据库的相关内容做了进一步的学习。课程只有几周的时间,时间很短,但我们学到的也许不只有一点点专业知识。在这门课程开始之前,我一直觉得这门课也许并没有太大的价值,因为我们之前已经学习过了数据库的相关课程,但是真正接触过之后我才发现,事实并不是如此,我还有许多不知道的地方,许多应该学也必须学的地方。就像老师说的那样,数据库属于我们的专业课程,每一位同学都应该尽自己最大的努力去把它学会、学好、学精。由于第九周是考试,所以准确来说我们的课程时间应该是八周的时间,在这八周里面,李老师带领我们学习了数据库和表的操作、记录操作DML、函数的相关应用、大批量插入数据、游标、视图和索引、存储过程和触发器等相关内容。每一次课堂都是边操作边讲解,所以理解起来比较容易,记忆也相对深刻。下面是我对课堂所学知识的一些总结概括,以及学习过程中的一些感受。数据库和表的操作:这一部分内容应该是最基本也是我们必须要掌握的内容,比如说创建数据库、修改数据库、查看数据信息、重命名数据库、删除数据库、分离数据库和附加数据库、创建数据表、对数据表进行增删改查、以及数据表的删除。创建数据库和数据表都有两种方式,一种是图形界面方法,即使用SQLServerManagementStudio创建,另一种是使用T-SQL语句进行创建。数据库的重命名以及删除都相对比较简单,需要练习和熟练掌握的是数据表的增删查改,事实上,这一部分的内容在我们上学期也都已经学习过,所以我觉得这部分的内容主要是以温习为主,跟着老师的思路,把之前已经掌握的内容简单复习巩固,把没有学习好的内容进一步掌握,为后面内容的学习打下良好的基础。数据定义语言DDL:SQL的定义功能是通过数据定义语言DDL来实现的,它用来定义数据库的逻辑结构,包括基本表、视图及索引。基本的定义表包括三类:定义、修改和删除。语句功能CREATE创建数据库或者数据库对象ALTER修改数据库或者数据库对象DROP删除数据库或者数据库对象--创建数据表createtablestudents(idvarchar(20),namevarchar(6),sexvarchar(2))--增加地址列altertablestudentsaddaddressvarchar(50)--删除地址列altertablestudentsdropcolumnaddress--修改数据长度altertablestudentsaltercolumnnamevarchar(20)altertablestudentsaltercolumnsexvarchar(10)数据操纵语言DML:SQL的数据操纵功能通过数据操纵语言DML来实现,它包括数据查询和数据更新两大类操作,其中,数据查询是指对数据库中的数据进行查询、统计、分组、排序等操作;数据更新包括插入、删除和修改三种操作。语句功能Select从表或视图中检索数据Insert将数据插入到表或视图中Update修改表或视图中的数据Delete从表或视图中删除数据--向表中插入纪录insertintoinforvalues('301','张三','男','165','1995-1-1','13099873','139876572')insertintoinforvalues('302','李娜',’女’,'165','1995-2-1','13099874','1398765721')--修改记录updateinforsetid='01'whereid='301'--删除记录deleteinforwherename='李娜'deletefrominfor--查找记录Select*frominfor函数的相关应用:(1)字符转换函数ASCII(字符表达式)函数,返回字符表达式最左端字符的ASCII码值,在ASCII(字符表达式)函数中,纯数字的字符串可以不用单引号括起来,但是含有其他字符的字符串必须要用单引号括起来使用,否则会出错。(2)CHAR()函数:char(整型表达式)函数用于将ASCII码值转换为字符,参数介于0和255之间的整数,返回整数表示的ASCII码对应的字符。如果没有输入0和255之间的码值,则返回NULL(3)LTRIM(字符表达式)函数:把字符串头部的空格去掉(4)RTRIM(字符表达式)函数:把字符串尾部的空格去掉(5)len(字符表达式)函数:返回字符串表达式中的字符数(6)LEFT(字符表达式,整型表达式):返回字符表达式左起“整型表达式”个字符(7)RIGHT(字符表达式,整型表达式):返回字符表达式右起“整型表达式”个字符(8)Substring(字符表达式,开始位置,长度):返回从“字符表达式”左边第“开始位置”字符起“长度”个字符的部分。(9)RAND:随机函数,随机返回0和1之间的float数值(10)CAST(表达式as数据类型[(长度)]):将一种数据类型的表达式显式转换为另一种数据类型的表达式(11)CONVERT(数据类型[(长度)],表达式[,样式]):将一种数据类型的表达式显式转换为另一种数据类型的表达式,其中:长度:如果数据类型允许设置长度,则可以设置长度,如Varchar(5)样式:用于将日期类型数据转换为字符数据类型的日期格式的样式(12)GETDATE():以datetime的默认格式返回系统当前的日期和时间(13)DATEADD(时间间隔,数值表达式,日期):返回指定日期值加上一个数值表达式后的新日期。时间间隔项决定时间间隔的单位,可取year/month/week/weekday/hour/minute等。数值表达式为加上或者减去的时间间隔。(14)DATEDIFF(时间间隔,日期1,日期2):返回两个指定日期在时间间隔方面的不同之处,即日期2超过日期1的差距值,其结果是一个带有正负号的数值。插入数据:插入单行数据:使用insertinto()values()语句,这是最简单的Insert语句,例如上面提到过的向infor表中插入记录:insertintoinforvalues('301','张三','男','165','1995-1-1','13099873','139876572')insertintoinforvalues('302','李娜',’女’,'165','1995-2-1','13099874','1398765721')插入多行数据:在T-SQL语言中,有一种简单的插入多行数据的方法,这种方法使用select语句查询出的结果代替values子句。例如:创建一个学分表,然后把每位学生选修的课程所获得的学分输入到学分表中,代码如下。--创建学分表Createtable学分表(学号char(10)notnull,姓名varchar(10)notnull,选修课程数int,学分int)--插入数据Insert学分表Select学生.学号,姓名,count(选课.课程号),sum(学分)From学生,选课,课程Where学生.学号=选课.学号AND选课.课程号=课程.课程号Groupby学生.学号,姓名大批量插入数据:可以使用BULKINSERT语句按照用户指定的格式把大量数据插入到数据库的表中,这是批量加载数据的一种方式。FIELDTERMINATOR用于指定字段之间的分隔符,ROWTERMINATOR用于指定行之间的分隔符。例如:bulkinsertstudentsfrom'C:\Users\Administrator\Desktop\信管信息.txt'with(fieldterminator='\t',rowterminator='\n')select*fromstudents游标:游标是一种处理数据的方法,具有对结果集进行逐行处理的能力。使用游标可以实现的功能有:允许对SELECT返回的表中的每一行进行相同或者不同的操作,而不是一次对整个结果集进行同一种操作从表中的当前位置检索一行或多行数据游标允许应用程序提供对当前位置的数据经进行修改、删除的能力对于其他用户对结果集包含的数据所做的修改,支持不同的可见性级别提供脚本、存储过程和触发器中用于访问结果集中的数据的语句游标的使用步骤:声明游标打开游标读取数据关闭游标释放游标例如:declarekxcursorforselect*frominforkxopenkxfetchfromkxwhile@@fetch_status=0beginupdateinforkxsetkx=rand()*100+100wherecurrentofkxfetchfromkxendclosekxdeallocatekxselect*frominforkx视图和索引:视图是一种在一个或者多个表上观察数据的途径,可以把视图看作是一个能把焦点定在用户感兴趣的数据上的监视器。视图是一个虚拟表,是从数据库中一个或者多个表中导出来的表。视图已一经定义便存储在数据库中,但与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相应的基本表中的数据也会发生变化。同样的,如果基本表中的数据发生变化,则这种变化也可以自动反映到视图中。视图的创建、更新和删除:CreateviewinforAsSelectid,name,sexfrominfor2013UpdateinforSetname=’李莉’wherename=’张静’Select*frominfor2013Dropviewinfor注意:原表中的信息也会发生变化索引是数据库中的重要对象之一,它类似于图书的目录。索引用于快速找出在某个列中有某一特定值的行。索引允许数据库应用程序迅速找到表中特定的数据,而不用扫描表中的全部数据。在数据库中,使用索引可以提高数据的查询效率,减少查询数据的时间,改善数据的性能。索引的创建:Create(nonclustered/unique/clustered)indexindex1oninfor2013(id)存储过程和触发器:存储过程是事先编好的、存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。存储过程可以接收用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言和数据操作语言语句,然后返回输出参数。createprocedureproasbegindeclare@iint,@sintset@i=1set@s=0while@i=100beginset@s=@s+@iset@i=@i+1endprint@sprint'thisisaprocedure!'endexecutepro在SQLserver内部,触发器被看做是存储过程,它与存储过程所经历的处理过程类似,但是触发器没有输入和输出参数u,因而不能被显示调用。它作为语句的执行结果自动引发,而存储过程则是通过存储过程名称被直接调用。创建服务器范围的DDL触发器,创建数据库时,系统返回提示信息:“DATABASECREATED”。createtriggertrigger1onallserverforcreate_databaseasprint‘DATABASECREATED’时间过的很快,九周课程的数据库课程就要结束了,在这九周里面,我们学到的也许不仅仅只有表面看上去的一些专业知识,在我看来,也许更重要的是学到的一种专业素养和遇到问题时的思考方式,以及在李老师的指导下,我们对数据库知识应用的更深一层理解。在这个快速发展的大数据时代,我们每一个人都应该多掌握一些知识来更多的提升自己的能力,所以,虽然我们的课程结束了,但是我们的学习并没有结束,在以后的学习生活中,或许我们还要继续进行更深层的学习,在那个时候,我们应该会感谢现在这么努