UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN CICLO: 01/ 2013 Nombre de la Practica: Lugar de Ejecución: Tiempo Estimado: MATERIA: GUIA DE LABORATORIO # 8 Interactuar con una base de datos utilizando un script SH Laboratorio de Redes, Edificio 3 del CITT 3 horas Aplicaciones para Redes I. OBJETIVOS Que el estudiante: • Manipule el gestor de base de datos de Mysql. • Crear script que permitan mostrar e insertar datos II. INTRODUCCION TEORICA Que es mysql? mysql (algunas veces referido como "monitor mysql") es un programa interactivo que permite conectarnos a un servidor MySQL, ejecutar algunas consultas, y ver los resultados, en otras palabras mysql es un gestor de base de datos. Conectándose y desconectándose al servidor MySQL Para conectarse al servidor, usualmente necesitamos de un nombre de usuario (login) y de una contraseña (password), y si el servidor al que nos deseamos conectar está en una máquina diferente de la nuestra, también necesitamos indicar el nombre o la dirección IP de dicho servidor. Una vez que conocemos estos tres valores, podemos conectarnos de la siguiente manera: shell> mysql -h NombreDelServidor -u NombreDeUsuario -p Cuando ejecutamos este comando, se nos pedirá que proporcionemos también la contraseña para el nombre de usuario que estamos usando. Si la conexión al servidor MySQL se pudo establecer de manera satisfactoria, recibiremos el mensaje de bienvenida y estaremos en el prompt de mysql: shell>mysql -h casita -u root -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5563 to server version: 3.23.41 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Este prompt nos indica que mysql está listo para recibir comandos. Después de que nos hemos conectado de manera satisfactoria, podemos desconectarnos en cualquier momento al escribir "quit", "exit", o presionar CONTROL+D. Aplicaciones para Redes 1 Guía # 8: Interactuar con una base de datos utilizando un script SH III. MATERIALES Y EQUIPO Para la No. 1 2 realización de la guía de práctica se requerirá lo siguiente: Requerimiento PC de escritorio con Linux Guía de laboratorio Cantidad 1 1 IV. PROCEDIMIENTO 1. Crear la base datos: -Levantar el servicio de mysql: service mysqld start -Abrir el eprompt de mysql: [root@localhost ~]# mysql -u root -crear la base de datos: mysql> create database zoologico; -Seleccionar la bases de datos: mysql> use zoologico; 2. Crear tablas: • Lo podemos hacer de dos maneras, si ya elegimos la base de datos digitamos las tablas con sus campos correspondientes, que son las siguientes: create table especies( cod_especie varchar(8) primary key, especie varchar(30) ) ENGINE=InnoDB; create table mascotas( cod_mascota varchar(8) primary key, nombre varchar(30), propietario varchar(60), cod_especie varchar(8), sexo char(1), nacimiento date, fallecimiento date, index(cod_especie), Foreign key(cod_especie)references especies(cod_especie) ) ENGINE=InnoDB; • El paso anterior lo podemos realizar de la siguiente manera, ya que al digitar en el prompt de mysql si da algún error, hay que digitar de nuevo todo, podemos solucionar este problema creando las tablas en un archivo externo al cual le llamaremos “sql” y lo guardaremos en el Escritorio de el usuario root. ejemplo: mysql -u root zoologico < /root/Escritorio/sql La tabla debe tener una estructura muy similar a la siguiente Aplicaciones para Redes 2 Guía # 8: Interactuar con una base de datos utilizando un script SH 3. Crear el script llamado “ingresarespecies.sh” y agregare el siguiente código. #!/bin/bash var=$(Xdialog --stdout --2inputsbox "Ingresar los datos" 0 0 "Ingrese el codigo de la especie" "" "Ingresar el nombre de la especie" "" ) cod_especie=$( echo $var | awk -F/ '{ print $1 }') especie=$( echo $var | awk -F/ '{ print $2 }') mysql -u root -prafael zoologico <<INICIO insert into especies values("$cod_especie","$especie"); INICIO Xdialog --infobox "Especie ingresada correctamente" 0 0 5000 Ejecutar el Script y ver el resultado. 4. Crear el script “ingresarmascotas.sh” y agregar el siguiente código. #!/bin/bash Xdialog --title "Titulo" --yesno "Quiere Ingresar una nueva mascota" 0 0 case $? in 0) #se verifica si hay especies en la base cant=$(mysql -u root -prafael zoologico <<-INICIO select count(*) from especies; INICIO ) #se captura el valor cant=$(echo $cant | awk '{print $2}') #si no hay especie se termina el proceso if [ $cant -eq 0 ] then Xdialog --infobox "No existen especies en la base, no se pueden ingresar mascotas" 0 0 5000 #si hay especies continuamos con el proceso else #se captura el codigo de la mascota codigo=$(Xdialog --stdout --inputbox "Ingrese el codigo de la mascota" 0 0 ) #ingresamos el nombre de la mascota y el propietario var=$(Xdialog --stdout --2inputsbox "Ingresar los datos" 0 0 "Ingrese el nombre de la mascota" "" "Ingrese el nombre del propietario" "" ) #se captura los datos de las mascotas mascota=$( echo $var | awk -F/ '{ print $1 }') propietario=$( echo $var | awk -F/ '{ print $2 }') #se consultan las epecies para el combo mysql -u root -prafael zoologico <<-INICIO >tmp Aplicaciones para Redes 3 Guía # 8: Interactuar con una base de datos utilizando un script SH select especie from especies; INICIO #se toman todos los valores menos el nombre del campo var=$( cat tmp | awk 'NR>1' ) #creamos el combo especies=$(Xdialog --stdout --combobox "Escoja su Mascota" 0 0 $var ) sexo=$(Xdialog --stdout --combobox "Elija el sexo de la Mascota" 0 0 "F" "M" ) nacimiento=$(Xdialog --stdout --calendar "Escoja la fecha de nacimiento" 0 0 19 02 1986 ) fallecimiento=$(Xdialog --stdout --calendar "Escoja la fecha de fallecimiento" 0 0 19 02 1986) #utilizada para tomar el codigo de la especie ya que no se inserta el nombre sino el codigo cod_especie=$(mysql -u root -prafael zoologico <<-INICIO select cod_especie from especies where especie="$especies" INICIO ) #se quita el nombre del campo cod_especie=$(echo $cod_especie | awk '{print $2}') #creamos una estrutura valida para las fechas nacimiento=$( echo $nacimiento | awk -F/ '{print $3"-"$2"-"$1}' ) fallecimiento=$(echo $fallecimiento | awk -F/ '{print $3"-"$2"-"$1}' ) #realizamos toda la insercion mysql -u root -prafael zoologico <<INICIO insert into mascotas values("$codigo","$mascota","$propietario","$cod_especie","$sexo","$nacimiento","$fallecimiento ") INICIO Xdialog --infobox "Mascota ingresada correctamente" 0 0 5000 fi ;; 1)echo 1;; 255)echo 255;; esac 5. Como ultimo punto crearemos un script llamado “creabase.sh” y que permitirá crear una base de datos, validando que no exista otra con el mismo nombre. echo -n "Ingrese el nombre de la base de datos a crear: " read base mysql -prafael <<INICIO | grep $base > /dev/null show databases ; INICIO if [ $? -eq 0 ] then clear Aplicaciones para Redes 4 Guía # 8: Interactuar con una base de datos utilizando un script SH echo "Ya existe una base de datos con ese nombre" else mysql -prafael <<INICIO create database $base; INICIO fi V. DISCUSION DE RESULTADOS Crear un script que me permita realizar las siguientes opciones. 1. Me permita eliminar una base de datos siempre y cuando esta se encuentre vaciá, para ello debe de pedir el nombre de la base de datos. 2. Ver todas las base de datos. 3. Ver todas las tablas de una base de datos. 4. Eliminar una tabla siempre y cuando se encuentre vaciá. 5. Tomando de referencia el punto 5, crear un script que primero muestre en un combobox las bases de datos y luego verifique si esta se encuentra vacía, en caso que no contenga tablas deberá eliminarla, sino es así mostrara un infobox de 5 segundos que muestre el error. Tomar en cuenta que para estos script debe utilizar Xialog VII. BIBLIOGRAFIA Linux. Manual de Administración, Steve Shah, McGraw-Hill 2001 Linux. Guía de instalación y administración, Vicente López Camacho, McGraw-Hill, 2001 Aplicaciones para Redes 5