Declaraciones y cláusulas de PostgreSQL

Tabla de contenido

SELECCIONAR 

CON

LÍMITE

COMO

DÓNDE

AGRUPAR POR

TENIENDO

ORDENAR POR


SELECCIONAR 

Los resultados se almacenan en una tabla de resultados, denominada conjunto de resultados.

gramática

La sintaxis de la sentencia SELECT es la siguiente:

SELECT column1, column2,...columnN FROM table_name;
  • columna1, columna2,...columnaN son los nombres de campo en la tabla.

  • table_name es el nombre de la tabla.

Si queremos leer todos los datos de la tabla, podemos usar la siguiente instrucción SQL:

SELECT * FROM table_name;

CON

En PostgreSQL, la cláusula WITH proporciona una forma de escribir declaraciones auxiliares para usar en consultas más grandes.

La cláusula WITH ayuda a desglosar consultas grandes y complejas en formularios más simples que son más fáciles de leer. Estas declaraciones generalmente se denominan expresiones de tabla comunes (Common Table Express, CTE) y también se pueden usar como una tabla temporal para consultas.

La cláusula WITH es especialmente útil cuando se ejecuta una subconsulta varias veces, permitiéndonos referirnos a ella por su nombre (posiblemente varias veces) en la consulta.

La cláusula WITH debe definirse antes de poder usarse.

gramática

La sintaxis básica de una consulta CON es la siguiente:

WITH
   name_for_summary_data AS (
      SELECT Statement)
   SELECT columns
   FROM name_for_summary_data
   WHERE conditions <=> (
      SELECT column
      FROM name_for_summary_data)
   [ORDER BY columns]

name_for_summary_data  es el nombre de la cláusula WITH, name_for_summary_data  puede ser el mismo que el nombre de la tabla existente y tiene prioridad.

Las declaraciones INSERT, UPDATE o DELETE de datos se pueden usar dentro de WITH, lo que le permite realizar múltiples operaciones diferentes en la misma consulta.

CON recursividad

La salida de datos por sí misma se puede utilizar en la cláusula WITH.

Una expresión de tabla común (CTE) tiene la importante ventaja de poder referenciarse a sí misma, creando así una CTE recursiva. Una CTE recursiva es una expresión de tabla común que ejecuta repetidamente una CTE inicial para devolver un subconjunto de datos hasta que se obtiene un conjunto de resultados completo.

LÍMITE

La cláusula de límite en PostgreSQL   se usa para limitar la cantidad de datos consultados en la instrucción SELECT.

gramática

La sintaxis básica de una instrucción SELECT con una cláusula LIMIT es la siguiente:

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

La siguiente es la sintaxis de la cláusula LIMIT cuando se usa con la cláusula OFFSET:

SELECT column1, column2, columnN 
FROM table_name
LIMIT [no of rows] OFFSET [row num]

COMO

En la base de datos PostgreSQL, si queremos obtener datos que contengan determinados caracteres, podemos utilizar  la  cláusula LIKE .

En la cláusula LIKE, generalmente se usa en combinación con comodines, que representan cualquier carácter. En PostgreSQL, hay principalmente dos tipos de comodines:

  • signo de porcentaje %
  • guion bajo _

Si no se utiliza ninguno de los comodines anteriores, la cláusula LIKE y el signo igual = dan el mismo resultado.

gramática

 La siguiente es la sintaxis general para obtener datos de la base de datos utilizando la cláusula LIKE con el signo de porcentaje  %  y el guión bajo  _ :

SELECT FROM table_name WHERE column LIKE 'XXXX%';
--或者
SELECT FROM table_name WHERE column LIKE '%XXXX%';
--或者
SELECT FROM table_name WHERE column LIKE 'XXXX_';
--或者
SELECT FROM table_name WHERE column LIKE '_XXXX';
--或者
SELECT FROM table_name WHERE column LIKE '_XXXX_';

Puede especificar cualquier condición en la cláusula WHERE.

Puede especificar una o más condiciones usando AND u OR.

XXXX  puede ser cualquier número o carácter.

DÓNDE

