查询的意义:
通过设置筛选条件,从给定的一个或多个表中检索出符合要求的字段、记录、以及排序结果、分组统计;
也可以将查询的命令保存为程序文件,多次运行,每次运行可以获得动态记录集;
所以,建立数据库和表是通过查询来体现其应用价值。
1.简单的基于单表的查询。
无条件查询。
例4.1 从职工关系中检索所有工资。
select 工资 from 职工。
select distinct 工资 from 职工。
distinct短语的作用是去掉查询结果中的重复值。)
例4.2 检索仓库关系中的所有元组。
select 仓库号,城市,面积 from 仓库。
此命令等同于
select * from 仓库。
其中“*”是通配符,表示所有属性,即字段。
有条件查询。
例4.4 检索哪些仓库有工资多于1210元的职工。
selest distinct 仓库号 from 职工 where 工资》1210
例4.5 给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。
select 职工号 from 职工;
where 工资<1250 and ;
(仓库号="wh1" or 仓库号="wh2")
select是一条完整的语句,如果要分行使用分号“;”续行符)断开,但是,分号前后不能输入其它任何符号。
这里用 where制定了查询条件,查询条件可以是任意复杂的逻辑表达式。
仓库号="wh1" or 仓库号="wh2" 等价于:
仓库号 in ("wh1","wh2")
仓库号 not in ("wh1","wh2") 等价于:
仓库号<>"wh1" and 仓库号<>"wh2"
2.基于多表的联合查询。
如果目标字段来自一个表,筛选条件来自另一个表。
例如:查询职工工资大于2000的职工所在城市及仓库面积?
目标字段来自仓库表,条件来自职工表)
select 城市,面积 from 仓库表, 职工表。
where工资》2000 and (仓库表。仓库号=职工表。仓库号)
通过检索职工表,可以获得工资》2000的职工所在仓库号,再利用获得的仓库号去检索仓库的信息。
等价于:select 城市,面积 from 仓库表 where仓库号in
select仓库号 from职工表 where工资》2000)
where 仓库号in() 嵌套子查询。
这就意味着工资》2000的职工所在仓库的仓库号,是前一个查询的取值范围。
如果目标字段来自多个表,筛选条件来自多个表。
例如:查询职工工资大于3000的工作的城市,工资。
select 城市,工资 from 仓库表, 职工表。
where工资》3000 and (仓库表。仓库号=职工表。仓库号)
等价于:select 城市,工资 from 仓库表 inner join职工表 on
仓库表。仓库号=职工表。仓库号 where工资》3000
自然连接(内连接)
学生表(学号,姓名,性别,专业,出生日期)
考试表(学号,科目,成绩,时间)
例题1:查询考试成绩大于等于90的学生的姓名、专业?
select distinct 姓名,专业 from 学生表 where学号。
in (select 学号 from考试表 where成绩》=90)
例题2:查询没有考试的学生的姓名?
select 姓名 from 学生表 where 学号。
not in (select 学号 from考试表)
3.特殊查询。
1)数值区间作为条件(必须是闭区间而且左小右大)
成绩 between 60 and 100 等价于:
成绩》=60 and 成绩<=100
日期、时间。
出生日期between and
year(出生日期)=1990
2)模糊查询。
例题1:从**商表中检索出全部公司的信息(以“公司”两个字结尾的**商名称)?
select * from **商 ;
where **商名 like "%公司"
例题2:查询学生表中姓“李”的学生信息?
select * from 学生表 ;
where 姓名 like "李%"
或:where left(姓名,2)="李"
例题3:查询科目中包含“计算机”三个字的考试信息?
select * from 考试表 ;
where 科目 like "%计算机%"
这里的like是字符串匹配运算符, 通配符:
通配符”%”表示0个或多个任意字符;
通配符“_”表示一个任意字符。
3)取反运算、集合运算。
= not()
4)空值运算某些字段的取值允许为空值。
字段名 is null
字段名 is not null
4.查询结果排序。
例4.14按职工的工资值升序检索出全部职工信息?
select * from 职工 order by 工资 asc
按降序排序为。
select * from 职工 order by 工资 desc
例4.15
先按仓库号排序,再按工资排序输出全部职工信息?
select * from 职工 order by 仓库号, 工资。
默认排序是按asc。
5. 统计与分组统计。
用于计算检索的函数有。
count——计数。
sum——求和 **g——计算平均值。
max——求最大值 min——求最小值。
它们都是对于表的记录或字段进行纵向的统计。
例4.17 求支付的工资总数。
select sum(工资) from 职工
例4.18 求在wh1和wh2仓库工作的职工工资总和。
select sum(工资) from 职工;
where 仓库号 in ("wh1","wh2")
例4.20 求在wh2仓库工作的职工的最高工资。
select max(工资) from 职工;
where 仓库号 ="wh2"
例4.21 求每个仓库的职工的平均工资。
select 仓库号,**g(工资) from 职工;
group by 仓库号。
在此例中,首先按仓库号属性分组,然后再计算每个仓库的平均工资。
例4.22 求至少有两个职工的每个仓库的平均工资。
select 仓库号,count(*)**g(工资);
from 职工;
group by 仓库号 h**ing count(*)2
例题:统计学生表中学生的总人数?
统计每个专业的学生的人数?
select count(*)as 总人数 from 学生表
select 专业,count(*)as 专业人数
from 学生表 group by专业。
分组的意义在于不是统计整个字段,而是按一定标准将字段取值分组,所以,分组的字段取值会重复,把相同的值分为一组。
6.超级连接、自连接、表的别名。
from inner join on
关键字 top n与order by desc / asc子句配合显示结果集前面的最高或最低的n行记录;
没有排序,不能独立使用此短语;
8.查询的导出。
into array 数组。
into cursor 临时表只读,不能修改。
into table 永久表是普通表,可以修改。
to file 文本文件。
后两种格式,都能在磁盘上找到对应的导出文件。dbf .txt
9.数据操纵。
插入一条记录。
insert into 表 values()
insert into 表 from array 数组名。
删除符合条件的记录(逻辑删除)
delete from 表 where 条件。
更新指定记录的字段值。
update 表 set 字段=赋值 where条件。
不带条件,删除、更新表的所有记录;
传统的vf中命令:
insert 只能插入空行,再手动输入数据;
replace 字段 with 赋值 for 条件。
delete for条件。
不带条件,删除、更新表的当前一条记录;
10.数据定义。
create database 数据库名。
create table 表名(字段声明列表)
primary key 声明主键字段。
check 字段有效性规则。
error 错误提示信息。
default 字段默认值。
foreign key外键字段tag 别名 references 哪个表。
name 为新建的表指定长文件名。
free 建立自由表。
null not null 字段是否允许为空。
unique 建立候选索引。
sql的create命令建立的新表自动在最低工作区以独占方式打开。
drop table 表删除表的对应文件。dbf
alter table 修改表。
1)增加新字段。
2)删除已有的字段。
3)修改已有字段的类型、宽度。
4)为已有的字段设置规则、默认值、提示信息。
5)删除字段的规则。
6)重命名字段名。
7)建立表的候选索引。
11.其他。
视图的建立create view 视图名 as 查询。
基本理论:1)视图是一个定制的虚拟表;
2)可以是本地视图、远程视图、带参数的。
3)视图的建立可以引用一个表、多个表、已有的视图。
4)视图是可更新的。
5)视图不是个文件,存储在数据库中。
6)视图也称为窗口。
7)视图依赖于表,不能独立存在,不能直接修改结构。
8)视图是根据查询定义的。
9)视图不含有真正的数据,每次运行视图,都是临时的从数据源获得数据。
10)视图可以被查询,但是不能insert/delete/update
sql 习题。
1. 在sql的select查询结果中,消除重复记录的方法是:
a) 通过指定主关系键 b) 通过指定惟一索引。
c) 使用distinct子句 d) 使用h**ing子句。
2.以下有关sql的select语句的叙述中,错误的是:
a) select子句中可以包含表中的列和表达式。
b) select子句中可以使用别名。
c) select子句规定了结果集中的列顺序。
d) select子句中列的顺序应该与表中列的顺序一致。
有数据库:学院。dbc,其中有“教师”表和“学院”表。
vf第4章操作题目
一 在考生文件夹下完成如下操作 1.打开 订货管理 数据库,并将表order list添加到该数据库中。2.在 订货管理 数据库中建立表customer,表结构描述如下 客户号字符型 6 客户名字符型 16 地址字符型 20 字符型 14 3.为新建立的customer表创建一个主索引,索引名和索引...
2023年秋季托班安全总结 vf
1 作为老师首先我们自身要有较强的安全责任保护意识,要加强责任心,要时刻把安全工作放在首位,保证每位幼儿的安全。告诉幼儿不乱动电器 电源 活动时不推不挤,来园向老师问好,离园再见,每天确保明白班级有多少幼儿,做到心中有数,以免幼儿丢失。保育老师要做好午睡值班工作 要认真巡查发现问题及时处理。同时要经...
培训总结 4
初中数学新课标远程培训总结。2013年1月我参加了新课程标准培训学习,认真的聆听了专家,教授的精辟讲解和分析,使我提高了认识,更新了教学观念,提升了教学思想和方法,也认识到了自己教学中存在的不足,下面就是我的点滴体会 一 提高了思想认识。通过这一段时间的学习,使我更深刻的了解到了陶行知老先生的教育思...