日常收集常用SQL查询语句大全

网络推广 2025-04-24 18:39www.168986.cn网络推广竞价

在数据库管理领域,SQL查询语句扮演着至关重要的角色。对于希望深入学习数据库技术或提高工作效能的朋友来说,熟练掌握SQL查询语句显得尤为重要。本文将详细分享一些常用的SQL查询语句,供大家在狼蚁SEO平台上学习借鉴。这些语句不仅简单易懂,而且具有极高的实用价值。

一、简单查询语句

让我们从基础的查询语句开始。

查看表结构:通过`DESC emp;`命令,可以轻松查看名为“emp”的表的结构信息,包括列名、数据类型等。

查询所有列:使用`SELECT FROM emp;`可以获取“emp”表中的所有数据。星号()表示所有列。

查询指定列:只需指定所需的列名即可,例如`SELECT empmo, ename, mgr FROM emp;`这将只返回emp表中的empmo、ename和mgr这三列的数据。通过`SELECT DISTINCT mgr FROM emp;`可以只显示mgr列中不同的值。

查询指定行:利用WHERE子句,可以查询满足特定条件的行。例如,`SELECT FROM emp WHERE job='CLERK';`将返回所有职位为CLERK的员工的所有信息。

二、复杂查询语句

在实际应用中,我们还需要处理更复杂的查询需求。以下是一些复杂查询示例。

使用算术表达式:SQL支持在查询中进行算术运算。例如,`SELECT ename, sal13+nvl(m,0) FROM emp;`这条语句计算员工的薪水(假设薪水字段为sal13),并使用nvl函数处理可能的空值(m字段)。如果m有值,则nvl(m,0)=m;如果m为空,则nvl(m,0)=0。还可以为计算结果设置别名,如`SELECT ename, sal13+nvl(m,0) year_sal FROM emp;`这里,"year_sal"是别名,可按此别名进行排序。

使用日期函数:可以通过日期函数进行更复杂的日期操作,如`SELECT FROM emp WHERE hiredate>'01-1月-82';`这条语句将返回所有在指定日期之后入职的员工的所有信息。

使用like操作符:like操作符用于模糊匹配字符串。其中,%表示一个或多个字符,_表示一个字符。[charlist]表示字符列表中的任何单一字符,[^charlist]或[!charlist]表示不在字符列表中的任何单一字符。这些特性使得like操作符在处理部分匹配或模式匹配时非常有用。

一、SQL查询基础

在SQL查询中,我们可以使用各种条件来筛选和展示数据。以下是一些基本的SQL查询示例及其解释。

例1: 使用LIKE操作符进行模糊查询

SQL查询语句:

```sql

SELECT FROM emp WHERE ename LIKE 'S__T%';

```

这个查询是在寻找那些名字以"S"开头,第三个字符是任意字符,最后以"T"结尾的员工。

例2:使用IN操作符进行多值查询

SQL查询语句:

```sql

SELECT FROM emp WHERE job IN ('CLERK','ANALYST');

```

这个查询是获取所有职位为"CLERK"或"ANALYST"的员工的所有信息。

例3:查询字段内容为空或非空的语句

SQL查询语句:

```sql

SELECT FROM emp WHERE mgr IS NULL; -- 查询没有经理的员工。

SELECT FROM emp WHERE mgr IS NOT NULL; -- 查询有经理的员工。

```

例4:使用逻辑操作符号进行查询

SQL查询语句:

```sql

SELECT FROM emp WHERE (sal > 500 OR job = 'MANAGE') AND ename LIKE 'J%';

```

这个查询是找到那些薪水大于500或职位为"MANAGE"且名字以"J"开头的员工。

例5:按字段的值对查询结果进行排序

SQL查询语句:

```sql

SELECT FROM emp ORDER BY deptno ASC, sal DESC; -- 按部门升序排列,同一部门内按薪水降序排列。

```二、复杂查询进阶

数据挖掘与精准分析是复杂查询的魅力所在,以下是关于复杂查询的一些重要概念与技巧。 1. 数据分组与聚合函数 通过对数据进行分组,我们可以得到每个组的汇总信息,如最大值、最小值、平均值、总和等。 以下是使用聚合函数进行数据分组的示例: SQL查询语句:

5.2 多行子查询

想象一下,我们想要找到与部门号为10的员工的相同工作的其他员工的信息。我们可以这样写:

```sql

查找那些与部门号为10的部门里拥有相同职位的员工,他们的姓名、职责、薪资和部门编号是什么。子查询返回了独特的职位列表,主查询则根据这些职位筛选员工。

```

5.3 使用ALL

```sql

我们想要找到那些工资高于部门编号为30的所有员工的员工。换句话说,他们的工资要超过部门中的最高工资。这就像是一场薪资竞赛,只有赢得整个部门的员工才能进入我们的视线。

```

5.4 使用ANY

```sql

我们想要找到那些工资高于部门编号为30的任何一个员工的员工。也就是说,只要他们的工资超过部门中的任何一个员工的工资即可。这就像是一场薪资比赛,只要赢了一场,就满足条件。

```

5.5 多列子查询

当我们要基于多列数据进行子查询时,可以这样理解:

```sql

我们正在寻找与名为'SMITH'的员工具有相同职位和部门编号的员工。子查询返回这些特定信息,主查询则根据这些信息筛选员工记录。

```

5.6 在from子句中使用子查询

在某些情况下,我们需要在FROM子句中使用子查询。可以这样描述:

```sql

我们想要比较每个部门的平均薪资与员工的薪资。我们创建一个子查询来计算每个部门的平均薪资。然后,在主查询中,我们将员工的薪资与这些平均薪资进行比较,并返回相应的信息。

```

5.7 分页查询

数据库中的每一行数据都有一个行号,称为rownum。分页查询就是基于这个行号进行的。可以这样理解:

```sql

===========================

5.8 创建新表并利用查询结果填充

--

SQL的力量在于其灵活性和实用性。你可以轻松创建新表,并直接使用现有表的数据填充。命令如下:

```sql

CREATE TABLE mytable AS SELECT FROM emp;

```

这条命令会创建一个新的表`mytable`,其结构与`emp`表相同,并用`emp`表的数据进行填充。这种操作对于快速复制表结构并转移数据非常有用。

5.9 合并查询:并集、交集、差集

--

合并查询是SQL中非常强大的功能,它允许你在一个查询中组合多个查询的结果。常见的合并查询类型包括UNION(并集)、INTERSECT(交集)、UNION ALL(并集+交集)和MINUS(差集)。例如:

```sql

SELECT ename, sal, job FROM emp WHERE sal > 2500

UNION ALL

SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';

```

这个查询会返回薪资超过2500的所有员工以及所有经理的信息,包括重复的条目。合并查询的执行效率通常高于使用AND或OR等逻辑运算符进行查询。

-

```sql

CREATE TABLE myEmp; -- 创建新表myEmp

```

5.11 使用查询更新表中的数据

--

你还可以使用查询更新现有表中的数据。例如:

```sql

UPDATE emp SET (job, sal) = (SELECT job, sal FROM emp WHERE ename = 'SMITH') WHERE ename = 'SCOTT'; -- 将名为SCOTT的员工的job和sal更新为名为SMITH的员工的job和sal。

```

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by