实验三大数据库地查询和视图

合集下载

第3章数据库查询和视图

第3章数据库查询和视图

2. 求和命令
命令格式:
SUM [<数值表达式表>] [<范围>] [FOR <条件1>] ; [WHILE <条件2>][TO <内存变量表>|TO ARRAY<数组>
功能:对当前表的各个数值表达式分别求和。
[例3-6] 对表gzb.dbf的奖励工资字段和实发工资字段进 行求和统计,结果分别存放到变量s1和s2中。
记录级规则主要包括记录有效性、触发器的设置和表注释。
每逢星期一才可做插入、追加、 更新和删除记录的操作:
CDOW(DATE())="Monday"
“教授的基本工资要≥1650元,其 他职工为:
550≤基本工资≤3000"
3.建立表间永久关系
永久关系是数据库表间的关系,它们存储在数据库文件中。
利用“数据库设计器”来建立永久关系: 在“数据库设计器”中,用鼠标从一个表的主索引或候选索引
2.用命令方式建立数据库
命令格式: CREATE DATABASE [<数据库名>] 功能:建立一个数据库同时打开它。
例如建立gzk.dbc的命令如下: CREATE DATABASE gzk
3.1.2 数据库操作命令 1.打开数据库命令
命令格式: OPEN DATABASE [<数据库名>] 功能:打开一个数据库。 例如打开数据库gzk.dbc的命令如下: OPEN DATABASE gzk
2.关闭数据库命令
命令格式:
CLOSE DATABASE [ALL] 功能:关闭当前的数据库和它的表。选择ALL表示关闭所有打开的 数据库和它们的表、所有的自由表以及索引文件,返回1号工作区。 例如关闭当前数据库gzk.dbc的命令如下:

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图在学⽣选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学⽣选课信息和成绩$,课程$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND课程$.课号=学⽣选课信息和成绩$.课号AND 课程$.课程名='线性代数'AND学⽣选课信息和成绩$.成绩<60;执⾏后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学⽣选课信息和成绩$WHERE学号=名单$.学号);执⾏后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执⾏后结果如下:4.统计⾼等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)'; 执⾏后结果如下:5.统计各门课的选课⼈数;SQL语句为:SELECT课号,COUNT(学号)FROM学⽣选课信息和成绩$GROUPBY课号;执⾏后结果为:6.查询选修5门课以上的学⽣的学号;SQL语句为:SELECT学号FROM学⽣选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执⾏后结果为:7.⽤你的学号查询和你⼀个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执⾏后结果如下:8.查询⾼等数学(1)成绩⽐你⾼出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学⽣选课信息和成绩$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND学⽣选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)' AND学⽣选课信息和成绩$.学号='201000800145')执⾏后结果为:9.找到每门课获得最⾼成绩的同学的学号、姓名、课名和成绩;选做。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用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.使用“视图设计器” 打开数据库,用下面方法之一打开“视图设计 器”: 单击主菜单“文件”/“新建”命令,在“新建” 对话框中选择“视图”,单击“新建”按钮。 在“数据库设计器”窗口中,单击鼠标右键,快 捷菜单中选择“新建本地视图”命令,或单击主菜 单“数据库”下拉菜单中 “新建本地视图”命令, 打开“新建本地视图”对话框,单击“新建视图” 按钮。

实验3 数据库的查询和视图

实验3 数据库的查询和视图

