《2022年实验三-数据库的查询和视图.docx》由会员分享,可在线阅读,更多相关《2022年实验三-数据库的查询和视图.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源试验三 数据库的查询和视图欢迎下载精品学习资源1、目的和要求T4.1 数据库的查询欢迎下载精品学习资源单击右键空白处,挑选执行,在下方会显现全部结果;1把握 SELECT语句的基本语法;2把握子查询的表示;3把握连接查询的表示;4把握 SELECT语句的 GROUP BY子句的作用和使用方法;5把握 SELECT语句的 ORDER BY子句的作用和使用方法; 2、试验预备1明白 SELECT语句的基本语法格式;2明白 SELECT语句的执行方法;3明白子查询的表示方法;4明白连接查询的表示;5明白 SELECT语句的 GROUP BY子句的作用和使用方法;6明白SELECT语句的
2、ORDER BY子句的作用;3、试验内容1SELECT语句的基本使用; 对于试验二给出的数据库表结构,查询每个雇员的全部数据;新建一个查询,在“查询分析器”窗口中输入如下语句并执行;【摸索与练习】用 SELECT语句查询 Departments 表和 Salary 表中全部信息;欢迎下载精品学习资源新建一个查询,在“查询分析器”窗口中输入如下语句并执行;单击右键空白处,挑选执行,在下方会显现全部结果;在“消息”中会发觉总共有60 行受影响; 用 SECECT语句查询 Employees 表中每个雇员的地址和号码;新建一个查询,在“查询分析器”窗口中输入如下代码并执行;单击右键空白处,挑选执行,
3、在下方会显现全部结果;在“消息”中会发觉有12 行记录受影响【摸索与练习】A、用 SELECT语句查询 Departments 表和 Salary 表的一列或假设干行;欢迎下载精品学习资源利用 SELECT语句查询 Departments 表和 Salary 表中 EmployeeID 为 000001 的记录,在“查询分析器”中输入以下代码;执行后在下方会显现全部EmployeeID=000001 的记录B、查询 Employees 表中部门号和性别,要求使用 DISTINCT排除重复行;对表只挑选某些行时,可能会显现重复行;此时就需要使用DISTINCT 关键字排除结果中的重复行;此时使用
4、DISTINCT排除在 Employees 中查询到的部门号和性别的重复行,具体代码如下;上面代码分别是使用了DISTINCT和没有使用 DISTINCT关键字,下面就是两种的结果的比照;可以从上面的执行结果中看出访用了DISTINCT关键字,结果集中的重复行就被排除了;欢迎下载精品学习资源 查询 EmployeeID 为 000001 的雇员的地址和;鼠标右键单击在弹出的菜单窗口中挑选“执行”,结果中只会显现一行记录, EmployeeID为 000001 的雇员的地址和;【摸索与练习】A、查询月收入高于2000 元的职工号码;只需要查询职工号码,条件为月收入高于T-SQL命令在表 Sala
5、ry 表中查询月收入高于2000 元职工,那么至于要2000 元的职工代码如下;Salary 表就行;用在结果栏中显示 9 行受影响 ,说明月收入高于2000 的职工共有 9 人,如上截图所示,将全部月收入高于2000 的职工的职工号码输出;B、查询 1970 年以后诞生的职工的和地址;通过分析职工信息,跟职工年龄、地址相关的只有表Employees 表,所以只需要在一张表中查询即可,具体T-SQL查询命令如下;在结果栏中消息显示 7 行受影响 ,说明 1970 年以后诞生有 7 人,如上截图所示,将部分 1970 年以后诞生职工、地址输出显示;C、查询全部财务部的职工的号码和;通过分析的,需
6、要知道财务部与职工的号码和,财务部只存在于Departments 表中,职工和号码只存在于Employees 表中;因此需要在表Departments 表和 Employees 表中进行查欢迎下载精品学习资源询;利用 T-SQL命令查询代码如下;在结果栏中显示 3 行受影响,从上面截图中可以看出全部财务部职工有3 人,并且查询显示其、号码; 查询 Employees 表中女雇员的地址和,使用 AS 子句将结果中各列的标题分别指定为地址、;从上面结果的截图发觉Address 变为地址, PhoneNumber 变为;【摸索与练习】查询 Employees 表中男职工的和诞生日期,要求各列标题用中
7、文表示;通过分析此查询属于单表查询,只需要用到Employees 表,使用 AS 子句就能够使结果集中各列标题用中文显示;利用T-SQL命令查询代码如下;从上面结果的截图发觉各列标题都是中文;从消息中显示9 行受影响 说明,职工中男性有 9 人,并且全部男性的和诞生日期都已经查询显示出; 查询 Employees 表中职工的和性别,要求Sex值为 1 时显示为“男” ,为 0 时显示为“女”;欢迎下载精品学习资源【摸索与练习】查询 Employees 职工的、住址和收入水平, 2000 元以下显示为低收入, 20003000 元显示为中等收入, 3000 元以上显示高收入;执行上面截图中代码,
8、在结果栏中显现职工的,住址和收入水平;消息中显示影响, Employees 表中全部职工信息都已经查询输出;12 行受 运算每个雇员的实际收入;经过分析需要职工的收入以及职工号码和职工,就需要在进行查询;利用 T-SQL命令查询如下;Employees 表和 Salary 表中结果栏中就会显示EmployeeID, Name,实际收入这三项;经过分析需要查询职工的、住址和收入水平,需要在 Employees 表和 Salary 表中进行查询,并且将 Salary 表中职工的 InCome 进行分类需要用到 AS子句;利用 T-SQL命令进行多表查询语句如下;留意:在上面 T-SQL命令中 Em
9、ployeeID 假如不指明为哪个表中的EmployeeID,代码就会报错“ EmployeeID 不明确”,改为或者都行;欢迎下载精品学习资源【摸索与练习】使用 SELECT语句进行简洁的运算;在这里我将使用 SELECT语句运算出 Employees 表中工龄三年以上的人数,并且查询职工号码,工龄; 获得职工总数;经分析得需要得到职工总数,只需要在Employees 表内使用内置函数COUNT就行;利用 T-SQL命令执行操作如下;【摸索与练习】A、 运算 Salary 表中职工月收入的平均数;B、 获得 Employees 表中最大的职工号码;C、 运算 Salary 表中全部职工的总支
10、出;D、 查询财务部雇员的最高和最低实际收入;经过分析需要查询财务部雇员的最高和最低实际收入,涉及到Employees 表、Departments 表和 Salary 表,需要在三张表中进行查询;第一确定 DepartmentName为“财务部”的 DepartmentID ;其次在 Employees 表中确定 DepartmentID 为财务部的雇员的EmployeeID;最终在 Salary 表中通过 EmployeeID 查询财务部雇员的InCome 和 OutCome,在最终的输出时候用 InCome-OutCome 的结果为实际收入;欢迎下载精品学习资源执行后在结果栏中看到财务部雇
11、员的最高实际收入和最低实际收入; 找出全部姓王的雇员的部门号;【摸索与练习】A、 找出全部地址中含有“中山”的雇员的号码及部门号;留意: %代表着任意长度的字符串长度可以为0,“ %中山 %”表示“中山”前面和后面都能够有任意长度字符串,用来表示地址中含有“中山”二字;B、 查找职工号码中倒数第2 个数字为 0 的职工的、地址和学历;欢迎下载精品学习资源留意:数字占单个字符,所以通配符“_”只有一个, “ %0_”表示倒数其次位为0; 找出全部收入在 20003000 元的职工号码;【摸索与练习】找出全部在部门“1”或“ 2”工作的雇员的号码;10 使用 INTO 子句,由表 Salary 创
12、建“收入在 1500 元以上的职工”表,包括编号和收入;在左边对象资源治理器的YGGL数据库的表中刷新,会发觉多了表“收入在上的职工”;【摸索与练习】1500 元以使用 INTO 子句,由表 Employees 创建“男职工”表,包括编号和;2子查询的使用; 查找在财务部工作的雇员的情形;查询财务部工作的雇员情形,需要用到Department 表和 Employees 表进行多表查询;第一,在 Department 表中查询 DepartmentName为“财务部”的 DepartmentID ;然后,将 DepartmentID 拿到表 Employees 表中查询全部 Department
13、ID 为财务部的雇员的全部信息;利用 T-SQL命令查询代码如下;欢迎下载精品学习资源在结果栏中显示全部工作部门为“财务部”的雇员的具体信息;【摸索与练习】用子查询的方法查找全部收入在2500 元以下的雇员的情形;进分析需要用到工资表Salary 和职工信息表 Employees 进行查询;第一,在表 Salary 中查询 InComeall ”查询到的是“李丽” ,年龄小于全部研发部的,全部书本上源码表示的是“财务部雇员年龄不大于研发部雇员年龄”与题目中“不低于”冲突;所以书上源码有误,将源码改成上面截图中第12 行即可;【摸索与练习】用子查询的方法查找研发部比全部财务部雇员收入都高的雇员的
14、;分析:第一在 Employees 表里找到 EmployeeName 为“研发部”的雇员的和查找雇员的 EmployeeID,其次这样的 EmployeeID 仍需要满意 InCome 大于全部的 DepartmentName 为“财务部 ”的雇员的 InCome,满意条件返回 True,select 到满意这样条件的雇员的Name,否就返回 FALSE;Where 子查询中嵌套使用;执行 T-SQL命令后在结果栏中显示只有1 人满意;3连接查询的使用; 查询每个雇员的情形及其薪水情形;欢迎下载精品学习资源执行之后,将 Employees 表和 Salary 表中全部职工的基本情形进行输出;
15、不足之处就是 EmployeeID 这一列有重复;【摸索与练习】查询每个雇员的情形及其工作部门的情形;执行后将每个雇员的基本情形、工资情形、工作部门情形输出; 使用内连接的方法查询名字为“王林”的职工的所在部门;【摸索与练习】A、 使用内连接方法查找出不在财务部工作的全部职工信息;内连接是指定了关键字INNER的连接,内连接依据ON 所指定的连接条件合并两个表,返回满意条件的行;此处INNER关键字能够省略;查找全部不在财务部工作的职工的信息,就需要使用职工基本信息表Employees 和部门信息表 Department 进行查询; T-SQL命令语句如下;执行结果包含表 Employees
16、和表 Department 的全部字段,不去除重复字段DepartmentID ;欢迎下载精品学习资源B、 使用外连接方法查找出全部职工的月收入;外连接为指定了关键字OUTER关键字的连接,外连接包括以下三种连接;左外连接 LEFT OUTER JOIN:结果表中除了包括满意连接条件的行外,仍包括左表的全部行;右外连接 RIGHT OUTER JOIN:结果表中除了包括满意连接条件的行外,仍包括右表的全部行;完全外连接 FULL OUTER JOIN:结果表中除了包括满意连接条件的行外,仍包括两个表的全部行;在这里将表 Employees 和表 Salary 做右连接查询,结果表中除了包括连接
17、条件外,仍将包括右表 Salary 表中的全部行InCome 和 OutCome;执行代码结果如下; 查找财务部收入在2000 元以上的雇员及其薪水情形;分析得需要财务部收入2000 元以上雇员和薪水情形,涉及雇员基本信息的Employees 表、部门信息Department 表和薪水信息 Salary 表;此时就用到 where 语句里面多表查询将三张表做自然连接;执行上面截图中代码,在下面结果栏中显示财务部工资在2000 元以上的雇员的和薪水欢迎下载精品学习资源情形;【摸索与练习】查询研发部在1976 年以前诞生的雇员及其薪水情形;将三张表做自然连接后查询满意条件的雇员的、收入和支出;4聚
18、合函数的使用 求财务部雇员的平均收入;新建一个查询,在“查询分析器”窗口中输入如下语句并执行;执行截图中代码,结果栏中显示才而不平均收入;欢迎下载精品学习资源【摸索与练习】查询财务部雇员的最高收入和最低收入;查询最高和最低收入,将用到聚合函数表中的MAX求最大值和 MIN 求最小值;执行上面截图中 T-SQL命令,在结果栏中显示财务部雇员最高收入和最低收入; 求财务部雇员的平均实际收入;新建一个查询,在“查询分析器”窗口中输入如下语句并执行;执行上面截图中的T-SQL命令,在结果栏中显示财务部雇员平均实际收入;欢迎下载精品学习资源【摸索与练习】查询财务部雇员的最高和最低实际收入;需要财务部实际
19、收入需要用表Salary中的 InCome 字段和 OutCome字段;其次用到聚合函数 MAX和 MIN;最终在用 where 子查询找到 DepartmentName 为“财务部”的雇员的EmployeeID ;执行上面截图中的T-SQL命令,在结果栏中显示财务部雇员最高和最低实际收入;5GROUP B、Y ORDER BY子句的使用; 查找 Employees 表中男性和女性人数;【摸索与练习】A、按部门列出在该部门工作的职工的人数;B、按职工的学历分组,排列出本科、大专和硕士的人数;欢迎下载精品学习资源查找职工数超过2 的部门名称和职工数量;执行上面截图中代码,在结果栏中显示职工数超过
20、2 的部门名称以及人数;【摸索与练习】依据职工的工作年份分组,统计各个工作年份的人数,例如,工作1 年的多少人,工作 2 年的多少人 ;分析只需要 Employees 表就能够完成,通过GROUP BY对 WorkYear 进行分组,并统各个年份的人数; 将各个雇员的情形按收入由低到高排列;新建一个查询,在“查询分析器”窗口中输入如下语句并执行;欢迎下载精品学习资源需要对雇员的收入情形进行排序,就需要使用到谓词ORDER B,Y 谓词 ORDER BY后面能够接多个排序的变量名,第一个变量为主序,下面依次类推;每一个排序列名后面可用限定词 ASC升序或者 DESC降序声明排序的方式,缺省为升序
21、假如不接限定词系统默认的为 ASC升序;下面为执行上面截图中T-SQL 命令,在结果栏中显示的查询结果;可以观看雇员的基本信息是依据InCome 升序排列由低到高 ;【摸索与练习】A、将职工信息依据诞生时间从小到大排列;执行上面截图中的T-SQL命令,在下面结果栏中显示雇员信息依据诞生日期从小到大排列;C、在 ODER BY子句中使用子查询,查询职工,性别和工龄信息,要求依据实际收入从大到小排序;经分析将表 Employees 和表 Salary依据 EmployeeID 相同做自然连接,其次依据实际收入 InCome-OutCome进行 ORDER BY排序;最终,由于是依据实际收入InCo
22、me-OutCome从大到小进行排序,那么接在ORDERBY后面的谓词就需要换成DESC;依据上面截图中 T-SQL 命令,在结果栏中显示依据实际收入进行排序输出雇员的,性别和工龄信息;欢迎下载精品学习资源T4.1视图的使用1、目的和要求1熟识视图的概念和作用;2把握视图的创建方法;3把握如何查询和修改视图;2、试验预备1明白视图的概念2明白创建视图的方法;3明白并把握对视图的操作;3、试验内容1创建视图; 创建 YGGL数据库上的视图 DS_VIEW,视图包含 Departments 表的全部列;新建“查询分析器”窗口,在其中输入以上T-SQL命令,点击执行按钮;在YGGL数据库的视图中进行
23、刷新,就会显示创建的DS_VIEW视图,如下所示; 创建 YGGL数据库上的视图 Employees_view ,视图包含职工号码、和实际收入3 列;使用如下 T-SQL命令进行操作;执行上面截图中代码,在YGGL数据库的视图中进行刷新,显示视图欢迎下载精品学习资源Employees_view,如下所示;【摸索与练习】A、在创建视图时 SELECT有哪些限制?用来创建视图的 SELECT语句,可在 SELECT语句中查询多个表或者视图,以说明新创的视图所参照的表或视图;B、在创建视图时有哪些留意点?只有在当前数据库中才能够创建视图;视图的命名必需遵循标识符命名规章,不能够与表同名;不能够把规章
24、、默认值或触发器与视图相关联;C、创建视图,包含职工号码、 、所在部门名称和实际收入这几列;在数据库 YGGL的视图中刷新,会显示刚刚创建的视图工部门名称和实际收入这几列;结果如以下图所示;test_view ,包含职工号码、 、职2查询视图 从视图 DS_VIEW中查询部门号为3 的部门名称;注:在上面代码下是显示错误,但是代码规律都正确,而且也能够正确执行,并且输出正确的结果; 不知道是什么缘由欢迎下载精品学习资源 从视图 Employees_view 中查询为“王林”的职工的实际收入;【摸索与练习】A、假设视图关联了某表中的全部字段,而此时该表中添加了新的字段,视图中能否查询到该字段?第
25、一建立视图 Employees_view 并且关联表 Employees 中的全部字段;然后在表 Employees 中插入一行新的数据;最终在“查询分析器”中查询EmployeeID 等于“ 000000 ”的雇员的全部信息;从上面的 T-SQL命令可以看出,当视图关联的表中添加新的字段时,视图中是无法查询到该字段的,必需重新创建视图才能够查询到新添加的字段;B、自己创建一个视图,并查询视图中的字段;利用 T-SQL命令创建一个视图Employees_view,该视图包含雇员EmployeeID、Name和 RealInCome实际收入 ,并且查询该视图中为“王林”的雇员的基本情形;具体T-
26、SQL命令代码如下;欢迎下载精品学习资源查询该视图中为“王林”的雇员的基本情形;3更新视图;在更新视图前需要明白可更新视图的概念,明白什么视图时不行以进行修改的;更新视图真正更新的是和视图关联额表; 向 DS_VIEW中插入一行数据“6,广告部,广告业务” ;当在“查询分析器”中输入上面代码时,会显现这样的错误;规章已经和 Departments ;DepartmentID 绑定,只需要解除绑定就行了;那么就将前面的 T-SQL修改为这样就行了;当再次执行时就会发觉,Departments.DepartmentID已经没有了规章,也就说明第一次执行时规章已经解除绑定;同样当再次执行时会出字段字
27、段已经显现,不能够重复输入primary key 相同的记录;连续在视图中刷新重新打开“编辑前200 行”就会发觉字段已经插入;欢迎下载精品学习资源 修改视图 DS_VIEW,将部门号为5 的部门名称修改为“生产车间” ;执行上面的 T-SQL命令,将更新数据之前和之后的DS_VIEW表进行对比,发觉数据已经胜利更新,说明T-SQL命令执行胜利; DepartmentID 为 5 的 DepartmentName 已经更新为“生产车间” ;执行完该命令后,使用select 语句分别查看视图DS_VIEW和和基本表 Departments 中发生的变化;基本表 Departments 中的转变;
28、视图 DS_VIEW中发生的转变,见上面截图; 将视图 Employee_view 中的职工号为“ 000001”的职工的修改为“王浩”;执行上面的 T-SQL命令后,打开视图Employees_view ,可以看出 EmployeeID=000001 的雇员的 Name 已经修改为“王浩” ; 修改视图 DS_VIEW 中部门号为“ 1”的一行数据;欢迎下载精品学习资源【摸索与练习】视图 Employees_view 中无法插入和删除数据,其中的RealInCome 字段也无法修改, 为什么?要通过视图更新插入、修改和删除基本数据,必需保证视图为可更新视图,只有满意一下条件的视图才是可更新视
29、图;欢迎下载精品学习资源A、创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUP B、Y DISTINCT 关键字;B、创建视图的SELECT语句不包含从基本表列通过运算得到的列;C、创建视图的SELECT语句的 FROM子句中至少要包含一个基本表;UNION子句及欢迎下载精品学习资源视图 Employees_view的 SELECT语句中的 RealInCome 是通过 InCome-OutCome运算得来的,所以 Employees_view是不行更新的视图,所以也无法向其中修改数据,同样其中的RealInCome 字段也是不行修改的;4删除视图;删除视图 DS_VIEW;执
30、行上面 T-SQL命令,刷新对象资源治理器中视图,已经没有视图DS_VIEW;5在界面工具中操作视图; 创建视图:启动 SQL Server Management Studio,在对象资源治理器中绽开“数据库-YGGL”,挑选其中的“视图”项,右击鼠标,在弹出的快捷菜单上挑选“新建视图”菜单项;在随后显现的“添加表”窗口中,添加所需关联的基本表;在视图窗口的关系图窗口显示了基本表的全部信息;依据所需在窗口中挑选创建视图所需的字段;完成后单击“储存”按钮; 查询视图:新建一个查询,输入T-SQL查询命令即可像查询基本表一样查询视图;在视图 Departments_view中查询 Departme
31、ntID= 3的 DepartmentName ;Departments_view 已经由上面中创建;欢迎下载精品学习资源 删除视图:绽开 YGGL数据库“视图” ,挑选要删除的视图,右击挑选“删除”选项,确认即可;在这里,将中新建的视图Departments_view删除;【摸索与练习】总结视图与基本表的差异;视图是从一个表或者多个表或视图导出来的表;视图与表不同,视图是一个虚 表,视图所对应的数据不进行实际的储备,数据库中只储备视图的定义;本质上视图是以T-SQL命令的形式存在的,当用户使用视图时,系统依据视图的定义再去调用基本表中的数据,呈现给用户的是依据视图的定义执行出来的需要的结果;4、试验总结;由于本次试验有数据库的查询和视图的使用两个部分,所花费的时间比较多,仔细将每一行代码敲进去,仔细分析,解决好每一个问题;完成这些后,自己收成仍是许多的, 中间也显现过许多问题,上网搜寻也大致能够解决,当自己实践走在前面,同学遇到的问题我也基本遇到过,能够帮同学解决,再一次加强自己对学问,对技能的娴熟程度;总得来讲,值得!最终做完了这个试验;欢迎下载
限制150内