实验三 数据库的查询和视图
实验三_ 查询与视图
实验三题目:查询与视图(实验时间:2012年4月10日)(一)实验目的1.通过本实验使学生掌握基本的SQL命令的使用方法。
主要包括:CREATE TABLE、SELECT、UPDATE、INSERT、DELETE等。
2.熟练掌握查询设计器的使用,掌握使用查询设计器设计查询的基本方法。
3.使学生熟练掌握查询向导的使用,掌握使用向导设计查询的基本方法。
4.熟练掌握视图设计器的使用,掌握使用视图设计器设计视图的基本方法。
(二)实验内容1、使用SQL命令进行数据表的建立、查询、修改和删除操作等;2、使用查询设计器建立查询;3、使用查询向导建立查询;4、使用视图设计器建立查询。
(三)实验步骤【上机操作4-1】在“sf_books”数据库中试用SQL命令建立表。
创建“图书.dbf”表文件,其表结构如表4-1所示。
在“sf_Books”数据库中创建一个名为“t_reader”的表,其表结构如表4-2所示。
表4-2 “t_reader”表在“sf_Books”数据库中创建一个名为“t_borrow”的表,其表结构如表4-3所示。
表4-3 “t_borrow”表操作步骤:在命令窗口中,顺序执行以下命令,则会建立三个数据表。
如图4-1所示。
CREA T TABLE t_book (图书ID C(5) PRIMARY KEY, 书名C(20), 作者C(6),;单价N (6,2) , 版次C(2), 出版日期D(8),备注M(4))CREA T TABLE t_reader (借书证号C(4) PRIMARY KEY,姓名C(10),性别C(2),;出生日期D(8) ,班级C(5),备注M(4))CREA T TABLE t_borrow (借书证号C(4), 图书ID C(5), 借书日期D(8) ,;还书日期D(8) , 标记C(2))图4-1 创建表【上机操作4-2】修改表结构,在t_book表中增加列“出版社C(20)”。
实验三 SQL复杂查询与视图
实验三 SQL复杂查询与视图一.实验目的:1.掌握SQL语言中SELECT语句的多种查询方式。
2.掌握对表建立与删除索引的方法。
3.掌握聚焦函数的使用方法。
4.掌握集合查询方法。
二.实验内容:2.多表查询①查询编号为300的客户通过的代理商的姓名和地址。
select 姓名地址from 代理商where 客户编号=”300”;②查询产品编号为0033、订货数量大于100的客户编号及其姓名。
Select 客户编号姓名From 客户Where 客户.产品编号=”0033”AND 客户.订货数量>100;③查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。
Select 客户编号客户名订单编号订货日期From 订单④查询所有2000年以后订货项目。
Select *From 订货项目Where 订货时间>2000⑤查询提成金额为100000以上(含100000)的代理商所对应的客户。
Select *From 代理商Where 提成金额=100000 or 提成金额>1000003、嵌套查询分别用带有IN谓词的子查询和带比较运算符的子查询实现以下操作①查询与“刘晨”在同一个系学习的学生。
Select sdept sno snameFrom studentWhere sdept in(‘cs’)②查询选修了课程名为“操作系统”的学生。
Select sno sname sdeptFrom csWhere sco in()4.建立视图①建立含有订单号及拥有该订单的客户编号和代理商号三个字段的视图。
②建立一个含有产品编号、产品库存量及产品在订量三个字段的视图。
③建立一个含有客户编号、客户所订的产品、该产品的订购价及该产品的描述四个字段的视图。
④建立一个含计算机科学系的学生及年龄不大于19岁的学生的视图。
⑤建立一个既选修了课程1又选修了课程2的学生视图。
5.在视图基础上的查询①查询所有订单的客户和代理商。
数据库实验三
数据库实验三《数据查询与操作》实验一、实验目的与要求1、掌握多表查询:嵌套查询的使用。
2、掌握INSERT、UPDATE和DELETE语句的一般格式与使用方法。
3、掌握视图的创建和删除、视图的NSERT、UPDATE和DELETE 的应用二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容实验前,先附加“教务管理系统”,在“教务管理系统”的数据库中进行一下查询:嵌套查询1、在“教务管理系统”数据库中,根据相关表的内容,查询平均成绩大于70的课程信息select课程名称from课程信息where课程编号in(select课程编号from选课表group by课程编号having avg(成绩)>70)2、从“教务管理系统”数据库中,查询人数超过45人所在班级中的学生的学号、姓名和班级名称。
select学号,姓名,b.班级编号,班级名称from学生信息x,班级信息bwhere x.班级编号= b.班级编号and x.班级编号in(select班级编号from班级信息where人数>45)3、在“教务管理系统”数据库中,查询学生姓名为“朱文娟”所在班级的学生信息,要求返回学生的学号、姓名、性别、班级编号、班级名称和年级信息select学号,姓名,性别,x.年级,b.班级编号,班级名称from学生信息x,班级信息bwhere x.班级编号= b.班级编号and x.班级编号=(select班级编号from学生信息where姓名='朱文娟')4、在“教务管理系统”数据库中,查询出所有非计算机系的学生信息,并显示出这些学生的考试成绩,再按成绩进行降序排列显示,要求返回学生的学号、姓名、班级编号、课程编号和成绩信息。
select学生信息.学号,姓名,班级编号,课程编号,成绩from学生信息left join选课表on学生信息.学号=选课表.学号where学生信息.班级编号<>(select班级编号from班级信息where班级名称 LIKE '计算机%')数据更新(一)添加教务信息1、在2003年级中创建一个新班级,编号为20031340000200、班级名称为“环境与科学”、班级人数为60、班主任为“张浩”。
数据库原理实验报告(数据查询)
数据库原理实验报告实验三数据查询班级:×××姓名:×××学号:×××数据查询一、[实验目的]1.掌握SQL的单表查询操作2.掌握SQL的连接查询操作3.掌握SQL的嵌套查询操作4.掌握SQL的集合查询操作二、[实验内容]本实验的主要内容是:1.简单查询操作。
包括投影、选择条件表达,数据排序,使用临时表等。
2.连接查询操作。
包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
4.组合查询与统计查询。
(1)分组查询实验。
该实验包括分组条件表达、选择组条件的表达方法。
(2)使用函数查询的实验。
该实验包括统计函数和分组统计函数的使用方法。
(3)组合查询实验。
(4)计算和分组计算查询的实验。
三、[实验方法]1.将查询需求用Transact-SQL语言表示。
2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。
3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。
4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。
5查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。
查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。
图5- 错误!未定义书签。
SQL Server 2000查询分析器查询分析器的界面如图5- 错误!未定义书签。
所示。
在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果。
实验三 数据库中的数据查询及视图操作实验报告
实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。
通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。
三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。
2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。
四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。
假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。
a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。
b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。
c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。
d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。
e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。
数据库管理系统数据查询与视图
4.1.1 创建查询
1.使用查询向导 使用查询向导可以快速、简捷地建立一个扩展 名为.qpr的查询文件。步骤:
⑴ 单击主菜单“文件”/→“新建”命令或工具栏上的 “新建”按钮→在“新建”对话框中选择“查询”, 单击“向导”→在“向导选取”对话框中选择“查询 向导”,单击“确定”按钮。 ⑵ “步骤1-字段选取”对话框:选取表中字段到选 定字段列表框中,单击“Next”。 ⑶ 如果选定字段只来自一个表或视图,直接进入“步 骤3-筛选记录”;如果选定的字段来自不同的表或 视图 ,则进入“步骤2-为表建立关系” 。
⑷ 在“查询设计器”中设置各选项卡:
“Fields”(字段)选项卡:指定查询所包含的字段或 表达式。 “Join”(联接)选项卡:建立、编辑或修改两个表 之间的连接关系 。 “Filter”(筛选)选项卡:设置记录的筛选条件。 “Order By”(排序依据)选项卡:设置排序字段和 排序方法。 “Group By”(分组依据)选项卡:设置分组字段。 “Miscellaneous”(杂项)选项卡:设置是否有重复 记录等。
4.2.4 参数化视图
参数化视图是一种通用视图,系统提供在运行 视图时传递参数值的功能,从而避免每查询一部分 记录就要单独创建一个视图 。
⑴ 在“视图设计器”的“Filter”(筛选依据)选项卡的 “Example”(实例)文本框中输入“?<参数>”。 ⑵ 对视图参数进一步定义:单击主菜单“视图参数”命 令,在“视图参数”对话框中定义参数名和类型。
2.使用“视图设计器” 打开数据库,用下面方法之一打开“视图设计 器”: 单击主菜单“文件”/“新建”命令,在“新建” 对话框中选择“视图”,单击“新建”按钮。 在“数据库设计器”窗口中,单击鼠标右键,快 捷菜单中选择“新建本地视图”命令,或单击主菜 单“数据库”下拉菜单中 “新建本地视图”命令, 打开“新建本地视图”对话框,单击“新建视图” 按钮。
数据库原理 实验三 数据查询、索引与视图
《数据库原理》实验报告
一、目的
1.掌握SELECT语句的基本语法;
2.掌握子查询的表示;
3.掌握连接查询的表示;
4.掌握SELECT语句的统计函数的作用和使用方法;
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
6.掌握使用创建、删除索引的基本方法
7.掌握视图的定义(创建和删除),查询,更新(注意更新的条件);
8.掌握索引分析与维护的常用方法。
二、实验使用环境:
WindowXP SP2 SQL Server 2005
三、实验内容与设计思想
根据自已所选的题目,完成对表的查询、统计、视图的创建。
1
2
3
4
5
6
7
8
9
10
11
12
13
14.1
14.2
四、出现问题及解决方案
1.函数名字不正确,大小写错误导致无效
2.标点符号在中文状态下打的,出现语法错误
五、实验小结
学会了建立视图,视图加密,更新的方法,创建索引,为一个表创建聚集索引和非聚集索引。
这次实验对sql基本的语法进一步的巩固了解,主要学到了SELECT语句的基本用法,子查询、连接查询的使用方法,还有select语句中group by、order by、compute等字句的用法,以及基本的SQL函数。
实验三:数据查询与视图实验
实验三:数据查询与视图实验实验目的:理解和掌握多表查询、嵌套子查询,理解和掌握视图的定义及其应用。
实验内容:1、在MySQL中建立一个名为studentsys的数据库;2、在studentsys中建立以下三个关系模式:学生表:Student(Sno,Sname,Ssex,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)具体要求如下:表1 学生表(Student)字段名数据类型是否允许空值主码/外码备注Sno char(11) 否主码学号Sname char(50) 否姓名Ssex char(1) 是性别Sage int 是年龄Sdept char(50) 是院系表2 课程表(Course)字段名数据类型是否允许空值主码/外码备注Cno char(11) 否主码课程号Cname char(50) 否课程名外码,参照Cpno char(11) 是先修课程Course表的Cno Ccredit double 是学分表3 选课表(SC)字段名数据类型是否允许空值主码/外码备注主码,外码Sno char(11) 否学号参照Student表的Sno主码,外码Cno char(11) 否课程号参照Course表的Cno Grade double 是分数3、在Student表中添加以下数据:Sno Sname Ssex Sage Sdept 201215121 李勇男20 CS201215122 刘晨女19 CS201215123 王敏女18 MA201215125 张立男19 IS4、在Course表中添加以下数据:Cno Cname Cpno Ccredit1 数据库 42 数学 23 信息系统 1 45、在SC表中添加以下数据:Sno Cno Grade201215121 1 92201215121 2 85201215121 3 88201215122 2 90201215122 3 807、执行以下查询:(1) 查询选修2号课程且成绩在85分以上的所有学生的学号和姓名。
数据库的查询和视图
4.替换查询结果中的数据
在对表进行查询时,有时希望对所查询的某些列得到的是一种概念而不是具 体的数据。 例如,查询XSB表的总学分,希望知道的是学习的总体情况,这时,就可以用 等级来替换总学分的具体数字。 要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为 CASE WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 …… ELSE 表达式 END
T1 T2 T1 T2 T1 T2
1
A
6
F
2
B
表4.5 B表
T3 1 T4 3 T5 M T3 2 T4 0 T5 N
表4.6 A B F
T1
1 2
T2
A B
T3
1 2
T4
3 0
T5
M NBiblioteka 数据库应用中最常用的是“自然连接”。进行自然连接运算要求两个表有共同 属性(列),自然连接运算的结果表是在参与操作的两个表的共同属性上进行等值 连接后,再去除重复的属性后所得的新表。自然连接运算记为 ,其中,R和S是参与 运算的两个表。 例如,若表A和B分别如表4.7和表4.8所示,则 如表4.9所示。 表4.7 A表
实验三 多表查询、数据更新、视图
实验名称:多表查询、数据更新、视图、实验性质:验证性、成1、掌握Select语句的基本语法;
2、掌握连接查询的表示和使用方法;
3、掌握子查询的表示和使用方法;
4、掌握对数据表的更新语法;
5、掌握视图的创建、查询和修改方法;
二、实验准备
1、理解Select语句的基本语法格式和执行方法;
(7)删除计算机系学生视图中学号为200215121的记录,并查看Student表的变化,说明是为什么。
四
、
实
验
过
程
实验过程、存在的问题及解决办法:
1.(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
2.(1)
(2)
(3)
(4)
(5)
(6)
3.(1)
(2)
(3)
(4)
(5)
(6)
(7)
(2)建立计算机系选修了’3’号课程且成绩在90分以下的学生视图,并对此视图进行查询。
(3)将学生的学号,姓名和平均成绩定义为一个视图。
(4)利用所建立的视图,查询选修了2号课程的计算机系的学生。
(5)将计算机系学生视图中学号为200215122的学生姓名改为“刘留”。
(6)向计算机系学生视图中插入一条新的学生记录,其中学号为200215126,姓名为李三,年龄为20岁,院系为IS,并分析下执行结果。
(4)删除姓名为张立的学生记录。
(5)添加学生记录,姓名为张立,学号为200215125,性别为男,年龄19,院系为信息系。
(6)使用SQL增加一条记录到course表中,增加的记录内容如下:
(’9’,’数据挖掘’,’1’,5)
数据库的查询与视图
数据库的查询与视图T4.1 数据库的查询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语句的ORDER BY 子句的作用。
3.实验内容(1)SELECT语句的基本使用。
1.对于实验2给出的数据表结构,查询每个雇员的所有数据。
2.用select语句查询Employees表中每个雇员的地址和电话。
3.查询EmployeeID为000001的雇员的地址和电话。
4.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话。
5.查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。
6.计算每个雇员的实际收入。
7.获得员工总数8.找出所有姓王的雇员的部门号。
9找出所有收入在2000~3000元之间的员工号码。
10.使用INITO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。
(2)子查询的使用。
1.查找在财务部工作的雇员的情况。
2.查找财务部年龄不低于研发部雇员年龄的雇员的姓名。
3.查找比所有财务部的雇员收入都高的雇员的姓名。
(3)连接查询的使用。
1.查询每个雇员的情况及其薪水的情况。
2. 使用内连接的方法查询名字为“王林”的员工所在的部门。
3.查询财务部收入在2000元以上的雇员姓名及其薪水详情。
(4)聚合函数的使用。
1.求财务部雇员的平均收入。
2.求财务部雇员的平均实际收入。
3.求财务部雇员的总人数(5)GROUP BY 、ORDER BY子句的使用。
数据库实验3-SQL语言之数据查询(简单查询)
实验三SQL数据查询(简单查询)姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:【实验目的与要求】1、熟练掌握SELECT 语句的基本语法格式;2、熟练掌握使用SQL语句进行单表查询,掌握GROUP BY子句、HA VING 子句和集函数;3、熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。
【实验内容】3.0. 实验准备与说明本实验将用到实验二中数据库SalesDB和相应的表及数据,若该数据库及表尚未创建,或数据尚未录入,则请先完成之。
请根据前面实验创建的表结构和数据,完成如下查询。
本实验及后面实验中所用测试数据库中表的字段及含义如下表:表-1 测试数据库表的字段及含义3.1.简单查询(1).查询各种产品的产品编号、产品名称和价格。
请给出相应语句:USE SalesDB;SELECT Pno,Pname,Price FROM Product;请给出运行结果:(2).查询所在城市为“厦门”的客户编号和客户名称,结果中各列的标题分别指定为:“客户编号”和“客户名称”显示。
请给出相应语句:SELECT Cno as客户编号,Cname as客户名称FROM Customer WHERE City='厦门';请给出运行结果:(3).查询各产品编号、名称、库存量和产品总值。
(总值:价格与库存数量的积)请给出相应语句:SELECT Pno,Pname,Price ,Stocks FROM Product;SELECT SUM(Price*Stocks)as产品总值FROM Product;请给出运行结果:(4).查询曾购买过产品的客户编号(不重复)。
请给出相应语句:SELECT Cno FROM Customer;请给出运行结果:(5).查询价格在1000-2000的产品信息,并依价格由低到高的顺序排序。
(请使用Between…and和算术比较运算符分别实现)a.使用Between…and比较实现:请给出相应语句:use SalesDB;select*from Productwhere Price between 1000 and 2000order by Price;请给出运行结果:b.使用算术比较实现:请给出相应语句:use SalesDB;select*from Productwhere Price >= 1000 and Price<=2000order by Price;请给出运行结果:(6).查询产品名称含有“热水器”的产品信息。
实验3 数据库的查询和视图
实验3 数据库的查询和视图T4.1 数据库的查询1.目的和要求(1)掌握SELECT语句基本用法(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握SELECT语句的GROUP BY子句的作用和使用方法(5)掌握SELECT语句的ORDER BY子句的作用和使用方法2.实验内容(1)SELECT语句的基本使用1)对于实验2给出的数据库表结构,查询说有雇员的每个数据。
【思考与练习】用SELECT查询Emmployees和Salary中所有数据2)用SELECT语句查询Employees每个员工的地址和电话A.用SELECT语句查询Employees和Salary中的一列或若干列B.查询Employees中部门号和性别,用DISTINCT消除重复行3)查询Employees中000001雇员的地址和电话【思考与练习】A.查询余额收入高于2000员工的员工号码B.查询1970年后出生的员工姓名和住址C.查询所有财务部的号码和姓名4)查询Employees中女雇员的地址和号码,使用AS语句将结果中个标题非别指定为地址,电话。
【思考与练习】查询Employees中男员工的姓名和出生日期,将结果中个标题改为中文5)查询Employees中员工的姓名性别,要求Sex为1时显示男,为0时显示女。
【思考与练习】查询Employees员工姓名住址和收入水平,2000元以下为低收入,2000~3000为中等收入,3000元以上为高收入6)计算每个雇员的实际收入【思考与练习】使用SELECT 语句进行简单计算7)获得员工总数【思考与练习】A.计算Salary员工收入平均数B.获得Emloyees2中员工最大员工号码C.计算Salary中员工总支出D.查询财务室雇员最高和最低实际收入8)找出所有姓王的雇员的部门号【思考与练习】A.找出所有地址含有‘中山’的雇员号码及雇员号B.查找员工号码中倒数第二个数字为0的员工的姓名,地址和学历9)找出所有收入在2000~3000元的员工号码【思考与练习】找出所有部门号1或2的雇员号码10)使用INTO语句,由表Salary创建“收入在1500以上的员工”表包括编号和收入【思考与练习】使用INTO语句,由表Employees2创建“男员工”表,包括姓名和编号2子查询的使用1)查找在财务部工作雇员的情况【思考与练习】使用子查询的方法查找所有收入在2500以下雇员的情况2)查找财务部年龄不低于研发部员工年龄的雇员姓名【思考与练习】用法子查询的方法查找研发部比所有财务部雇员收入都高的雇员姓名3连接查询的使用1)查询每个雇员的情况及其薪水情况【思考与练习】查询每个雇员的情况及其工作部门的情况2)使用内连接的方法查询名字为‘王林’的员工及其所在的部门【思考与练习】A.使用内连接的方法查找步子啊财务部工作的员工信息B.使用外连接的方法查找无哦有员工的月收入3)查找财务部收入在2000元以上的雇员姓名及其薪水详情【思考与练习】查询研发部在1976年以前出生的员工姓名及其薪水详情4聚合函数的使用、1)求财务部雇员平均工资【思考与练习】查询财务部雇员最高和最低工资2)求财务部雇员平均实际收入【思考与练习】查询财务部雇员最高和最低实际收入5GROUP BY .ORDER BY子句的使用1)查找Emloyees2中男性和女性人数【思考与练习】A.按部门列出在该部门工作人数B.按员工学历分组,列出本科硕士大专人数2)查找员工数超过2的部门名称和员工数量【思考与练习】按员工的工作年份分组,统计各个工作年份的人数3)将各雇员情况按收入由低到高排列【思考与练习】A.将员工信息按出生年月从小到大排列B.在ORDER BY 中使用子查询,查询员工姓名,性别和工作年龄信息,要求按实际收入由大到小排列T4.2 视图的使用1.目的和要求(1)熟悉视图的概念和作用(2)熟悉视图的创建方法(3)掌握如何查询和修改视图2.实验内容1.创建视图1)创建YGGL数据库上的视图DS_VIEW,视图高喊Departments表上的全部列2)创建YGGL上的视图Employees2上的视图Employees2_VIEW,视图包含员工号码,姓名和是实际收入【思考与练习】A.常见视图SELECT语句有哪些限制(来自百度)答:创建视图有如下限制:不能使用COMPUTE或者COMPUTE BY子句除非和TOP子句一起使用,否则,不能使用ORDER BY子句不能使用INTO关键字不能使用OPTION子句不能引用临时表和表变量。
数据库第三章 查询和视图
3.1 查询
• 查询:想要操作的一组记录,可以是多张表中检索出 的满足条件的记录。这些记录存放在一个动态数据集 中,不能修改原来表中的数据。 • 方法: – 查询向导 – 查询设计器 • 步骤: – 选择字段 – 设置条件 – 查询结果的输出类型
一、查询向导
范例:按入学成绩的降序查看男生的学号、 范例:按入学成绩的降序查看男生的学号、姓 名、入学成绩等
筛选
设定筛选条件
排序依据
设定排序条件
更新条件
可更新的字段 允许更新
运行
视图的运行
更新才可以修 改数据
视图可修改
该数据修改
源表已被修改
原来的数据
已被自动更新
3.2 视图
• 查询:可以检索数据,但不能更改数据 查询:可以检索数据, • 视图:可以检索、修改、最后把更新的结果送回 视图:可以检索、修改、 源表中。 源表中。 具有表的结构,不实际存放数据,也称“虚 具有表的结构,不实际存放数据,也称“ 表” 通过视图可以浏览、查询数据、 通过视图可以浏览、查询数据、修改数据
视图与查询的区别
• 查询的结果可以存储为多种数据格式(浏览、数 查询的结果可以存储为多种数据格式(浏览、 据表、图表等)。视图的结果如同一般数据文件, )。视图的结果如同一般数据文件 据表、图表等)。视图的结果如同一般数据文件, 仅能当数据表使用 • 查询是独立的数据文件,不属于任何数据库,而 查询是独立的数据文件,不属于任何数据库, 视图是数据库的一部分,不能独立存在。 视图是数据库的一部分,不能独立存在。操作视图 之前, 之前,必须打开视图所在的数据库 • 查询的结果不能修改,不具备数据回存的性质; 查询的结果不能修改,不具备数据回存的性质; 而视图的结果可以修改, 而视图的结果可以修改,并将修改结果送回原数据 库中
实验三 数据库的查询和视图
实验三数据库的查询和视图T4.1 数据库的查询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语句的ORDER BY子句的作用。
3、实验内容(1)SELECT语句的基本使用。
①对于实验二给出的数据库表结构,查询每个雇员的所有数据。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
【思考与练习】用SELECT语句查询Departments表和Salary表中所有信息。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
在“消息”中会发现总共有60行受影响。
② 用SECECT语句查询Employees表中每个雇员的地址和电话号码。
新建一个查询,在“查询分析器”窗口中输入如下代码并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
在“消息”中会发现有12行记录受影响【思考与练习】A、用SELECT语句查询Departments表和Salary表的一列或若干行。
利用SELECT语句查询Departments表和Salary表中EmployeeID为000001的记录,在“查询分析器”中输入以下代码。
执行后在下方会出现所有EmployeeID=000001的记录B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。
对表只选择某些行时,可能会出现重复行。
此时就需要使用DISTINCT关键字消除结果中的重复行。
数据库实验3
宁波工程学院数据库理论与技术课程实验报告学院:电子与信息工程学院专业:计算机科学与技术年级:实验时间:组名:组长:组员姓名:指导教师签字:成绩:实验三、SQL-数据查询语言一、实验目的和要求1、实验目的:深入理解连接查询和嵌套查询的语句格式、执行过程,掌握它们的使用方法;理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;理解视图的概念,掌握其定义方法和应用方法。
2、实验要求:在每次实验前,学生必须根据实验指导书设计出实验方案(程序和实验步骤);在实验过程中要求独立进行程序调试和排错,学会使用在线帮助来解决实验中遇到的问题,同时运用理论的知识来分析问题和解决问题,记录下实验过程和结果。
上机结束后写出实验报告,并对实验过程进行分析和总结。
二、实验内容与步骤1、在SQL SERVER 2005上附加数据库jxgl和ReadBook。
2、在jxgl中完成下列查询jxgl数据库中表及表中字段说明:Students(sno, sname,class,ssex,bday,bplace,mgrade,photo,sfzh,zxf)该表是学生基本信息表其中:sno-学号,sname-姓名,class-班级,ssex-性别,bday-出生日期,bplace-籍贯,mgrade-入学成绩,photo-照片,sfzh-身份证号码,zxf-总学分Course(cno,cname,cpno,credit)该表是课程情况表其中:cno-课程号,cname-课程名称,cpno-先修课程号,credit—学分SC(term,sno,cno,grade,point)该表是学生选课成绩表其中:term-学期,sno-学号,cno-课程号,grade-成绩,point-绩点TC(term,class,cno,tno,period)该表是教师上课情况表其中:list—序号,term-学期;class-班级;cno-课程号;tno-教师编号;period-学时Teachers (tno,tname,ps,wday,dept,pay,marry,resume)该表是教师基本情况表:其中t no-教师编号;tname-教师姓名;ps-职称;wday-入校日期;dept-系别;pay-工资;marry-婚否;resume-简历(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名(3)查询和“刘涛”在一个班级的学生的信息思考:该查询可用几种方法实现?(4)查询选修了…计算机基础‟课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)(5)查询没有选修课程的学生的信息(6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)(7)查询每个学生超过该门课程平均成绩的学号(8)查询至少选修了“0311102”学生所选全部课程的学生的学号(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号3、在jxgl中完成下列数据更新(1)向course表添加一个新的元组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数据库的查询和视图T4.1 数据库的查询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语句的ORDER BY子句的作用。
3、实验内容(1)SELECT语句的基本使用。
①对于实验二给出的数据库表结构,查询每个雇员的所有数据。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
【思考与练习】用SELECT语句查询Departments表和Salary表中所有信息。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
在“消息”中会发现总共有60行受影响。
② 用SECECT语句查询Employees表中每个雇员的地址和电话号码。
新建一个查询,在“查询分析器”窗口中输入如下代码并执行。
单击右键空白处,选择执行,在下方会出现所有结果。
在“消息”中会发现有12行记录受影响【思考与练习】A、用SELECT语句查询Departments表和Salary表的一列或若干行。
利用SELECT语句查询Departments表和Salary表中EmployeeID为000001的记录,在“查询分析器”中输入以下代码。
执行后在下方会出现所有EmployeeID=000001的记录B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。
对表只选择某些行时,可能会出现重复行。
此时就需要使用DISTINCT关键字消除结果中的重复行。
此时使用DISTINCT消除在Employees中查询到的部门号和性别的重复行,具体代码如下。
上面代码分别是使用了DISTINCT和没有使用DISTINCT关键字,下面就是两种的结果的对比。
可以从上面的执行结果中看出使用了DISTINCT关键字,结果集中的重复行就被消除了。
③查询EmployeeID为000001的雇员的地址和电话。
鼠标右键单击在弹出的菜单窗口中选择“执行”,结果中只会出现一行记录,EmployeeID 为000001的雇员的地址和电话。
【思考与练习】A、查询月收入高于2000元的员工号码。
只需要查询员工号码,条件为月收入高于2000元员工,那么至于要Salary表就行。
用T-SQL命令在表Salary表中查询月收入高于2000元的员工代码如下。
在结果栏中显示(9 行受影响),说明月收入高于2000的员工共有9人,如上截图所示,将所有月收入高于2000的员工的员工号码输出。
B、查询1970年以后出生的员工的姓名和地址。
通过分析员工信息,跟员工年龄、姓名、地址相关的只有表Employees表,所以只需要在一张表中查询即可,具体T-SQL查询命令如下。
在结果栏中消息显示(7 行受影响),说明1970年以后出生有7人,如上截图所示,将部分1970年以后出生员工姓名、地址输出显示。
C、查询所有财务部的员工的号码和姓名。
通过分析的,需要知道财务部与员工的号码和姓名,财务部只存在于Departments表中,员工姓名和号码只存在于Employees表中。
因此需要在表Departments表和Employees表中进行查询。
利用T-SQL命令查询代码如下。
在结果栏中显示3行受影响,从上面截图中可以看出所有财务部员工有3人,并且查询显示其姓名、电话号码。
④ 查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
从上面结果的截图发现Address变为地址,PhoneNumber变为电话。
【思考与练习】查询Employees表中男员工的姓名和出生日期,要求各列标题用中文表示。
通过分析此查询属于单表查询,只需要用到Employees表,使用AS子句就能够使结果集中各列标题用中文显示。
利用T-SQL命令查询代码如下。
从上面结果的截图发现各列标题都是中文。
从消息中显示(9 行受影响)说明,员工中男性有9人,并且全部男性的姓名和出生日期都已经查询显示出。
⑤ 查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。
【思考与练习】查询Employees员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000元显示为中等收入,3000元以上显示高收入。
经过分析需要查询员工的姓名、住址和收入水平,需要在Employees表和Salary表中进行查询,并且将Salary表中员工的InCome进行分类需要用到AS子句。
利用T-SQL命令进行多表查询语句如下。
执行上面截图中代码,在结果栏中出现员工的姓名,住址和收入水平。
消息中显示12行受影响,Employees表中所有员工信息都已经查询输出。
⑥计算每个雇员的实际收入。
经过分析需要员工的收入以及员工号码和员工姓名,就需要在Employees表和Salary表中进行查询。
利用T-SQL命令查询如下。
结果栏中就会显示EmployeeID,Name,实际收入这三项。
注意:在上面T-SQL命令中EmployeeID如果不指明为哪个表中的EmployeeID,代码就会报错“EmployeeID不明确”,改为Employees.EmployeeID或者Salary.EmployeeID都行。
【思考与练习】使用SELECT语句进行简单的计算。
在这里我将使用SELECT语句计算出Employees表中工龄三年以上的人数,并且查询员工号码,姓名,工龄。
⑦获得员工总数。
经分析得需要得到员工总数,只需要在Employees表内使用内置函数COUNT就行。
利用T-SQL命令执行操作如下。
【思考与练习】A、计算Salary表中员工月收入的平均数。
B、获得Employees表中最大的员工号码。
C、计算Salary表中所有员工的总支出。
D、查询财务部雇员的最高和最低实际收入。
经过分析需要查询财务部雇员的最高和最低实际收入,涉及到Employees表、Departments表和Salary表,需要在三张表中进行查询。
首先确定DepartmentName为“财务部”的DepartmentID。
其次在Employees表中确定DepartmentID为财务部的雇员的EmployeeID。
最后在Salary表中通过EmployeeID查询财务部雇员的InCome和OutCome,在最后的输出时候用InCome-OutCome的结果为实际收入。
执行后在结果栏中看到财务部雇员的最高实际收入和最低实际收入。
⑧找出所有姓王的雇员的部门号。
【思考与练习】A、找出所有地址中含有“中山”的雇员的号码及部门号。
注意:%代表着任意长度的字符串(长度可以为0),“%中山%”表示“中山”前面和后面都能够有任意长度字符串,用来表示地址中含有“中山”二字。
B、查找员工号码中倒数第2个数字为0的员工的姓名、地址和学历。
注意:数字占单个字符,所以通配符“_”只有一个,“%0_”表示倒数第二位为0。
⑨找出所有收入在2000~3000元的员工号码。
【思考与练习】找出所有在部门“1”或“2”工作的雇员的号码。
10 使用INTO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。
在左边对象资源管理器的YGGL数据库的表中刷新,会发现多了表“收入在1500元以上的员工”。
【思考与练习】使用INTO子句,由表Employees创建“男员工”表,包括编号和姓名。
(2)子查询的使用。
①查找在财务部工作的雇员的情况。
查询财务部工作的雇员情况,需要用到Department表和Employees表进行多表查询。
首先,在Department表中查询DepartmentName为“财务部”的DepartmentID。
然后,将DepartmentID拿到表Employees表中查询所有DepartmentID为财务部的雇员的所有信息。
利用T-SQL命令查询代码如下。
在结果栏中显示所有工作部门为“财务部”的雇员的详细信息。
【思考与练习】用子查询的方法查找所有收入在2500元以下的雇员的情况。
进分析需要用到工资表Salary和员工信息表Employees进行查询。
首先,在表Salary中查询InCome<2500元的雇员的EmployeeID。
然后,利用得到的EmployeeID在表Employees中行选,查询所有符合EmployeeID的雇员的情况。
注:上面截图中代码第5行,若改为“where EmployeeID =”就会出现如下错误表示返回值不止一个,并且现在子查询后面接的是“=”,这种情况DBMS是不允许的,所以就会出现如上所示的错误。
解决方法只需要将“=”改为“in”就行了,就会解决返回值不止一个和“=”的冲突。
执行上面T-SQL语句,在结果栏中显示出现结果。
②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。
分析得,ALL指定表达是要与子查询结果集中每个值都进行比较,当表达式与每个值都满足比较是关系时,才返回TRUE,否则返回FALSE。
执行结果会发现只查询到1人满足这样的条件。
同样我们也能够通过查询Employees表得到。
财务部只有“王向容”1人符合年龄不小于(大于)研发部雇员年龄。
注:在书上源码第12行“Birthday ! >all”查询到的是“李丽”,年龄小于所有研发部的,所有书本上源码表示的是“财务部雇员年龄不大于研发部雇员年龄”与题目中“不低于”冲突。
所以书上源码有误,将源码改成上面截图中第12行即可。
【思考与练习】用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。
分析:首先在Employees表里找到EmployeeName为“研发部”的雇员的姓名和查找雇员的EmployeeID,其次这样的EmployeeID还需要满足InCome大于所有的DepartmentName 为“财务部”的雇员的InCome,满足条件返回True,select到满足这样条件的雇员的Name,否则返回FALSE。
Where子查询中嵌套使用。
执行T-SQL命令后在结果栏中显示只有1人满足。
(3)连接查询的使用。
①查询每个雇员的情况及其薪水情况。
执行之后,将Employees表和Salary表中所有员工的基本情况进行输出。
不足之处就是EmployeeID这一列有重复。