Saltar al contenido

Clase 23 - Introducción a SQL

#sql #postgresql #pgadmin #docker-compose #uml

Bases de Datos Relacionales

  • Sistemas de gestión que se basan en tablas para almacenar y organizar datos.
  • Las tablas tienen filas y columnas, en las cuales las columnas son los campos (nombre y tipo de dato) y las filas son registros (datos e información que corresponde a cada campo).
  • Se basan en el modelo relacional y álgebra de conjuntos.

SQL: Structured Query Language

  • SQL es un lenguaje de programación especializado, utilizado para administrar y manipular bases de datos relacionales.
  • Proporciona un conjunto de comandos y sintaxis para realizar diversas operaciones, como crear, modificar, eliminar y consultar datos en una base de datos.
  • SQL es un estándar ampliamente aceptado en la industria y es compatible con varios sistemas de gestión de bases de datos, como PostgreSQL, MySQL, Oracle, SQLite, etc.

UML: Unified Modeling Language

  • UML es un lenguaje de modelado gráfico utilizado para visualizar, especificar, construir y documentar sistemas software, como por ejemplo bases de datos.
  • Proporciona una notación estándar para representar diagramas.
  • Los diagramas UML son útiles para diseñar e indicar la estructura y el comportamiento de una base de datos. UML

SQL: Commands

Commands

DDL: Create Database

CREATE DATABASE <nombre_base_de_datos>;
CREATE DATABASE books_database_fs;

DDL: Create Table

CREATE TABLE <nombre_de_tabla> (
<nombre_de_campo> <tipo_de_dato> <restricciones>,
<nombre_de_campo> <tipo_de_dato> <restricciones>,
<nombre_de_campo> <tipo_de_dato> <restricciones>,
...
<nombre_de_campo> <tipo_de_dato> <restricciones>,
);

Tipo de datos PostgreSQL

Tipos de datos

Tipo de restricciones PostgreSQL

- PRIMARY KEY: clave primaria
- FOREIGN KEY: clave foránea
- UNIQUE: valor único
- NOT NULL: el valor tiene prohibido ser nulo
- CHECK: restricción de verificación
- DEFAULT: valor por defecto

Ejemplo

CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(50) NOT NULL,
author VARCHAR(50) NOT NULL,
created_at timestamp DEFAULT CURRENT_TIMESTAMP
);

DML: Insert Into

INSERT INTO <nombre_de_tabla> (
<nombre_de_campo>,
<nombre_de_campo>,
<nombre_de_campo>,
...
) VALUES (
<valor>,
<valor>,
<valor>,
...
);
INSERT INTO books (
title
author
) VALUES (
'Manuelita',
'Creador de Manuelita'
)

DQL: Select

SELECT <nombre_de_campo>, ... FROM <nombre_de_tabla>;
SELECT author, title FROM books;

Filtrando un SELECT

SELECT <columnas> FROM <tabla> WHERE <condición>;
SELECT author FROM books WHERE title = 'Manuelita';

Renombrar una columna en un SELECT

SELECT <columnas> AS <alias> FROM <tabla> WHERE <condición>
SELECT author as autor_real FROM books WHERE title = 'Manuelita';

DML: UPDATE

UPDATE <tabla>
SET <columna> = <valor>
WHERE <condición>;
UPDATE books
SET title = 'Manuelita set'
WHERE author = 'Creador de Manuelita';

DML: DELETE

DELETE FROM <tabla>
WHERE <condición>;
DELETE FROM books
WHERE author = 'Creador de Manuelita'

DDL: ALTER TABLE

ALTER TABLE <tabla> ADD COLUMN <columna> <tipo de dato>
ALTER TABLE books ADD COLUMN year INTEGER

DDL: DROP TABLE

DROP TABLE <tabla>;
DROP TABLE books;

Ejercicios

A partir de la base de datos suministrada y mediante DQL. Hacer las consultas (queries) necesarias para responder las siguientes preguntas:

  • ¿Cuántas tiendas (store) hay en total?
  • ¿Cuántas películas (film) tienen una duración de más de 120 minutos?
  • ¿Cuántos pagos realizó el cliente (customer) con el ID 472?
  • ¿Cuál es el ID de la película (film) que tiene un ID de inventario (inventory) 303?
  • ¿Cuál es la dirección (address) y distrito (district) de la persona cuyo teléfono es 634445428822?