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.

SQL: 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

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 defectoEjemplo
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 booksSET title = 'Manuelita set'WHERE author = 'Creador de Manuelita';DML: DELETE
DELETE FROM <tabla>WHERE <condición>;
DELETE FROM booksWHERE author = 'Creador de Manuelita'DDL: ALTER TABLE
ALTER TABLE <tabla> ADD COLUMN <columna> <tipo de dato>
ALTER TABLE books ADD COLUMN year INTEGERDDL: 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?