达梦数据库的查询

查询与操作数据库中的数据是达梦数据库提供的基本功能。达梦数据库遵循 SQL标淮,提供了多种方式的数据查询和数据操作方法,以满足用户的实际应用需求。本章主要介绍通过 SQL 语句实现单表查询、连接查询、查询子句、子查询等数据查询方法和表数据操作方法。基础查询:语法如下dc8a1ce65bbc4d228c33e7c4654a0b37.png

特点是:SQL语言是一种非过程化的结构查询语言,简洁只要请求:查什么?从哪里查?即可返回结果 。

简单查询:SELECT语句用于从表中选取数据,简单查询就是用SELECT语句把一个表中的数据存储到一个结果集中。

条件查询:条件查询是指在指定表中查询满足条件的数据。该功能是通过在查询语句中使用WHERE 子句实现的。语法如下a21cea4ffeec48649b4a4c8d71b6a36b.png比较条件的使用:75f1f77514b747dd924b128f840d373e.png

63eb597d509d4551b9ac0228242fc1e8.png 

使用IN查询:

IN谓词用于确定集合的查询,查找属性值属于 指定集合的记录。与工谓词相对的谓词是NOT N,用于查找属性值不属于指定集合的记录。

3b45b15660534562a949cfd46b6c0cce.png 

使用BETWEEN查询:

BETWEEN 谓词用于确定范围的查询,BETWEEN..AND 和 NOT BETWEEN..AND可以用来查找属性值在(或不在)指定范围内的记录,其中,BETWEEN 后是范国的下限(低值),AND 后是范围的上限(高值)。查询结果包含满足低值和高值条件的记录。

a1a94e9da5af4fc4bd7d0c232ae48320.png 

 还有使用LIKE查询:

LIKE谓词可用于进行字符串匹配的查询,其含义是查找指定的属性列值与匹配字符串相匹配的记录。匹配字符串可以是一个完整的字符串,也可以含有通配符%和_。①%(百分号)代表任意长度(可以为零)的宇符串。例如,a%b 表示以a开头、以b结尾的任意长度的宇符串,如acb、addgb、ab 等都满足该匹配字符串。② (下横线)代表任意单个宇符。例如,日6表示以a开头、以6结尾的长度为了的任意宇符串,如acb、afb 等都满足该匹配字符串。如果用户要查询的宇符串本身就含有%或_,需要用到换码字符对通配符进行转义,这时需要用到 ESCAPE 关键字。

使用NULL查询:对于涉及空值的查询用运算符 NULL 来判断。其一般语法格式为:列名称 IS [NOT] NULL注意:这里的IS 不能用等号(=)代替。

使用逻辑运算符查询:在进行条件查询时,可以用逻辑运算符 NOT 查询不满足条件的结果。若要在条件子语句中把两个或多个条件结合起来,需要用到逻辑运算符 AND 和 OR。如果第一个条件和第二个条件都成立,则用 AND 逻辑运算符连接。如果第一个条件和第二个条件中只要有一个条件成立即可,则用OR 逻辑运算符连接。

函数查询:为了进一步方便用户的使用,增强查询能力,不同的数据库会提供多种内部函数(又称为库函数)。所谓函数查询,就是在 SELECT 查询过程中,使用函数检索到的列和条件中涉及的数据集合对其进行操作。达梦数据库的库函数又可以划分为两大类,分别是多行函数和单行函数。

多行函数:多行函数最直观的解释是:多行函数输入多行,由于它处理的对象多属于集合,所以也有人称之为集合函数。它可以出现在 SELECT 列表、ORDER BY 子句和 HAVING 子句中,通常可以用 DISTINCT 过滤掉重复的记录,默认或用 ALL 来表示取全部记录。

单行查询:单行函数,顾名思义就是指该西数输入一行、输出一行。单行函数通常分为 5种类型:宇符函数、数值型函数、日期型西数、转换函数和通用函数。

