Unidad 3

Gestión de Base de Datos

Variables:

Variables Numéricas

Variables alfanuméricas

Procedimientos almacenados

Funciones en PhpMyAdmin y MariaDB

Respaldos y restauración de BD

Apéndice

ALTER

CREATE DATABASE

DELETE

DESCRIBE

DROP

EXPLAIN

FLUSH

GRANT

INSERT

KILL

LOAD DATA

LOCK TABLES

OPTIMIZE TABLE

REPLACE

REVOKE

SELECT

SHOW

UNLOCK TABLE

UPDATE

Variables

Una variable refiere, a elementos que son susceptibles de ser modificadas (de cambiar), en función de algún motivo determinado o indeterminado.

Se trata de algo que se caracteriza por ser inestable, inconstante y mudable.

En MySQL se pueden usar variables como en los lenguajes de programación y puede resultar bastante útil. Y se puede guardar el valor de una variable. La sintaxis para asignar una variable dentro de una sentencia SET @var_name := valor.

Variables Numericas

ponemos de ejemplo la base de datos  escuela_ejemplo, usando la tabla alumno:





En el área de SQL ponemos el siguiente Script:

set @reprobados := 5;
set @aprobados := 6;
set @excelente :=10;
 
SELECT * FROM alumno WHERE calificacion <= @reprobados;

Establecemos las variables llamadas reprobados, aprobados, excelente, todas con el signo (arroba) al inicio del nombre de la variables, así se asignan en MYSQL y un valor asignado, debo hacer notar que en MySQL así se usan, pero cambian cuando se relacionan desde PHP, PERL, JavaScript, etc. hay que revisar la sintaxis desde otra plataforma, para ello se debe de instalar/agregar un plugin  (conector) para relacionar entre la base de datos/tablas, con el lenguaje de programación, por ese motivo se instala los plugins para Php, PERL, C++, Java, etc.

A continuación la consulta con SELECT * FROM la tabla, la clausula WHERE, (donde) se realiza una comparación de la calificación del alunmo (es un campo de la tabla), donde compara si el valor es menor o igual al valor de la variable, y se seleccionan a los alumnos según el criterio de la consulta y el valor asignado a la variable.

el resultado, donde coinciden los valores buscados:

agreguemos mas elementos a la búsqueda:

set @reprobados := 5;
set @aprobados := 6;
set @excelente :=10;
 
SELECT * FROM alumno WHERE calificacion <= @reprobados;
SELECT * FROM alumno WHERE calificacion >= @aprobados;
SELECT * FROM alumno WHERE calificacion = @excelente;

Que supones que se mostrara al realizar la consulta, revisa los resultados:




Evidencia: Captura la pantalla y envialo con el nombre variables1_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema variables1 de tablas

Pasemos el siguiente script a SQL:

set @reprobados := 5;
set @num_reprobados:= 0;

set @aprobados := 6;
set @num_aprobados:= 0;

set @excelente :=10;
set @num_excelentes:= 0;
 
SELECT COUNT(*) INTO @num_reprobados FROM alumno WHERE calificacion <= @reprobados;
SELECT COUNT(*) INTO @num_aprobados FROM alumno WHERE calificacion >= @aprobados;
SELECT COUNT(*) INTO @num_excelentes FROM alumno WHERE calificacion = @excelente;

SELECT @num_reprobados,@num_aprobados,@num_excelentes;






set @reprobados := 5;
set @num_reprobados:= 0;

set @aprobados := 6;
set @num_aprobados:= 0;

set @excelente :=10;
set @num_excelentes:= 0;
 
SELECT COUNT(*) INTO @num_reprobados FROM alumno WHERE calificacion <= @reprobados;
SELECT COUNT(*) INTO @num_aprobados FROM alumno WHERE calificacion >= @aprobados;
SELECT COUNT(*) INTO @num_excelentes FROM alumno WHERE calificacion = @excelente;

SELECT @num_reprobados as Reprobados,@num_aprobados as Aprobados,@num_excelentes as Excelentes;


La instrucción as es para crear un alias, es decir el campo de la variable @nombre_variable as (el nombre del titulo a mostrar)




Evidencia: Captura la pantalla y envialo con el nombre variables2_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema variables2 de tablas

Variables alfanumericas

Es prácticamente lo mismo que con variables numéricas solo con la una excepción, el valor de la variable deberá estar en tre comillas ( '    ' ),

como esto:

set @nombre_alumno := 'Andres';

SELECT * FROM alumno WHERE Nombre = @nombre_alumno;

usamos la base de datos escuela_ejemplo y la tabla alumno, comparando el nombre Andres





Insertemos otro Nombre que se repita de los ya existentes





Repetimos la consulta con otro nombre:


set @nombre_alumno := 'Tere';

SELECT * FROM alumno WHERE Nombre = @nombre_alumno;




