oracle sql or 用法

1.概述

Oracle SQL或简称SQL是一种用于执行关系型数据库管理系统(RDBMS)上的查询和管理操作的语言。Oracle SQL使用户能够方便地访问其数据,从而提高了组织的生产力。OR用途非常广泛,它提供了一种简单,强大,可靠和灵活的数据管理系统,被广泛应用于不同领域。

2.Oracle SQL连接查询语法

SQL连接查询是通过在两个或多个表之间联接查询来检索数据。Oracle SQL支持四种联接类型:内部联接,外部联接,自然联接和自联接。

2.1内部联接

内部联接使用 INNER JOIN 或 JOIN 关键字来返回两个表中联接行的交集。其语法如下:

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name = table2.column_name;

其中,table1和table2是要联接的表,以及它们的列名和重叠数据的条件。INNER JOIN 关键字也可以使用 JOIN 来代替。

2.2外部联接

外部联接包含左外部联接(LEFT JOIN 或 LEFT OUTER JOIN)和右外部联接(RIGHT JOIN 或 RIGHT OUTER JOIN)。

左外部联接返回左边表(table1)中的所有行,以及右边表(table2)中与左表中的行具有匹配行的行,如果右表中没有匹配行,则返回 NULL 值。

右外部联接则返回右边表(table2)中的所有行,以及左边表(table1)中与右表中的行具有匹配行的行,如果左表中没有匹配行,则返回 NULL 值。

其语法如下:

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name = table2.column_name;

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name = table2.column_name;

2.3自然联接

自然联接根据两个表之间的相同列来进行联接,不需要通过 JOIN ON 条件来指定匹配列。

其语法如下:

SELECT column_name(s)

FROM table1

NATURAL JOIN table2;

注意:自然联接明确禁用两个表中的相同列,否则会引发运行错误。

2.4自联接

自联接用于连接表中的两条记录,该表在查询中出现了两次或更多次。自联接的主要作用是将表的字段用于将自己和其他记录进行匹配。

以下是一个简单的示例,为了更好地理解:

SELECT a.emp_id, a.emp_name, b.emp_salary, b.emp_dept_id

FROM employee a, employee b

WHERE a.emp_salary = b.emp_salary;

该语句选择 employee 表中具有相同薪水的员工(将 employee 表作为 a 和 b)。

3.Oracle SQL条件查询语句

Oracle SQL条件查询语句用于根据特定条件筛选出满足条件的记录。

3.1 WHERE 子句

Oracle SQL WHERE 子句用于在查询中指定搜索条件,其语法如下:

SELECT column_name(s)

FROM table_name

WHERE condition;

其中,WHERE 子句中的条件可以是比较运算符,逻辑运算符和特殊运算符。

比较运算符的例子:

SELECT *

FROM employee

WHERE emp_name = 'Jack';

逻辑运算符的例子:

SELECT *

FROM employee

WHERE emp_age > 30 AND emp_salary > 5000;

特殊运算符的例子:

SELECT *

FROM employee

WHERE emp_name LIKE '%a%';

3.2 IN 子句

Oracle SQL IN 子句用于指定某个值必须匹配一组值中的一个。其语法如下:

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1, value2, ...);

IN 子句中的值可以是一个表达式,一个子查询甚至可以是另一个 IN 子句。

下面是一个 IN 子句的例子:

SELECT *

FROM employee

WHERE emp_id IN (2, 5, 7);

该语句选择具有 emp_id 列中值为 2、5 或 7 的所有行。

4.Oracle SQL聚合函数

Oracle SQL聚合函数是一组函数,用于计算表中数据的值,如 COUNT、MAX、MIN、SUM 和 AVG。

4.1 COUNT()

COUNT() 函数用于计算选定列的行数。其语法如下:

SELECT COUNT(column_name)

FROM table_name;

例如:

SELECT COUNT(emp_id)

FROM employee;

该语句将返回 employee 表中 emp_id 列的行数。

4.2 MAX()

MAX() 函数用于返回选定列中的最大值。其语法如下:

SELECT MAX(column_name)

FROM table_name;

例如:

SELECT MAX(emp_salary)

FROM employee;

该语句将返回 employee 表中 emp_salary 列的最大值。

4.3 MIN()

MIN() 函数用于返回选定列中的最小值。其语法如下:

SELECT MIN(column_name)

FROM table_name;

例如:

SELECT MIN(emp_salary)

FROM employee;

该语句将返回 employee 表中 emp_salary 列的最小值。

4.4 SUM()

SUM() 函数用于计算选定列的总和。其语法如下:

SELECT SUM(column_name)

FROM table_name;

例如:

SELECT SUM(emp_salary)

FROM employee;

该语句将返回 employee 表中 emp_salary 列的总和。

4.5 AVG()

AVG() 函数用于计算选定列的平均值。其语法如下:

SELECT AVG(column_name)

FROM table_name;

例如:

SELECT AVG(emp_salary)

FROM employee;

该语句将返回 employee 表中 emp_salary 列的平均值。

5.Oracle SQL分组函数

Oracle SQL分组函数允许根据其组返回单个值,这些组是基于 SELECT 语句中指定的表达式集划分的。以下是每个分组函数的详细信息。

5.1 GROUP BY 子句

GROUP BY 子句用于将查询结果按照指定列表达式的值对查询结果分组,其语法如下:

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

例如:

SELECT dept_id, AVG(emp_salary)

FROM employee

GROUP BY dept_id;

该语句将返回 employee 表中每个部门的平均工资。

5.2 SUM() with GROUP BY

SUM() 函数用于计算选定列的总和,与 GROUP BY 子句一起使用,其语法如下:

SELECT column_name, SUM(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

例如:

SELECT dept_id, SUM(emp_salary)

FROM employee

GROUP BY dept_id;

该语句将返回 employee 表中每个部门的总工资。

5.3 AVG() with GROUP BY

AVG() 函数用于计算选定列的平均值,与 GROUP BY 子句一起使用,其语法如下:

SELECT column_name, AVG(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

例如:

SELECT dept_id, AVG(emp_salary)

FROM employee

GROUP BY dept_id;

该语句将返回 employee 表中每个部门的平均工资。

5.4 COUNT() with GROUP BY

COUNT() 函数用于计算选定列的行数,与 GROUP BY 子句一起使用,其语法如下:

SELECT column_name, COUNT(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

例如:

SELECT dept_id, COUNT(*)

FROM employee

GROUP BY dept_id;

该语句将返回 employee 表中每个部门的员工数。

数据库标签