Resumen PostgresSQL v.2
Resumen PostgresSQL v.2
1. Introducción al SQL:
- SQL es un lenguaje estándar para definir, manipular y controlar bases
de datos relacionales.
- Es declarativo (indicar que hacer), similar al inglés, y accesible en
sistemas relacionales comerciales.
- Ha evolucionado a través de revisiones, como SQL1, SQL92, SQL1999,
SQL: 2003, etc.
2. PostgreSQL:
- PostgreSQL es un SGBD orientado a objetos usado en software libre.
- Cumple con estándares SQL92 y SQL99.
- Es compatible con diversas plataformas, incluyendo Windows desde la
versión 8.0.
3. Modos de Ejecución SQL:
- Ejecución directa (SQL interactivo).
- Ejecución incrustada (SQL en código de otro lenguaje).
- Ejecución a través de clientes gráficos.
4. Procesamiento de Sentencias SQL:
- Análisis (sintaxis), validación (semántica), optimización y ejecución.
5. Elementos del Lenguaje SQL:
5.1 Código SQL:
- Comandos: Instrucciones realizadas desde SQL
- Cláusulas: Palabras especiales que modifican el funcionamiento de un
comando, como WHERE (filtro de resultados), ORDER BY (ordenar
resultados), etc.
- Operadores: Permiten crear expresiones complejas, como
operadores aritméticos (+, -, *, /), lógicos (>, <, !=, <>, AND, OR), etc.
- Funciones: Utilizadas para obtener valores complejos, como SUM()
para sumar valores o DATE() para trabajar con fechas.
- Literales: Valores específicos utilizados en consultas, como números (2), decimales (12.34), o cadenas de texto ('Avda Cardenal Cisneros').
- Metadatos: Información sobre la propia base de datos, obtenida a través de consultas específicas.
5.2 Normas de escritura:
- En SQL, no se distingue entre mayúsculas y minúsculas.
- Las instrucciones finalizan con un punto y coma.
- Los comandos SQL pueden dividirse por espacios o saltos de línea.
- Se pueden tabular líneas para mejorar la legibilidad del código.
- Los comentarios inician con /* y terminan con */.
6. Normas de Escritura en SQL:
- No se distingue entre mayúsculas y minúsculas.
- Las instrucciones terminan con punto y coma.
- Los comandos SQL pueden dividirse por espacios o saltos de línea.
- Se pueden tabular líneas para facilitar la lectura.
- Comentarios inician con /* y terminan con */.
Instalación Postgresql
sudo apt update Para actualizar el repositorio
sudo apt upgrade Actualiza los paquetes que tenemos instalados
sudo apt install postgresql postgresql-contrib Instala el paquete indicado
Sudo passwd postgres asignar una contraseña al usuario
Su postgres logear con el usuario
Cd ir al home de postgres, sino da error
Psql conectar con la base de datos
Sudo nano /etc/postgresql/14/main/postgresql.conf editar archivo .conf
- listen_addresses = "localhost"
- listen_addresses = "*"
sudo nano /etc/postgresql/14/main/pg_hba.conf editar archivo .conf
- host all all all md5 (añadir línea al final del archivo con tabulaciones)
sudo service postgresql start/restart/status/stop (empezar, reiniciar, etc.)
sudo apt install postgresql-client instalar en lado cliente
/p = buffer
a. Crear un Rol (Usuario):
CREATE ROLE alias WITH SUPERUSER CREATEDB LOGIN PASSWORD 'la_contraseña_que_le_quieras_poner';
- CREATE ROLE: Crea un nuevo rol (usuario).
- alias: Nombre del rol.
- WITH SUPERUSER: Concede privilegios de superusuario.
- CREATEDB: Permite al rol crear bases de datos.
- LOGIN: Permite al rol iniciar sesión.
- PASSWORD 'la_contraseña_que_le_quieras_poner': Establece una contraseña.
b. Crear una Base de Datos Asociada con el Rol:
CREATE DATABASE alias_plan OWNER alias;
- CREATE DATABASE: Crea una nueva base de datos.
- alias_plan: Nombre de la base de datos.
- OWNER alias: Establece al rol como propietario de la base de datos.
FROM
Especifica la lista de tablas:
ORDER
Clasifica el resultado de la consulta
1. Operadores Lógicos:
Con la cláusula "WHERE" se puede usar más de un operador lógico
1.1 Operadores Lógicos:
- `NOT`: Invierte el resultado de una condición.
- `AND`: Se usa para combinar condiciones con "y".
- `OR`: Se usa para combinar condiciones con "o".
2. Operadores Relacionales (o de Comparación):
1.2 Operadores Relacionales:
- `=`: Significa igual.
- `<>` o `!=`: Significa distinto.
- `>`: Mayor que.
- `<`: Menor que.
- `>=`: Mayor o igual que.
- `<=`: Menor o igual que.
Devuelven valores de tipo booleano
1.2.1 Coincidencia de Patrones (Operador LIKE):
- `LIKE`: Devuelve verdadero si la cadena coincide con el patrón.
- `NOT LIKE`: Devuelve verdadero si la cadena no coincide con el patrón.
- Patrones: `%` (comodín), `_` (marcador de posición).
3. Operadores Matemáticos:
- `+`: Se usa para sumar.
- `-`: Se usa para restar.
- `*`: Se usa para multiplicar.
- `/`: Se usa para dividir.
- `%`: Devuelve el resto de la división.
- `^`: Eleva un número a una potencia.
- `!`: Calcula el factorial.
2 Funciones
2.1 Funciones aritméticas
Trabajan con valores de tipo numérico:
- Simples (número, variable, columna)
- Grupos de valores
En todas las funciones de grupo, al indicar los argumentos se
pueden emplear las cláusulas DISTINCT y ALL
Las funciones de cadenas de caracteres trabajan con datos de tipo CHARACTER, CHARACTER VARYING y TEXT. Estos datos incluyen cualquier carácter
alfanumérico
La función date_trunc en bases de datos se utiliza para truncar un valor de fecha y hora a una unidad de tiempo específica, estableciendo los
campos menos significativos en 0 según la precisión definida por el parámetro text.
Función COALESCE
Evalúa varios valores en orden y
devuelve el primero que no sea nulo
Subconsultas
Subselect
Permite anidar el resultado de una consulta dentro de la consulta padre:
- Tienen la misma sintaxis, el “;” se omite en la subconsulta Tipos de
- Se encuentra contenida entre parentesís Subconsultas
- Restricciones en columnas y filas
- No debe contener la cláusula ORDER BY
- La subconsulta se ejecuta por cada fila de la consulta padre
Monofila
Devuelve 1 fila y 1 columna
Se usan operadores (=, >, >=, <=, !=)
Multifila
Devuelve más de una fila en una columna
Usan operadores multifila como IN, ANY o SOME, ALL
Multicolumna
Devuelve más de una fila y con más de una columna
- Van en la cláusula where
- Deben coincidir número y tipo de datos
Agrupaciones
Uso básico de GROUP BY:
GROUP BY se utiliza para agrupar resultados por una o más columnas.
Restricciones en la cláusula SELECT con GROUP BY:
- En la lista de selección (SELECT), solo puedes incluir constantes, funciones de agrupación, expresiones idénticas a las de GROUP BY, y expresiones
que evalúen el mismo valor para todas las filas de un grupo.
- Las columnas que no están en GROUP BY deben usarse con funciones de agrupación.
Funciones de agrupación:
- Puedes usar funciones como COUNT, SUM, AVG en la cláusula SELECT para realizar cálculos en cada grupo.
Uso de HAVING:
- La cláusula HAVING se usa junto con GROUP BY para filtrar grupos basados en condiciones específicas. Es similar a WHERE, pero se aplica a grupos
en lugar de filas individuales.
El orden de evaluación es: WHERE, GROUP BY, HAVING, y finalmente ORDER BY.
Combinaciones Externas
Combinan registros de dos tablas que cumplen la condición
Left Outer Join (Left Join):
- Muestra todos los registros de la tabla de la izquierda.
- Si no hay coincidencias con la tabla de la derecha, los campos de esta última aparecen como
"null".
Right Outer Join (Right Join):
- Muestra todos los registros de la tabla de la derecha.
- Si no hay coincidencias con la tabla de la izquierda, los campos de esta última aparecen como
"null".
Full Outer Join (Full Join):
- Retorna todos los registros de ambas tablas.
- Si un registro de la tabla izquierda no tiene coincidencias en la tabla derecha, los campos de
esta última aparecen como "null". Lo mismo ocurre si la tabla de la derecha no encuentra
coincidencias en la tabla izquierda.
Consultas Correlacionadas
Si la subconsulta y la consulta acceden a una misma columna se han de usar distintos alias para
esa columna
Operador EXISTS
Comprueba la existencia de filas en una subconsulta
Cláusulas LIMIT y OFFSET
LIMIT:
- Restringe el número de registros devueltos por una consulta.
- Recibe un argumento numérico positivo (primer registro es el 0)
OFFSET:
- Indica el número del primer registro a retornar.
- Se utiliza junto con LIMIT para omitir las primeras m filas antes de devolver n filas.
También se puede usar la cláusula fetch.
Si hay restricciones como NOT NULL en una columna, se deben proporcionar valores o se generará un error.
No es necesario especificar el nombre de las columnas si se proporcionan valores en el mismo orden en que están definidas en la tabla.
Insertar apellidos de empleados del departamento 20 en la tabla Insertar un nuevo empleado ('GARCÍA') en la tabla EMPLE en el
NOMBRES: departamento con más empleados:
Nota: Se debe tener en cuenta la longitud de las columnas para evitar errores.
3. Modificación - Orden UPDATE:
La orden UPDATE se utiliza para modificar los valores de las columnas de una o varias filas de una tabla.
UPDATE NombreTabla SET columna1 = valor1, ..., columnaN = valorN WHERE condición;
Igualar la localidad y el número de teléfono del investigador 20 a los del investigador 30:
Para todos los empleados del departamento de 'CONTABILIDAD', cambiar su salario al doble del salario de 'SÁNCHEZ' y su apellido a
minúsculas:
Cambiar el salario a la mitad y la comisión a 0 para empleados del Modificar el número de departamento de 'Jesica Galindo' al
departamento con mayor número de empleados: departamento donde hay más empleados cuyo oficio sea
'EMPLEADO':
TRUNCATE
Borra todas las filas de una tabla rápidamente.
No puede usarse si hay referencias de clave ajena a la tabla desde otras tablas.
4.2 VACUUM:
La instrucción VACUUM se utiliza para liberar el espacio de almacenamiento ocupado por filas borradas y realizar otras tareas relacionadas con
el mantenimiento de la base de datos
[FULL]: Realiza un procesamiento más extenso, incluyendo mover filas entre bloques para compactar la tabla.
[VERBOSE]: Muestra un detalle de la actividad del proceso de VACUUM.
[tabla]: Especifica la tabla a la que se aplica el VACUUM.
VACUUM sin opciones procesa todas las tablas de la base de datos actual.
VACUUM puede actuar en paralelo con otras operaciones normales en la tabla.
VACUUM FULL es más lento y requiere un bloqueo exclusivo sobre la tabla durante el procesamiento.
VACUUM es importante para liberar espacio y mantener la eficiencia de la base de datos, especialmente en tablas que se actualizan
frecuentemente.