VFP第五章SQL

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DELETE必考
SQL中的delete语句的用法:用来 逻辑删除记录的 语法:delete from 表名 where 筛选条件 delete from stock_bk where 股票代码=’600000‟
必考:选择或填空。 Create table…default Create table…check Create table….primary key/unique/foreign key Create table…free &&创建自由表 Create database 数据库名&&创建一 个数据库 Drop table 删除表的命令
4.2.4 也考过 成绩 not Between 20 and 100用关系 运算符来改写:成绩<20 or 成绩>100 Select xh from cj where cj in(60,70,80) &&查询cj=60 or cj=70 or cj=80的学 生xh
select …where 姓名 like “李%” select ….where at(“李”,姓名)>0 select …..where like(“李*”,姓名) 三个是等价的。 Like是SQL语言中的,因此,通配符是:%和 _. 说明: _ 替代一个字符, %替代多个字符。 Like()是VFP自带的函数,通配符是:*和?. 说明: ? 替代一个字符, * 替代多个字符。
ALTER TABLE 学生成绩; DROP COLUMN 物理 例4:删除学生成绩表中的主索引。 ALTER TABLE 学生成绩; DROP PRIMARY KEY
20:12:25
例:把学生成绩表中的课程代号字段重命 名为课程: ALTER TABLE xscj RENAME COLUMN kcdh TO kc 例:把学生成绩表中的cj字段进行修改 alter table xscj alter column cj N(5,1)
例1:为学生成绩表增加一物理成绩字段, 并对用户输入作有效性检查。 ALTER TABLE 学生成绩; ADD 物理 n(6,2) SET CHECK 物理>0 例2:对上例删除物理字段的有效性检查。 ALTER TABLE 学生成绩; ALTER 物理 DROP CHECK
20:12:25
例3:对上例,删除物理字段。
2. SQL语句中主要短语的含义可以出题,选 择填空都可能. 后面紧接着添上: 1)TOP 10:得到结果的记录的前十条 top 10 percent:得到结果的记录的前 10%条(必须与ORDER BY 同时使用) 2)distinct:去掉结果中的重复记录 3)有group by 不一定有HAVING, 但是 有 HAVING ,在HAVING前面一定有 GROUP BY .
打个比方:筛选出比本教室所有人(all) 都高的人,意思就是筛选比本教室最高的 人还高的人. 筛选出比本教室随便一个人都高的人,意 思就是筛选出的人比本教室中最矮的人高 就行了. Select….from….where shengao>=any(select shengao …from..) 等价于:select…from…where shengao>=(select min(shengao)….from…)
什么时候要对查询进行分组? 凡含”每”,”各”的都要分组 1.求每个系的人数,输出字段:人数. 对每后面的系进行分组. count(*) as 人数 from xs group by xdh 2.求每个系各专业人数. 每后面的系要 分组,各后面的专业要分组. count(*) as 人数 from xs group by xdh,zydh
4.3.1 插入数据 第一种格式:一定会考,考选择题. Insert into 表名 values( 值1,值 2,……) 第二种格式:上机有可能会考 insert into 表名 from array 数组名 &&把数组里数据复制一份到表中.
Update(必考) Update的用法:(用来修改字段的值 Update 表名 set 字段名=新值 where 筛选条件 对于年龄>20的学生,将xh末尾加一 个a. 处理的是xs表 update xs set xh=xh-„a‟ where year(date())- year(csrq)>20
Select * from xs where xh in(select xh from cj) &&表示只显 示选修过课程的XS信息 注意:填空题的考法中:比如 : select * from 仓库号 where 仓库号 in(select from 职工) && 这个空填 仓库号, 规律是:select ….from …..where 字段名×× in/not in (select 字段名 ×× from…….)
Alter table…add 添加一个字段 Alter table….drop column…删除一个字段 Alter table…alter… 修改一个字段的类型或宽度 Alter table….add primary key/unique/foreign key Alter table…set check. &&修改一个表已经存在 的CHECK, 其中,SET是重置的意思 Alter table..set default&&重置default的值 Alter table…drop check/drop default Alter table…drop primary key/unique/foreign key Alter table…rename cloumn … to.. &&给字段 重命名(必考)
求人数,门数,课程数:count(*) count(字段名) count(distinct 字段名)的意思是计 数时,去掉结果中重复的记录,即结 果中重复的记录只算一条。体会: select count(xdh) from xs select count(distinct xdh ) from xs 注意不要把count()和sum()相混淆. 一个是求记录数,一个是求字段值加起 来的总和.
In/not in :要求自己能写出来. Exists/not exists :不要求会写 ,能作出选择题就可以了.
EXISTS是谓词,他用来检查在子 查询中是否有结果返回,即子查询 结果中是否有记录。
例:查询学生档案表中高数不及格的学生 信息。 SELECT * FROM 学生档案 A ; WHERE EXISTS (SELECT * ; FROM 学生成绩 WHERE 学号=A.学号; AND 高数<60)
20:12:25
All/any谓词的用法 同样只会做选择题就行了,不要求自 己会写.
Select …..from…..where 工资>= all(select 工资 from ……) 意义: all后面筛选是一个范围:因 此:工资>=all,就是>=这个范围里 的所有工资,反过来,意思就是:比 这个范围里的最高值要大 .select…..from…where 工资>=( select max(工资)from….)
三个表的相联语法
From 表1 JOIN 表2 JOIN 表3 On 表2.字段名=表3.字段名 On 表1.字段名=表2 .字段名 (三个表相连接) 例子: Xs(xh,xm) cj(xh,kcdh,cj),kc(kcdh,kcm) ……From xs join cj join kc On cj. kcdh =kc.kcdh On xs.xh=cj.xh
第四章SQL语言 总结复习
1. SQL命令动词 要记住,这个表 格可以出题,选 择、填空都可 能.
在VFP中不能使用命令 GRANT、REVOKE
SQL功能
命令动词
数据查询
数据定义 数据操纵
பைடு நூலகம்
select
Create,drop ,alter Insert, update delete Grant revoke
数据控制
查询语句的一般格式:
20:12:25
SELECT [ALL | DISTINCT] field1[,field2,...] FROM table1[,table2,...] [WHERE "conditions"] [GROUP BY "field"] [HAVING "conditions "] [ORDER BY "field" [ASC | DESC] ]
3.求每个系男、女生人数.输出字段 :xdh,xb,人数. 答案:每后面的系要分组,然后男、女生 是两个组,因此要按照xb分组. select xdh ,xb ,count(*) as 人数 from xs group by xdh,xb
系代 号 教育 教育 性别 女 男 人数 15 10 系代 号 教育 心理 男生 人数 10 9 女生 人数 15 10
4.求每个系男生人数,女生人数.输出字 段:xdh,男生人数,女生人数. 答案:本题只按系分组,为什么不按xb分 组?因为男生人数,女生人数按xb分组, 是不能用两列输出来的,组只能在一 列输出. Select xdh,sum(iif(xb=„男‟,1,0)) as 男生人数,sum(iif(xb=„女‟,1,0)) as 女 生人数 from xs group by xdh. 凡题目中出现两个组的计数在两列输 出的,或者一个总计数,一个部分计 数在两列输出的,都要用iif()计数
连接查询。 凡要从两个表里查询记录的话, 一定要对两个表进行联接,否则 是不能进行查询的.
最常用的连接是普通连接: (1)Select ….from 表1名字, 表2 名 where 表1名.字段名=表2 .相同字段名 Select …. From xs,cj where xs. xh =cj.xh (2)等价于(1):select…..from 表1名 join 表2名 on 表1名.字段名=表2 . 相同字段名
4.2.5 Select csrq , xh,xm from xs order by xm DESC,xh desc 等价于select xh,xm,csrq from xs order by 2 desc,3 desc 因为,xm在SELECT后面的字段 排第二位,xm排第三位
简单的计算查询: 计算平均值avg(cj) as 平均成绩 计算总分:sum(cj) as 总成绩 求最高值:max(cj) as 最高分 求最小值:min(cj) as 最低分
Select from xs,cj where xs.xh=cj.xh
select * from cj && *表示什 么意思? 表示cj表的所有字段.
4.2.3嵌套查询(必考题)
NOT IN是排除的意思 Select * from xs where xh not in (select xh from cj) &&排除掉了在CJ表中出现的XH ,也就是所有选过课的学生被排 除掉了,剩下来的就是没有选过 课的学生信息。 In:只在….范围内的意思。
Select … from 表1,表2,表3 where 表2.字段名=表3.相同字段名 and 表 1.字段名=表2.相同字段名
一定会考的: 把查询结果存放到数组中: Into array 数组名 把查询结果存放到永久表中: Into table 表名 把查询结果存放到临时表中: Into cursor 表名 把查询结果存放到文本文件: to file 文本文件名 发送到打印机:to printer
相关文档
最新文档