Unidad 3
Gestión de Base de Datos
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
-
Solo pueden tener datos de entrada (parámetros) IN, y no de
salida OUT.
-
Las funciones deben de devolver con un tipo de dato.
-
Pueden usarse en el contexto de una sentencia SQL.
-
Solo retornan un valor y no un conjunto de valores
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:
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/