Herramientas Informaticas

Categoría: MariaDB Página 1 de 2

CURSO MARIADB -PROCEDIMIENTOS ALMACENADOS #10

Un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) almacenado físicamente en una base de datos. Su implementación varía de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

Los procedimientos pueden ser ventajosos: cuando una base de datos es manipulada desde muchos programas externos. Al incluir la lógica de la aplicación en la base de datos utilizando procedimientos almacenados, la necesidad de embeber la misma lógica en todos los programas que acceden a los datos es reducida. Esto puede simplificar la creación y, particularmente, el mantenimiento de los programas involucrados.

Podemos ver un claro ejemplo de estos procedimientos cuando requerimos realizar una misma operación en un servidor dentro de algunas o todas las bases de datos y a la vez dentro de todas o algunas de las tablas de las bases de datos del mismo. Para ello podemos utilizar a los Procedimientos almacenados auto creables que es una forma de generar ciclos redundantes a través de los procedimientos almacenados.

Hoy en día existe un debate si se debe de usar procedimientos almacenados, en mi opinión digo que si, hay pros y contras en usar procedimientos almacenados, pero al final es mejor mejor practica usarlos ya que funcionara mas eficientemente siempre y cuando se haga bien, también si se da el caso de que sea una aplicación de escritorio la mayor parte de las veces no se necesitara recompilar y actualizar el ejecutable, si no que solo se tendrá que modificar la base de datos .

Bien como prueba vamos a hacer un procedimiento almacenado básico, tal procedimiento va a insertar en la tabla clientes y luego ejecutara una consulta.

CREATE PROCEDURE `SPR_InsertaCliente`(IN `strNombre` VARCHAR(256)
				    , IN `strRFC` VARCHAR(15)
                                    , IN `strDireccion` VARCHAR(15)) 

BEGIN 

	insert into clientes(nombres 
			    ,RFC
			    ,direccion ) 
			
		    values( strNombre 
			    ,strRFC
			    ,strDireccion ); 

		select * from clientes; 
END;

Ahora mandamos llamar el procedimiento almacenado que hara 2 cosas, una es insertar

SET
    @p0 = 'Cesar';
SET
    @p1 = 'XXXA';
SET
    @p2 = 'Conocido';
CALL
    `SPR_InsertaCliente`(@p0, @p1, @p2);

O simplemente lo podemos invocar de la siguiente manera

CALL SPR_InsertaCliente('Cesar', 'XXXA', 'Conocido');

El resultado será el siguiente



id	nombres	RFC	direccion	
1	Julio	xxx	conocido	
2	kakaroto	xxe	vegita	
3	Cesar	XXXA	Conocido	
4	Cesar	XXXA	Conocido	
5	Cesar	XXXA	Conocido	

Nos arroja varias ya que hemos ejecutado varias veces el procedimiento

Vídeo Demostrativo

CURSO MARIADB 10 – VISTAS

Las vistas en MariaDB o MySQL son tablas virtuales que no almacenan ningún dato sino que es el resultado de la consulta de varias tablas o una según se allá hecho la consulta, por ejemplo, tenemos la tabla clientes y la tabla ventas, en ventas aparte de los demás campos propios de una venta tenemos el idCliente que se relaciona con el campo id de la tabla cliente y de allí podemos tomar el nombre, por ejemplo generamos el siguiente guion para obtener todos los datos.

SELECT a.id as idVenta
	, a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion	as direccion
FROM ventas a
	,clientes b 
   where idCliente=b.id

Nos dará como resultado lo siguiente

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

Bien en base a esa consulta podemos crear la vista

CREATE
 VIEW `vw_vistaVenta`
 AS SELECT a.id as idVenta
    , a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion   as direccion
FROM ventas a
    ,clientes b 
   where idCliente=b.id;

Ahora solo en lugar de escribir todo el código que pusimos al principio solo pondremos lo siguiente

select * from vw_vistaVenta;

Y nos arroja el mismo resultado sin tanto código

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

CURSO MARIADB 10 – RESPALDOS AUTOMATICOS DIARIOS #8

Bien ya explicamos como generar respaldos manuales, pero lo importante es que se generen automáticamente sin tener que intervenir nosotros, también es importante comprimir el archivo ya que conforme pasa el tiempo y se ingresan datos la base de datos crece en tamaño, lo bueno de comprimirla es que baja su tamaño hasta 10 veces .

Bien primero para el caso de Windows vamos a descargar un compresor para Windows que se llama XZ puede descargarlo desde source forge XZ Utils for Windows download | SourceForge.net

Copiamos el archivo en c:\xampp\mysql\bin

Quedaría el ejecutable en esa carpeta

Ahora abrimos el bloc de notas y metemos el siguiente texto

cd c:\xampp\mysql\bin
mysqldump --opt --events --routines --triggers --default-character-set=utf8 -u root pos | xz > c:\respaldo\respaldo.sql.xz

Lo guardamos en la carpeta respaldos o en la carpeta de su preferencia, lo guardamos con extensión .bat o

