You are on page 1of 31

USAR UNA BASE DE DATOS

Primeramente usaremos la sentencia SHOW para ver cuales son las bases de datos
existentes en el servidor al que estamos conectados.

Figura 1

La base de datos MYSQL es requerida, ya que contiene informacin de los privilegios de


los usuarios de MYSQL, mientras que la base de datos Test es creada durante la
instalacin de MYSQL con el propsito de servir como rea de trabajo para los usuarios
que inician el aprendizaje de Mysql Information_Schema (Esquema de Informacin)
proporciona fcil acceso a la metadata.

Crear una Base se datos

Para crear una base de datos, usamos el siguiente comando:

Figura 2

En este caso creamos la base de datos llamada biblioteca.

Al crear una base de datos, esta no se selecciona de manera automtica sino que se
debe hacer de manera explicita usando el comando USE.
Figura 3

La base de datos se crea slo una vez, pero debemos seleccionarla cada vez que
iniciamos una sesin con MySql. Es recomendable que se indique la base de datos
sobre la que vamos a trabajar al momento de invocar al monitor de MySQL. Por
ejemplo:

Figura 4

Crear tablas

Para poder acceder a la relacin de tablas usamos SHOW TABLES.

Este comando nos indica que la Base de Datos esta vaca.

Figura 5
Por ejemplo vamos a crear una tabla alumno para la base de datos Biblioteca.

Figura 6

Ahora que se ha creado la tabla alumno, la sentencia SHOW TABLES, debe producir
lo siguiente:

Figura 7

Tambin podemos verificar la estructura de la tabla con la opcin DESCRIBE.

Figura 8
Como podemos apreciar, todas las columnas creadas nos permiten ingresar valores
nulos, pero una tabla necesita tener obligatoriamente una Clave Primaria y no valores
nulos.

En primer lugar eliminamos la tabla alumno usando la sentencia DROP TABLE ALUMNO.

Figura 9

Procedemos a crear nuevamente la tabla alumno con su clave primaria


correspondiente (Primary Key), la cual puede ser autoincrementada (auto_increment),
tambin puedes aadir un comentario con el comando comment.

Figura 10

Ahora veremos la nueva estructura de la tabla alumno.

Figura 11
NDICES
Los ndices sirven para optimizar las consultas y bsquedas de datos. Su uso permite
localizar de forma ms rpida, las filas con determinados valores de columnas. La
alternativa es hacer bsquedas secuenciales, que EN tablas GRANDES requieren mucho
tiempo.

Podemos considerar tres tipos de ndices:

1. En primer lugar tenemos las claves primarias las cuales se pueden establecer
tambin de la siguiente forma:

Figura 12

2. El segundo tipo de ndice permite definir ndices sobre una o varias columnas o
sobre parte de ellas. Podemos usar para definir estos ndices las opciones KEY o
INDEX indistintamente.

Figura 13
O

Figura 14

Tambin se puede crear el ndice como parte de una columna

Figura 15

Para crear el ndice este comando utilizara las primeras cuatro letras de nombre del
alumno.

3. El tercero permite definir ndices con claves nicas, para lo cual se utiliza la opcin
UNIQUE.

Figura 16
La diferencia entre un ndice nico y uno normal, es que el ndice nico no permite la
insercin de filas con claves repetidas, a excepcin del valor NULL.

Una clave primaria equivale a un ndice de clave nica, en la que el valor de la clave no
puede tomar valores NULL. Tanto los ndices normales como los de claves nicas si
pueden tomar valores NULL.

Por lo tanto, las siguientes definiciones de comandos son equivalentes:

Figura 17

Figura 18

CLAVES FORNEAS
Se puede definir claves forneas en cualquier tipo de tabla de MYSQL, pero nicamente
se tiene soporte para claves forneas definidas en tablas de tipo InnoDB. Ya que estas
tablas son las que garantizan la integridad de los datos.

Las tablas del tipo InnoDB se almacenan en un solo archivo, permiten trabajar con
transacciones, y definir reglas de integridad referencial.

Puedes asegurarte de que tienes soporte para el tipo de tablas InnoDB ejecutando la
siguiente sentencia:
Figura 19

La variable ms importante es have_innodb que tiene valor de YES.

Vamos a crear una tabla de tipo InnoDB como por ejemplo. Para ello digitamos las
siguientes instrucciones:

Figura 20
Luego procedemos a insertar los siguientes valores:

Figura 21

Para trabajar con las claves forneas, ambas tablas debern ser del tipo InnoDB, y se
debe usar la sintaxis FOREIGN KEY (campo_fk) REFERENCES nombre tabla
(nombre_campo), adems de definir un ndice para el campo que ha sido declarada la
clave fornea.