实验3 数据库的查询和视图实验目的(1)掌握SELECT语句的基本语法(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握数据汇总的方法(5)掌握SELECT语句的GROUP BY子句的作用和使用方法(6)掌握SELECT语句的ORDER BY子句的作用和使用方法(7)掌握视图的使用方法实验准备(1)了解SELECT语句的基本语法格式和执行方法(2)了解子查询的表示方法,连接查询和数据汇总的方法(3)了解SELECT语句的GROUP BY子句的作用和使用方法(4)了解SELECT语句的ORDER BY子句的作用(5)了解视图的作用和创建视图的方法(6)了解视图的使用方法实验内容一.SELECT语句的基本使用1.对于实验2给出的数据库表结构,查询每个雇员的所有数据。

在SQL*PLUS 窗口中输入下面语句并执行:Select * from employees思考与练习:用SELECT语句查询Departments和Salary中的所有记录2.查询每个雇员的地址和电话。

在SQL*PLUS窗口中输入下面语句并执行:Select address,phonenumber from employees;思考与练习:用SELECT语句查询Departments和Salary表的一列或若干列3.查询employeeID为000001的雇员的地址和电话。

在SQL*PLUS窗口中输入如下语句并执行:Select address, phonenumber from employees where employeeID=’000001’思考与练习:用SELECT语句查询Departments和Salary表中满足条件的一列或若干列4.查询employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址,电话。

在SQL*PLUS窗口中输入下面语句并执行:Select address as 地址, phonenumber as 电话号码from employees where sex=0;注意:使用AS子句可指定目标列的标题。

数据库的查询和视图

数据库的查询和视图
使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。其中, $IDENTITY表示选择标识列,$ROWGUID表示选择ROWGUIDCOL属性的全局标识列。 如果在FROM子句中有多个表具有ROWGUIDCOL属性,则必须用特定的表名限定 $ROWGUID,如T1.$ROWGUID。 【例4.2】 查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分。 USE PXSCJ GO SELECT 姓名,专业,总学分 FROM XSB GO SQL Server 2008中还能一次执行多个查询。
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表

《数据库应用基础 visual FoxPro》模块3查询与视图图文模板

《数据库应用基础 visual FoxPro》模块3查询与视图图文模板
将查询结果永久存在用户命名的数据表中。 将查询结果生成一个图形。 将查询结果输出到屏幕或同时输出到打印机上或文件中。 将查询结果输出到一个报表格式窗口中。 将查询结果发送到一个标签格式文件中。
模块3 行查询操作
1、创建查询文件的命令 【格式】CREATE QUERY 查询文件名 【功能】创建指定的查询文件 2、修改查询文件的命令 【格式】MODIFY QUERY 查询文件名 【功能】打开并修改指定的查询文件 3、运行查询文件的命令 【格式】DO 查询文件名.qpr 【功能】使用该命令必须写查询文件的扩展名.qpr。
模块3 查询与视图
任务2 进行视图操作
一、创建视图
视图是从一个或几个基于表或视图中导出的虚拟表,它 是数据库的一部分,视图设计器同查询设计器有相似之处,它们 的操作基本一样。建立视图之前应先打开数据库文件。
创建视图的命令 【格式】CREATE VIEW 视图名 【功能】在当前数据库创建视图
任务2
模块3 查询与视图 进行视图操作
二、更新数据
视图有两种,一种是本地视图,用于更新本地计算机存 储的数据。另一种是远程视图用于更新远程服务器上存储的数据。 本章节只讲解更改本地视图的操作。
任务2
模块3 查询与视图 进行视图操作
三、删除视图
删除视图的命令 【格式】DROP VIEW 视图名 【功能】删除当前数据库下指定的视图。
感谢
谢谢,精品课件 资料搜集
感谢
谢谢,精品课件
资料搜集
Visual FoxPro数据库应用 基础
模块3 查询与视图
学习目标: 1、掌握用查询设计器创建查询。 2、掌握用视图设计器创建视图和更新数据。 3、了解查询和视图的区别。
模块3 查询与视图

实验三 多表查询、数据更新、视图

实验三 多表查询、数据更新、视图
实验三
实验名称:多表查询、数据更新、视图、实验性质:验证性、成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)

SQL实验四-数据库的查询和视图

SQL实验四-数据库的查询和视图

学校代码:10128学号:************《数据库原理及应用》实验报告题目:数据库的查询和视图****:**学院:理学院系别:数学系专业:信息与计算科学班级:信计12-2****:**二〇一五年四月一、练习目的1、数据库的查询(1)掌握SELECT语句的基本语法;(2)掌握子查询的表示;(3)掌握连接查询的表示;(4)掌握SELECT语句的GROUP BY子句的作用与使用方法;(5)掌握SELECT语句的ORDER BY子句的作用与使用方法;2、视图的使用(1)熟悉视图的概念和作用;(2)熟悉视图的创建方法;(3)熟悉如何查询和修改视图。

