查询和视图

合集下载

视图和查询的区别

视图和查询的区别

视图和查询的区别1:什么是视图2:视图和查询的区别3:视图的优点4:如何创建和管理视图5:如何通过视图修改基本表的数据6:如何通过视图实现数据的安全性A:什么是视图:视图(view):从一个或几个基本表中根据用户需要而做成一个虚表1:视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据2:视图只在刚刚打开的一瞬间,通过定义从基表中搜集数据,并展现给用户B:视图与查询的区别:视图和查询都是用由sql语句组成,这是他们相同的地方,但是视图和查询有着本质区别: 它们的区别在于:1:存储上的区别:视图存储为数据库设计的一部分,而查询则不是.2:更新限制的要求不一样要注意:因为视图来自于表,所以通过视图可以间接对表进行更新,我们也可以通过update语句对表进行更新,但是对视图和查询更新限制是不同的,以下我们会知道虽然通过视图可以间接更新表但是有很多限制.3:排序结果:通过sql语句,可以对一个表进行排序,而视图则不行.比如:创建一个含有order by子句的视图,看一下可以成功吗?C:视图的优点:为什么有了表还要引入视图呢?这是因为视图具有以下几个优点: 1:能分割数据,简化观点可以通过select和where来定义视图,从而可以分割数据基表中某些对于用户不关心的数据,使用户把注意力集中到所关心的数据列.进一步简化浏览数据工作.2:为数据提供一定的逻辑独立性如果为某一个基表定义一个视图,即使以后基本表的内容的发生改变了也不会影响“视图定义”所得到的数据3:提供自动的安全保护功能视图能像基本表一样授予或撤消访问许可权.4:视图可以间接对表进行更新,因此视图的更新就是表的更新D:视图的创建和管理视图的创建1:通过sql语句格式:create view 视图名 as select 语句试一试:分别创建关于一个表或多个表的视图[因为视图可以来自于多表]2:通过企业管理器说明:1:在完成视图的创立之后,就可以像使用基本表一样来使用视图2:在创建视图时,并非所有的select子查询都可用如:compute和compute by,order by[除非与top一起连用]3:但在查询时,依然都可以用在创建时禁用的select子查询4:在视图创建时,必须为没有标题列指定标题[思考:能否不用select 语句来创建一个视图]视图的删除:1:通过sql语句:drop view 视图名2:通过企业管理器说明:与删除表不同的是,删除视图后只是删除了视图了定义,并没有删除表中的数据.[查看相关性]修改视图的定义1:通过企业管理器2:通过sql语句:格式:alter view 视图名 as 新的select语句浏览视图信息 sp_helptext 视图名 [查看视图创建的语句]E:如何通过视图修改基本表的数据.1:在视图上使用insert语句通过视图插入数据与直接在表中插入数据一样,但视图毕竟不是基本表.因此在进行数据插入时还是有一定的限制1:如果视图上没有包括基本表中属性为not null[不能为空]的列,那么插入操作会因为那些列是null值而失败.2:如果某些列因为某些规则或约束的限制而不能直接接受从视图插入的列时,插入会失败3:如果在视图中包含了使用统计函数的结果,或是包含计算列,则插入操作会失败4:不能在使用了distinct语句的视图中插入值5:不能在使用了group by语句的视图中插入值2:使用update更新视图中的数据1:更新视图与更新表格一样,但是在视图中使用了多个基本表连接的情况下,每次更新操作只能更新来自基本表的一个数据列例如:创建以下视图:create view del asselect 职工号,姓名,部门名称,负责人 from work1,部门where work1.部门编号=部门.部门编号如果再执行下面的语句时:update del set 职工号=\'001\',部门名称=\'wenda\' where 职工号=\'01\'[出现错误]只能够改成:update del set 职工号=\'001\' where 职工号=\'01\' update del set 部门名称=\'wenda\' where 职工号=\'01\' 2:不能在使用了distinct语句的视图中更新值3:不能在使用了group by语句的视图中更新值3:使用delete删除视图中数据.通过视图删除数据最终体现为从基本表中删除数据格式:delete 视图名 [where 条件]说明:当视图由两个以上的基表构成时,不允许删除视图的数据例如:建一个视图kkcreate view kk asselect 职工号,姓名,性别,部门名称from work1,部门where work1.部门编号=部门.部门编号 [试着去删除]使用with check option的视图如果不了解视图定义内容,则常常会发生向视图中输入不符合视图定义的数据的情况.比如:create view xm asselect * from work where 性别=\'男\'完全可以插入insert xm values(\'001\',\'女\',23,\'2400\'....)尽管从意义上来说是不合理的,但是上述语句是正确的.为了防止这种情况的发生,可以使用with check option子句来对插入的或更改的数据进行限制.比如:create view xm asselect * from work where 性别=\'男\' with check option使用schemabinding的视图[使用绑定到构架]我们知道视图是依赖于表,如果在一个表中创建一个视图,今后如果这个表被删除了,则这个视图将不可再用了.为了防止用户删除一个有视图在引用的表,可以在创建视图的时候加上schemabinding关键字.比如:create view 基本工资 with SCHEMABINDINGas select 姓名,性别,基本工资 from dbo.work说明:1:不能使用“*”来创建此类型的视图2:创建此类型的视图时,一定要加上dbo.表名.3:如果在某个表中定义了此类视图,则用户将不能对表的结构进行修改,否则会删除这些绑定4:如果用户对表的结构进行列改名,则会删除绑定而且视图不可用.5:如果用户对表的结构进行列的类型或者大小修改,则会删除绑定但视图可用,此时用户可以删除视图所引用的表.使用with encryption对视图进行加密为了保护创建视图定义的原代码,可以对视图进行加密.比如:create view kk with encryptionas select * from work where 职称=\'经理\'用sp_helptext来查看一下.或用企业管理器查看一下.说明:如果应用此项用户将无法设计视图F:使用视图加强数据的安全一般通过使用视图共有三种途径加强数据的安全性A:对不同用户授予不同的使用权.B:通过使用select子句限制用户对某些底层基表的列的访问C:通过使用where子句限制用户对某些底层基表的行的访问对不同用户授予不同的权限。