单行函数的主要特征为:

(1)单行函数对单行操作;

(2)每行返回一个结果;

(3)返回值有可能与原参数数据类型不一致(转换函数);

(4)单行函数可以写在 SELECT 子句、WHERE 子句、ORDER BY 子句中;

(5)有些两数没有参数,有些函数包括一个或多个参数;

(6)函数可以嵌套。

别名查询:在 SQL 语句中,可以将表名及列(字段)名指定为别名 〔Alias)。使用别名通第有两个作用:一是缩短对象的长度,方便书写,使SQL 语句简洁:二是区别同名对象,如目连接查询,同一个表连接查询自身,就需要用别名区分表名和列名。

列别名:当需要查询输出的列名与基本表中的列名不一致时,可以根据应用需求,用“列名 AS新名” 形式来完成该操作,AS 可以省咯。

表别名:当一个表在查询语句中被多次调用时,为了区别不同的调用,应用“表名 新表名”形式使每次调用表使用不同的别名。

连接查询:

数据库中的各个表中存储着不同的数据,用户往往需要用多个表中的数据来组合、提取所需的信息。如果一个查询需要对多个表进行操作,就称为连接查询。连接查询实际上是通过各个表之同共局列的关联性来查询数据的,它是关系数据库查询最主要的特征。连接查询方式有笛卡儿积(交叉连接)查询、内连接查询、外连接查询等。

笛卡儿积查询:笛卡儿积又称笛卡儿乘积或直积,是由著名数学家笛卡儿提出的,表示两个集合的相乘运算。集合A 和集合 B的笛卡儿积可以表示为 AxB,其中,第一个对象是A的成员,第二个对象是B的所有可能有序对中的一个成员。假设集合A={a,b}集合B={0,1,2}则两个集合的笛卡儿积为{(a,0), (a, 1), (a,2),(b, 0), (b, 1), (b, 2)}。

内连接查询:所谓内连接查询就是返回结果集仅包含满足全部连找系件记录的名表连接查询。其一般语法格式为:

SELECT 列名称 FROM 表名 INNER JON 连接表名 ON[连接条件]

在连接查询中用来连接两个表的条件称为连按条件或连接谓词,连接条件的一般格式为

表名1.列名1= 表名2.列名2

说明:

(1)表之问通过 INNER JOIN 关键字连接,ON 是两个表之间的关联条件,通常是不可缺少的,INNER 可省略。

(2)为了简化 SQL 语句书写,可为表名定义别名,格式为 FROM<表名><别名>,如

FROM employee e, department d

表的别名不支持 AS 用法,使用表的别名可以简化查询。

(3)在进行有效的多表查询时,查询的列名前加表名或表的别名前辍(如果列在多个表中是唯一的则可以不加),建议使用表前级,使用表前级可以提高查询性能。

外连接查询:所谓外连接查询就是除返回满足连接条件的数据以外,还返回左、右或两个表中不满足条件的数据的一种多表连接查询。因此,外连接查询又分为左连接查询、右连接查询和全连接查询3种。其一般语法格式为:

SELECT 列名称 FROM 表名 [LEFT|RIGHT|FULL]OUTER JOIN 連接表名 ON [连接条件]

说明:

(I) LEFT OUTER JOIN:左外连接,是指除了符合条件的行,还要从ON 语句的左侧表里选出不匹配的行;

 

(2) RIGHT OUTER JOIN:右外连接,是指除了符合条件的行,还要从ON 语句的右侧表里选出不匹配的行;

(3)FULL OUTER JOIN: 全外连接,是指除了行合系件的行,还要从ON语句的有侧表里选出不匹配的行;

(4) OUTER 可以省略。

查询自句:为了丰富对查询结果的处理方式,增强查询能力,不同的数据库会提供多种查询子句。本节主要介绍常用的查询于包,包括排序于包、分组子向、HAVING 子句、TOP子句等。