二、练习准备1、数据库的查询(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY子句的作用与使用方法;(6)了解SELECT语句的ORDER BY子句的作用;2、视图的使用(1)了解视图的概念;(2)了解创建视图的方法;(3)了解并掌握对视图的操作。

三、实验程序实验4.1 数据库的查询1、(1)对于实验2给出的数据库结构,查询每个雇员的所有数据. USE YGGLGOSELECT*FROM Employees(2)用SELECT语句查询Employees表中每个雇员的地址和电话. SELECT Address,PhoneNumberFROM Employees(3)查询EmployeeID为000001的雇员的地址和电话.SELECT Address,PhoneNumberFROM EmployeesWHERE EmployeeID='000001'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话. SELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE Sex=0(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”. SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'END AS性别FROM Employees(6)计算每个员工的实际收入.SELECT EmployeeID,实际收入=InCome-OutComeFROM Salary(7)获得员工总数.SELECT COUNT(*)FROM Employees(8)找出所有姓王的雇员的部门号.SELECT DepartmentIDFROM EmployeesWHERE Name LIKE'王%'(9)找出所有收入在2000~3000之间的员工号码.SELECT EmployeeIDFROM SalaryWHERE InCome BETWEEN 2000 AND 3000(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入. SELECT EmployeeID as编号,InCome as收入INTO收入在以上的员工FROM SalaryWHERE InCome>15002、子查询的使用.(1)查询在财务部工作的雇员的情况.SELECT*FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.SELECT NameFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')ANDBirthday!>ALL(SELECT BirthdayFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='研发部' ))(3)查找比所有财务部的雇员收入都高的雇员的姓名. SELECT NameFROM EmployeesWHERE EmployeeID IN(SELECT EmployeeIDFROM SalaryWHERE InCome>ALL(SELECT InComeFROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT EmployeeIDFROM DepartmentsWHERE DepartmentName='财务部')))))3、连接查询的使用(1)查询每个雇员的情况及其薪水的情况SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeID(2)使用内连接的方法查询名字为“王林”的员工所在的部门SELECT DepartmentNameFROM Departments JOIN EmployeesON Departments.DepartmentID=Employees.DepartmentID WHERE ='王林'(3)查询财务部收入在2000以上的雇员姓名及其薪水详情. SELECT Name,InCome,OutComeFROM Employees,Salary,DepartmentsWHERE Employees.EmployeeID=Salary.EmployeeIDAND Employees.DepartmentID=Departments.DepartmentID AND DepartmentName='财务部'AND InCome>20004、聚合函数的使用.(1)求财务部雇员的平均收入.SELECT AVG(InCome)AS'财务部平均收入'FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(2)财务部雇员的平均实际收入.SELECT AVG(InCome-OutCome)AS'财务部平均实际收入' FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(3)求财务部雇员的总人数SELECT COUNT(EmployeeID)FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')5、GROUP BY\ORDER BY子句的使用.(1)Emyees表中的男性和女性的人数SELECT Sex,COUNT(Sex)FROM EmployeesGROUP BY Sex;(2)查找员工数超过2人的部门名称和员工数量.SELECT(Employees.DepartmentID),COUNT(*)AS人数FROM Employees,DepartmentsWHERE Employees.DepartmentID=Department.DepartmentID GROUP BY Employees.DepartmentIDHAVING COUNT(*)>2(3)将各雇员的情况按收入由低到高排列.SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDORDER BY InCome实验4.2 视图的使用1、创建视图①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

数据库的查询和视图

数据库的查询和视图

6
数据库查询
表达式比较 【例】查询XS数据库CP表中库存量在500以上的产品情况。
SELECT * FROM CP WHERE KCL !< 500
【例】查询XSCJ数据库XS表中通信工程专业总学分大于等于42的同学的情 况。
SELECT * FROM XS WHERE专业名 = ‘通信工程’ an表中不在1979年出生的学生情况。
SELECT * FROM XS WHERE 出生时间 NOT BETWEEN ‘1979-1-1’ and ‘1979-12-31’ 使用IN关键字可以指定一个值表,值表中列出所有可能的值,当表达式与值表中的任一个匹配时, 即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为: expression IN ( expression [,…n])
3
数据库查询
【例】 5。 计算列值 。
使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值, 即SELECT子句可使用表达式作为结果,格式为: SELECT expression [ , expression ]
SELECT CPMC AS ‘产品名称’,产品总值 = JG * KCL FROM CP
17
模式匹配 LIKE谓词表达式的格式为:
string_expression [ NOT ] LIKE string_expression [ ESCAPE ‘escape_character’ ]
【例】查询XSCJ数据库XS表中计算机系的学生情况。
SELECT * FROM XS WHERE 专业名 LIKE ‘计算机’ 使用LIKE进行模式匹配时,常使用通配符,即可进行模糊查询。
16
use northwind select productid, sum(quantity) as a from [order details] where productid<10 group by productid having sum(quantity) >=30 go *group by与聚集函数连用 与聚集函数连用 *having必须与 必须与group by 联用 必须与

数据库第三章 查询和视图