Vemos como guardo el archivo respaldo.sql.xz
A abrir el archivo comprimido y ver el archivo SQL nos debe mostrar algo similar a la imagen

Ahora sigue para programar para que se ejecute automáticamente

Abrimos el programador de tareas ya esta instalado en Windows Solo nos vamos al Inicio y escribimos programador de tareas, luego vamos al menú acción y le damos clic en Crear Tarea básica
Le ponemos el nombre de la tarea programada y le damos siguiente
Le ponemos cada tanto tiempo se va ejecutar el archivo .bat,le damos siguiente
Escogemos cada tanto tiempo se va ejecutar y a que hora
Escogemos que programa o script se va a ejecutar

Y listo nuestro programa se estará ejecutando diariamente si la PC o Servidor se encuentra encendido

CURSO MARIADB 10 – GENERAR RESPALDOS #7

Una función importante para los administradores de la base de datos es la de generar respaldos de bases de datos y levantar respaldos, tanto para trabajar en ambientes de prueba como recurarse de errores críticos.

Primero que nada veremos como hacer el respaldos desde PHPMYADMIN es realmente muy sencillo.

Primero seleccionamos la base de datos a la cual querernos realizar el respaldo, después nos vamos a exportar y continuar, nos genera un archivo SQL el cual se descargara en el destino que se eliga
Para importar/levantar la base datos nos vamos a importar elegimos la base de datos y nos vamos al menú importar, elegimos el archivo y le damos continuar

También podemos generar respaldos y levantarlos desde HeidiSQL

Primero le damos click derecho a la base de datos que queremos realizar el respaldo y seleccionamos Exportar Base de datos como SQL
Le ponemos el nombre y ubicación a la base de datos que queremos crear y elegimos si deseamos crear la base de datos y si existe suprimirla para volverla crear, al darle exportar generar el archivo en la ruta elegida
Para levantar la base de datos desde HeidiSQL nomas nos vamos al menú Archivo y seleccionamos Ejecutar archivo SQL
Seleccionamos el archivo SQL y le damos Abrir
Nos pregunta si queremos que auto-detecte la codificación del archivo le damos click al boton Si
Y vemos como se genera la base de datos con sus tablas e información

También podemos generar el respaldos desde la consola de comandos

Primero nos posicionamos en la carpeta bin de mysql, en mi caso es la siguiente ruta

cd c:\xampp\mysql\bin

Ahora ejecutamos el siguiente comando para realizar el respaldo

mysqldump --opt --events --routines --triggers --default-character-set=utf8 -u root pos > c:\respaldo\respaldo.sql

En caso de requerir contraseña solo agregamos –password CONTRASEÑA

Para levantar la base de datos primero la creamos con el siguiente comando

/opt/lampp/bin/mysql -u root -e "CREATE SCHEMA pos DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci ;"

Luego levantamos la base de datos con el siguiente comando

mysql -u root pos < c:\respaldo\respaldo.sql

Bien espero que les sirva y en la próxima publicación veremos como comprimir el respaldos y hacer respaldos automáticos

CURSO EXPRESS DE BASE DE DATOS MARIADB 10

Ya hemos terminado el tutorial de programación básica en Visual Basic 2022 Community, ahora vamos a ver una ligera introducción a las base de datos.

En esta serie de tutoriales vamos a dar un curso sobre el gestor de base de datos de código abierto mas extendido y que viene siendo un estándar en el desarrollo de sistemas web ya que lo van encontrar en la mayoría de los hosting Web y es MariaDB

CURSO MARIADB INTEGRIDAD REFERENCIAL #6

La integridad referencial es propiedad de la base de datos. La misma significa que la clave externa de una tabla de referencia siempre debe aludir a una fila válida de la tabla a la que se haga referencia. La integridad referencial garantiza que la relación entre dos tablas permanezca sincronizada durante las operaciones de actualización y eliminación.

Todas las bases de datos relacionales gozan de esta propiedad gracias a que el software gestor de base de datos vela por su cumplimiento. En cambio, las bases de datos jerárquicas requieren que los programadores se aseguren de mantener tal propiedad en sus programas.

Ejemplo: Cómo funciona

Supongamos una base de datos con las entidades Persona y Factura. Toda factura corresponde a una persona y solamente una. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, datos perdidos y relaciones mal resueltas.

Supongamos que una persona se identifica por su atributo RFC(Registro Federal del Contribuyente). También tendrá otros atributos como el nombre y la dirección. La entidad Factura debe tener un atributo RFC_cliente que identifique a quién pertenece la factura.

Por sentido común es evidente que todo valor de RFC Cliente debe corresponder con algún valor existente del atributo RFC de la entidad Persona. Esta es la idea intuitiva de la integridad referencial.

Por ejemplo vamos a relacionar un id de cliente con la información de la tabla factura

Creamos la tabla cliente

