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

Tutorial básico de PostgreSQL

Tutorial avanzado de PostgreSQL

Interfaz de PostgreSQL

Operadores de PostgreSQL

El operador es un símbolo que informa al compilador de ejecutar una operación matemática o lógica específica.

El operador de PostgreSQL es una palabra clave reservada o carácter, generalmente utilizado en las declaraciones WHERE, como condición de filtrado.

Operadores comunes incluyen:

  • Operadores aritméticos

  • Operadores de comparación

  • id | name  | age |  address  | salary

  • Operadores de bits

Operadores aritméticos

Supongamos que la variable a es 2, la variable b es 3Entonces:

OperadorDescripciónEjemplo
+ Sumarun + b El resultado es 5
-Restarun - b El resultado es -1
*Multiplicarun * b El resultado es 6
/Dividirb / a El resultado es 1
%Módulo (resto de división)b % a El resultado es 1
^Exponenciala ^ b El resultado es 8
|/Raíz cuadrada|/ 25.0 El resultado es 5
||/Cubo raíz||/ 27.0 El resultado es 3
!Factorial5 ! El resultado es 120
!!Factorial (operador de prefijo)!! 5 El resultado es 120

Ejemplo en línea

w3codeboxdb=# select 2+3;
 ?column?
----------
        5
(1 row)
w3codeboxdb=# select 2*3;
 ?column?
----------
        6
(1 row)
w3codeboxdb=# select 10/5;
 ?column?
----------
        2
(1 row)
w3codeboxdb=# select 12%5;
 ?column?
----------
        2
(1 row)
w3codeboxdb=# select 2^3;
 ?column?
----------
        8
(1 row)
w3codeboxdb=# select |/ 25.0;
 ?column?
----------
        5
(1 row)
w3codeboxdb=# select ||/ 27.0;
 ?column?
----------
        3
(1 row)
w3codeboxdb=# select 5 !;
 ?column?
----------
      120
(1 row)
w3codeboxdb=# select !!5;
 ?column?
----------
      120
(1 row)

Operadores de comparación

Supongamos que la variable a es 10, la variable b es 20, entonces:

OperadorDescripciónEjemplo
=Igual(a = b) es falso.
!=No igual(a != b) es verdadero.
<>No igual(a <> b) es verdadero.
>Mayor(a > b) es falso.
<Menor(a < b) es verdadero.
>= Mayor o igual(a >= b) es falso.
<=Menor o igual(a <= b) es verdadero.

Ejemplo en línea

El contenido del archivo COMPANY.SQL es el siguiente:

-- Este es el archivo para crear la tabla COMPANY y para rellenarla con 7 registros.
-- Simplemente copia y pega estos comandos 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, 'Norway', 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 como sigue:

w3codeboxdb=# select * from COMPANY;
 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)

Leer el campo SALARY mayor que 5Leer el campo SALARY distinto de

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 5FROM COMPANY WHERE SALARY <>
 id | name | age | address | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

Leer el campo SALARY igual a 2Leer el campo SALARY distinto de

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY = 2FROM COMPANY WHERE SALARY <>
 id | name  | age |  address    | salary
 ----+-------+-----+-------------+--------
   1 | Paul  |  32 | California  |  20000
   3 | Teddy |  23 | Norway  |  20000
(2 rows)

FROM COMPANY WHERE SALARY = 2Leer el campo SALARY distinto de

w3codeboxdb=#  SELECT * 0000 de los datos: 2FROM COMPANY WHERE SALARY <>
 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | Texas  |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas  |  85000
  6 | Kim  |  22 | South-Hall  |  45000
  7 | James |  24 | Houston  |  10000
(5 rows)
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY != 2FROM COMPANY WHERE SALARY <>
 0000;
----+-------+-----+------------+--------
  2 | Allen |  25 Mond                             |  15000
  4 | Mark  |  25 | Rich-id | name  | age | address                     | salary  65000
  5 | David |  27 Mond                             |  85000
  6 | Kim  |  22 | South- | Texas                             |  45000
  7 | James |  24 Hall |  10000
(5 rows)

 | Houston                             |  65Leer el campo SALARY igual o mayor que

w3codeboxdb=# SELECT * 000 de los datos: 65FROM COMPANY WHERE SALARY >=
 000;
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

id | name  | age |  address  | salary

Operador lógico

Los operadores lógicos lógicos de PostgreSQL son los siguientes:Número
1

