计算机二级vfp-SQL命令集合_第1页
计算机二级vfp-SQL命令集合_第2页
计算机二级vfp-SQL命令集合_第3页
计算机二级vfp-SQL命令集合_第4页
计算机二级vfp-SQL命令集合_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Vf讲义第二部分第一节 关系数据库标准语言1、 SQL概述(1 SQL(structured query language)是结构化查询语言的缩写,是关系数据库的标准语言。SQL的核心是查询,主要功能为:数据查询(Select、数据定义(Create、Drop,Alter、数据操纵(Insert ,Update , Delete、数据控制(Grant , Revoke(2 特点:A: 是一种一体化的语言B: 是一种高度非过程化的语言C: 非常简洁D: 既可在命令窗口中使用,也可在程序中使用2、 数据查询(1 简单查询A: 格式:select distinct 字段名列表 from 表名 whe

2、re 条件 select 姓名,性别,出生日期 from zgdaselect * from zgdaselect distinct 职称 from zgdaselect distinct 性别,职称from zgdaselect * from zgda where 性别=”女”select * from zgda where 职称="教授"select * from zgda where 工资>700select 姓名,性别,婚否 from zgda where 婚否=.t.select * from zgda where 职称="教授" and

3、 性别="男"select * from zgda where 性别="男" or 出生日期<=1975-01-01B: 注释:Ø 可用通配符“*”来代表所有字段Ø distinct 表示唯一显示,各个字段值完全一致的相同记录只显示一条记录Ø where 条件构成了条件查询,如果缺省默认为所有记录Ø 查询窗口可以按ESC键关闭(2 几种特殊的运算符A: inØ 格式:字段名 not in (表达式1,表达式2,)select * from zgda where 职称 in("教授"

4、;,"助教"select * from zgda where 职称 not in("助教","讲师"B: betweenØ 格式1(函数:not between(字段名,表达式1,表达式2)select * from zgda where between(工资,500,700Ø 格式2(短语): 字段名 not between 表达式1 and 表达式2字段的取值范围在 或 不在:>=表达式1并且<=表达式2select * from zgda where not between(奖金,100,200C

5、: likeØ 格式1(函数: like(表达式,字段名select * from zgda where like("王*",姓名格式2(短语): 字段名 like 表达式select * from zgda where 姓名 like “_小_”(3 排序Ø 格式:select top n percent all / distinct 字段表达式 as 新字段名 from 表名 order by 排序字段列表 asc / desc order by 短语的使用,asc 表示升序,desc 表示降序,默认升序select * from zgda orde

6、r by 工资select * from zgda order by 出生日期 descselect * from zgda order by 奖金,工资 descselect * from zgda where 性别="女" order by 奖金 desctop n percent 表示在符合查询条件的所有记录中,选取指定数量或百分比的记录,Top短语必须与order by短语同时使用select top 3 * from zgda order by 出生日期select top 2 * from zgda where 婚否=.t. order by 工资 desc产生

7、新字段的方法,字段表达式 as 新字段名 select 姓名,职称,工资+奖金 as 实发工资 from zgdaselect 姓名,性别,year(date(-year(出生日期 as 年龄 from zgda where 职称="助教" order by 年龄 desc(4 分组与计算查询A: 计算查询Ø sum(求和字段名 Ø avg(字段名Ø count(*Ø max(字段名Ø min(字段名select sum(工资 as 工资合计 from zgda select sum(工资 as 工资合计,avg(工资 as

8、 平均工资,max(工资 as 最高工资,min(工资 as 最低工资 from zgda where 性别=”男”select count(* as 职工人数 from zgdaselect count(* as 职工人数 from zgda where 职称=”教授”注释:以上函数均为列项求值;查询中只要有任一个(也可为多个)函数,如果没有group by 分组,则查询结果只有表中最后一条记录,如果有group by 分组,则查询结果留下每一类最后一条记录。如果使用了以上函数,则在查询结果中只有分组字段和统计字段有效,其他字段均无实际意义。B: 分组查询:格式:select 字段表达式 a

9、s 新字段名 from 表名 where 条件 Group by 分类字段 having 条件注释:Group by 按列的值对查询的行进行分组,查询结果留下每一类最后一条记录select 职称,sum(工资 as 工资合计 from zgda group by 职称select 性别,count(* as 职工人数 from zgda group by 性别select 职称,性别,sum(工资 as 工资合计,count(* as 人数 from zgda group by 职称,性别 order by 职称 descwhere短语是指在原表中进行条件筛选,也就是说,只有满足条件的记录才参

10、与分组。Select 职称,count(* as 人数 from zgda where 性别=”女” group by 职称 Select 性别,sum(工资 as 工资合计 from zgda where 职称=”讲师” group by 性别 select 职称,性别,sum(工资+奖金 as 工资总和,max(工资+奖金 as 最高工资,avg(工资+奖金 as 平均工资 from zgda group by 职称,性别Having 包含在查询结果中的组必须满足的条件,即对分组的结果进行筛选,去掉不满足条件的分组,必须与Group by 同时使用select 职称,count(* as

11、职工人数 from zgda group by 职称select 职称,count(* as 职工人数 from zgda group by 职称 having 职工人数>=2如果有Group by短语,而无order by 短语时,查询的结果默认以分组字段的升序排列如果Where 和 Having 同时使用时,先执行Where ,再执行Having补充:在查询的过程当中使用了统计函数,并且查询结果可能有多个值,此时使用group by 短语进行分组,在分组了以后,每组对应一条记录(5 集合的并运算(union)A: 是将两个select 语句的查询结果合并成一个查询结果,默认情况下,合

12、并的结果删除重复的记录。用all表示显示所有记录(包含重复记录)B: 合并条件:Ø 列数相同,并且对应字段的数据类型和宽度相同Ø 对应字段的取值范围相同合并格式:第一条完整的sql语句 union 第二条完整的sql 语句例如:sele * from zgda where 性别=”女” union sele * from zgda where 职称=”教授”(6 利用空值查询注:查询空值时用: 字段名 is nullselect * from 订购单 where 订购日期 is null查询不为空值时用: 字段名 is not nullselect * from 订购单 w

13、here 订购日期 is not null(7 保存查询结果格式:select all / distinct 字段表达式 as 新字段名 top n percent from 表名 Group by 分类字段 having 条件 order by 排序字段列表asc / desc A: 输出到临时表中:into cursor 表名Ø 执行完select 语句后,临时表仍然保持打开和活动状态,但为只读Ø 一旦关闭临时表,查询结果则自动被删除B: 输出到永久表中:into dbf / table 表名Ø 执行完select 语句后,此表依然处于打开和活动状态Ø

14、; 这个表将永远保存在默认目录下C: 输出到数组中: into array 数组名Ø 这里的数组为二维数组,每行一条记录,每列对应查询结果的一列,数组中有几行几列由查询结果中记录以及字段来确定Ø 数组中可以存放n个值,但他只属于一个内存变量Ø 数组的下标是从1开始的。D: 输出到文本文件中:to file 文件名 additiveØ 扩展名为 .txt,无格式仅是纯文本Ø 有 additive表示将查询结果追加到此文件内容的后面3、 数据定义(1 建立表(若建立数据库表,则必须事先建立或打开数据库)格式:create table 表名 free

15、 (字段名1 类型(宽度,小数位数) check 条件 error字符串 default 默认值 NULL NOT NULL primary key unique, ,foreign key 索引表达式 tag 索引名 references 父表名 tag 父表的索引名 注释:Ø free 说明此表为自由表。 create table 注册 free(姓名 c(6,性别 c(2,出生年月 dØ 类型只能用代表字母。Ø check 为字段指定有效性规则;error 表示出错时的提示信息create table student(姓名 c(6,性别 c(2,年龄 i c

16、heck 年龄>=10 error "年龄超范围"Ø Default 表示默认值create table score(学号 c(10,成绩 n(7,2 default 40create table 教师(姓名 c(6,性别 c(2 default "女",基本工资 n(8,2Ø NULL 表示字段中允许取空值;NOT NULL 表示字段中不能取空值。create table 职工(编号 c(5,姓名 c(6,工资 n(5,2 null default .null.Ø primary key 表示建立主索引Ø

17、unique 表示建立候选索引Ø foreign key 表示建立普通索引,但不能单独使用,在此之前必须先给父表建立主索引或侯选索引,建立普通索引的同时和父表建立永久性关系。若无 tag 父表的索引名 选项,则表示将关系建立在父表的主索引上。Ø 不能建立唯一索引(2 修改表结构A: 字段Ø 修改字段名alter table 表名 rename column 原字段名 to 新字段名Ø 修改字段的宽度和类型alter table 表名 alter column 字段名 类型(宽度,小数位数)Ø 添加新字段alter table 表名 add co

18、lumn 字段名 类型(宽度,小数位数)Ø 删除字段名alter table 表名 drop column 字段名B: 修改字段有效性Ø 修改规则及提示信息alter table 表名 alter 字段名 set check 条件 error 字符串Ø 修改字段的默认值alter table 表名 alter 字段名 set default 默认值 Ø 删除规则及提示信息alter table 表名 alter 字段名 drop checkØ 删除字段的默认值alter table 表名 alter 字段名 drop default补充:添加新

19、字段的同时设置有效性规则C: 索引(表事先存在)Ø 建立主索引alter table 表名 add primary key 索引表达式 tag 索引名Ø 删除主索引alter table 表名 drop primary keyØ 建立侯选索引alter table 表名 add unique 索引表达式 tag 索引名Ø 删除侯选索引alter table 表名 drop unique tag 索引名Ø 建立两表之间的永久关系(建立普通索引)alter table 当前表(子表) add foreign key 索引表达式 tag 索引名 re

20、ferences 父表 tag父表的索引名Ø 删除两表之间的永久关系(删除普通索引alter table 表名(子表 drop foreign key tag 索引名(3 表的删除(物理删除)A: 删除自由表: drop table 表名B: 删除数据库表:Ø 打开数据库Ø drop table 表名5、 操作功能(1 插入记录A: 插入单条记录insert into 表名 (字段名1,字段名2,) values (表达式1,表达式2,Ø 注释:如果要向当前表所有字段中插入所有值,则第一部分可以省略Ø 第二部分表达式的值必须与对应的字段类型相同

21、B: 将数组中的值插入到表中Ø insert into 表名 from array 数组名(2 删除记录(逻辑删除Ø delete from 表名 where 条件(3 有规律的修改记录或替换记录Ø update 表名 set 要修改的字段名=用谁来修改 where 条件6、 联接查询(1 简单联接查询select 多表中字段名列表 from 多表列表 where 联接条件Ø 基于多个表的查询,查询的结果可以出自多个表中找出工资多于1230元的职工号和他们所在的城市Select 职工号,城市 from 职工,仓库 where (工资>1230 and (职工.仓库号=仓库.仓库号找出工作面积大于400的仓库的职工号一级这些职工工作的城市Select 职工号,城市 from 仓库,职工 where (面积>400 and (职工.仓库号=仓库.仓库号(2)嵌套查询select 字段列表 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论