En PostgreSQL, cuando necesitamos consultar datos de una sola tabla o varias tablas de acuerdo con condiciones específicas, podemos agregar una cláusula WHERE a la instrucción SELECT para filtrar los datos que no necesitamos.

La cláusula WHERE se puede usar no solo en la instrucción SELECT, sino también en las instrucciones UPDATE, DELETE, etc.

gramática

La siguiente es la sintaxis general para leer datos de la base de datos usando la cláusula WHERE en la instrucción SELECT:

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1]

Podemos usar operadores de comparación u operadores lógicos como >, <, =, LIKE, NOT, etc. en la cláusula WHERE.

AGRUPAR POR

En PostgreSQL, la instrucción GROUP BY  se usa junto con la instrucción SELECT para agrupar los mismos datos.

GROUP BY se coloca después de la cláusula WHRER y antes de la cláusula ORDER BY en una instrucción SELECT.

gramática

A continuación se muestra la sintaxis básica de la cláusula GROUP BY:

SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN

La cláusula GROUP BY debe colocarse después de las condiciones de la cláusula WHERE y antes de la cláusula ORDER BY.

En la cláusula GROUP BY, puede agrupar una o más columnas, pero las columnas agrupadas deben existir en la lista de columnas.

TENIENDO

La cláusula HAVING nos permite filtrar los grupos de datos después de la agrupación.

La cláusula WHERE establece condiciones en las columnas seleccionadas, mientras que la cláusula HAVING establece condiciones en las agrupaciones creadas por la cláusula GROUP BY.

gramática

Aquí es donde va la cláusula HAVING en una consulta SELECT:

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

La cláusula HAVING debe colocarse después de la cláusula GROUP BY y antes de la cláusula ORDER BY La siguiente es la sintaxis básica de la cláusula HAVING en la instrucción SELECT:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

Ejemplo:

Los registros de la tabla EMPRESA son los siguientes:

id | name  | age | address      | salary
 ----+-------+-----+--------------+--------
   1 | Paul  |  32 | California   |  20000
   2 | Allen |  25 | Texas        |  15000
   3 | Teddy |  23 | Norway       |  20000
   4 | Mark  |  25 | Rich-Mond    |  65000
   5 | David |  27 | Texas        |  85000
   6 | Kim   |  22 | South-Hall   |  45000
   7 | James |  24 | Houston      |  10000
   8 | Paul  |  24 | Houston      |  20000
   9 | James |  44 | Norway       |   5000
  10 | James |  45 | Texas        |   5000
(10 rows)

El siguiente ejemplo encontrará los datos agrupados según el valor del campo de nombre, y el recuento del nombre es mayor que 1:

SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;

El resultado es el siguiente:

 name
-------
 Paul
 James
(2 rows)

ORDENAR POR

En PostgreSQL, ORDER BY  se usa para clasificar una o más columnas de datos en orden ascendente (ASC) o descendente (DESC).

gramática

La sintaxis básica de la cláusula ORDER BY  es la siguiente:

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Puede usar una o más columnas en ORDER BY, pero debe asegurarse de que las columnas que se ordenarán existan.

ASC  significa orden ascendente, DESC  significa orden descendente.

Ejemplo:

Cree la tabla EMPRESA, el contenido de los datos es el siguiente:

 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

El siguiente ejemplo ordenará los resultados en orden ascendente según el valor del campo NOMBRE y el valor del campo SALARIO:

SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;

y obtener el siguiente resultado:

 id | name  | age |                      address                       | salary 
----+-------+-----+----------------------------------------------------+--------
  2 | Allen |  25 | Texas                                              |  15000
  5 | David |  27 | Texas                                              |  85000
  7 | James |  24 | Houston                                            |  10000
  6 | Kim   |  22 | South-Hall                                         |  45000
  4 | Mark  |  25 | Rich-Mond                                          |  65000
  1 | Paul  |  32 | California                                         |  20000
  3 | Teddy |  23 | Norway                                             |  20000
(7 rows)

Supongo que te gusta

Origin blog.csdn.net/yeyaozhifengqi/article/details/130390287
Recomendado
Clasificación