数据库第三章 查询和视图
第三章 查询和视图
3.1 查询
• 查询:想要操作的一组记录,可以是多张表中检索出 的满足条件的记录。这些记录存放在一个动态数据集 中,不能修改原来表中的数据。 • 方法: – 查询向导 – 查询设计器 • 步骤: – 选择字段 – 设置条件 – 查询结果的输出类型
一、查询向导
范例:按入学成绩的降序查看男生的学号、 范例:按入学成绩的降序查看男生的学号、姓 名、入学成绩等
筛选
设定筛选条件
排序依据
设定排序条件
更新条件
可更新的字段 允许更新
运行
视图的运行
更新才可以修 改数据
视图可修改
该数据修改
源表已被修改
原来的数据
已被自动更新
3.2 视图
• 查询:可以检索数据,但不能更改数据 查询:可以检索数据, • 视图:可以检索、修改、最后把更新的结果送回 视图:可以检索、修改、 源表中。 源表中。 具有表的结构,不实际存放数据,也称“虚 具有表的结构,不实际存放数据,也称“ 表” 通过视图可以浏览、查询数据、 通过视图可以浏览、查询数据、修改数据
视图与查询的区别
• 查询的结果可以存储为多种数据格式(浏览、数 查询的结果可以存储为多种数据格式(浏览、 据表、图表等)。视图的结果如同一般数据文件, )。视图的结果如同一般数据文件 据表、图表等)。视图的结果如同一般数据文件, 仅能当数据表使用 • 查询是独立的数据文件,不属于任何数据库,而 查询是独立的数据文件,不属于任何数据库, 视图是数据库的一部分,不能独立存在。 视图是数据库的一部分,不能独立存在。操作视图 之前, 之前,必须打开视图所在的数据库 • 查询的结果不能修改,不具备数据回存的性质; 查询的结果不能修改,不具备数据回存的性质; 而视图的结果可以修改, 而视图的结果可以修改,并将修改结果送回原数据 库中

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告
(1)查询选修了数据库的学生姓名。
(2)查询比计算机系CS所有学生年龄都大的学生信息。
(3)列出“李勇”选修的所有课程的课名和成绩。
(4)查询数据库的先行课的课程名。
3.针对实验一建立的SPXS数据库中的三个表,实现如下查询:
(1)查询与商品“电视”颜色相同的商品名;
(2)查询不销售商品P2的商店名;
(3)查询至少销售商品P1、P2两种商品的商店名;
(4)所有商店都销售的商品号。
(5)只销售一种商品P4的商店名。
三、实验结果与分析:
写出操作语句,粘贴查询结果(粘贴结果要求粘贴SQL Server Managemet Studio整个窗口):
1.
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
2.
2.KingBase ES V7.0,人大金仓。
【实验内容和步骤】
针对实验一建立的数据库的表,用select语句完成如下查询操作,写出select语句,并给出操作结果。
1.针对SPJ数据库中的四个表,实现如下查询:
(1)求供应工程J1零件的供应商号码SNO;
(2)求供应工程J1零件P1的供应商号码SNO;
(1)
(2)
(3)
(4)
3.
(1)
(2)
(3)
(遇到什么问题?如何解决的?
第三题第二问不知道如何将在全部的sno中剔除当pno=’p2’是的sno.语句不知道怎样写出。
五、教师评语:
实验成绩:教师:(签名)年月日
创新活动
(3)求供应工程J1零件的供应商名SNAME;
(4)求供应工程J1零件P1的供应商名SNAME;

实验四 - 数据库表的查询操作与视图操作

实验四 - 数据库表的查询操作与视图操作

实验4.1 连接查询

连接查询


查询所有选课学生的学号、姓名、选课名称 及成绩 查询每门课程的课程号、任课教师姓名及其 选课人数
实验4.1 连接查询

自身连接


查询所有比“刘伟”工资高的教师的姓名、 工资以及刘伟的工资。 查询同时选修了“程序设计”和“微机原理” 的学生的姓名和系名用SQL创建一个课程表视图。视图名称为 VIEW_Course,其数据来源于两个基本表 jx_Tea和jx_Course,包含的数据有 jx_Tea.Tname和jx_ame。

提示:首先将两表建立连接
实验4.3 视图操作


使用交互式方法把视图VIEW_Stu中的字 段Sno删掉 使用SQL给视图VIEW_Course增加一个课 时字段Chour
实验4.3 视图操作


交互式创建一个视图。要求:视图名称为 VIEW_Stu,其数据来源于一个基本表 jx_stu,包含的数据有:Sno、Sname、 Sgender、Sdept 交互式创建一个成绩视图。要求:视图名 称为VIEW_Score,其数据来源于两个基本 表jx_Course和jx_SelCourse及一个已有的 视图View_Stu,包含的数据有 VIEW_Stu.Sname、jx_ame、 jx_SelCourse.Score
实验4.3 视图操作


交互式删除视图VIEW_Stu 使用SQL删除视图VIEW_Course
实验报告


写出以上练习中要求用SQL语句实现的操 作,要求:查询结果显示的字段信息用中 文表达。 写出采用视图机制具有哪些优点? 思考:是否所有的视图都具有可通过其修 改基本表数据的性质?哪些视图不具有这 种性质?

实验三 索引和视图

实验三 索引和视图

实验三索引和视图一、实验目的1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。

2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。

ssex char(3)constraint ssex_ch check (ssex in('男','女')),sage int not null constraint sage_ch check (sage between 15 and 30),sdept char(10))values('C02','数据结构','C05',2) insert into coursevalues('C03','数据库','C02',2) insert into coursevalues('C04','DB_设计','C03',3)insert into coursevalues('C05','C++',null,3)insert into coursevalues('C06','网络原理','C07',3)create table sc(sno char(5)not null,cno char(5)not null,grade int constraint grade_ch check(grade between 0 and 100),primary key(sno,cno),constraint fk_sno foreign key (sno)references student(sno),constraint fk_cno foreign key (cno)references course(cno))insert into scvalues('S01','C01',92)insert into scvalues('S01','C03',84)insert into scvalues('S02','C01',90)insert into scvalues('S02','C02',94)insert into scvalues('S02','C03',82)insert into scvalues('S03','C01',72)insert into scvalues('S03','C02',90)insert into scvalues('S04','C03',75)2.索引的建立、删除①用SSMS的方式为Student表按Sno(学号)升序建唯一索引②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,create unique index course_cnoon course(cno asc)③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