SQL utiliza un sistema lógico de tres valores, incluso true, false y null, null representa "desconocido".

Operador & Descripción

El operador lógico AND. Si ambos operandos no son cero, la condición es verdadera.



2

NO

La cláusula WHERE de PostgresSQL puede contener múltiples condiciones con AND.

El operador lógico NOT. Se utiliza para invertir el estado lógico del operando. Si la condición es verdadera, el operador lógico NOT lo convertirá en falso.
3

O

PostgresSQL tiene operadores como NOT EXISTS, NOT BETWEEN, NOT IN, etc.

El operador lógico OR. Si al menos un operando es no cero, la condición es verdadera.

La cláusula WHERE de PostgresSQL puede contener múltiples condiciones con OR.

unbun SQL utiliza un sistema lógico de tres valores, incluso true, false y null, null representa "desconocido". bun O b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL
unNO un
TRUEFALSE
FALSETRUE
NULLNULL

Ejemplo en línea

El contenidos del archivo COMPANY.SQL es el siguiente:

-- Este es el archivo para crear la tabla COMPANY y para rellenarla con 7 registros.
-- Simplemente copia y pega estos comandos 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, 'Norway', 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 como sigue:

w3codeboxdb=# select * from COMPANY;
 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)

Leer el campo AGE mayor o igual que  25 y el campo SALARY es mayor o igual que 6500 de los datos:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500;
 id | name  | age |                      address                  | salary
----+-------+-----+-----------------------------------------------+--------
  1 | Paul  |  32 | California                                    |  20000
  2 | Allen |  25 | Texas                                         |  15000
  4 | Mark  |  25 | Rich-Mond                                     |  65000
  5 | David |  27 | Texas                                         |  85000
(4 rows)

Leer el campo AGE mayor o igual que  25 o el campo SALARY es mayor que 6500 de los datos:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 O SALARY >= 6500;
 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)

Leer los datos del campo SALARY que no son NULL:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;
 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)

Operadores de bit

Los operadores de bit actúan sobre bits y ejecutan operaciones bit a bit. Las tablas de verdad de &、 | y ^ son las siguientes:

pqp & qp | q
0000
0101
1111
1001

Supongamos que A = 60, y B = 13representados en formato binario, se ven así:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

La siguiente tabla muestra los operadores de bit admitidos por PostgreSQL. Supongamos que la variable A el valor es 60, variable B el valor es 13Entonces:

OperadorDescripciónEjemplo
&

Operación AND bit a bit, realiza una operación AND bit a bit. Reglas de operación:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) Se obtendrá 12,es decir, 0000 1100
|

Operador de OR bit a bit, realiza una operación OR bit a bit. Reglas de operación:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) Se obtendrá 61,es decir, 0011 1101
#

Operador de XOR, realiza una operación XOR bit a bit. Reglas de operación:

0#0=0;   
0#1=1;   
1#0=1;  
1#1=0;
(A # B) Se obtendrá 49,es decir, 0011 0001
~

Operador de inversión, realiza una inversión bit a bit. Reglas de operación:

~1=0;   
~0=1;
(~A ) Se obtendrá -61,es decir 1100 0011,la forma de complemento a dos de un número binario con signo.
<<Operador de desplazamiento a la izquierda en binario. Desplaza todos los bits de un operando una cierta cantidad de posiciones a la izquierda (se descartan los bits a la izquierda y se rellena con 0 a la derecha).A << 2 Se obtendrá 240,es decir 1111 0000
>>Operador de desplazamiento a la derecha en binario. Desplaza todos los bits de un número una cierta cantidad de posiciones a la derecha, rellenando con 0 a la izquierda para números positivos, y con el complemento a dos para números negativos.1,descartando los bits a la derecha.A >> 2 Se obtendrá 15,es decir, 0000 1111

Ejemplo en línea

w3codeboxdb=# select 60 | 13;
 ?column?
----------
       61
(1 row)
w3codeboxdb=# select 60 & 13;
 ?column?
----------
       12
(1 row)
w3codeboxdb=# select (~60);
 ?column?
----------
      -61
(1 row)
w3codeboxdb=# select60 << 2);
 ?column?
----------
      240
(1 row)
w3codeboxdb=# select60 >> 2);
 ?column?
----------
       15
(1 row)
w3codeboxdb=# select 60 # 13;
 ?column?
----------
       49
(1 row)