查询与视图

查询与视图

• SQL语句
SELECT xs.xh, xs.xm, COUNT(cj.xh) AS 选课门数; FROM sjk!xs INNER JOIN sjk!cj ; ON xs.xh = cj.xh GROUP BY cj.xh; HAVING COUNT(cj.xh)=>2
查询统计练习(12)
(TJJSRK)基于JS表和RK表查询各教师的任课门数。要求
查询统计练习(13-1)

(TJBJRS)基于学生(XS)表以班级为单位,统计各班上半 年和下半年出生的人数, 要求输出字段:bjbh、时间、人数。(如果出生月份在1至6月,
则时间为“上半年”,如果出生月份在7至12月,则时间为“下半年”),
查询结果:首先按班级编号升序排序,一个班级中再按时 间降序排序,查询结果输出到临时表xsrs。
排序(―排序依据”选项卡)—— 决定查询输出结果时,记录或行的顺

分组(―分组依据”选项卡)—— 分组的作用可将一组类似的记录压缩
成一个记录,主要用于计算。 (“满足条件”)
其他(“杂项”选项卡)—— 重复记录处理、结果记录范围等。 查询输出的方式(“查询”菜单—―查询去向” )
– 浏览(默认)、临时表、表、图形、屏幕、报表、标签等
• 排序:
• SQL语句
COUNT(Js.gh) AS 人数(降序)
SELECT SUBSTR(Js.gh,1,1) AS 首字母,; COUNT(Js.gh) AS 人数; FROM sjk!js; GROUP BY 1 ORDER BY 2 DESC
查询统计练习(10)
(CXCJBMAX)基于KC表和CJ表查询各课程不及格成绩中的最
查询统计练习(11)

第5-1章 查询和视图

第5-1章 查询和视图

3
5.1 基本概念
1. 查询 查询是一种相对独立且功能强大、结果多样的数据库资源, 查询是一种相对独立且功能强大、结果多样的数据库资源, 利用查询可以实现对数据库中数据的浏览、筛选、排序、检索、 利用查询可以实现对数据库中数据的浏览、筛选、排序、检索、 统计及加工等操作。 统计及加工等操作。查询文件是以应用程序的方式存放在磁盘上 的独立文件,其扩展名为.QPR .QPR。 的独立文件,其扩展名为.QPR。 2. 视图 视图是从一个或几个基本表或视图中导出的虚拟表, 视图是从一个或几个基本表或视图中导出的虚拟表,它是数 据库的一部分。 视图可以引用本地的、 据库的一部分。 视图可以引用本地的、远程的或带参数的表或 视图,并且可以更新,将更新的数据返回到原始的数据源中。 视图,并且可以更新,将更新的数据返回到原始的数据源中。视 图是从一个或几个基本表或视图中导出的虚拟表 3. 查询和视图的比较 • 视图可用于更新数据源, 视图可用于更新数据源, 通过视图将数据的更新值发回 数据源表,查询只是查看数据。 数据源表,查询只是查看数据。 • 视图存在于数据库中,不是独立的文件。它依赖于某一 视图存在于数据库中,不是独立的文件。 数据库和数据表而存在,而查询是独立于数据库之外的程序文件。 数据库和数据表而存在,而查询是独立于数据库之外的程序文件。 • 查询文件可以定制查询结果,可以输出到浏览窗口、临 查询文件可以定制查询结果,可以输出到浏览窗口、 时表、 屏幕及文本文件和打印机。 时表、表、屏幕及文本文件和打印机。视图只有浏览窗口一种输 出方式。 出方式。 4
5.2 查 询
3. 定制查询 以下通过对查询进行不断修改来详细介绍“查询设计器” 以下通过对查询进行不断修改来详细介绍“查询设计器” 窗 口下半部中各个选项的设置方法。 口下半部中各个选项的设置方法。 Fields(字段 字段) (1)Fields(字段)选项卡 设计查询文件时,首先要选择表或视图,然后用Fields Fields选项卡 设计查询文件时,首先要选择表或视图,然后用Fields选项卡 来设置要输出的字段、函数或其他表达式, 来设置要输出的字段、函数或其他表达式,即选择要在查询结果中 输出的字段。 输出的字段。 Join选项卡 选项卡: (2)Join选项卡: Join选项卡主要用来确定数据表或视图之间进行查询设计时的 Join选项卡主要用来确定数据表或视图之间进行查询设计时的 联接条件。 联接条件。 Filter(筛选 筛选) (3)Filter(筛选)选项卡 利用Filter选项卡主要用来指定选取记录的条件, Filter选项卡主要用来指定选取记录的条件 利用Filter选项卡主要用来指定选取记录的条件,以便选取要 查询的记录。 查询的记录。 排序) (4)Order By (排序)选项卡 By选项卡是用来指定字段 选项卡是用来指定字段、 Order By选项卡是用来指定字段、函数或其他表达式来当作数 据表的排序依据的,以便让查询的结果以某一顺序排列。 据表的排序依据的,以便让查询的结果以某一顺序排列。 18

第5_6章 查询与视图(SQL)

第5_6章 查询与视图(SQL)