en este ejemplo vemos la conveniencia de atomizar los campos y diferenciarlos correctamente, ya que tenemos 2 nombres iguales y faltando sus apellidos es confuso saber que alumno es.

Ejercicio:

Agrega otras 2 columnas, inserta apellidos a cada alumno, y repite el ultimo ejercicio,

Evidencia: Captura la pantalla y envialo con el nombre variables2_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema variables2 de tablas

Procedimientos almacenados

Es una porción de código que puedes guardar y reutilizar (subrutina) . Es útil cuando se repite la misma tarea repetidas veces, siendo un buen método para encapsular código. Puede aceptar datos como parámetros para interactuar con ellos.

Para crear un procedimiento, MariaDB nos ofrece la directiva CREATE PROCEDURE. Al crearlo éste es ligado o relacionado con la base de datos que se está usando, tal como cuando creamos una tabla, por ejemplo. (2)


Para llamar a un procedimiento lo hacemos mediante la instrucción CALL.

Desde un procedimiento podemos invocar a su vez a otros procedimientos o funciones.


Un procedimiento almacenado, al igual cualquiera de los procedimientos que podamos programar en nuestras aplicaciones utilizando cualquier lenguaje, tiene:

Un nombre.

Puede tener una lista de parámetros.

Tiene un contenido (sección también llamada definición del procedimiento: aquí se especifica qué es lo que va a hacer y cómo). Ese contenido puede estar compuesto por instrucciones sql, estructuras de control, declaración de variables locales, control de errores, etcétera.

En resumen, la sintaxis de un procedimiento almacenado es la siguiente:


  CREATE PROCEDURE nombre (parámetro)
      [características] definición

o para ser más técnicos:

CREATE
    [OR REPLACE]
    [DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body

proc_parameter:
    [ IN | OUT | INOUT ] param_name type

type:
    Any valid MariaDB data type

characteristic:
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'

routine_body:
    Valid SQL procedure statement

Puede haber más de un parámetro (se separan con comas) o puede no haber ninguno (en este caso deben seguir presentes los paréntesis, aunque no haya nada dentro).


Los parámetros tienen la siguiente estructura: modo nombre tipo


Donde:

modo: es opcional y puede ser IN (el valor por defecto, son los parámetros que el procedimiento recibirá), OUT (son los parámetros que el procedimiento podrá modificar) INOUT (mezcla de los dos anteriores).

nombre: es el nombre del parámetro.

tipo: es cualquier tipo de dato de los provistos por MariaDB.

Dentro de características es posible incluir comentarios o definir si el procedimiento obtendrá los mismos resultados ante entradas iguales, entre otras cosas.

definición: es el cuerpo del procedimiento y está compuesto por el procedimiento en sí: aquí se define qué hace, cómo lo hace y bajo qué circunstancias lo hace.

Así como existen los procedimientos, también existen las funciones. Para crear una función, MariaDB nos ofrece la directiva CREATE FUNCTION que veremos después de este tema.


La diferencia entre una función y un procedimiento es que la función devuelve valores. Estos valores pueden ser utilizados como argumentos para instrucciones SQL, tal como lo hacemos normalmente con otras funciones como son, por ejemplo, MAX() o COUNT().


Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto (sólo el tipo de dato, no el dato).


Su sintaxis es:


CREATE FUNCTION nombre (parámetro)
RETURNS tipo
[características] definición

o para ser más técnicos:

CREATE [OR REPLACE]
    [DEFINER = {user | CURRENT_USER | role | CURRENT_ROLE }]
    [AGGREGATE] FUNCTION [IF NOT EXISTS] func_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...]
    RETURN func_body


func_parameter:
    param_name type


type:
    Any valid MariaDB data type


characteristic:
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'


func_body:
    Valid SQL procedure statement

Puede haber más de un parámetro (se separan con comas) o puede no haber ninguno (en este caso deben seguir presentes los paréntesis, aunque no haya nada dentro). Los parámetros tienen la siguiente estructura: nombre tipo


Donde:

nombre: es el nombre del parámetro.

tipo: es cualquier tipo de dato de los provistos por MariaDB.

Dentro de características es posible incluir comentarios o definir si la función devolverá los mismos resultados ante entradas iguales, entre otras cosas.

definición: es el cuerpo del procedimiento y está compuesto por el procedimiento en sí: aquí se define qué hace, cómo lo hace y cuándo lo hace.


Para llamar a una función lo hacemos simplemente invocando su nombre, como se hace en muchos lenguajes de programación.


Desde una función podemos invocar a su vez a otras funciones o procedimientos.


delimiter //
CREATE PROCEDURE procedimiento (IN cod INT)
    BEGIN
        SELECT * FROM
tabla WHERE cod_t = cod;
    END
//
Query OK, 0 rows affected (0.00 sec)
delimiter ;

CALL procedimento(4);


En el código anterior lo primero que hacemos es fijar un delimitador. Al utilizar la línea de comandos de MariaDB vimos que el delimitador por defecto es el punto y coma (;): en los procedimientos almacenados podemos definirlo nosotros.


