SQL查询与操作

1.单表查询

    SQL 数据查询主要由 SELECT 语句完成,SELECT 语句是SQL 的核心。单表查询就是利用 SELECT语句仅从一个表/视图中查询数据。其语法如下:

SELECT [DISTINCT]*{ 字段名 1,字段名 2, 字段名 3,…
FROM 表名
[WHERE 条件表达式 1]
[GROUP BY 字段名 [HAVING 条件表达式 2]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET,] 记录数];

 1.1基础查询

SELECT * FROM 表名

1.2条件查询

SELECT * 
FROM 表名
[WHERE 条件表达式 1];

比较条件组合使用

2155fd78171d48cf8c71aa147ab4b165.png

BETWEEN关键字

df550d3210264bd48d2a5ed0e718c7b2.png

IN关键字

a4d0a95509fb43fbb723abafa43946d6.png

1.3高级查询

SELECT [DISTINCT]*{ 字段名 1,字段名 2, 字段名 3,…
FROM 表名
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET,] 记录数];

1.4分组查询

SELECT *
FROM 表名
[GROUP BY 字段名 [HAVING 条件表达式 2]];

2.连接查询

     数据库中的各个表中存储着不同的数据,用户往往需要用多个表中的数据来组合、提取所需的信息。如果一个查询需要对多个表进行操作,就称为连接查询。连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征。

连接查询方式有交叉连接查询、内连接查询、外连接查询等。

连接查询中的通配符

94f37d9f0d7e49eaa1e5adeaf14e7f03.png

2.1内连接查询

SELECT 输出项
FROM 表1 INNER JOIN 表2 ON 表2.公共列=表1.公共列;

2.2外连接查询

左外连接

SELECT 输出项
FROM 表1 LEFT JOIN 表2 ON 表2.公共列=表1.公共列;

右外连接

SELECT 输出项
FROM 表1 RIGHT JOIN 表2 ON 表2.公共列=表1.公共列;

2.3交叉连接查询

SELECT 输出项
FROM 表1 CROSS JOIN 表2;

3.子查询

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

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

SELECT 列名称 FROM (SELECT语句)

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

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

说明:

(1)上述仅给出了一个不太严格的示意性格式,使用的子查询需要用圆括号()括起来;(2)子查询中既可以使用其他的表,也可以使用与主查询相同的表;(3)语法格式中的(SELECT语句)里还可以嵌套子查询;
(4)子查询在主查询之前一次执行完成,子查询的结果被主查询使用;(5)子查询在参与比较条件运算时,只能放在比较条件的右侧;
(6)<运算符>是比较条件运算符,根据(SELECT 语句)结果的类型,又可将子查询分为单行子查询与多行子查询,单行子查询里(SELECT 语句)被当作一个表达式参与运算,多行子查询里(SELECT语句)被当作一个集合参与运算。
在子查询中通常可以使用IN、ANY、SOME、ALL、EXISTS 关键字。

3.1使用IN关键字的子查询

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

3.2使用ANY,SOME, ALL关键字的子查询

     子查询在返回单值时可以用比较运算符,而使用ANY、SOME、ALL 关键字时则必须同时使用比较运算符。

3.3使用EXISTS关键字的子查询

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

4.数据操作

     数据操作是数据库管理系统的基本功能,包括数据的插入、修改和删除等。在实际应用中,多个应用程序会并发操作数据库,导致出现数据库数据的不一致性和并发操作问题,达梦数据库利用事务和封锁机制实现数据并发存取, 保障数据的完整性。

4.1插入数据

insert (into) 表名[(字段名1,字段名2,...)]
values(值1,值2...)[(值1,值2...),...];

4.2修改数据

update 表名
set 字段名1=值1[,字段2=值2,...]
[where 条件表达式];

4.3删除数据

delete from 表名[where 条件表达式];

5.查询子句

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

5.1排序子句

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

SELECT 列名称 FROM 表名称 ORDERBY 列名称 [ASC|DESC] [NULLS FIRSTLAST],{列名称 [ASCDESC] [NULLS FIRST|LAST]}

5.2分组子句

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

GROUP BY子句将查询结果表按某一列值或多列值分组,值相等的为一组。其一般语法格式为:

SELECT 列名称 FROM 表名称 GROUPBY 列名称

5.3HAVING子句

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

SELECT <选择列表>
FROM [<模式名>.<基表名>|<视图名>[<相关名>] HAVING子句
<HAVING子句>::=HAVING<搜索条件><搜索条件>::= <表达式>

其中只含有搜索条件为 TRUE 的那些分组,且通常跟随一个 GROUP BY 子句。 HAVING子句与分组的关系正如 WHERE 子句与表中行的关系。

WHERE子句用于选择表中满足条件的行,而HAVING子句用于选择满足条件的分组。

5.4TOP子句

     TOP 子句用于规定查询返回记录的数目。对于计记录数目较大的表来说,TOP 子句是非常有用的。其基本语法如下:

SELECT TOP number/perc cent<列名> FROM 表名;


  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值