删除记录 示例: 示例: 职务= 技术员 技术员” delete from gzgl!zg where 职务=“技术员” browse &&物理删除 pack &&物理删除 browse
更新记录 【例SQL-5.prg】: 】 实发工资=工资+奖金update gzgl!gz set 实发工资=工资+奖金-水电费 &&set用于指定列和修改的值 browse &&set用于指定列和修改的值
②视图设计器
SQL命令 ③ SQL命令
【例5.4】利用视图向导,创建一个多表本地视图文 】利用视图向导, 学生成绩” 视图中的数据包含学号、姓名、 件“学生成绩”,视图中的数据包含学号、姓名、 系科和课程号、成绩等字段的内容, 系科和课程号、成绩等字段的内容,视图中只含 男同学的记录并以成绩的降序排列。 男同学的记录并以成绩的降序排列。 【例5.5】利用视图设计器,创建一个多表本地视图 】利用视图设计器, 成绩单视图” 视图中的数据包含Student表、 “成绩单视图”,视图中的数据包含 表 Course表和 表和Assign表,视图中包含 表和 表 视图中包含Student表的学 表的学 姓名、系科; 表中的课程号、 号、姓名、系科; Assign表中的课程号、成绩; 表中的课程号 成绩; Course表中的等课程名、学分等字段的内容;查询 表中的等课程名、 表中的等课程名 学分等字段的内容; 结果以学号的升序和课程号升序排列。 结果以学号的升序和课程号升序排列。 【例5.6】利用本地视图“学生视图”,更新 】利用本地视图“学生视图” Student表中的数据。 表中的数据。 表中的数据
②排序短语 &&查询全部记录, &&查询全部记录,并按职工号降序排列 查询全部记录 SELECT * FROM 职工工资 order by 职工号 desc &&统计student表中各专业的女生人数 &&统计student表中各专业的女生人数 统计student ③分组短语

VF课件

VF课件

黑龙江省黑河学院计算机系
6.1.2 视图
视图其实是从数据库表或视图中导出的“ 视图其实是从数据库表或视图中导出的“表”。 与其他表不同, 与其他表不同,视图中的数据还是存储在原来的 数据库表或视图中。 数据库表或视图中。因此可以把视图看做是一个 虚表” 尽管它是一个虚拟表, “虚表”,尽管它是一个虚拟表,但是在数据浏 查询和更新方面却有着广泛的应用。 览、查询和更新方面却有着广泛的应用。 视图是操作表的一种手段,通过视图可以查询表, 视图是操作表的一种手段,通过视图可以查询表, 也可以更新表。视图是数据库中特有的, 也可以更新表。视图是数据库中特有的,它依赖 于某一数据库而存在, 于某一数据库而存在,只有打开与视图相关的数 据库才能创建和使用视图。 据库才能创建和使用视图。
黑龙江省黑河学院计算机系
2、用“查询向导”创建查询 查询向导”
(1)打开“查询向导”。 打开“查询向导” 向导选取” (2)在“向导选取”对话框中选择要使用的向导类 型。 单击“确定”按钮,弹出“查询向导”窗口, (3)单击“确定”按钮,弹出“查询向导”窗口, 选择查询时所用的字段,单击“下一步”按钮。 选择查询时所用的字段,单击“下一步”按钮。 查询向导步骤3 筛选记录” (4)在“查询向导步骤3-筛选记录”中设置记录 筛选条件,单击“下一步”按钮。 筛选条件,单击“下一步”按钮。 查询向导步骤4 排序记录” (5)在“查询向导步骤4-排序记录”中设置排序 的字段和排序方式,单击“下一步”按钮。 的字段和排序方式,单击“下一步”按钮。 查询向导步骤5 完成”中选择“ (6)在“查询向导步骤5-完成”中选择“保存查 单击“完成”按钮, 另存为” 询”,单击“完成”按钮,在“另存为”对话框 中输入查询名称,保存查询。 中输入查询名称,保存查询。

数据库的查询和视图

数据库的查询和视图
使用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表

5查询与视图

5查询与视图

字段筛选举例
USE STUDENT SET FIELDS TO ALL LIKE *学* LIST SET FIELDS OFF SET FIELDS TO 学号,姓名 LIST
说明
若对一个表使用了多条字段筛选命令,这些命令 联合生效 字段筛选功能有效到表关闭 SET FIELDS OFF 取消字段筛选 SET FIELDS TO 设置没有可以访问的字段
SELE DISTINCT 专业 FOM STUDENT ; WHERE 奖学金>=250
查询STUDENT表中姓赵的学生的信息
SELE * FROM STUDENT; WHERE 姓名 LIKE [赵%]
查询STUDENT表中81年出生的且出生月份在9月之后的学生的信息 SELE * FROM STUDENT WHERE; 出生日期>={^1981/01/01} AND 出生日期<={^1981/12/31} 或者 SELE * FROM STUDENT WHERE; 出生日期 BETWEEN {^1981/01/01} AND {^1981/12/31} 查询STUDENT表中学号为99002和99004的学生的信息 SELE * FROM STUDENT ; WHERE 学号 IN([99002],[99004]) 或者 SELE * FROM STUDENT ; WHERE 学号 =[99002] OR 学号=[99004])
查找主控索引表达式值与命令中表达式值相等的第一 条记录
说明
必须先按查询字段建立主控索引 若找到, FOUND()=.T. EOF()=.F.定位到该记录 未找到, FOUND()=.F. EOF()=.T.定位到文件尾 继续查找使用SEEK命令

查询和视图

