> For the complete documentation index, see [llms.txt](https://b4zh.gitbook.io/b4zh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://b4zh.gitbook.io/b4zh/sql/bases-de-bases-de-datos.md).

# Bases de bases de datos

## Base de datos

Conjunto de datos organizados y almacenados en tablas.

Una tabla esta compuesta de Columnas y registros/filas.

* Columna: campo que indica que información se va a guardar.
* Registro: información relacionada de una entidad en especifico, formando un registro.

## Base de datos Relacionales.

Conjunto de datos almacenados en tablas que se relacionan entre sí, con una estructura definida. SGDB usados usados para interactuar con BD Relacionales son: MySQL, MariaDB, SQLite. Usan SQL.

## Base de datos NO Relacionales.

Más flexible, admite más tipos de formato para la información, diseñada para ser escalable, NO SQL, las consultas se hacen a traves de APIs o lenguajes especificos, SGBD: MongoDB, Cassandra, CounchDB.

***

## TABLAS, COLUMNAS, REGISTROS Y DATOS

Una base de datos es un conjunto organizado de tablas que estan compuestas por columnas (verticales) y registros (horizontales), y en estas columnas y registros se almacenan los datos.

***

## CLAVES

Una clave es un identificador único e irrepetible en cada tabla, estos IDs actuan sobre una columna/campo que no se pueda repetir, por ejemplo: DNI, Pasaporte o correo eléctronico.

### PRINCIPALES TIPOS DE CLAVES.

1. Clave primaria: identifican de manera única cada registro en una tabla. Su valor no puede ser NULO.
2. Clave foranea: se utiliza para enlazar/relacionar 2 tablas.
3. Clave candidata: datos que califican para ser clave primaria, pero no lo son.
4. Clave unica: garantizan la unicidad de los datos en una columna. Ej: emails.
5. Clave compuesta: formada por varias columnas, para garantizar aún más la unicidad.

## NORMALIZACIÓN

Reglas que dicen como se deben organizar los datos en una base de datos para reducir la redundancia de los mismos. Estas reglas se dividen en:

### Primera Forma Normal (1FN):

* Los valores dentro de cada columna de una tabla deben ser atómicos, es decir que no se puedan dividir.
* Los valores deben ser únicos, usando una clave primaria.

### Segunda Forma Normal (2FN):

* Cumplir con la 1FN.
* Todos las columnas deben depender de la clave primaria.

### Tercera Forma Normal (3FN):

* Cumplir con la 2FN.
* Todas las columas que no sean clave no deben depender de otros campos que no se clave tampoco, solo deben depender de la clave primaria, eliminando así dependencias transitivas.

Util para la escalabilidad y optimización de la base de datos.

***

## INDICES

Se utilizan para acelerar la recuperación de un registro a la hora de consultarlo:

### TIPOS DE INDICE

* PRIMARIO: Se crea en una columna de clave primaria, es unico.
* SECUNDARIO: Se crea en las demás columnas que no son clave.&#x20;
* COMPUESTO: Se crea un indice en base a 2 o más columnas.

***

## CARDINALIDAD

Es el tipo de relación que existe entre las tablas de una base de datos:

* 1:1 = Cada registro en una tabla se asocia con un único registro en otra tabla.
* 1:N = Un registro en una tabla puede estar asociado con múltiples registros en otra tabla.
* N:M = Múltiples registros en una tabla pueden estar asociados a múltiples registros en otra tabla. Se suele crear una tabla adicional (enlace) que represente está relación.

***

## GRADOS

Es el número total de columnas que existe en una tabla.

***

## VISTAS

Es una estructura virtual que nos permite obtener datos en base a un criterio previamente seleccionado.

No almacenan datos fisicamente, se generan de forma dinámica como resultado de una consulta SQL que ya esta predefinida.

***

## INFORMATION\_SCHEMA

Es un esquema estándar propuesto por SQL Standar.

Almacena información sobre los datos almacenados en las bases de datos.

Metadatos: datos sobre los datos.

Es una base de datos que viene incluida de forma predeterminada en la mayoria de SGBD Relacionales, y contiene un conjunto de VISTAS que son de SOLO LECTURA:

### VISTAS

* TABLES: Información sobre las tablas de las bases de datos en el SGBD.
* COLUMS: Información sobre las columnas.
* KEY\_COLUMN\_USAGE: Información sobre las restricciones de claves en las bases de datos.
* TABLE\_CONSTRAINTS: Información sobre las restricciones de claves en las bases de datos.

***

## SGBD =! BASES DE DATOS

UN SGBD es el software a traves del cual interactuamos con una base de datos, y una BASE DE DATOS es esta colección de datos.

> Tengo una base de datos en el SGBD MySQL.

***

## SQL

Desarrollado en 1970 por IBM, Structured Query Language o Lenguje de Consulta Estructurado es un lenguaje que nos permite interactuar con la base de datos, a traves de consultas SQL interpreta ndo nuestras instrucciones, es el intermediario entre nosotros y la base de datos.

Se basa en el modelo relacional de Codd.

> Lenguaje de manejo y manipulación de Bases de Datos.

1986: ANSI hace estándar a SQL.

1987: ISO hace estándar a SQL.

SQL se conforma de COMANDOS, DECLARACIONES y CLÁUSULAS.

### COMANDOS

Todas las instrucciones que están dentro del lenguaje SQL, englobando declaraciones y cláusulas.

### DECLARACIONES

Tipo de instrucción específico del lenguaje SQL, que no necesariamente modifica los datos de la base de datos. Ej: SELECT que sirve para consultar datos, no para modificarlos.

### CLÁUSULAS

Tipo de instrucción que si podría modificar los datos. Modificar el comportamiento de una instrucción SQL. Ej: WHERE, ORDER BY, GROUP BY, HAVING, que son instrucciones para filtrar la información

ESTAS INSTRUCCIONES/COMANDOS SE DIVIDE EN 5 CATEGORIÍAS:

### "TIPOS DE LENGUAJE SQL"

Las instrucciones se agrupan en 5 tipos:

#### 1. DQL

DATA QUERY LANGUAGE: Instruccions que nos permiten CONSULTAR los datos.

#### 2. DML

**DATA MANIPULATION LANGUAGE: Instrucciones que nos permiten MANIPULAR los datos.**

#### 3. DDL

**DATA DEFINITION LANGUAGE: Instrucciones que nos permiten DEFINIR los datos.**

#### 4. DCL

DATA CONTROL LANGUAGE: Instrucciones que nos permiten tener un CONTROL sobre los datos.

#### 5. TCL

TRANSACTION CONTROL LANGUAGE: Instrucciones que nos permiten hacer transacciones entre los datos.

***

## DML, DDL, DCL

### DML

Cláusulas que están destinadas a la manipulación de los datos que se almacenan de forma individual en cada columna.

* SELECT: Seleccionar datos.
* INSERT: Insertar datos.
* UPDATE: Actualizar datos.
* DELETE: Eliminar datos.

### DDL

Cláusulas que centra en la DEFINICIÓN y modificación de la ESTRUCTURA GENERAL de los datos dentro de la base de datos. Cláusulas a nivel de CREACIÓN, MODIFICACIÓN Y ELIMINACIÓN de tablas, índices y otros objetos de la base de datos.

* CREATE
* ALTER
* DROP
* TRUNCATE
* COMMENT
* RENAME

### DCL

Cláusulas que CONTROLAN los derechos de acceso y de seguridad a la base de datos. Se asegura de que el acceso a los datos sea el correcto y el autorizado.

* GRANT
* REVOKE

### TCL

Instrucciones para manejar las transacciones entre las bases de datos.

* BEGIN / START TRANSACTION
* COMMIT
* ROLLBACK
* SAVEPOINT
* RELEASE SAVEPOINT
* SET TRANSACTION

### DQL

Se incluye dentro de DML.

* SELECT