实验三--数据库中的数据查询及视图操作实验报告

实验三--数据库中的数据查询及视图操作实验报告
求供应工程j1零件p1的供应商名sname求供应工程j1零件为红色的供应商号码sno求没有使用天津供应商生产的红色零件的工程号jno
长春大学计算机学院科学与技术专业
数据库原理实验报告
实验名称:
实验三数据库中的数据查询及视图操作(1)
班 级:
姓 名:
学 号:
实验地点:
日 期:
一、实验目的:
1.继续熟练SQL SERVER 2005/2008系统或KingBase ES V7.0的使用;
(商店名;
(3)查询至少销售商品P1、P2两种商品的商店名;
(4)所有商店都销售的商品号。
(5)只销售一种商品P4的商店名。
三、实验结果与分析:
写出操作语句,粘贴查询结果(粘贴结果要求粘贴SQL Server Managemet Studio整个窗口):
(2)求供应工程J1零件P1的供应商号码SNO;
(3)求供应工程J1零件的供应商名SNAME;
(4)求供应工程J1零件P1的供应商名SNAME;
(5)求供应工程J1零件为红色的供应商号码SNO;
(6)求没有使用天津供应商生产的红色零件的工程号JNO;
(7)求至少用了供应商S1所供应的全部零件的工程号JNO;
(8)找出使用上海产的零件的工程名称;
2.针对学生-课程数据库中的三个表,用嵌套方法查询实现如下查询:
(1)查询选修了数据库的学生姓名。
(2)查询比计算机系CS所有学生年龄都大的学生信息。
(3)列出“李勇”选修的所有课程的课名和成绩。
(4)查询数据库的先行课的课程名。
3.针对实验一建立的SPXS数据库中的三个表,实现如下查询:
2.掌握SELECT语句的使用。
3.掌握单表查询,多表查询以及嵌套查询。

第3章数据库查询和视图-资料

第3章数据库查询和视图-资料
时所用的规则,包括限制和忽略2种。
2020/2/7
更新规则
删除规则
插入规则
级联 限制 忽略
当父表中的关键字 当父表的记录被删 值被修改时,系统 除时,系统相应的 用新的关键字值更 删除子表中所有相 新子表中所有相关 关记录 记录
若子表有相关记录 若子表有相关记录 若父表中不存在
,则系统禁止父表 ,则系统禁止父表 匹配的关键字值
命令格式: ADD TABLE <表名> 功能:向当前数据库添加一个自由表。 例如向数据库gzk.dbc添加自由表gzb1.dbf(它为gzb.dbf的复制表) 和zz1.dbf(zz.dbf的复制表) OPEN DATABASE gzk ADD TABLE gzb1 ADD TABLE zz1
2020/2/7
显示的标 题改为自 己希望的
标题
“输入掩码”文本 框中键入掩码代码, 输入掩码是按位来 控制格202式0/2的/7 。
字段有效性就是用 于数据输入正确性
的检验。
说明该字段的用途、 特性、使用说明等 补充信息
2. 设置记录级规则
职称="教授".AND.基本工资>=1650.OR. 职称#"教授".AND.(基本工资=>550.AND.
记录。 (1)缺省<范围>表示ALL。 (2)找到一条满足条件的记录后,要继续往下查找
满足条件的其它记录就必须用CONTINUE命令。
2020/2/7
[例3-3] 在rsb.dbf中查找职称为“讲师”的记录 。
USE rsb LOCATE FOR 职称="讲师" DISPLAY &&显示查找到职称是“讲师”的第一条记

实验3 数据库的查询和视图

实验3 数据库的查询和视图

实验3 数据库的查询和视图实验目的(1)掌握SELECT语句的基本语法(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握数据汇总的方法(5)掌握SELECT语句的GROUP BY子句的作用和使用方法(6)掌握SELECT语句的ORDER BY子句的作用和使用方法(7)掌握视图的使用方法实验准备(1)了解SELECT语句的基本语法格式和执行方法(2)了解子查询的表示方法,连接查询和数据汇总的方法(3)了解SELECT语句的GROUP BY子句的作用和使用方法(4)了解SELECT语句的ORDER BY子句的作用(5)了解视图的作用和创建视图的方法(6)了解视图的使用方法实验内容一.SELECT语句的基本使用1.对于实验2给出的数据库表结构,查询每个雇员的所有数据。

在SQL*PLUS 窗口中输入下面语句并执行:Select * from employees思考与练习:用SELECT语句查询Departments和Salary中的所有记录2.查询每个雇员的地址和电话。

在SQL*PLUS窗口中输入下面语句并执行:Select address,phonenumber from employees;思考与练习:用SELECT语句查询Departments和Salary表的一列或若干列3.查询employeeID为000001的雇员的地址和电话。

在SQL*PLUS窗口中输入如下语句并执行:Select address, phonenumber from employees where employeeID=’000001’思考与练习:用SELECT语句查询Departments和Salary表中满足条件的一列或若干列4.查询employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址,电话。

在SQL*PLUS窗口中输入下面语句并执行:Select address as 地址, phonenumber as 电话号码from employees where sex=0;注意:使用AS子句可指定目标列的标题。

3-1查询和视图

3-1查询和视图
• 查询可以根据用户向一个数据库发出 的数据检索的请求,将满足检索条件 的一组数据记录按指定的方式提取到 指定的用户窗口界面
查询的相关概念
• 查询:
– 就是向一个数据库发出检索信息的请求, 从中提取符合特定条件的记录。
• 查询文件:
– 即保存实现查询的SELECT-SQL命令的文 件。查询文件保存时,系统自动给出扩展 名 .qpr;查询被运行后,系统还会生成一 个编译后的查询文件,扩展名为 .qpx。
查询的相关概念
• 查询结果
– 通过运行查询文件得到的一个基于表和视 图的动态的数据集合。查询结果可以用不 同的形式来保存。查询中的数据是只读的 。
• 查询的数据源
– 可以是一张或多张相关的自由表、数据库 表、视图。
建立查询的一般过程
• 启动“查询设计器”;并在其中创建查 询
– 添加数据表(又称为数据源),并在多个数 据表之间建立关联(永久关系是默认的关联 )
查询的问题
• 查询可以从多数据源中筛选出数据 • 但查询本身不能作为数据源使用 • 在查询中不能更新数据,更不能用查
询更新数据源中数据
3.2 视图
北京科技大学天津学院 计算机教研组
视图的特点
• 1) 视图是存在于数据库中的一个虚表, 不以独立的文件形式保存;
• 2) 视图中的数据是可以更改的,它不仅 具有查询的功能,且可以把更新结果反 映到源数据表中;
查询设计器图示
查询设计工具
数据源显示区
查询设置区
查询设计器图示
选定包含在查询结 果中的字段
所谓分组就是将一组类似 的记录压缩成一个结果记
确定各数据表或视 录;这样就可以完成基于 图之间的关联关系 一个组的统计计算
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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这一列有重复。

相关文档
最新文档