查询和视图
2.使用Select-Sql语句建立查询 (1)单表的查询 命令格式: Select <选项> [As<列标题>], <选项> [As<列标题>] ,„„ From <数据表文件名> [Where<过滤条件> [Distinct]
选项有下述几种表示形式:
◆可以是From <数据表文件>中的字段名或者由 字段名、常量、函数、运算符组成的有效表达式。 Avg〈字段名〉:求一列数据的平均值。 Count(*):输出查询的行数(记录的条数)。 Min〈字段名〉:输出列中的最小值。 Max〈字段名〉:输出列中的最大值。 Sum〈字段名〉:输出一列数据的和。 进行各种统计和运算
第八章 查询和视图
查询和视图是Visual Foxpro实现对一个数据表或多个 相关联的数据表进行数据检索的两个重要工具。 8.1 查询 一、查询的基本概念 查询就是根据用户给定的条件,从指定的一个表或多个 相关联的表中获取数据的一个操作过程。 获取数据:对数据表进行浏览、筛选、排序、检索、统 计,形成不同类型的文件,产生结果多样化的数据资源。 多个相关联的表:表与表之间有公共字段(两表都具有 的共同字段)。 建立查询的方法有三种: ◆使用Select-Sql语句建立查询 ◆使用查询设计器建立查询 ◆使用查询向导建立查询
Байду номын сангаас
例:查询学生档案表中年龄大于99212班的所有学生的各项信 息。 Select * From 学生档案表 Where 年龄>All(Select 年龄 From 学生档案表 Where 班级="99212") 或 Select * From 学生档案表 Where 年龄>(Select max(年龄) From 学生档案表 Where 班级="99212") 问:若把该题中的ALL改为ANY,是何意思?

VFP第五章 查询与视图

VFP第五章 查询与视图

利用视图向导创建本地视图
用本地视图向导创建本地视图,可采用以下方法:
方法一:“工具”菜单向导全部本地视图向导
方法二:“文件”菜单新建视图向导 方法三:项目管理器选定数据库本地视图新建 视图向导 方法四:数据库设计器数据库菜单新建本地视图 视图向导
利用视图向导创建本地视图
1. 当视图使用的数据源是当前数据库中的表或存在的 视图,则所建立的视图是本地视图; 2. 当数据源采用的是当前数据库之外的其他数据,包 括在当前VFP环境下建立的其他数据库和表,以及 其他的ODBC数据源,则建立的是远程视图。 若希望针对数据库服务器上的ODBC数据源进行 查询,则应该建立远程视图。 所谓ODBC是Open Database Connectivity的 缩写,即开放式数据库连接。它是用于数据库服务 器的一种标准协议(规则),它向应用程序提供访 问数据库服务器上所存放数据库的接口,以便应用 程序访问。
(5)执行查询
① “查询”菜单“运行查询”命令 ②在查询设计器窗口单击右键,快捷菜单“运行 查询”命令 ③ “程序”菜单“运行”命令→ 打开“查询文 件” →“运行”按钮 ④ 命令窗口中执行命令“DO <查询文件名.qpr>
(6) 查询的保存 查询窗口关闭前,以下三种方法可用来保存 查询设置: ① 按Ctrl+W ② 单击窗口右上角“关闭”按钮、双击窗 口左上角、或单击窗口左上角后选定“关闭” 命令,均会出现“确认”对话框 ③ “文件”菜单“保存”命令
二、 将查询结果以图形方式输出
例1 生成“zhggz”的表单,以图形方式输出。 S1:打开职工.dbf,创建一个新查询 S2:设置查询去向为“图形” S3:单击工具栏的“运行”按钮,弹出图形向导的 “步骤2——定义图形布局”对话框 S4:确定数据系列、图例: S4.1:数据系列:将要输出的数值型字段拖到“数 据系列”列表框,可以有多个数据系列。如:工资 等 S4.2:图例:将要显示的字符型字段拖到坐标轴图 形框。如:职工号.

视图与查询的区别

视图与查询的区别

一、视图与查询的区别功能不同。

视图可以更新字段内容并返回原表,而查询文件中的记录数据不能修改。

这是视图与查询的本质区别。

归属不同。

视图不是一个独立的文件,它保存在数据库中。

查询文件是一个独立的文件,不属于数据库。

访问限制不同。

视图的数据来源可以是本地数据源,也可以是远程数据源,而查询不能访问远程数据源。

输出去向不同。

视图只能当表使用,而查询可以选择多种查询去向,如表、图表、报表、标签等多种形式。

使用方法不同。

视图可以作为数据源被引用,而查询不能被引用。

使用方式不同。

视图只有所属的数据库被打开时才能使用。

而查询可在“命令”窗口中执行。

二、数据库在创建关系之前,要关联的表之间必须有公共的字段和索引。

在数据库中创建的关系称为“永久关系”,之所以成为永久关系,是因为这种表与表之间的关系作为数据库的一部分存储在数据库文件中。

两个建立了关系的表可以分为父表和子表。

显然,一个父亲可以有一个或多个子女,而每个子表只能有一个父表。

这样两个表之间的关系就由子表在建立关系使用的索引类型决定了。

如果子表索引类型为[主索引]或[候选索引],那么,两表之间就是一对一关系。

否则,若子表索引类型为[普通索引]或[唯一索引],那么,两表间就是一对多关系。

而作为父表来说,它在建立关系时使用的索引类型就只能是[主索引]或[候选索引]。

三、查询在多表查询中,可以使用数据库表、自由表、本地视图或远程视图的任意组合。

在查询中,我们在表之间建立的联接与数据库中表之间的关系是不同的。

在查询中,表之间建立的联接是以选择标准存在,不会象数据库中表之间的持续关系那样持续保存下来,也不必建立在索引的基础上。

只有当字段的大小相等,且数据类型相同时才能建立联接。

同表之间的永久关系一样,一个表不能同时为两个父表的子表,也不能同时为两个子表的父表。

???。

查询与视图

查询与视图
查询与视图
使用查询设计器建立查询
• Visual FoxPro可以使用查询工具(查询向 导、查询设计器等)可以创建查询. • 查询是指预先定义好的一个SQL SELECT语句 • 建立的查询以扩展名为.QPR的文件保存 在磁盘上这是一个文本文件。
建立查询
• 利用查询设计器建立查询的基本步骤如下:
多表查询
• 1.使用查询设计器创建多表查询,查询所有成绩大于 90的学生姓名和课程名称。 • SELECT 学生.姓名, 选课.成绩; • FROM 成绩管理!学生 INNER JOIN 成绩管理!选课; • INNER JOIN 成绩管理!课程 ; • ON 课程.课程号 = 选课.课程号 ; • ON 学生.学号 = 选课.学号; • WHERE 选课.成绩 > 90
– 视图设计器是建立和修改视图最直接、最方便、最 有效的工具。
– 【例4.55】实例学生成绩管理系统:建立视图 Student_course,内容是全部学生的学号、姓名、院系、课 程号、成绩信息。
– 视图设计器有和查询设计器的使用方式几乎 完全一样。主要有三点不同:
①查询设计器的结果是将查询以.QPR为扩展名的 文件形式保存在磁盘中;而视图设计完成后, 在磁盘上找不到类似的文件,视图的结果保存 在数据库中; ②由于视图是可以更新的,所以它有更新属性需 要设置,为此在视图设计器中多了一个“更新 条件”选项卡。 ③视图设计器没有“查询去向”的问题。

(1)打开查询设计器 (2)进行查询设置 (3)运行查询 (4)保存查询
• 查询设计器与SQL语言的对照
单表查询
• 1.使用查询设计器创建单表查询,查询 所有选修了课程的学生的学号(去掉重 复值)。 • SQL语句: • select distinct 学号 from 选课 • 利用查询设计器创建,产生的SQL语言 为:

查询与视图

查询与视图

返回 退出
CopyRight 基础部
任务三 使用查询设计器创建查询
3.设计筛选条件 “条件”下拉框中的比较运算表所示。
操作符 含 义
指定字段大于等于实例文本的值
下一页 例

>= <= Is Null Between In
> =60 筛选出字段值大于等于60的记录 筛选出字段值大于等于 的记录 < =60 筛选出字段值小于等于60的记录 筛选出字段值小于等于 的记录 Xscj.英语 Null 英语Is 英语 筛选出英语字段值中有Null的记录 筛选出英语字段值中有 的记录 Between 50 ,70 筛选出字段值介于50~ 的记录 筛选出字段值介于 ~70的记录 In "党员","团员" 党员" "团员" 筛选出字段值为党员或团员的记录
CopyRight 基础部
视图的建立
(l)用 VIEW命令打开视图设计器 (l)用CREATE VIEW命令打开视图设计器 建立视图。 建立视图。 (2)利用 新建” 利用“ (2)利用“新建”对话框打开视图设计 器建立视图。 器建立视图。 (3)在项目管理器的 数据” 在项目管理器的“ (3)在项目管理器的“数据”选项卡中 打开视图设计器建立视图。 打开视图设计器建立视图。 (4)利用SQL命令CREATE VIEW... AS... (4)利用SQL命令CREATE 利用SQL命令 建立视图。 建立视图。
CopyRight 基础部
使用查询向导创建查询
1.设计查询
制作方法 数据源 选择字段 筛选条件 排序依据
选择查询制作方法 本任务所选择的查询文件制作方法 A.查询向导 B.查询设计器 SQLC.SQL- Select

《Visual FoxPro 6.0数据库与程序设计》课件 第4章 查询和视图(电子版)

《Visual FoxPro 6.0数据库与程序设计》课件 第4章  查询和视图(电子版)

利用查询设计器得到的查询文件是一个文本文件,用户可 以查看其内容。 打开查询设计器,选择“查询|查看SQL”命令,打开一个 只读窗口,其中显示了一条SQL语句,它包含了用户创建这个查 询的所有信息。
18
4.2.1 视图的概念
通过视图不仅可以从多个表中提取数据,还可以在改变视
图数据后,把更新结果送回到数据源表中。 视图不能以自由表文件的形式单独存在,它必须依赖于某 个数据库,并且只有在打开相关的数据库之后,才能创建和使
(6)运行查询,获得查询结果。
4
4.1.2 创建查询
1. 启动查询设计器 (1)项目管理器:选择 “查询”数据项,单击“新建”按钮, 出现“新建查询”对话框,选择“新建查询”命令,打开查询 设计器。 (2)菜单:选择“文件|新建”命令,在“新建”对话框中选 择“查询”文件类型,然后单击“新建文件”按钮。
第4章 查询和视图
2
4.1 查询
查询和视图是检索和操作数据库的两个基本手段。

两者都可以从一个或多个相关联的数据表中提取有用的信息。 查询可以根据表或视图定义,它不依赖于数据库而独立存在, 可以显示但不能更新由查询检索到的数据(查询结果是只读 的)。

视图兼有表和查询的特点,它可以更改数据源中的数据,但
例:将“学生1”表中的“学号”字段更名为“学生证编号“
ALTER TABLE 学生1 RENAME COLUMN 学号 TO 学生证编号
对“学生1”表中的“姓名”和“出生日期”字段建立主索引
ALTER TABLE 学生1 ADD PRIMARY KEY 姓名+DTOC(出生日期) TAG 姓名_生日
(3)命令:CREATE QUERY <查询文件名>

查询与视图总结

查询与视图总结

查询是从指定的表或视图中提取满足条件的记录,然后按照想得到的输出类型定向输出查询结果,比如表、临时表、报表、标签等。

查询文件的扩展名为.qpr.●创建查询,可以使用菜单打开查询设计器,也可以利用交互命令creatquery打开查询设计器,编辑查询。

●创建查询,也可以使用sql-select语句。

查询设计器界面的各项选项卡和sql-select语句的各短语是相对应的。

1)“字段”选项卡对应于select短语。

