MySQL
Published: 2023-12-21 10:06:23

---
title: MySQL
published: TRUE
description: 
tags: 
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-12-21 03:38 +0000
---

Que es una base de datos?
Una base de datos es un conjunto de datos estructurados.

Las bases de datos estan compuestas por tablas donde se guardan la informacion, las tablas a su vez estan formadas por columnas, las cuales nos permiten identificar el tipo de informacion que sera almacenada, tambien tenemos las relaciones entre las tablas.

Ejemplo:
Nuestra tabla productos deberia estar asociada con la tabla de ventas.

tambien podemos realizar las consultas sobre la informacion que se encuentra almacenadas en las tablas.

Historia de las bases de datos
El estadistico Hernan Hollerith creo el concepto de datos en 1984.
En 1970, Edgar Frank creo el modelo relacional
Luego Larry Ellison creo el sistema de gestion de bases de datos relacional conocido como Oracle.
En 1980, aparecio SQL, lenguaje de consultas estructurado con el que podemos consultar, agregar, actualizar o eliminar informacion de las bases de datos.

Ventajas de las bases de datos:

La independencia de los datos
Consistencia, integridad y redundancia de los datos
Acceso rapido a los datos
Seguridad
Compartir y centralizar los datos

Que es SQL?
SQL(Structured Query Language)es el lenguaje estandar creado por IBM en 1970, para el acceso a los sistemas de gestion de bases de datos relacionales.

Ventajas:
1. la Atomicidad: nos indica si una operacion se realizo o no.

2. Su gran difucion: SQL es utilizado por muhos programas actualmente.

3. Facil comprension: Es muy facil de aprender y de poder utilizarlos.

Categorias de SQL:

DDL -> nos permite crear, modificar, o eliminar, estructuras de bases de datos, como tablas, indices, listas, procedimientos, etc.

DML -> nos permite la creacion, actualizacion, eliminacion, y tambien extraer datos de nuestras bases de datos. Entre estos se encuentran select, insert, delete y update.

DCL -> Luego tenemos el lenguaje de control de acceso, que nos permite administrar la seguridad al acceso de los datos. Entre esos esta el grant y el revoke.

Luego tenemos el lenguaje de control de transacciones, nos permite administrar distintas transacciones, como el commit y el rollback.

Que es MySQL:
Es un sistema de gestion de bases de datos SQL de codigo abierto mas popular. Desarrollado, distribuido y respaldado por Oracle Corporation.
Utilizado especialmente en desarrollo web. 

En 1995, MySQL, fue creado por la empresa MySQL AB, con el fin de manejar grandes cantidades de datos a bajo costo. En el 200 de adaptan los terminos de la licencia publica general, GPL.

Interfaces graficas para trabajar en MySQL
MySQL Workbench
PHPMyAdmin
Sequel Pro
Navigate
CLI (Command Line Interface)

Creación de asignación de roles
Indices
Persistencia de configuración
Conjunto de caracteres
Validación de esquema JSON

CMS y Frameworks:
 CMS:
Joomla
WordPress
Drupal
Magneto

 Frameworks:
CakePHP
Codelgniter
Laravel

Características:
Motores de almacenamiento
Multiplataforma
Indexación de campos de texto
Alto rendimiento y escalabilidad
Proteccion de datos y seguridad

Tipos de datos en MySQL:
Los tipos de datos nos permiten representar los diferentes datos que son necesarios

Tipos de datos:
1. Numericos
2. Fecha y hora
3. Cadena(caracteres y bytes)
4. Espaciales
5. JSON

Convenciones D y fsp:
Tipos flotantes y de punto fijo
TIME, DATETIME y TIMESTAMP
Corchetes[]

Datos de tipo Numerico:
MySQL admite todos los tipos de datos numericos de SQL estandar.

Tipo: Integer:
INTEGER = INT
SMALLINT
TINYINT
MEDIUMINT
BIGINT

La diferencia de cada uno se encuentra la diferencia de maximo y minimo

Punto flotante(valor aproximado):
FLOAT
DOUBLE
REAL

Tipos BIT:
BIT (M) permite el almacenamiento de valores de M bits
M puede varias de 1 a 64

Fuera de rango y desbordamiento:
Modo SQL estricto habilitado
Modo SQL estricto no habilitado

Datos de tipo String en MySQL:
CHAR -  VARCHAR
BINARY - VARBINARY
ENUM
SET

Datos de tipo BLOB en MySQL:
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB

Datos de tipo TEXT en MySQL:
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT

Datos de tipo fecha y hora en MySQL:

DATETIME: 
Formato: 'YYYY-MM-DD HH:MM:SS''
El rango: '1000-01-01 00:00:00'a '9999-12-31 23:59:59''

DATE:
Formato: 'YYYY-MM-DD'
El rango soportado es de '1000-01-01' a '9999-12-31''
 
