关系数据库标准语言SQL(查询功能)---vfp
发这个帖子的主要目的是怎样书写SQL语句,怎样分析题意! -a6V3
__; $A(%vARq2 SQL的核心是数据查询。SQL的查询命令也称做SELECT 命令,它的基本组成形式由SELECT------FROM------WHERE 查询模块组成。 E 3Q4aQ' ***把请求转换到SQL*** D |4N>" 我们的顾客在那些城市? bVLIdN Which cities do our customers live in? =v{An'w 给出当前雇员及其电话号码的列表。 cqQzm Show me a current list of our employees and their phone number ;[P\#7`Bv 我们现在开那些类别的课 +]DS$~ what kind of classes do we currently offer? o8<,`[r`v 一旦知道想要的是什么信息,就可以把请求翻译成比较正式的语句。转换形式如下: 'IL9$SD SELECT <ITEM> FROM <SOURCE> G*w54$f\y 把诸如“LIST 列出”,“SHOW ME 请列出,给我看”,“WHAT 什么”,“WHICH 哪一个”,“WHO 谁”等等这样的词用SELECT 来代替。若是字段字段 ,用它代替<itme>。若是表名,用它替换<source>。 [Km!Os 结果语句看起来就类似于:
A qVr+q SELECT CITY FROM THE CUSTOMERS TABLE mCG|fD~J 删除不要的字词 a5F@+wn|e SELECT CITY FROM THE CUSTOMERS TABLE ?Mm}a^t3 SELECT CITY FROM CUSTOMERS p9$[!Mv];A 不难看出一个SQL命令经历 “翻译”-“整理”-“SQL”三个过程。 AX^cHVt] 2`8-LmMk k8$ru%bs 简单的查询 9l"|b9"c BqEAZm A.SELECT FROM =az$hO&F B.消除相同的数据(行) A
>^WGF SELECT DISTINCT COLUMN_NAME FROM ';o^,! C.对数据排序(找最大值,最小值) (@BslFj~ SELECT FROM ORDER BY COLUMN_NAME1,COLUMN_NAME2 eLb I*pNP D.查询满足某些条件的数据 3vN X@ SELECT FROM WHERE .S<3oQNw ① 比较 where > < = Wt0O%@& ② 相等和不等 where = != <> ^x^1`um ③ 大于小于 where > < xe3mN6B ④ 范围(BETWEEN AND) where COLUMN_NAME between 1220 and 1240 .SJ}I'5]! ⑤ NOT 排除 where COLUMN_NAME NOT Fx0ai-0`{ ⑥ IN 在范围内 where COLUMN_NAME IN iAsDT* ⑦ AND OR where AND U N_3,i[ b1p C[ #n+ E.查询满足某些条件的数据并排序 =zllU$]9: SELECT FROM WHERE 表达式 ORDER BY {_D"Xf c F.简单的计算 6stR]8 COUNT() 记数 SUM() 求和 AVG() 平均值 )hH8F/; MAX() 最大值 MIN() 最小值 \|a:94lM F:B9mIT& 简单的联接查询 e*NYB5U++ 问题: tOh*#q&{ 找出工资多于1230元的职工号和他们所在的城市. S;&;MY 分析: J(sXs_4V@w 所要查找的信息来自职工和仓库两个表,此类查询一般用连接来查询. ,5"wW.m~ ^G^;fnF 联接是关系的基本操作之一,联接查询是一种基于多个表(关系)的查询. 6AJb V @q~
vJ%% SELECT 职工号,城市 FROM 职工,仓库; !&RZdfq@ WHERE 工资>1230 AND 职工.仓库号=仓库.仓库号 ;5kuW_(D Z{r"o2 这里的 职工.仓库号=仓库.仓库号 是联接条件. "k) O@ < ]Ae:" 找出工作在面积大于400的仓库的职工号以及这些职工所在的城市. Cu-~|I" Z\gGjR3 超联接查询 X'
Kp!|]_ 超连接:首先保证一个表中满足条件的元组都在结果表中,然后将满足联接条件的元组与另一个表的元组进行联接,不满足的联接条件的则将应来自另一表的属性值为空。 V6V/e@r SQL中超联接的运算符号是“*=”和“=*”,其中“*=”是左联接,“=*”为右联接。 8On5.!k5 VF不支持超联结运算符(“*=”和“=*”),但VF提供专门的语法格式 d0T)Q-VVT iw=c?h SELECT….. 7zLxQ$QlX FROM TABLE INNER|LEFT|RIGHT|FULL JOIN TABLE bf>k=Nq ON JION jFg}Ssp WHERE Z1B4c5~: pg-nRPOTs INNER JOIN 等价于 JOIN ,为普通联接,在VF中称为内部联接 Ay9 { LEFT JOIN 为左联接 KoTE!/tv0 RIGHT JION 为右联接 m?SI<qko FULL JION 全联接 { gLtTZDNM ON 连接条件 9/ , :^0YZ xfI1&r |