2)“连接”选项卡对应于join-on 短语,用于编辑连接条件。

3)“筛选”选项卡对应于where短语,用于指定查询条件。

4)“排序依据”选项卡对应于order by 短语,用于指定排序字段和排序方式;“杂项”中的“前面记录”对应top。

5)“分组依据”选项卡对应于group by 短语和,用于分组和设定组内条件;“满足条件”对应于having短语6)“杂项”可以指定是否要重复记录(对应于distinct)及列在前面的记录(对应于top短语)。

1.简单查询:2,3,5,7,10-两个条件,12,15-两个排序,28-虚拟字段,29;查询前几项:24-1;构建虚拟字段:11,132.复杂查询:16,17,18,19,223.简单分组查询:20,31;复杂分组查询:25,27视图兼有“表”和“查询”的特点,与查询类似的地方是,可以用来从一个或多个相关联的表中提取有用信息;与表相类似的地方是,可以用来更新其中的信息,并将更新结果永久保存在磁盘上。

视图是操作表的一种手段,通过视图可以查询表,也可以更新表。

4.简单视图:8,14,20,235.利用视图建查询:1,4,6,17-2,24-26.视图命令:8,14,20以下题号依据为第五章-1:SQl命令:数据定义与操纵语句:数据定义语句:建表:create table 表名 (字段名1 类型(宽度,[小数]),…….) 添加字段:alter table 表名 add 字段名 1 类型(宽度,[小数]):5-3,6-3,7-1,8-2删除表: drop table 表名:数据操纵语句:添加记录:insert into 表名 [(字段名表)] values (表达式表):1,3,4-4,修改记录:update 表名 set 字段名=表达式 where <条件>:2,5-4,6-4,7-2,19-2删除记录:delete from 表名 where <条件>子查询:21-1,27-2,28-2特殊条件:25。