CREATE TABLE `clientes` ( `id` INT NOT NULL AUTO_INCREMENT , `nombres` VARCHAR(128) NULL , `RFC` VARCHAR(16) NULL , `direccion` VARCHAR(16) NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

Luego Creamos la tabla ventas

CREATE TABLE `ventas` ( `id` INT NOT NULL AUTO_INCREMENT , `idCliente` INT NULL , `Concepto` VARCHAR(128) NULL , `total` DECIMAL(18,2) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

Agregamos la restricción para que al eliminar un cliente no permita eliminar si este cliente ya tiene una venta

ALTER TABLE `ventas` ADD CONSTRAINT `rstCliente` FOREIGN KEY (`idCliente`) REFERENCES `clientes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

Insertamos datos en la tabla cliente

INSERT INTO `clientes` (`id`, `nombres`, `RFC`, `direccion`) VALUES (NULL, 'Julio', 'xxx', 'conocido'), (NULL, 'kakaroto', 'xxe', 'vegita');

Insertamos en la tabla ventas

INSERT INTO `ventas` (`id`, `idCliente`, `Concepto`, `total`) VALUES (NULL, '1', 'venta de equipo de computo', '10000'), (NULL, '2', 'Venta de semillas del hermitaño', '5')

Ahora intentamos eliminar el cliente kakaroto

delete from clientes where id=2

Si hicimos las cosas bien la base de datos se protegerá y no se podrá eliminar el cliente por la restricción de llave foránea, saldrá el siguiente mensaje

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`pos`.`ventas`, CONSTRAINT `rstCliente` FOREIGN KEY (`idCliente`) REFERENCES `clientes` (`id`))

CURSO MARIADB 10 – INSERTAR DATOS DESDE EL SELECT Y TABLAS TEMPORALES #5

Y bien ya vimos algunos comandos básicos en este video veremos como hacer inserción de datos a una tabla mediante la mezcla de un query select e insert, también veremos como crear tablas temporales

Suponiendo que tenemos las tablas usuarios y usuarios2 y tienen los mismos datos insertaremos los datos de usuarios2 a usuarios1, además que usuarios esta vacía

insert into usuarios
select * from usuarios2

Para crear tablas temporales a partir de otra tabla hacemos lo siguiente

create temporary table tmpUsuarios 
select * from usuarios2

También podemos crear una tabla normal a partir del select * from a otra tabla

create table tablaUsuarios3
select * from usuarios2

CURSO MARIADB – CREAR BASE DE DATOS, CREAR TABLA E INSERSIÓN Y MODIFICIACION DE DATOS #4

Y ya empezamos con lo cotidiano, crear base de datos, crear tablas, insertar datos, modificar datos y además vemos como también se utiliza otra herramienta visual para el manejo de la base de datos que es PHPMYADMIN

Para crear una base de datos utilizamos el siguiente comando, le ponemos create database seguido del nombre seguido de la intercalación

CREATE DATABASE `pos` /*!40100 COLLATE 'utf8mb3_spanish2_ci' */

Ahora para crear tabla por ejemplo tabla perfiles de dos columnas id y descripción donde id va a ser primario y autoincrementadle

CREATE TABLE `perfiles` (
	`id` BIGINT NOT NULL AUTO_INCREMENT,
	`descripcion` VARCHAR(256) NOT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8mb3_spanish2_ci'

Ahora para insertar datos por ejemplo insertamos solo la descripción con el siguiente comando

INSERT INTO perfiles (descripcion) values ('Gerencia')

Podemos meter también manualmente el campo id

INSERT INTO perfiles (id,descripcion) VALUES ('3','')

Como se nos olvido poner la descripción del perfil vamos actualizar ese valor

UPDATE perfiles SET descripcion = 'CONTABILIDAD' WHERE id = 3

Si queremos eliminar el registro 3 simplemente escribimos el siguiente codigo

DELETE FROM perfiles WHERE id = 1
Video Demostrativo

Administradores Visuales de MariaDB/MySQL

Hemos visto en la publicación anterior como conectarnos a MariaDB por medio de la consola, que por cierto falto poner el puerto así que en la ultima publicación asi que realmente nos conectamos a la instancia del 3306.

Bien al grano, existen muchas herramientas de administración de base de datos MariaDB pero les mostrare las que mas he usado y sigo usando

Comandos Básicos de introducción MariaDB desde consola, Select Where

En este tutorial veremos algunos comandos básicos desde la consola y si ya se que se preguntan por que conectarnos por la consola de comandos en lugar de un GUI como puede ser Workbench HeidiSQL etc, es muy necesario sobre todo si eres programador ya que solo se usan comandos y créeme no es que vallas a usar la consola todo el tiempo pero si aprender los comandos en lugar de crear las tablas desde GUI se te va a dificultar mas, de hecho conforme pasa el tiempo y van creciendo las tablas en lo referente a columnas por la misma experiencia se les hará mas fácil manejarse con comandos.

Bien para conectarnos nos posicionamos en el directorio de instalación de mariaDB que es C:\Program Files\MariaDB 10.6\bin y para conectarnos usaremos el siguiente comando

Página 1 de 2

Creado con WordPress & Tema de Anders Norén