Lo interesante de esto es que podemos escribir el delimitador anterior; sin que el procedimiento termine. Más adelante, en este mismo código volveremos al delimitador clásico. Luego creamos el procedimiento con la sintaxis vista anteriormente y ubicamos el contenido entre las palabras reservadas BEGIN y END.


El procedimiento recibe un parámetro para luego trabajar con él, por eso ese parámetro es de tipo IN. Definimos el parámetro como OUT cuando en él se va aguardar la salida del procedimiento. Si el parámetro hubiera sido de entrada y salida a la vez, sería de tipo denominado INOUT.


El procedimiento termina y es llamado luego mediante la siguiente instrucción:


  mysql> CALL procedimento(4);

Afortunadamente en PhpMyAdmin, la creación de procedimientos (subrutinas) es muy fácil, el programa crea la secuencia, hay que proporcionar algunos parámetros que explicaremos y genera el procedimiento.

Se va a contar la cantidad de veces que se repite una letra en el nombre de un alumno, que sera con un procedimiento en otros lenguajes de programación se les conoce como subrutinas.

Primero debemos activar la base de datos y usar la pestaña en Mas y Rutinas ( o Rutinas) según se pueda mostrar en pantalla, algunos monitores se reducidos así que se pueden presentar agrupadas algunas funciones en la pestaña Mas.


Después en: Nuevo Agregar_rutina:



Colocamos el nombre de rutina: alumnos_con_letra

Tipo: PROCEDURE (procedimiento o subrutina)

Parámetros Dirección (IN entrada datos)

nombre de la variable de almacenamiento letra es la variable que recibe lo que busco en la tabla

Tipo CHARACTER

Longitud/Valores; 1 que es para almacenar un carácter, solo requiere una sola letra a usar.



Escribimos el script que realizara el procedimiento:

SELECT * FROM alumno WHERE Nombre LIKE CONCAT ('%',letra,'%');

la instrucción LIKE se interpreta : "como"

ten cuidado con las comillas simples en ('%',letra,'%') vea como son estas comillas sencillas, si pone otro tipo de comillas no funcionar, solo revise este tipo.

puedes explicar esta clausula ?


Al ejecutar con el botón Continuar.


Y en Acción -> Ejecutar  asignamos la letra a buscar en los nombres, lo usaremos con la letra e, botón Continuar:

Editamos el procedimiento y seleccionamos el botón que se llama  Agregar parámetro


Y agregamos esto al procedimiento, Dirección OUT, Nombre numero, Tipo INT, Longitud/valores 5,

Escribimos lo siguiente

SELECT COUNT(*) INTO numero FROM alumno WHERE Nombre LIKE CONCAT ('%',letra,'%')

ahora el procedimiento tiene una entrada y salida de datos.




Quedara de la siguiente forma:



Usando el botón continuar almacena el procedimiento y se muestra de esta forma:


DROP PROCEDURE `alumnos_con_letra`;
CREATE DEFINER=`root`@`localhost` PROCEDURE `alumnos_con_letra`(IN `letra` CHAR(1), OUT `numero` INT(5)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER SELECT COUNT(*) INTO numero FROM alumno WHERE Nombre LIKE CONCAT ('%',letra,'%')

lo que significa que borra el procedimiento anterior y crea la definición de un nuevo procedimiento, por lo cual podemos crear procedimientos para cada tarea que nos interese realizar en nuestra base de datos.

 pasamos a la pestaña de SQL y escribimos lo siguiente, donde la instrucción CALL realiza un a llamada al procedimiento alumnos_con_letra (Subrutina) :

CALL alumnos_con_letra ('e',@cantidad_e);
CALL alumnos_con_letra ('u',@cantidad_u);
CALL alumnos_con_letra ('h',@cantidad_h);
CALL alumnos_con_letra ('a',@cantidad_a);

SELECT @cantidad_e;
SELECT @cantidad_u;
SELECT @cantidad_h;
SELECT @cantidad_a;

SELECT @cantidad_e, @cantidad_u, @cantidad_h, @cantidad_a;



Botón Continuar, y el resultado es el conteo de cada una de las letras que localiza dentro los nombres de los alumnos:


Evidencia: Captura la pantalla y envialo con el nombre procedimientos_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema procedimientos de tablas

Funciones en PhpMyAdmin y MariaDB (MySQL) (3)

MySQL puede hacer mucho más que simplemente almacenar y recuperar datos . También podemos realizar manipulaciones en los datos antes de recuperarlos o guardarlos. Ahí es donde entran las Funciones de MySQL. Las funciones son simplemente piezas de código que realizan algunas operaciones y luego devuelven un resultado. Algunas funciones aceptan parámetros mientras que otras funciones no aceptan parámetros.

Otra razón por la que deberíamos considerar el uso de las funciones de MySQL es el hecho de que puede ayudar a reducir el tráfico de red en las aplicaciones cliente / servidor.

Diferencias que tienen las funciones sobre los procedimientos almacenados

Sintaxis

delimiter//
CREATE FUNCTION nombre_funcion (variable tipo) RETURNS tipo
begin
-- INICIO DE ACCIONES
declare numero int;
SELECT COUNT(*) INTO numero FROM tabla;
RETURN numero;
-- FIN DE ACCIONES
end//
delimiter ;
 

Para este ejemplo lo haremos parecido a la situación anterior


pasamos a Rutinas:


Y agregar rutina:


Y en tipo desplegamos, seleccionando FUNCTION



llenamos la siguiente información

Nombre de la rutina alumnos_letra

Parámetros, Nombre -> letra, Tipo CHAR, Logitud/Valores, Retornar tipo: INT, Retornar longitud/Valores 5




y realizamos la definición de los pasos a realiza

BEGIN
DECLARE numero int;
SELECT COUNT(*) INTO numero FROM alumno WHERE nombre LIKE concat('%',letra,'%');
RETURN numero;
END


Hay  que tener precaución en la comillas simples de


'%',letra,'%'

si fallara en la ejecución hay que editar la función y cambiar esta comillas simples , en caso que el teclado tenga varios tipos de comillas simples


botón Continuar



en la descripción superior la rutina tiene este aspecto:

CREATE FUNCTION `alumnos_letra`(`letra` CHAR(1))
RETURNS
INT(5)
NOT
DETERMINISTIC NO SQL SQL SECURITY DEFINER BEGIN DECLARE numero int;
SELECT
COUNT(*) INTO numero FROM alumno WHERE nombre LIKE concat('%',letra,'%'); RETURN numero;

END


observemos que la segunda linea en el titulo Rutinas están ambos, alumnos_con_letra  y alumnos_letra

ejecutamos la función creada:



escribimos la letra e, e el campo valor, mostrando el valor 5.



la secuencia es:

Ahora en la pestaña de SQL, escribimos este script

SELECT LEFT(Nombre,1) as letra,alumnos_letra(LEFT(Nombre,1)) as cantidad FROM alumno;

SELECT LEFT(Nombre,1) as letra -> Toma del lado izquierdo 1 carácter (La primer letra del nombre) y se lo asigna al alias letra.

alumnos_letra(LEFT(Nombre,1)) as cantidad -> de la funcion alumnos_letra toma de la izquierda del nombre la primer letra y cuenta las que se repiten y lo asigna al alias cantidad

FROM alumno; toma la información de la tabla alumno





Evidencia: Captura la pantalla y envialo con el nombre funciones_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema funciones

Respaldos y restauración de BD

Una gran ventaja de PhpMyAdmin, puede realizar respaldo, y que estos son muy fáciles de crear, leer, y restablecer, el proceso es el siguiente:

usemos la pestaña Exportar, la primer opción es: Rápido - mostrar soló el mínimo de opciones de configuración, en Formato es la forma de respaldar la información de las tablas y bases de datos, etc, por defecto es SQL, también tenemos CVS (para Excel, PDF, Word, Latex, etc.  usamos SQL, para que veamos como se Exporta, solo aplicamos Continuar:





Revisamos el archivo Exportado, puede ser con cualquier editor (no use word o wordpad, alteran el contenido), podemos ver una parte de este archivo y comprobamos que estan las secuencias de la base de datos asi como los datos en la BD.



Ahora en la opción personalizado, seleccionamos, la base(s) de datos, que requerimos Exportar, puede establecer las diferentes,

opciones  para exportar , cuando seleccione lo que requiere botón continuar, :







y para exportar a Excel debemos seleccionar en Formato, CVS for MS Excel, y Continuar:




este es el resultado de exportación, solo los datos de las tablas.




para la importación se usa en la Pestaña Importar, desde el formato de SQL, ya sea comprimido o no.



Evidencia: Captura la pantalla y envialo con el nombre respaldos_tablas_nombre_apellido_p_apellido_m.jpg, indicando en el correo tu nombre, y el tema respaldos de tablas

Apéndice

Comandos y sintaxis de SQL

Este apéndice le ofrece una lista de comandos de SQL para que los utilice como referencia.

Los comandos se listan en orden alfabético.

El comando estará seguido de una lista de posibles parámetros. Los parámetros opcionales estarán encerrados entre paréntesis cuadrados [ ].

Se presentarán ejemplos donde sea necesario


ALTER [IGNORE] TABLE nombre_de_tabla especificación [, especificación]

[Especificaciones] pueden ser:

•    ADD [COLUMN] nombre_de_columna (definiciones_de_columna) [FIRST o AFTER nombre_de_columna]

•    ADD INDEX [nombre_indice] (lista_de_columnas)

•    ADD PRIMARY KEY (lista_de_columnas)

•    ADD UNIQUE [nombre_indice] (lista_de_colijmnas)

•    ALTER [COLUMN] nombre_de_columna {SET DEFAULT valor_predeterminado ó DROP DEFAULT}

•    CHANGE [COLUMN] nombre_columna_anterior definicion_creacion

•    DROP [COLUMN] nobre_columna

•    DROP PRIMARY KEY

•    DROP INDEX nombre_indice

•    MODIFY [COLUMN] definicion_de_creacion

•    RENAME [AS] nuevo_nombre_tabla

Ésta es mucha información, pero en realidad es directa.

La palabra clave IGNORE ocaciona que se borren las filas con valores duplicados en claves únicas; de otra forma, no sucede nada.

Cualquiera de las especificaciones anteriores puede utilizarse en la instruccón ALTER TABLE.


Ejemplos:

ALTER TABLE Clientes ADD COLUMN Nombbe_Cuunta INT

ALTER TABLE Clientes ADD INDEX (IDJCiente)

ALTER TABLE Clientes ADD PRIMARY KEY (ID_CClente)

ALTER TABLE Clientes ADD UNIQUE (IDJCiente)

ALTER TABLE Clientes CHANGE ID_CCiente Numbne_CCientn INT

ALTER TABLE Clientes DROP ID_CCiente

ALTER TABLE Clientes DROP PRIMARY KEY

El comando anterior no requiere el nombre de columna ya que en una tabla soliimcnli ? puede existir una clave primaria (PRIMARY KEY).

ALTER TABLE Clientes DROP INDEX ID-Cliente

ALTER TABLE Clientes MODIFY    varchar(100)

ALTER TABLE Clientes RENAME Cliente


CREATE DATABASE nombre_base_de_datos

Este sencillo comando crea una base de datos. El nombre de la base de datos debe estar bien formado o esta instrucción generará un error.

Ejemplo:

CREATE DATABASE Mi-Tienda


CREATE [AGGREGATE] FUNCTION nombre_función,

RETURNS {STRING|REAL|INTEGER} SONAME nombre_biblioteca_compartida

Ésta ocasiona que dentro de la tabla func de la base de datos de mysql se cargue una función que usted ha creado. El nombre_función es el nombre

 que desea utilizar para llamar a esta función con una instrucción SQL. Además, después de la palabra clave RETURNS debe indicar qué tipo de valor

devuelve su función. Las opciones para este valor son STRING, REAL o INTEGER. SONAME se refiere al nombre de la biblioteca compartida de esta función.

Si utiliza la palabra clave opcional AGGREGATE, MySQL trata a esta función como si fuera parte de las funciones integradas, como SUM (), AVG () o MAX ().


CREATE [UIIQUE] INDEX nombre-indice ON nombre_de_tabla (lista_de_columnas)

Este comando crea un índice en una columna de una tabla dada.

Ejemplo:

CREATE INDEX ID_Indice_Clientes ON Clientes (Id_ciiente)


CREATE [TEMPORARY] TABLE [IF NOT EXISTS]

nombre_de_tabla definicion_de_tabla

[opciones_de_tabla] [[IGNORE o REPLACE] instruccion_select]


Esta instrucción creará una tabla. La definición de la tabla es una lista de nombres y tipo de columnas.

CREATE TABLE tiene los siguientes parámetros opcionales:

•    CREATE TEMPORARY TABLE Clientes_Temporal (ID_CCiente INT) Esta instrucción creará una tabla temporal que se borrará automáticamente

    cuando termine la conexión que la creó.

•    CREATE TABLE IF NOT EXISTS Clientes (ID_CCiente INT) Esta instrucción creará una tabla solamente si ésta no existe.

•    TYPE = {ISAM o MYISAM o HEAP} Utilizado para establecer el tipo de tabla creado.

•    Las opciones de las tablas pueden ser cualquiera de las siguientes:

•    ISAM es el tipo de tabla original.

•    MYISAM es el tipo de almacenamiento más reciente. Éste se utiliza en forma predeterminada.

Las tablas HEAP no soportan columnas AUTO_INCREMENT.

Solamente pueden utilizarse = o < = > con los índices.

Las tablas HEAP utilizan un formato fijo de longitud de registro.

Las tablas HEAP no soportan un índice en una columna NULL.

Las tablas HEAP no soportan columnas BLOB o TEXT.

Usted puede tener claves no únicas en una tabla HEAP (no como en las tablas de hash).

Ejemplo: CREATE TABLE Clientes (ID_Ciente INT) TYPE = HEAP

•    AUTO_INCREMENT = X Estabtece el punto de inicio de una columna AUTO_INCREMENT.

 Ejemplo: CREATE TABLE Clientes (ID_Ciente INT AUTO_INCREMENT) AUTO_INCREMENT = 90000

•    AVG_ROW_LENGTH = X Poco utilizado. Establece la longitud de una fila tabla a columnas de longitud variable.

•    CHECKSUM ={0 o l} Aumenta el rendimiento, pero permite que la utileria myisamchk detecte con mayor facilidad las tablas con datos dañados.

•    COMMENT = “cometario" Le permite agregar un comentario a una tabla.El límite es de 60 caracteres.

•    MAX_ROWS = X Establece el número máximo de filas que pueden almacenar una tabla. Puede incrementar el rendimiento.

•    MIN_ROWS = X Establece el número de filas que pueden almacenarse en tabla. Puede incrementar el rendimiento.

•    PACK_ KEYS ={0 o 1} Cuando se establece a 1, hará que sus índices set pequeños y rápidos. Las actualizaciones tardarán más tiempo.

•    PASSWORD = "contraseña" Esta protegerá con contraseña el archivo

•    DELAY_KEY_WRITE = {0 o 1} Cuando se establece a 1, se harán las actuaciones a la tabla cuando ésta no esté en uso.

•    ROW_FORMAT= { default, dynamic, static o commpressed } Determina comó se almacenarán las filas en una tabla.

Ejemplo de una instrucción CRTATE TABLE:

CREATE TABLE Clientes

(ID_Ciente INT NOT NULL AUTO_INCRMENT PRIMARY KEY,Nombre VARCHAR(20) NOT NULL,Apellido VARCHAR(20) NOT NULL, Dirección VARCHAR(50));


DELETE [LOW PRIORITY] FROM nombre_de_tabla WHERE condiciones [LIMIT n]

Este comando elimina valores de una tabla dada basándose en las condiciones expresadas en la cláusula WHERE.

La instrucción DELETE tiene los siguientes parámetros opcionales:

•    LOW_PRIORITY Retarda la eliminación hasta que la tabla no esté en uso.

•    LIMIT X Limita el número de eliminaciones a X.

Ejemplo:

DELETE FROM Clientes WHERE ID_Cllente = 3

Para eliminar todas las filas de una tabla sin eliminar la tabla, utilice el siguiente comando:

DELETE FROM Clientes


DESCRIBE nombre_de_tabla [nombre_de_columna]

Esta instrucción mostrará una definición detallada de las columnas de una tabla.

Para ver una descripción de todas las columnas de una tabla, utilice la siguiente instrucción:

DESCRIBE Clientes

Para observar la descripción de una columna específica, utilice:

Clientes ID_Cliente


DROP DATABASE [IF EXISTS] nombre_base_datos

La instrucción DROP DATABASE eliminará una base de datos. No hay advertencias o pre¬guntas, simplemente tenga cuidado

al utilizar esta instrucción.

Ejemplo:

DROP DATABASE Mi_Tienda


DROP FUNCTION nombre_de_función

Elimina de la tabla de la base de datos mysql una función definida por el usuario.

Consulte CREATE FUNCTION.


DROP INDEX nombre_indice ON nombre_de_tabla

Esta instrucción eliminará un índice dado en una tabla específica.

Ejemplo:

DROP INDEX indice_id_cliente ON Clientes


DROP TABLE [IF EXISTS] nombre_de_tabla

[, nombre_de_tabla] ...

Esta instrucción eliminará la tabla especificada. Nuevamente, sea cuidadoso con todas las instrucciones DROP y DELETE, no hay advertencias.

Ejemplo:

DROP TABLE Clientes


EXPLAIN {instrucción_select o nombre_de_tabla}

Este comando desplegará el plan de consulta para la cláusula de selección.

Despliega los mismos resultados que SHOW. Consulte SHOW.

Ejemplo:

EXPLAIN SELECT C.Nombre

FROM Clientes AS C, Pedidos as P

WHERE C.ID_Cliente = P.ID_Cliente


FLUSH opción_de_vaciado[, opción_de_vaciado] ...

Esta instrucción borrará el caché que utiliza MySQL. Las opciones posibles son

•    HOSTS Borra las tablas de caché de hosts.

        Utilice esta opción si cambia una de las direcciones IP de sus hosts o si cambia la dirección IP local.

•    LOGS Cierra todos los registros abiertos.

•    PRIVILEGES Utilícela cuando agregue un nuevo usuario o cambie información de la base de datos de MySQL.

        Carga nuevamente las tablas de permisos de acceso.

•    TABLES Cierra todas las tablas abiertas.

•    STATUS Restablece a 0 la variable de estado del sistema.

Ejemplo:

FLUSH PRIVILEGES

Puede utilizarse más de una opción a la vez.

FLUSH PRIVILEGES, TABLES


GRANT privilegio ON objeto_base_de_datos

TO nombreusuario IDENTIFIED BY contraseña

[WITH GRANT OPTION]

Este comando concede privilegios de usuario. Este es el método favorito para agregar usuarios.

El administrador puede otorgar uno, alguno o todos los privilegios siguientes


ALL PRIVILEGES    ALTER    CREATE

DELETE                DROP     FILE

INDEX                 INSERT    PROCESS

REFERENCES       RELOAD   SELECT

SHUTDOWN        UPDATE    USAGE


El objeto de base de datos puede ser una columna, tabla o base de datos.

La contraseña se codifica de manera automática. No utilice la función password ().

Recuerde cargar nuevamente sus tablas de permisos de acceso, mediante el comando FLUSH, después de realizar cambios.

La opción WITH GRANT OPTION permite al usuario conceder opciones a otros usuarios.

Pueden utilizarse caracteres comodín al especificar un host.

La cláusula IDENTIFIED BY es opcional, pero es recomendable para garantizar la seguridad de su base de datos.


Ejemplo:

Para otorgar a un usuario todos los privilegios para todas las bases de datos y también otorgarle la capacidad de otorgar privilegios a otros,

 utilice lo siguiente:

GRANT ALL PRIVILEGES ON *. *

TO juan@localhost IDENTIFIED

BY "dinosaurio”

WITH GRANT OPTION

Para otorgar privilegios SELECT y UPDATE a un usuario para una base de datos específica utilice:

GRANT SELECT, UPDATE ON Mi_Tienda.*

TO car-men@localhost

IDENTIFIED BY "jugue-tes"

Para crear un usuario que no tenga privilegios utilice:

GRANT USAGE ON *.* TO usuario@localhost


INSERT [LOW PRIORlTY o DELAYED] [IGNORE] [INTO] nombre_de_tabla [(lista_de_columnas)] VALUES (lista_de_valores),

INSERT [LOW_PRIORITY o DELAYED] [IGNORE] [INTO] nombre_de_tabla [(lista_de_columnas)] SELECT . . . ,

INSERT [LOW_PRRORITY o DELAYED] [IGNORE] [INTO] nombre_de_tabla [(lista_de_columnas)]

SET nobbre_de_columna = expresión [,nombre_de_columna = expresión] ...


Estas instrucciones agregan filas a una tabla existente. Si no se utilizan nombres de columna, los valores de la lista VALUES deben coincidir

en tipo, posición y número con las columnas de la tabla. Si se utilizan los nombres de columna, los valores de la cláusula VALUES deben coincidir

en posición, tipo y número con la lista de columnas.

Si utiliza la cláusula SELECT, los resultados de ésta deben coincidir en tipo, posición y número de columnas en la tabla;

 si se utiliza una lista de columnas, los resultados deben coincidir con ésta.

LOW_PRIORITY ocasionará que se retrase la inserción hasta que la tabla no esté en uso.

La opción DELAYED ocasiona que se retrase hasta que la tabla esté libre.

Esta también agrupará varias instrucciones y las escribirá juntas, mejorando el rendimiento.

Ejemplo:

INSERT INTO Clientes

(ID_Cliente, Nombre, Apeeiido)

VALUES (NULL, 'Carmen1, 'Álvarez')


KILL ID_Subproceso

Esta instrucción elimina el proceso identificado por el subproceso.

Esto también puede lograrse con el comando mysqladmin.

El identificador del subproceso puede observarse después de un comando SHOW PROCESSLIST.

Ejemplo:


KILL 18


LOAD DATA [LOW PRIORITY] [LOCAL] INFILE 'nombrearchivo' [IGNORE o REPLACE] INTO nombredetabla, [FIELDS TERMINATED BY símbolo]

 [ENCLOSED BY símbolo], [ESCAPED BY símbolo] [LINES TERMINATED BY símbolo],[IGNORE n LINES] [(lista_de_columnas)]

Esta instrucción ocasiona que se cargue en una tabla un archivo de texto llamado 'nombre_de_archivo.

Si se utiliza la palabra clave opcional LOCAL, MySQL buscará el archivo en la máquina del cliente.

Si la palabra es omitida, el archivo será cargado desde el servidor.

Debe proporcionarse la ruta completa para el nombre del archivo.

La tabla debe contener el número adecuado de columnas con tipos de datos coincidentes.

De lo contrario, ocurrirán errores parecidos a los de la instrucción INSERT.

Ejemplo:

El siguiente ejemplo cargará un archivo de texto delimitado por comas llamado datosclientes.txt, dentro de la tabla Clientes. Los campos están encerrados entre comillas.

LOAD DATA INFILE 1/home/luis/datosclientes.txt' INTO Clientes

FIELDS TERMINATED BY ENCLOSED BY ""


LOCK TABLES nombre_de_tabla {READ o WRITE}[, nombre_de_tabla {READ o WRITE}] ...

Esta instrucción bloquea una tabla para el proceso mencionado.

Al bloquear tablas, es importante bloquear todas las tablas que pretende utilizar.

La instrucción LOCK mantiene su efecto hasta que sea desbloqueada o hasta que el sub-proceso que inició el bloqueo termine.

Consulte UNLOCK.

Ejemplo:

LOCK TABLES Clientes READ, Pedidos WRITE

SELECT C.‘ FROM Cliente AS C, Pedidos AS P WHERE C.ID_Cliente = P.IDCliente UNLOCK TABLES

En este ejemplo, las tablas Clientes y Pedidos tuvieron que bloquearse porque la instrucción SELECT utilizó ambas tablas.


OPTIMIZE TABLE nombre_de_tabla

Esta instrucción libera el espacio muerto que dejan los registros eliminados.

Esta instrucción debería utilizarse cuando hayan sido eliminados muchos registros o cuando hayan sido alterados campos de longitud variable.

Esta tabla es de sólo lectura hasta que la operación haya terminado.

Ejemplo:

OPTIMIZE TABLE Clientes


REPLACE [LOWPRRORITY o DELAYED] [INTO] nombre_de_tabla [(lista_de_columnas)] VAULES(lista_ee_valores),

REPLACE [LOW PRIORITY o DELAYED] [INTO] nombre_de_tabla

[    ] SELECT .... REPLACE

[LOW_PRIORITY o DELAYED] [INTO] nombre_de_tabla

SET nombre_columna = expresion

SET nombre_de_columna = expresión] ...

Esta instrucción es idéntica a INSERT y tiene las mismas opciones que ésta.

La única diferencia es que esta instrucción eliminará un registro antes de que sea insertado si e registro anterior tiene el mismo valor

en un índice único.

Ejemplo:

REPLACE INTO Clientes (ID_Cliente, Nombre) VALUES (12, "Beetriz")


REVOKE lista_de_privilegios ON objeto_base_de_datos FROM nombre_de_usuario

La instrucción REVOKE retira los privilegios otorgados en la instrucción GRANT.

Las tablas de permisos de acceso deben volver a cargarse para que los cambios sean efectuados. Consulte el comando FLUSH.

Consulte la instrucción GRANT para la lista de privilegios.

El siguiente ejemplo retira los privilegios para el usuario juan@localhost. No elimina el usuario de las tablas de permisos de acceso de MySQL.

Ejemplo:

REVOKE ALL PRIVILEGES ON *.* FROM juan@localhost


SELECT [DISTINCT] lista_de_columnas [INTO OUTFILE 'nombre_de_archivo' opciones_de_exportación]

FROM lista_de_tablas [{CROSS o INNER o STRAIGHT o LEFT o NATURAL} JOIN nombre_de_tabla [ON condición_de_unión]],

[WHERE criterio][GROUP BY nombres_de_columnas][HAVING criterio][ORDER BY nombres_de_columnas]


Esta instrucción devolverá un conjunto de resultados basándose en el criterio proporcionado.

La palabra clave DISTINCT devolverá solamente valores únicos para una columna dada.

Las cláusulas después de la cláusula WHERE proporcionan un filtrado adicional.

Ejemplo:

SELECT * FROM Clientes WHERE Apellido

LIKE "Pe%"

ORDER BY Apellido


SHOW parámetro

La instrucción SHOW devuelve un conjunto de resultados basándose en el parámetro proporcionado. Los siguientes parámetros están permitidos:

•    COLUMNS FROM nombre_de_tabla [FROM nombre_base_de_datos]

o

COLUMNS FROM nombre_base_de_datos. nombre_de_tabla Proporciona una lista detallada de información basada en el nombre de la tabla.

•    DATABASES Muestra una lista de bases de datos.

•    GRANTS FOR nombre_usuario Despliega la información de privilegios para el usuario especificado.

•    INDEX FROM nombre_de_tabla Devuelve información acerca de todos los índices de una tabla.

•    PROCESSLIST Muestra una lista de los procesos e identificadores que se están ejecutando actualmente.

•    STATUS Muestra las variables de estado del servidor.

•    TABLES FROM nombre_base_de_datos Muestra la lista de las tablas de una base de datos.

•    TABLE STATUS FROM nombre_base_de_datos Muestra un recuento detallado de las acciones tomadas en una tabla.

    VARIABLES Proporciona una lista de las variables del sistema

Ejemplo:

SHOW COLUMNS FROM Mi_Tienda.Clientes

SHOW PROCESSLIST


UNLOCK TABLE nombre_de_tabla o UNLOCK TABLE

Este comando libera todos los bloqueos mantenidos por el cliente.


UPDATE [LOW_PRIORITY] nombre_de_tabla SET nombre_de_columna = valor [WHERE criterio] [LIMIT n]

La instrucción UPDATE permite al usuario editar los valores contenidos en una tabla.

La palabra clave opcional LOW_PRIORITY ocasiona que la actualización ocurira solamente cuando la tabla no está en uso.

Ejemplo:

UPDATE Clientes SET Nombre = "Nicolás" WHERE ID_Ciente = 12



(2)https://emanuelpeg.blogspot.com/2019/10/procedimientos-almacenados-y-funciones.html#:~:text=Los%20procedimientos%20almacenados%20son%20un,llamadas%2C%20como%20veremos%20m%C3%A1s%20adelante.
(3) https://guru99.es/functions/