Datos de tipo TIMESTAMP en MySQL:

TIMESTAMP: valores que contienen partes de fecha y hora

TIMESTAMP tiene un rango de '1970-01-01 00:00:01' UTC a '2038-01-19 03:14:07' UTC

Ejemplo:
CREATE TABLE `p`(
`i` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NULL,
`fecha` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ('id'));

Datos de tipo TIME en MySQL:
TIME: formato 'HH:MM:SS' o 'HHH:MM:SS'
Rango de '-838:59:59' a '838: 59:59'

TIME puede representar una hora al dia, debe ser menos a 24 horas

Tiempo transcurrido a un intervalo de tiempo entre dos eventos, puede ser mucho mayor a 24 horas

Datos de tipo YEAR en MySQL:
YEAR: formato YYYY
El rango es de 1901 a 2155 o 0000
4 digitos: rango de 1901 a 2155 o '1901' a '2155'
1 o 2 digitos: rango de 1 a 99 o '0' a '99'
convierte los rangos 1 a 69 y 70 a 99 a valores AÑO en los rangos 2001 a 2069 y 1970 a 1999

Ejemplo de sentencia:
SELECT fecha FROM p;
SELECT CAST (fecha AS DATE) FROM p;

Datos de tipo JSON en MySQL:
JSON es un formato de texto sencillo para el intercambio de datos.

Ventajas de JSON:
1. Validacion de documentos JSON
2. Formato de almacenamiento optimizado
3. El espacio requerido es aproximadamente el mismo que para LONGBLOB o LONGTEXT

Que es un Rol en MySQL:
Un rol es una coleccion de privilegios que se le pueden asignar a un usuario

create role: 'rl_lectura', 'rl_escritura';

grant select on tienda.* to 'rl_lectura';
grant insert, update, delete on tienda.* to 'rl_escritura';

show grant for 'rl_escritura';
show grant for 'rl_lectura';


Asignar Roles a usuarios de MySQL:

grant 'rl_lectura', 'rl_escritura' to admin1@'%'; 
show grants for admin1@'%'; 

Quitarle permisos a usuarios de MySQL:
revoke delete on tienda.* from 'rl_escritura';
show grants for 'rl_escritura';

Eliminar Roles a usuarios de MySQL:
drop role 'rl_escritura';














Ejemplos para Seleccion de Rangos en MySQL:

select * from empleado

where fechaIngreso between 500 and 700;
where fechaIngreso not between 500 and 700;

where fechaIngreso between '2018-01-20'and '2018-12-31';
where fechaIngreso not between '2018-01-20'and '2018-12-31';

Ejemplo de Seleccion Multiple de valores en MySQL:

SELECT *
FROM factura
WHERE idFactura != 1 and
idFactura != 3 and
idFactura != 5 and
idFactura != 7;

select *from factura
where idFactura IN (1. 2, 5, 7);

Manejo de nulos en MySQL:

select * 
from cliente
where telefono is not null;

Funciones Matematicas en MySQL:

1. la funcion ABS: esta funcion nos devuelve el valor absoluto de un numero.

   select ABS(-6);

2. la funcion ceil: nos permite redondear un valor siempre hacia arriba.

   select ceil(8.1);

3. la funcion floor: se va a devolver el entero mas grande no mayor al numero dado.

   select floor(9.85);

4. la funcion mod: devuelve el residuo de la division de un numero entre otro.

   select mod(15.5);

5. la funcion PI: nos devuelve el valor de PI.

   select PI();

6. la funcion power: devuelve el valor de 3 elevado a la potencia de 2.

   select power(3,2);

7. la funcion rand: nos devuelve un valor aleatorio entre 0 y 1.

   select rand();

8. la funcion round: nos devuelve un numero redondo, va a redondear el numero entero superior o inferior.

   select round(16.5);


Escriptación en MySQL:
La encriptación de los datos nos permite poner la información en un formato ilegible, a traves de algun algoritmo, para que nuestra informacion sea menos vulnerable a ser laida y utilizada por terceras personas para fines maliciosos.

Por esta razon MySQL pone a nuestra disposicion una serie de funciones que nos permiten cifrar datos.

Encriptar contraseñas:
select aes_encrypt('micontrasena', 'key');

Desencriptar contraseñas:
select aes_decrypt(aes_encrypt('micontrasena', 'key'), 'key');


Suma y conteo de valores en MySQL:

select sum(cantidad) as total
from detalle_factura
where idProducto = 2;

select count(*) as productos
from producto;
where idCategoria = 2;

select count(distinct IdCategoria)
from producto;




///
-Espero que mis apuntes te ayuden en tu investigacion personal o tarea de colegiatura.

Si te gusto, apoyame con un like y sigueme. Gracias.
///

Material de estudio.
Fuente: Base de datos MySQL.