实验名称:数据库表的基本操作与表内数据操作
实验目的:
实验意义:
实验内容:
实验步骤:
在对象资源管理器内选择需要操作的数据库,右击表文件,选择新建表。
接下来设置表内结构,设计表的列名与列的数据类型,并设计其是否能为空值。
设置前需要先了解主要的字符类型与其存储空间如下。
基于nchar为双字节类型,更适合于亚洲字体的存放,因此将列名为中文字符的均采用nchar数据类型,括号内的数字即设置最大存放多少个中文字符。
注意:TNO与TN为教师名称和教师号,这两列数据不能为空值,可作为候选键。
接下来对设计完毕的数据库表进行保存操作,并设置名称。
最后可对设置完毕的数据库表进行查看。
在对象资源管理器内可以查看到列信息,各列的列名称与数据类型。
接下来再采用交互式方法创建学生表S如下
采用T-SQL语句创建课程表C,需要再对象资源管理器上方选择该语句执行的数据库区域为WJN。
刷新之后可以看到数据库WJN内存在三个所创建的表格
再采用同样的方法创建学生选课表SC表
T-SQL语句创建老师授课表TC表
接下来是对表的设计操作,通过右击表,选择设计,可以修改表的结构
接下来是对S表的NATIVE列属性修改,将其改为char(40),并且设置其为不允许为空值
选择保存,但是弹出来警告语句,显示无法保存,需要在工具中进行设置
找到Designers,打开后,取消勾选“组织保存要求重新创建表的更改”
再次保存之后,即可成功修改表S
接下来再次修改NATIVE内数据类型,修改数据类型长度为16,并且允许有空值
右击数据库表,选择设计,然后选中某列然后右击,选中删除列,即可把改列删除。
采用T-SQL语句增加列NATIVE,并设置其列属性
在对象资源管理器中刷新之后可以看到表S中列已经存在,并且属性信息也可以看出
T-SQL语句修改列NATIVE属性信息如下:
修改完成后再次在对象资源管理器中刷新后可以看出属性信息已经变化
对表整体的删除操作
右击表TC,选中删除,并在弹出的界面点击确定
在对象资源管理器中刷新后可以看出表TC已经不存在
采用T-SQL语句对TC表进行删除操作
其中删除语句前加上语句USE WJN GO,通过该语句设置了T-SQL查询语句的空间。
设置待录入数据在EXCEL表格中,自定义录入数据如下表
在数据库中右击选中任务,并点击导入数据
设置导入数据的数据源为Microsoft Excel
在电脑文件夹中选择待导入的表格文件
点击下一步操作
但弹出消息为无法导入,原因是该版本为SQL 2008 R2,只支持
Microsoft Excel格式为.xls格式的表格文件,因此无法导入.xlsx格式文件
接下来对原始excel表格文件进行修改,将格式另存为.xls后缀
再次执行导入数据步骤,点击下一步发现可以顺利执行该过程
查看数据库为默认的WJN数据库,因此继续执行下一步操作
选择复制一个或多个表或视图的数据,点击下一步
接下来可以选择设置直接导入输出目标的表,也可以编辑映射,通过源数据直接导出到新建的表中,下图先展示编辑映射的方法建立新表格
对照原始S表中属性信息,在对新的Sheet$表中设置相同的属性信息,点击编辑,采用T-SQL语句对属性信息进行设置
对应修改完成后如下图所示,不仅修改字符类型,长度,且修改了是否可以为空值选项
之后点击预览
可以对比初始excel表格,发现数据无缺失、错误,点击确定
点击下一步继续执行,立即运行
点击完成
最后显示执行成功
可以单击右下角的“报告”,点击“查看报告”
可以看出均运行成功
最后在SQL中对该表右击,选中“查看前一千行”进行查看信息,可以看出与初始待导入的excel表完全相同。
再回到刚才提到的导入数据映射的步骤,接下来是直接导出到目标表S内,可以不用编辑映射,因为S表已经存在各列极其属性信息,单击下一步
无视这些警告,继续点击下一步执行
接下来显示执行成功,关闭该界面
在对象资源管理器内右击表S,选择查看前一千行
可以看出该表与excel表相同,正常运行
采用同上的方法,继续导入其他表格如下
由于T表已经在我们之前删除操作中被删除,因此选用编辑映射的方法,直接由excel表格导入生成规定新建格式的新表,命名为T
执行后,可以看出执行成功
查看信息,可以看出顺利生成了T表
接下来是利用T-SQL语句对表格单行或批量多行导入信息的操作
采用INSERT INTO C VALUES可以进行插入单行数据,如下图
接下来是批量插入多行数据,需要在表后添加表的列名信息,各行信息用逗号隔开
该语句执行后即可批量插入多行信息。
先进行交互式修改数据,右击表S,点击编辑前200行
将王小明的DEPT信息由“计算机”改为“地信”
刷新后即可看到表内信息发生改动
接下来是采用T-SQL语句将教师“刘雪”职称改为副教授
下图可看出教师刘雪修改前的信息
运行该T-SQL语句,修改表T信息
可以看出职称信息已经成功被修改
交互式删除表S的某行信息,右击表S,选择编辑前两百行
右击张鹏,点击删除
刷新后,查看表内信息,可以看出张鹏的信息已经成功被删除
采用T-SQL语句删除教师表内刘雪老师信息
刷新后,查看表内信息,可以看出刘雪的信息已经成功被删除
采用T-SQL语句将表S复制到新表TEST1内
运行成功后,刷新可以看出该表已存在
查看该表信息,与原表信息相同
将T表中性别为‘男’提取教师名称,性别,年龄与职称至新表TEST2中
展示提取前T表内的为性别为男的信息如下
可以看出将教师刘帅提取复制到新表内,并获得了想要的属性信息
习题3题目如下:
选做题目为1,2,4,5,6
首先采用交互式方法将数据导入至SC表内
先在excel中将前五行数据存储为.xls格式
接下来在数据库WJN中选择导入数据
设置目标数据库表为SC表
继续进行下一步
显示执行成功
最后在SQL内查看SC表信息,对照原始数据,信息无误
接下来是利用T-SQL语句批量插入表后五行数据如下
最后对表SC进行查看,得到最终的全表信息
用T-SQL语句对S表中计算机系的全体学生岁数增加一岁
对比结果,左图为增加岁数前,右图为增加岁数后:
提取数据库表SC中分数小于60分成绩的到新表makeup_s中,T-SQL语句如下图
查看生成的makeup_s表,可以看出并未提取出表信息,因为原表中所有成绩均大于60分
再删除成绩小于20分的代码如下
结果仍为空表
以下进行举例实现该过程:
先利用T-SQL语句内插入与之前数据一样的几行数据,得到多行重复数据表格
运行完成后,查看SC表,可以看出出现了多行重复数据,因此我们需要进行去除重复的数据,只保留非重复数据
新建PD作为区分,按照PD特有标识进行分组举例实现
一.删除完全重复数据:在新建查询内将该数据库表进行编号,再按相同行进行分组,分组完成后对每组不是最小的数进行删除
再对原始表进行ID去除
运行之后即得到我们最初始想要的10行的结果
二.删除部分重复数据:在新建查询内将该数据库表进行编号,再按相同行进行分组,每个分组中取最小的数生成到新的表中
对SC表中再加入一行重复数据进行举例模拟如下
代码执行如下:
结果仍然达到要求