English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Herramientas en línea

Tutorial básico de PostgreSQL

Funciones y operadores de fecha

Cláusula WHERE de PostgreSQL

C

La cláusula WHERE no solo se puede usar en sentencias SELECT, sino también en UPDATE, DELETE, etcétera.

Sintaxis

A continuación, se muestra la sintaxis general para leer datos de la base de datos utilizando la cláusula WHERE en una sentencia SELECT:

SELECT columna1, columna2, columnaN
FROM nombre_de_tabla
WHERE [condición1]

Podemos usar operadores de comparación o operadores lógicos en la cláusula WHERE, por ejemplo >, <, =, LIKE, NOT, etcétera.

El contenido del archivo COMPANY.SQL es el siguiente:

-- Este es el archivo para crear la tabla COMPANY y llenarla con 7 registros.
-- Sólo copie y pegue en el prompt de psql.
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Noruega', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

Crear la tabla COMPANY, el contenido de los datos es el siguiente:

w3codeboxdb# select * from COMPANY;
 id | name | age | dirección | salario
----+-------+-----+-----------+--------
  1 | Paul |  32 | California|  20000
  2 | Allen |  25 | Texas |  15000
  3 | Teddy |  23 | Noruega |  20000
  4 | Mark |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
  6 | Kim |  22 | South-Hall|  45000
  7 | James |  24 | Houston |  10000
(7 filas)

En los siguientes ejemplos, utilizamos operadores lógicos para leer los datos de la tabla.

AND

Encontrar EDAD (edad) El campo es mayor o igual que 25y SALARIO (salario) El campo es mayor o igual que 65Los datos de 000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
 id | name | age | dirección | salario
----+-------+-----+------------+--------
  4 | Mark |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
(2 filas)

OR

Encontrar EDAD (edad) El campo es mayor o igual que 25o SALARIO (salario) El campo es mayor o igual que 65Los datos de 000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
id | name | age | dirección | salario
----+-------+-----+-------------+--------
  1 | Paul |  32 | California |  20000
  2 | Allen |  25 | Texas |  15000
  4 | Mark |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
(4 filas)

NOT NULL

Encontrar en la tabla de la empresa EDAD (edad) Registros en los que el campo no está vacío:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
  id | nombre | edad | dirección | salario
 ----+-------+-----+------------+--------
   1 | Paul |  32 | California |  20000
   2 | Allen |  25 | Texas |  15000
   3 | Teddy |  23 | Noruega |  20000
   4 | Mark |  25 | Rich-Mond |  65000
   5 | David |  27 | Texas |  85000
   6 | Kim |  22 | South-Hall |  45000
   7 | James |  24 | Houston |  10000
(7 filas)

LIKE

Encontrar en la tabla COMPANY NAME (nombre) Los datos que comienzan con Pa en el campo:

w3codeboxdb=# SELECT * FROM COMPANY WHERE NOMBRE LIKE 'Pa%';
id | nombre | edad | dirección | salario
----+------+-----+-----------+--------
  1 | Paul |  32 | California|  20000

IN

La siguiente consulta SELECT enumera EDAD (edad) Campo es  25 o 27 Datos:

w3codeboxdb=# SELECT * FROM COMPANY WHERE EDAD IN ( 25, 27 );
 id | nombre | edad | dirección | salario
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas |  15000
  4 | Mark |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
(3 filas)

NOT IN

La siguiente consulta SELECT enumera EDAD (edad) Campo no es  25 o 27 Datos:

w3codeboxdb=# SELECT * FROM COMPANY WHERE EDAD NOT IN ( 25, 27 );
 id | nombre | edad | dirección | salario
----+-------+-----+------------+--------
  1 | Paul |  32 | California |  20000
  3 | Teddy |  23 | Noruega |  20000
  6 | Kim |  22 | South-Hall |  45000
  7 | James |  24 | Houston |  10000
(4 filas)

BETWEEN

La siguiente consulta SELECT enumera EDAD (edad) Campo en  25 a 27 Datos:

w3codeboxdb=# SELECT * FROM COMPANY WHERE EDAD BETWEEN 25 AND 27;
 id | nombre | edad | dirección | salario
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas |  15000
  4 | Mark |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
(3 filas)

subconsulta

La siguiente consulta SELECT utiliza una subconsulta SQL, la subconsulta lee SALARIO (salario) Campo mayor que 65000 de los datos, luego a través de EXISTS El operador de comparación determina si se devuelven filas, si hay filas devueltas se leen todas las EDAD (edad) Campo.

w3codeboxdb=# SELECT EDAD FROM COMPANY
        WHERE EXISTS (SELECT EDAD FROM COMPANY WHERE SALARIO > 65000);
 edad
-----
  32
  25
  23
  25
  27
  22
  24
(7 filas)

La siguiente consulta SELECT utiliza una subconsulta SQL, la subconsulta lee SALARIO (salario) Campo mayor que 65000 de EDAD (edad) Datos de campo, luego usar > Consulta con operador mayor que EDAD (edad) Datos de campo:

w3codeboxdb=# SELECT * FROM COMPANY
        WHERE EDAD > (SELECT EDAD FROM COMPANY WHERE SALARIO > 65000);
 id | nombre | edad | dirección | salario
----+------+-----+------------+--------
  1 | Paul |  32 | California |  20000