Siguiendo con la base de datos biblioteca, creamos las tablas tipo InnoDB edito y libros.

Figura 22

Figura 23
Algunos comandos

ON DELETE (opcin), indica que acciones se deben realizar en la tabla actual, si


borra una fila en la tabla referenciada.
ON UPDATE (opcin), es anlogo pero para modificaciones de claves.
Existen cinco opciones diferentes, las cuales se describen a continuacin:

RESTRICT: esta opcin impide eliminar o modificar filas en la tabla


referenciada, si existen filas con el mismo valor de clave fornea.
CASCADE: borrar o modificar los datos de una tabla referenciada, implica
borrarlos tambin de las tablas donde esta contenida como clave fornea.
SET NULL: implica asignar el valor NULL a las claves forneas cuando borras
o modificas una clave de la tabla referenciada.
NO ACTION: las claves forneas no se modifican, ni se eliminan filas en tabla
que las contiene.
SET DEFAULT: asigna el valor por defecto a las claves forneas cuando
borras o modificas una clave en una fila en la tabla referenciada.

Se crea el ndice para que la verificacin de la clave fornea sea ms rpida.

Insertamos registros en ambas tablas

Figura 24
Figura 25

Ahora vamos a probar la integridad referencial.

Por ejemplo vamos a tratar de eliminar la editorial Bruo de la tabla Edito, la cual
tambin se encuentra asignada en la tabla Libros.

El resultado que nos muestra es que no se puede eliminar una fila, la cual esta
referenciada en otras tablas como clave fornea.

Insertar registros

Para facilitar el ingreso de datos podemos crear un archivo de texto que contenga una
lnea con valores separados por tabuladores, cuidando que el orden de las columnas sea
el mismo que se utiliza en la sentencia create table, para representar valores bulos
usar \N.

Este contenido del archivo gilmer.txt.

Figura 26

Para cargar el contenido del archivo de texto gilmer.txt, usaremos el siguiente comando:

Figura 27
La sentencia LOAD DATA nos permite especificar cual es el separador de columnas, y el
separador de registros, por defecto el tabulador es el separador de columnas (campos), y
el salto de lnea es el separador de registros, que en este caso son suficientes para que la
sentencia LOAD DATA lea correctamente el archivo gilmer.txt.

Para comprobar que los datos se insertaron correctamente, podemos realizar un SELECT
a la tabla alumno.

Figura 28

Asimismo, si se desea aadir un registro a la vez debemos usar la sentencia INSERT, tal
como se mostro anteriormente. Por ejemplo:
Figura 29

Tambin podemos volver a consultar la tabla alumno para ver los datos insertados.

Figura 30
Remplazar Registros

Existe una sentencia REPLACE, que es una alternativa para INSERT, que solo se
diferencia en que si existe algn registro anterior con el mismo valor para una clave
primaria o nica, se elimina el viejo y se inserta el nuevo en su lugar.

Figura 31

Actualizar registros

Por ejemplo vamos a actualizar los datos del registro N 3, con el siguiente comando:

Figura 32

Con la instruccin Select podemos mostrar los cambios que se realizaron con el comando
Update.
Figura 33

Nota que aqu usamos el comando WHERE para poder filtrar nuestra consulta de acuerdo
a una determinada condicin, que en este caso es que el cdigo del alumno sea el
nmero 2.

Consultar Registros:

Selecciona los alumnos de la escuela de Contabilidad.

Figura 34
Selecciona los alumnos que estn estudiando Derecho o que cursen el I ciclo o
estn en la escuela de Ingeniera de sistemas.

Figura 35

Selecciona los alumnos que estn estudiando Derecho y que no tengan datos
de ciclo.

Figura 36

Selecciona los nombres de todos los alumnos.

Figura 37
Al igual que en SQL podemos hacer uso del comando DISTINCT, paa filtrar los datos, de
manera, que no se presenten en forma repetitiva

Selecciona el nombre y la escuela de los alumnos que se encuentren en el I


ciclo.

Figura 38

Selecciona el nombre, escuela y ciclo de los alumnos, y ordnalos por ciclo.

Figura 39
Selecciona el nombre, escuela y ciclo de los alumnos, y ordnalos por nombre.

Figura 40

Selecciona la cantidad de alumnos agrupados por ciclo.

Figura 41

Usamos el alias AS para definir un nombre de columna que almacene resultado de una
sentencia.
Consulta de varias tablas

Podemos consultar el nombre de los libros que pertenecen a la editorial bruo, para ello
realizamos las siguientes instrucciones:

Figura 42

Eliminar registros

Para eliminar registros de una base de datos, realiza lo siguiente:

Figura 43

Figura 44
Figura 45