第6章 查询和视图

第6章 查询和视图

第6章 查询与视图
在“查询设计器”中完成的操作如下:
(1)启动查询设计器。添加要从中查询数据的表或视 图。 (2)选择输出字段。选择出现在查询结果中的字段, 或定义表达式的别名。 (3)关联表。对于多表查询,需建立表与表之间的关 联。 (4)筛选。设置选择记录的筛选条件。 (5)排序查询。设置查询结果中记录的显示顺序。 (6)分组查询。将数据表中某关键字段相同的记录分 组生成一条记录。 (7)查询去向。指定将查询结果输出到什么地方。 (8)运行查询。
第6章 查询与视图
第6章 思考与练习
一、思考题
1.如何关闭Visual FoxPro6.0?(请至少说出三种 方法) 2.Visual FoxPro6.0主窗口主要包括哪几部分? 3.“项目管理器”窗口有哪几部分组成? 4.以“学生”为文件名建立一个项目文件的步骤 是什么? 5.简述在“项目管理器”中新建、修改文件的步 骤。
第6章 查询与视图
6.3.2 创建远程视图
(1)在“项目管理器”中的一个数据库下选择 “远程视图”,然后单击“新建”按钮;打开“选 择连接或数据源”对话框。 (2)在“选择连接或数据源”对话框中,选择可 用的数据源或命名连接并且单击“确定”按钮。如 图所示。
第6章 查询与视图
(3)如果需要的话,提示输入用户标识和口令, 如图所示。
第6章 查询与视图
6.2.1 利用向导创建本地视图
1. 使用本地视图向导创建本地视图
(1)打开“C:\liuli\教师情况.dbc”数据库。 (2)选择“文件”菜单中的“新建”命令,在出现 的“新建”对话框中选择文件类型为“视图”,然后 单击“向导”按钮。
第6章 查询与视图
第6章 查询与视图
(5)单击“下一步”按钮,在“步骤5 - 完 成”对话框内选择“保存视图”或在“视图 设计器中打开并修改”选项。或者单击“预 览”按钮,进入浏览的预览显示状态查看是 否合适,并返回前面的步骤进行适当修改。 此对话框与6.1.1节中“查询向导”的“步骤5 - 完成”对话框内容相似。 (6)单击“完成”按钮完成本地视图的向导 设计,并保存刚创建的视图,如这里保存到 “D:\liuli\教师情况.dbc”数据库中,视图名为 “视图1”。

sql数据库的查询和视图

sql数据库的查询和视图

