从入门到精通第8章检索数据_第1页
从入门到精通第8章检索数据_第2页
从入门到精通第8章检索数据_第3页
从入门到精通第8章检索数据_第4页
从入门到精通第8章检索数据_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

检索数据本讲大纲:1、简单查询2、筛选查询3、分组查询4、排序查询5、多表关联查询6、使用聚合函数计算列值支持网站:检索数据检索数据的基本语法:<select

{[distinct

|

all

]

columns

|

*}>[into

table_name]<from

{tables

|

views

|

other

select}

>[where

conditions][group

by

columns][having

conditions][order

by

columns][fetch

first

class][union

<select

query

clause>]检索数据参数说明:select子句:用于选择数据表、视图中的列。

into子句:用于将原表的结构和数据插入到新表中。from子句:用于指定数据来源,包括表,视图和其他select语句。where子句:用于对检索的数据进行筛选。group

by子句:用于对检索结果进行分组显示。having子句:用于从使用groupby子句分组后的查询结果中筛选数据行。order

by子句:用于对结果集进行排序(包括升序和降序)。fetch

first子句:用于返回结果集的行数。

union子句:用于连接两条select查询语句。简单查询1.检索所有的列检索指定数据表的所有列在SELECT子句后面使用星号(*)来实现。语法为:SELECT

*

FROM

表名; --查询表中所有列,SELECT后面就加星号(*)2.检索指定列用户指定查询某些列的语法如下:SELECT

column_name1,column_name2,……column_namenFROM

表名;简单查询3.带有表达式的SELECT子句在SELECT语句中可以使用算术运算符,包括加(+)、减(-)、乘(*)、除(/)和括号。select

总分数+1,总分数from

mr.学生表;4.为列指定别名在DB2中,使用AS关键字为列指定别名,也可以不使用任何关键字而直接指定。select

学号AS

sid,

姓名AS

name,总分数AS

total_scorefrom

mr.学生表;简单查询select

学号AS

“si

d”,姓名AS

“na

me”,

总分数AS

total_scorefrom

mr.学生表;5.计算列标题在列标题中用空格查询语句select

学号AS

“si

d”,姓名AS

“na

me”,

总分数AS

total_scorefrom

mr.学生表;注意:当自定义的列标题中含有“空格”时,必须使用“双引号”将列标题括起来。简单查询6.显示不重复的记录在SELECT语句中,可以使用DISTINCT关键字来限制在查询结果显示不重复的数据,该关键字用在SELECT子句的列表前面。select

distinct

总分数from

学生表;筛选查询语法格式如下:SELECT

columns_listFROM

table_nameWHERE

conditional_expression参数说明:conlumns_list:字段列表。table_name:表名。

conditional_expression:筛选条件表达式。比较筛选select

*

from

学生表where

总分数>(或其他情况)90;“比较筛选”操作主要有6种情况:A=B:比较A与B是否相等。A!=B或A<>B:比较A与B是否不相等。A>B:比较A是否大于B。A<B:比较A是否小于B。A>=B:比较A是否大于或等于B。A<=B:比较A是否小于或等于B。select

*

from

学生表where

总分数>(或其他情况)90;使用特殊关键字筛选LIKE关键字例如,“K%”表示以字母K开头的任意长度的字符串,“%M%”表示包含字母

M的任意长度的字符串,“_MRKJ”表示5个字符长度且后面4个字符是MRKJ的字符串。select

*

from

学生表where

姓名like‘马%’;IN关键字当测试一个数据值是否匹配一组目标值中的一个时,通常使用IN关键字来指定列表搜索条件。select

*

from

学生表where

总分数in

(83,84,99);使用特殊关键字筛选BETWEEN关键字返回某一个数据值是否位于两个给定的值之间,可以使用范围条件进行检索。select

*

from

学生表where

总分数between

85

and

90;IS

NULL关键字空值(NULL)从技术上来说就是未知的、不确定的值,但空值与空字符串不同,因为空值是不存在的值,而空字符串是长度为0的字符串。select

*

from

学生表where

备注is

null;使用特殊关键字筛选逻辑筛选select

*

from

学生表where

总分数>=80

and

总分数<=90;select

*

from

学生表where

总分数<85

or

总分数>90;select

*

from

学生表where

总分数not

between

85

and

90;分组查询数据分组的目的是用来汇总数据或为整个分组显示单行的汇总信息,通常在查询结果集中使用GroupBY子句对记录进行分组。其语法格式如下:SELECT

列名

FROM

表名

[WHERE

条件] GROUP

BY

列名分组查询简单的GROUP

BY子句带WITH

ROLLUP关键字的GROUP

BY子句带CUBE关键字的GROUP

BY子句排序查询在SELECT语句中,可以使用ORDERBY子句对检索的结果集进行排序,该子句位于FROM子句之后,其语法格式如下:SELECT

列名FROM

表名[WHERE

条件表达式][GROUP

BY

列名]ORDER

BY{要排序的列名或表达式[ASC

|

DESC]}多表关联查询1.表别名在多表关联查询时,如果多个表之间存在同名的列,则必须使用表名来限定列的引用。select

e.empno

as

员工编号,e.ename

as

员工姓名,d.dname

as

部门from

emp

e,dept

dwhere

e.deptno

=d.deptno

and

e.job

=’Manager’;多表关联查询2.内连接内连接是一种常用的多表关联查询方式,一般使用关键字INNER

JOIN来实现。其中,INNER

JOIN关键字可以省略,当只使用JOIN关键字时,语句只表示内连接操作。内连接语法格式如下:SELECT

列名FROM

表1

[INNER]JOIN

表2ON

实现内连接的条件表达式;多表关联查询3.外连接外连接通常有以下3种:左外连接:关键字为LEFT

OUTER

JOIN或LEFT

JOIN。右外连接:关键字为RIGHT

OUTER

JOIN或RIGHT

JOIN。完全外连接:关键字为FULL

OUTER

JOIN或FULL

JOIN。多表关联查询4.自连接在应用系统开发中,用户可能会拥有“自引用式”的外键。“自引用式”外键是指表中的一个列可以是该表主键的一个外键。多表关联查询5.交叉连接交叉连接实际上就是不需要任何连接条件的连接,它使用CROSSJOIN关键字来实现,其语法格式如下:select

列名from

表1

cross

join

表2;使用聚集函数计算列值函数名说

明SUM计算表达式中所有值的总和AVG计算表达式中所有值的平均值MAX判断表达式中的最大值MIN判断表达式中的最小值CHECKSUM返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引COUNT计算返回的行数COUNT_BIG求组中项数,返回bigint类型整数GROUPING产生一个附加的列STDDEV返回给表达式中所有值的统计标准偏差VAR,VARIANCE返回给定表达式中所有值的统计方差CORR,CORRELATION返回一对数值的关系系数COVAR,COVARIANCE返回一对数值的协方差ARRAY_AGG将一组元素聚合到一个数组中聚集函数的语法function_name

([ALL

|

DIST

温馨提示

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

评论

0/150

提交评论