Cuando queremos eliminar todas las filas de una tabla, podemos usar una sentencia
DELETE sin condiciones. Sin embargo, existe una sentencia alternativa, TRUNCATE, que
realiza la misma tarea de una forma mucho ms rpida.

La diferencia es que DELETE hace un borrado secuencial de una tabla, fila a fila.
TRUNCATE borra la tabla y la vuelve a crear vaca, lo que es mucho ms eficiente.

Figura 46

Figura 47
SHOW COLUMNS: Lista las columnas de una tabla dada

Funciones de Encriptado

DECODE Desencripta una cadena usando una contrasea


ENCODE Encripta una cadena usando una contrasea

Funciones de informacin sobre el sistema

CONNECTION_ID Devuelve el ID de una conexin


CURRENT_USER Devuelve el nombre de usuario y el del host para la
conexin actual
DATABASE Devuelve el nombre de la base de datos actual
FOUND_ROWS Calcula cuntas filas se hubiesen obtenido en una
sentencia SELECT sin la clusula LIMIT.
LAST_INSERT_ID Devuelve el ltimo valor generado automticamente para
una columna AUTO_INCREMENT
USER/SESSION_USER/S Devuelve el nombre de usuario y host actual de MYSQL
YSTEM_USER
VERSION Devuelve la versin del servidor MYSQL

Funciones de Grupos

AVG Devuelve el valor medio


COUNT Devuelve el nmero de valores distintos de NULL en las
filas recuperadas por una sentencia SELECT
COUNT Devuelve el nmero de valores diferentes, distintos de
DISTINCT NULL
GROUP_CONCAT Devuelve una cadena con la concatenacin de los valores
de un grupo
MIN Devuelve el valor mnimo de una expresin
MAX Devuelve el valor mximo de una expresin
STD o STDDEV Devuelve la desviacin estndar de una expresin
SUM Devuelve la suma de una expresin
VARIANCE Devuelve la varianza estndar de una expresin

PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado es una rutina escrita en un lenguaje en particular
almacenado en una base de datos. Tiene un nombre, una lista de parmetros (que puede
ser vaca) y un cuerpo (las sentencias que se ejecutarn al invocarlo).

Los procedimientos almacenados requieren de la tabla PROC de la Base de Datos MySql.


Esta tabla es creada durante el procedimiento de instalacin de MYSQL 5.0
Las sentencias que se usan en los procedimientos almacenados son las siguientes:

Sentencia Descripcin
CREATEPROCEDURE Crea un procedimiento almacenado, el cual es
almacenando en la tabla Proc DE LA Base de datos
MySQL.
ALTERPROCEDURE Altera un procedimiento almacenado que fue creado
previamente.
DROPPROCEDURE Borra uno o ms procedimientos almacenados desde la
tabla PROC
SHOW PROCEDURE Retoma las caractersticas de un procedimiento definido
STATUS previamente incluyendo nombre, tipo, fecha de creacin y
fecha de modificacin.
CALL Invoca a un procedimiento almacenado.
DECLARE Usado para definir variables locales, condiciones
cabeceras y cursores.
SELECT INTO Usado para almacenar las columnas indicada
directamente en variables.
FETCH Recupera la fila siguiente usando el cursor especificado y
avanzando el cursor en una fila.
IF Una sentencia condiciona IF-Then-Else-End If
LOOP Una estructura simple, la salida es realizada usando la
sentencia LEAVE.
ITERATE Usado para recomenzar el inicio de los lazos.
WHILE Un lazo con prueba condicional al principio.

Ejemplo:

Vamos a mostrar un ejemplo de procedimiento almacenado, el cual trabajar con la tabla


alumnos. Utilizaremos el comando DELIMITER, el cual permitir cambiar el delimitador,
para que al declarar los procedimientos (que utilizan punto y coma) no nos marque error.

Figura 48
El delimitador puede ser cualquier carcter que sea aceptado por MySQL que no vayas a
utilizar nunca.

Para llamar a un procedimiento almacenado usamos la sentencia CALL.

Figura 49

Show procedure status

Retorna las caractersticas del procedimiento almacenado definido previamente,


incluyendo nombre, tipo, fecha de creacin y fecha de modificacin.

Figura 50

As mismo podemos borrar un procedimiento almacenado con la sentencia Drop


Figura 51

FUNCIONES
Una funcin puede devolver un valor como resultado de su ejecucin adems presenta
limitaciones que un procedimiento almacenado no tiene.

Las sentencias usadas en las funciones son:

Sentencia Descripcin
CREATE FUNCTION Crea una funcin definida por el usuario esencialmente un
procedimiento almacenado que retorna datos.
ALTER FUNCTION Altera una funcin definida previamente.
ALTER FUNCTION Altera una funcin definida previamente
DROP FUNCTION Borra una o mas funciones de la tabla PRO DE MySQL
SHOW FUNCTIONS Retorna las caractersticas de una funcin y definida
STATUS
BEGIN_END Contiene un grupo de sentencias mltiples para ejecucin
SET Usado para alterar los valores de ambas variables locales,
variables de servidor globales
OPEN Usado para abrir un curso
CLOSE Usado para cerrar un curso.
CASE WHEN Una sentencia CASE condicional.
LEAVE Usado para salir de una sentencia IF, CASE, LOOP,
REPEAT, and WHILE.
REPEAT Un lazo con una declaracin condicional al final.
RETURNS Retorna un valor desde una funcin almacenada.
Ejemplo:

A continuacin se mostrar un ejemplo de una funcin que recibe dos parmetros de


fecha y realiza la operacin para calcular el plazo en das, cuyo valor es retornado como
un entero

Figura 52

Para ejecutar la funcin describiremos las siguientes sentencias:

Figura 53

Drop funcin, nos permitir eliminar la funcin creada anteriormente.

Figura 54

TRIGGERS (DISPARADORES)
Los triggers son objetos relacionados con tablas y almacenados en la base de datos, que
se ejecutan o se muestran cuando sucede algn evento sobre sus tablas asociadas.

Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE que modifican los
datos de una tabla. Los triggers se pueden ejecutar antes (BEFORE y7o despus
(AFTER) de que sean modificandos los datos.

Los triggers tienen dos palabras clave, OLD y NEW que se refieren a los valores que
tienen las columnas antes y despus de la modificacin. Los INSERT permiten NEW, los
DELETE slo OLD y los UPDATE ambas.

Ejemplo:

Un ejemplo de triggers sera guardar los datos que se modifican de un libro en otra tabla
que servira de auditora.

Para ello creamos la tabla auditoria_libros

Figura 55

Posteriormente creamos un trigger que se disparar cada vez que alguien modifique un
dato de la tabla libros y lo guardar en una tabla junto al nombre del usuario y la fecha.

Figura 56
Para ver como trabaja el trigger realizaremos lo siguiente.

Actualiza el registro de un libro

Figura 57

Consulta los datos modificados:

Figura 58

Posteriormente consulta los datos de la nueva tabla.


Figura 59

VISTAS
Una vista es un SELECT almacenado. El motor distingue dos tipos de tablas base y
derivadas. Una tabla base, es una existente en el motor de almacenamiento. Una
derivada, es la que surge de cualquier combinacin de tablas base, literales y/o funciones.

Desde este punto de vista, un SELECT produce una tabla derivada. As, una Vista es un
nombre asociado a la tabla derivada que surge de un SELECT INSPERs Y UPDATEs
modificando la tabla base.

Las funciones principales de las vistas, son las siguientes:

Proporcionan un nivel de seguridad, ya que permiten excluir datos para que


ciertos usuarios no los vean.

Proporcionan un mecanismo para que los usuarios vean los datos en el


formato que deseen.

Representan una imagen consistente y permanente de la base de datos


incluso si la base de datos cambia su estructura.

Ejemplos:
Crear una vista que muestre los alumnos de la tabla alumno

Figura 60

Ahora procederemos a consultar los datos de la vista

Figura 61

Crear una vista que muestre los alumnos que se encuentran en los tres primeros ciclos

Figura 62
Ahora visualizamos los datos de la nueva vista creada

Figura 63

CURSORES
Son tablas temporales que permiten ejecutar grandes consultas, Son soportados dentro
de procedimientos almacenados o funciones. La sintaxis es como un SQL embebido. Los
cursores pueden o no hacer copias de sus tablas de resultados y son de solo lectura.

ESQUEMA DE INFORMACIN (INFORMATION_SCHEMA)


El diccionario de datos es la forma de acceder a los metadatos de la base.

Antes de la versin 5 MYSQL permita acceder a los metadatos a travs de SHOW, por
ejemplo SHOW TABLES.

Este mecanismo presenta la informacin en forma de tablas. La nueva implementacin


por el diccionario en la base de datos INFORMATION_SHEMA, la cual es creada por el
motor cada vez que arranca y es mantenida a medida que ocurren cambios en las
estructuras de la base. Es una base de datos virtual en la que solo se puede visualizar su
contenido, mas no modificarlo. Es decir solo permite usar la sentencia SELECT, y no las
sentencias UPDATE, INSERT, REFERENCE, etc.

Entre otras tablas, se encuentra TABLES, que lista las tablas y vistas que existen en el
motor.

Por ejemplo, vamos a listar lo siguiente:


Figura 64