第4章数据库的查询和视图一、数据的关系运算:运算的对象和结果都是表(表达方式)包括:选择、投影、连接1.选择(selection):单目运算从行方面分割表记:σF(R)其中:F为条件表达式 R为表例:σF(XS),F为性别=‘男’Λ专业名=‘计算机’2.投影(projection):单目运算从列方向分割表记:ΠA(R)其中:A为列名列表;R为表例:Π姓名,专业名,总学分(XS)3.连接(join):多目运算记:R F S 其中:F为条件表达式;R、S为表①自然连接:R S,按两表的共同属性连接例:XS XS_KC? XS XS_KC KC②条件连接:R F S,两表按下条件连接例:上例中的条件F二、数据库查询使用select 语句实现表的关系运算,用符合条件的数据构成结果表语法:select <select_list>into new_table_nameform table_sourcewhere search_conditiongroup by group_by_expressionhaving search_conditionorder by order_expression [ASC/DESC] 1.选择列①选择表中的列:select列名,列名,……(*)from表名where 条件②在结果表中使用文字串(增强检索结果的可读性)select‘串’,列名,‘串’,列名,……from表名where条件③改变结果列标题(结果表更个性化,可读性强)select列名AS新列标,列名AS 新列标,……(或新列标=列名,新列标=列名,……)from表名where条件④结果表数据替换(使检索结果更能反映出有用信息)select新列标=case when条件1 then‘串’(表达式)when条件2 then‘串’(表达式)……else表达式endfrom 表名where 条件⑤结果表中显示列计算值select表达式,表达式,……from表名⑥消除结果集中的重复行select distinct列名,列名……⑦限制结果集返回行数select top n 列名,列名……2、选择行(用where条件过滤)(紧在from之后)①表达式比较:(比较运算符)比较的表达式之一或两个为NULL时,返回unknown,否则返回true/false②模式匹配:(like谓词)[谓词:返回逻辑值的运算符、关键字]字符串表达式1 [not] like字符串表达式2 [escape‘不匹配字符’](可以使用通配符进行匹配)匹配通配符:%:任意一串字符例:select * from xs where 姓名 like‘王%’_:任意一个字符例:select * from xs where 姓名 like‘王_’[]:指定范围,如[a-z]、[0-9]、[abcde]……[^]:指定不属于范围,如[^a-z]、[^0-9]、[^abcde]③范围比较:表达式[not] between 表达式1 AND表达式2注:表达式1<=表达式2,包括表达式1和2表达式IN(表达式1,表达式2,……,表达式N)④空值比较表达式is [not] NULL⑤contains 谓词:在表中指定字符串的搜索(精确、模糊、加权匹配)contains(列/*,‘匹配串’)注:先为要操作的表建立全文索引(第六章Create Index,企业管理器)⑥freetext 谓词:与contains相似,不如contains精确freetext(列/*,‘匹配串’)⑦子查询:用另一个查询结果做为where条件的一部分,可嵌套★ IN:判断某个值是否在子查询结果中,只能返回一列数据。

5.查询和视图

5.查询和视图

二、SELECT-SQL命令 语法格式: 1、Select 输出内容,说明要查询的数据,后面一般 跟字段名或表达式 2、From 说明要查询的数据来自哪些表,可以对多表 进行查询 3、where 说明查询的条件 4、group by 对查询结果进行分组 5、having 必须跟随group by使用,用来限定分组必 须满足的条件 6、order by 用来对查询结果进行排序 操作时,注意执行顺序:2 3 4 5 6 1
例6:查询每门课程的课程代号和名称以及最高分, 并把查询结果保存到kc_maxcj.dbf表文件中。
练习: 1.查询cj表和kc表中每门课程的kcdh,kcm,选 课人数,总成绩,最高分,并将结果保存到kccj 表文件中 2.将上述查询结果先按总成绩的降序,再按课 程代号升序来排序 3.查询xim表,xs表和cj表中”信息管理系”学 生的xh,xm,ximing,总成绩,平均成绩,最低分, 要求输出总分不低于480,最低分不低于60分 的所有学生情况,最终按xh排序
例1:查询所有男生的户籍情况 查询结果包含学生学号,姓名,性别, 籍贯,出生日期。按学号排序。 例2:查询成绩在80分以上的课程代号、 课程名、学生学号、成绩。 且要求结果按课程代号升序排序,课 程代号相同时按成绩降序排序。
例3:查询每门课选课人数,平均成绩,
最高分和最低分。 查询输出字段包含课程代号,课程名, 选课人数,平均成绩,最高分,最低 分。且按平均成绩降序排序
三、select-sql 应用举例
单表查询: 例1:显示js表中所有教师的工号和姓名 例2:显示学号以“99”开头的学生情况 例3: 从高到低显示cj表中代号为“01”的课程的学 生 和学号和成绩 多表查询: 例4: 显示学号以”99”开头的学生学号,姓名,课程代 号和成绩

vfp的查询和视图

vfp的查询和视图
▪ 如果视图不存在,可以用以下命令建立: open database sjk create SQL VIEW viewkcxscj AS; select kc.kcm,cj.xh,xs.xm,cj.cj; from sjk!xs inner join sjk!cj inner join sjk!kc; on kc.kcdh=cj.kcdh on xs.xh=cj.xh
二、视图的创建和使用
视图的概念:把分散在相关表中的数据通过联 接条件把他们收集到一起,构成一张“虚表”。 这张“虚表”就是视图,视图是数据库的一个组 成部分,是基于表的并且可更新的数据集合
视图与查询的区别:视图除了可以用来查询数 据之外,还可以当作表来使用,可以作为数据源, 也可对查询出来的数据进行修改并送回源表中
❖多表查询的创建:步骤 例题 ▪ 若有2张以上的表,在添加时一定要注意先后次 序,“纽带表”要放在两张“父表”之间 ▪ 若已进行了永久性关系的设置,则无须进行联接 ▪ 修改联接条件可在“查询设计器”—“联接”卡 片中进行 ▪ 联接条件和筛选条件类似,都是选出符合条件的 记录;不同的是筛选是将字段值和筛选值进行比 较,而联接条件是将一张表中的字段值与另外一 张表中的字段值进行比较
❖查询时会考到的最难的程度如下例:
查询信息管理系中所有成绩在480分以上,并且各门课程的成
绩不低于70分的学生。要求在查询的结果中包含学号,姓名, 总分,均分,最低分,并按照总分从高到底排列
❖ 一部分查询的练习 1. 查询学生的学号,姓名,系名,总分和平均分, 按照系名升序排序,同一个系的学生按照总分 降序排序。 2. 查询每个系每门课程的总分和平均分,要求输 出课程名,课程代号,系名,每个系的平均成 绩和总成绩,按课程代号升序排序 3. 查询各个系每位教师的课时数,要求输出系名, 工号,姓名,课时数,并按系名升序排序,同 一个系的教师按照工号升序排序 4. 查询计算机科学系各位教师的课时数,要求输 出工号,姓名,系名,课时数,并按工号降序 排序,并且将查询信息保存为表,表名为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

select * from js
查询某个、几个字段
例:1、查询学生表(xs)中的专业代号( zydh) 2、查询学生表中的姓名(xm)、学号(xh)
1、SELECT zydh FROM xs 2、SELECT xm, xh from xs
去除重复信息
例: 查询学生表中的专业号(zydh), 对于系号相同只显示1次。
[[INTO ARRAY 数组名 | CURSOR 临时表名 | DBF 表名 | TABLE 表名 ] | [TO FILE 文件名 [ADDITIVE] | TO PRINT [PROMPT] | TO SCREEN] ]
[WHERE 条件表达式] [GROUP BY 列名 [,列名…] [HAVING 条件] ] [UNION [ALL] SELECT 命令] [ORDER BY 表达式 [ASC | DESC][,…]]
数据区间查询
返回
例 查询工龄不在8~12年之间的教师的工号
、姓名和工龄。
SELECT gh as 工号, xm as 姓名 , ; year(Date())-year(gzrq) as 工龄; FROM js; WHERE year(Date())-year(gzrq) ; NOT BETWEEN 8 AND 12
ORDER BY子句 可对查询结果按子句中指定的列
的值排序。
可以多个列,用逗号分隔,写在前面的优先,可 以写列名或编号。 ASC 表示升序, DESC 表示降序。缺省情况下, 是以升序排序(ASC)。
排序查询结果
例:查询教师表(js)中工龄在10年以上(包括
10年)的教师的工号(gh)、姓名(xm)和工龄 (gl) ,并按工龄由高到低列出。
SELECT DISTINCT zydh FROM xs
输出字段表达式
查询教师表js中,教师的工号(gh)、姓名 (xm)、性别(xb)和年龄
例:
SELECT gh ,xm ,xb ,; year(date())- year(csrq) as 年龄; FROM js
WHERE子句
说明查询的条件:
5.1.3 SELECT - SQL应用
一、简单查询
SELECT子句 用于指明查询输出的项目,可
以是字段、表达式。利用表达式可以查询表 中未存储但可以计算出的结果。
FROM子句
图名。
指明数据源即被查询的表或视
SELECT 和 FROM 子句是每个 SQL 查询语句所 必须的。
查询全部信息
例: 查询教师表(js)的全部信息
数据操纵语言(DML)
数据查询语言(DQL)
5.1. 2 SELECT - SQL命令
SELECT - SQL命令格式
SELECT FROM
[ ALL | DISTINCT ] [ TOP n [ PERCENT ] ] [别名.]列表项 [AS 列名] [,[别名.]列表项 [AS 列名] …] [ 数据库! ] 表名 [ 别名 ] [ , [ 数据库! ] 表名 [ 别名 ] …] [INNER | LEFT | RIGHT | FULL JOIN 表名 ON 联接条件]
SELECT 列表项用于指明查询输出的项目 FROM子句指明被查询的自由表、数据库表或视图名。 INTO、TO 子句指明查询结果保存在何处。 WHERE 子句指明查询的联接条件或筛选条件 GROUP BY子句表示将查询结果按指定列的值分组 UNION子句把一个SELECT语句的查询结果同另一个 SELECT语句的查询结果组合起来。 ORDER BY子句可对查询结果按子句中指定的列的值 排序
SELECT gh, xm, year(Date())-year(gzrq) _______________ as 工龄; FROM js; year(Date())-year(gzrq) WHERE ______________________>= 10; ORDER BY 3 DESC
数据区间查询:在查找中,如果要求某列的
数值在某个区间内,可用谓词:
BETWEEN…AND… 表示;
如果要求某列的数值不在某个区间内, 可用谓词: NOT BETWEEN…AND… 表示。 当然查询的条件也可以直接用相应的逻 辑表达式来表示。
数据区间查询
例 查询工龄在8~12年之间的教师的工号、姓
名和工龄。
SELECT gh as 工号, xm as 姓名, ; year(Date())-year(gzrq) as 工龄; FROM js; WHERE year(Date())-year(gzrq) ; BETWEEN 8 AND 12
3. 面向集合的操作方式
4.语言简洁、易学易用
5.以同一种语法结构提供两种使用方式
既可以作为交互式语言独立使用,也可以作 为子语言嵌入宿主语言中使用
二、VFP支持的SQL命令
1. CREATE CURSOR - SQL 2. CREATE TABLE - SQL 数据定义语言(DDL) 3. ALTER TABLE – SQL 4. DELETE - SQL 5. INSERT - SQL 6. UPDATE – SQL 7. SELECT - SQL
引言
例 1、为什么要学习查询与视图?
视图和查询利用查询,可以在多个表 中提取特定的数据,方便地实现对各 种数据的查询。 2、SELECT-SQL命令重要性 查询、视图中存放的都是 SELECT-SQL命令
5.1 SQL语言和查询技术 5.2 查询的创建和使用 5.3 视图的创建和使用
5.1 SQL命令和 查询技术
用来指定筛选记录的条件。有多个条件 时,可用AND或OR连接。
条件查询
例: 查询学生表(xs)中性别是女的学生的 学号(xh)、姓名(xm)、性别(xb)及年龄
SELECT xh, xm,xb, year(date())- year(csrq) as 年龄; FROM xs ; Where _________ xb= "女"
5.1.1 SQL 语言概述
SQL的含义:SQL是英文Structure Query
Language(结构化查询语言)的缩写,是关系数据库语言
通用的结构ห้องสมุดไป่ตู้询语言。
SEQUEL2
SQL 86 SQL 89
SQL:1999 SQL 92
一、SQL语言主要特点
1. 综合统一
2. 高度非过程化
数据定义语言,数据操纵语言, 数据查询语言,数据控制语言
相关文档
最新文档