排序自句:排序子向使用 ORDER BX 子句对查询结果进行排序。如果设有指定查询结果的显示顺序,数据库管理系统中将按其最方便的顺序(通常是数据记录在表中的先后顺序)输出查询结果。用户地可以用 ORDER BY子句指定按照一个或多个属性列的升序(ASC)或降序(DESC)重新排列查询结果,其中升序(ASC)为默认值。

分组子句:分组子句使用 GROUP BY 子句对查询结果进行分组。GROUP BY 子句是 SELECT 语句的可选项部分,它定义了分组表。GROUP BY 子句定义了分组表:行组的集合,其中每个组由其中所有分组列的值都相等的行构成。GROUP BY 子句将查询结果表按某一列值或多列值分组,值相等的为一组。

HAVING子句:HAVING子句是 SELECT 语句的可选项部分,它也定义了一个分组表,用于选择满足条件的组。其基本语法如下:

SELECT <选择列表>

FROM[<模式名>.]<基表名>|<视图名>[<相关名>]

HAVING子句

<HAVING子句>::=HAVING <搜索条件>

<搜索条件>::=<表达式>

其中只含有搜索系件为 TRUE 的那些分组,且通常跟随一个 GROUP BY 子句。HAVNG 子句与分组的关系正如 WHERE 子句与表中行的关系。W HERE 子句用于选择表中满足条件的行,而 HAVIVG 子句用于选择满足条件的分组。

TOP子句:TOP 子句用于规定查询返回记录的数目。对于记录数目较大的表来说,TOP 子句是非常有用的。

子查询:当一个查询的结果是另一个查询的条件时,称为子查询。子查询就是将一个 SELECT语句嵌入另一个 SELECT 语句的子句中,通常被称为嵌套 SELECT 语句、子 SELECT 语句或内部 SELECT 语向。在许多SQL 子句中可以使用子查询,其中包括 FROM 子句、WHERE 子句、HAVING 子句。通常先执行子查询,然后使用其输出结果来完善主查询(外部查询)。

FROM 子句中使用子查询,其一般语法格式为

SELECT 列名称 FROM (SELECT语向)

WHERE 子句、HAVING 子句中使用子查询,其一般语法格式为

SELECT 列名称 FROM 表名称 WHERE HAVING] <列名称><运算符>(SELECT 语句)

说明:

(1)上述仅给出了一个不太严格的示意性格式,使用的子查询需要用圆括号()括起来;

(2)子查询中既可以使用其他的表,也可以使用与主查询相同的表;

(3)语法格式中的(SELEC工 语句)里还可以嵌套子查询;

(4)子查询在主查询之前一次执行完成,子查询的结果被主查询使用;

(5)子查询在参与比较条件运算时,只能放在比较条件的右侧;

(6)<运算符>是比较条件运算符,根据(SELECT 语句)结果的类型,又可将子查询分为单行子查询与多行子查询,单行子查询里(SELECT 语句)被当作一个表达式参与运算,多行子查询里(SELECT 语句)被当作一个集合参与运算。

在子查询中通常可以使用 IN、ANY、SOME、ALL, EXISITS 关键字。

使用IN关键字子查询:IN关键字可以测试表达式的值是否与子查询返回集中的某个值相等。

使用ANY、SOME、ALL 关键字的子查询:子套询在返回单值时可以用比较运算符,而使用 ANY 、SOME、ALL 关键字时则必须同时使用比较运算符,其中 SOME 关键宇是与 ANY关键字等效的 SQL-92标准。

使用EXISITS关键字的子查询:带有 EXISTS 关键字的子查询不返回任何数据,只产生逻辑真值“true”(子查询结果非空,至少有一行),或者逻辑假值“false”(子查询结果为空,一行也没有)。

总结:总体分为四个类别,分别是1.单表查询,2.连接查询,3.查询子句,4.子查询。而这四个类别又由一些更为细致的查询所组成。

 

 

 

 

 

 

 

 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值