融海咨询informix_4gl教材 第二十二章SELECT语句回顾_第1页
融海咨询informix_4gl教材 第二十二章SELECT语句回顾_第2页
融海咨询informix_4gl教材 第二十二章SELECT语句回顾_第3页
融海咨询informix_4gl教材 第二十二章SELECT语句回顾_第4页
融海咨询informix_4gl教材 第二十二章SELECT语句回顾_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、. 第二十二章      SELECT语句回顾本章假设你已有SQL SELECT语句的知识,将通过举例说明怎样在INFORMIX-4GL中使用SELECT语句。SELECT语句用于从数据库表中检索信息。SELECT语句有七个子句,它们必须按顺序出现:l l SELECT最小化语法:用于列出你想从表中检索的字段。带select_list的SELECT回答了“你想看哪些字段”的问题。l l FROM最小化语法:FROM用于指示从哪儿找SELECT请求的字段,FROM语句回答了“哪个表中存在这些字段”的问题。l l WHERE:W

2、HERE限制了返回的行数。你可以描述一个查找条件,返回满足条件的数据。WHERE回答了“你想看哪些行“的问题。l l 请求连接的WHERE:WHERE也可用于表的连接。当SELECT包括多表中的字段时,必须进行连接。l l GROUP BY:它把返回的行进行组织,分成逻辑组。例如按order_num对所有数据分组。l l HAVING:它是比GROUP BY更严格的分组。例如,在进行了GROUP BY order_num,但只想看total_price大于1000.00的组时用。l l ORDER BY:ORDER BY 把返回的行排序。排序是按列在ORDER BY子句后面的字段进行的。l l

3、 INTO TEMP:它把返回的行放在临时表中。这个表可以和别的表进行连接。单表选择在上图中有几个单表SELECT语句的例子。l l 例子A:从Customer表SELECT 三个字段。由于没有WHERE,所以返回所有的数据行。这个SELECT是最小化语法,只有SELECT和FROM子句。l l 例子B:用了“*”表示取出所有字段,FROM表示从哪个表检索。l l 例子C:它带有一个ORDER BY选项,它从Stock表检索所有数据行,显示时按description排序,若两行或以上有相同的description,这些行将按unit_price排序。l l 例子D:一般用ORDER BY排序是

4、按升序进行的,即字符AZ,数字由低到高。但若使用了DESC保留字就变成了降序排。对要按降序排的每个字段都要用一次DESC保留字。带WHERE子句的SELECTWHERE子句用于限制返回的行数。上图例子中即为带WHERE子句的SELECT语句。l l 例子A:SELECT说明返回哪些字段,FROM说明从哪个表取数,WHERE子句限制返回的只是State不等于“CA”的行。l l 例子B:其中的BETWEEN保留字描述了一个范围。它表示大于或等于小值,小于或等于大值的条件。l l 例子C:保留字IN用于列出字段的有效值。在例子中,选出行的state值必须为“CA”、“NV”、“OR”之一。IN可替

5、换多个OR语句,它相当于state = “CA” OR state = "NV” OR state=“OR”。l l 例子D:用了IS NULL来选择字段中存在空值的行。 这些例子中的保留字可通过加上NOT保留字而转变意义。如:NOT INNOT BETWEENIS NOT NULL用通配符查找字符MATCHES保留字可用于字符域的通配查找。它用在SELECT语句的WHERE子句。上图例子中就用到了MATCHES。l l 例子A:* 用于通配零或多个字符。例子中表示取出description满足包含小写tennis及后跟任意数字、字符的行。l l 例子B:?是单字符通配符。

6、例子表示找出manu_code字段含三个字符的行,第一、三个字符可以是任意字符,但第二个字符必须是大写R。l l 例子C:符用于列出对字符串中某位置可能的值。例子查找manu_name为任意长度的数据行,但第一位必须是A到N的字符,其后可以跟任意字符。l l 例D:此例用多个了表示多个独立的字符,它找出company为任意长度的数据行,但必须含有sport这个词,只是不区别大小写。 MATCHES 可通过NOT MATCHES改为反意,对于可通过在第一个位置加表示NOT,例如“HA*”表示第一个字符是非H或A的其它任意字符。从多表SELECT的连接规则为了从多表取值,必须对表进行连接

7、。即包含的表要满足连接条件,这些要求列在上图中。主键(Primary key)主键(PK):是表中的唯一标识行的字段,每个表必须有主键。外键(Foreign key)外键(FK):是在别的表中为主键的字段,它用于连接。两表SELECT当从两表取值时,在WHERE中要对两表连接。连接一般在Primary键和foreign键之间建立。如上图例子中SELECT语句中含有两个表。l l 例子A:SECECT语句从manufact和stock表取值。这两表就要满足连接条件,WHERE用于为两表建连接。若两表中某行的manu_code相同,即可取出此行中的值。l l 例子B:SELECT语句用custom

8、er*表示取出customor表中的所有字段值,另外再从order表取两个字段值的同时,WHERE子句用于把两表按customer_num连接起来,若想加上其它的查找条件,只用加上AND保留字,再加上描述条件。多表SELECT从多表取值与从两表取值基本相同,只要把各个表连接起来即可。上例的信息即从customer、orders和item表取数据,WHERE用于把customer和orders表,orders和item表连接起来。注意:customer_num和order_num必须加上表名前缀。带聚合函数的SELECT带聚合函数的SELECT与其它的SELECT语句不同。在SELECT语句中用

9、了聚合函数,就不再关心返回的某一行的信息了。l l COUNT(*):返回有多少满足条件的行。l l MAX(字段名):返回给定字段的最大值l l MIN(字段名):返回给定字段的最小值l l SUM(字段名):返回给定字段的所有值的和l l AVG(字段名):返回给定字段的平均值在INFORMIX-4GL程序中,SELECT语句返回的值必须放在程序变量中,所以必须加上INTO子句。上图例子说明了从customer表取出所有字段的值,并把结果存放在变量gr_customer.*中。WHERE 子句用于限制只返回一行数据。若返回多行,必须增加代码来处理,以后再讲这种情况的处理办法。SQLCA.S

10、QLCODE可用于判断是否找到满足条件的数据。当执行完SELECT语句,SQLCA.SQLCODE为0,表示找到了数据;若没找到,SQLCA.SQLCODE值为100。WHENEVER语句的反映对于WHENEVER语句可不用检测SELECT的SQLCA.SQLCODE。只是SQLCA.SQLCODE的值为负数时会发生错误而中断。对于SELECT语句的SQLCA. SQLCODE变量被设置为0或100,并不是错误。SELECT语句执行时,若要取的数据被别人锁住,SQLCA。SQLCODE会被设置为负值。在以后章节会讲到这种情况的处理方法。程序实例: database stores

11、60;maindefine lr_customer record like customer.*定义局部变量用于保存从客户表取出的一行数据。open form cust_form from "customer"display form cust_form 设置循环提示用户输入一个有效的客户号。while trueprompt "Enter a customer number: " for lr_customer.customer_num 下面的SELECT语句只返回一行数据。若返回多行则要编写别的代码处理。select * into lr_customer.* from customerwhere customer_num = lr_customer.customer_num下面的语句用于判断是否取到了数据,若取到则退出循环,显示给用户;否则提

温馨提示

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

评论

0/150

提交评论