Respuestas

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Respuestas as PDF for free.

More details

  • Words: 3,522
  • Pages: 31
UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD DE INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN LICENCIATURA EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y EMPRESARIAL

PROGRAMACIÓN IV LABORATORIO #9 TEMA Mysql FACILITADOR DIEGO SANTIMATEO ELABORADO POR CALLES YORISBETH

9-720-2373

GONZÁLEZ ROMAN

9-705-1420

II AÑO II SEMESTRE

ÍNDICE

CUESTIONARIO............................................................................................................................1 1. Describa qué es una base de datos y un motor (manejador) de base de datos:............................1 2. Describa una tabla y sus componentes. Haga ejemplos de varios registros. Indique cómo están constituidos los registros..................................................................................................................2 3. ¿Qué es SQL? ¿Qué es MYSQL?................................................................................................3 4. Estructura de los comandos SQL en Mysql ................................................................................4 5. ¿Cuáles son los tipos de los campos y qué significa llave primaria o key?.................................8 6. Prueba de los comandos mencionados........................................................................................9 7. Elabore un programa OO que lea el archivo de texto de las calificaciones de los estudiantes del CRUV y cree una tabla de profesores, otra de estudiantes y otra de asignatura. ..........................14 7.1 Programa fuente...................................................................................................................14 7.2 Ejecución del programa ......................................................................................................24 8. Consultar a partir de la cédula, las calificaciones identificadas con asignatura y docente ......27 9. Compare la solución del punto #8 usando Base de datos vs. Archivos.....................................29

2

CUESTIONARIO

1. Describa qué es una base de datos y un motor ( manejador) de base de datos: Una base de datos o banco de datos es un conjunto de datos que pertenecen al mismo contexto almacenados sistemáticamente para su posterior uso. También se puede decir que una base de datos es un recurso de datos de una organización para todo el procesamiento de información donde los datos están integrados y relacionados para reducir al mínimo la redundancia de datos. Una base de datos almacena sus datos en tablas. Motor (manejador) de base de datos: El manejador

de bases de datos es la parte más importante del

software de un sistema de base de datos. En sí, un sistema manejador de base de datos es el corazón de la base de datos ya que se encarga del control total de los posibles aspectos que la puedan afectar.

1

2. Describa una tabla y sus componentes. Haga ejemplos de varios registros. Indique cómo están constituidos los registros. Como mencionamos anteriormente, una base de datos almacena sus datos en tablas. Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un dato específico, un solo valor. Cada registro contiene un dato por cada columna de la tabla. Cada campo (columna) debe tener un nombre. El nombre del campo hace referencia a la información que almacenará. Cada campo (columna) también debe definir el tipo de dato que almacenará. Tabla usuarios Nombre

Apellido

Clave

Mario

Perez

7045

Maria

Garcia

7046

Diego

Rodriguez

7047

Tenemos una tabla que la podemos llamar usuarios, que contiene tres campos llamados: Nombre, Apellido y Clave. Luego tenemos dos registros

2

almacenados en esa tabla, el primero almacena en el campo nombre el valor "Mario", en el campo Apellido almacena el valor “Perez” y en el campo clave "7045", y así sucesivamente con los otros dos registros. Cuando se crea una tabla debemos indicar su nombre y definir sus campos con su tipo de dato. Por ejemplo en el campo Nombre se debe definir que tipo de datos será, normalmente este campo es de tipo cadena de caracteres, y así sucesivamente, se tendrán que definir los demás. 3. ¿Qué es SQL? ¿Qué es MYSQL? SQL, Structure Query Language (Lenguaje de Consulta Estructurado) es un lenguaje de programación para trabajar con base de datos relacionales como MySQL, Oracle, etc. SQL es el lenguaje estándar utilizado para manejar las bases de datos.

MySQL es un interpretador de SQL, es un servidor de base de datos. MySQL permite crear base de datos y tablas, insertar datos, modificarlos, eliminarlos, ordenarlos, hacer consultas y realizar muchas operaciones, etc., resumiendo: administrar bases de datos.

3

4. Estructura de los comandos SQL en Mysql Como hemos dicho anteriormente, que al crear una tabla debemos resolver qué campos (columnas) tendrá y que tipo de datos almacenarán cada uno de ellos. Para crear una tabla se utiliza la sentencia SQL create: Ejemplo: CREATE TABLE nombre _ tabla (campo1 tipo (longitud), campo2 tipo (longitud), campo_n tipo (longitud)); Para seguir con el ejemplo anterior de la tabla usuarios, seria: Create table usuarios ( Nombre varchar(25) Apellido varchar(25) Clave varchar(8) ); Para insertar datos a una tabla, haremos uso de la sentencia: INSERT INSERT

INTO INTO

,

nombre_tabla

Cuya

sintaxis

(columna_1,

básica

columna_2,…

es:

columna_n)

VALUES(valor_1, valor_2,… valor_n) WHERE condición(opcional) Ejemplo: insert into usuarios (Nombre, Apellido, Clave) values ('Mario’,’Perez','7045’');

INSERT INTO es, obviamente, la sentencia SQL que inserta los valores en una tabla.

4

Para llevar a cabo un proceso selectivo debemos utilizar la sentencia SQL SELECT, la cual tiene la siguiente sintaxis básica: SELECT nombre_columna FROM nombre_tabla WHERE condicion (opcional) GROUP BY orden_de_agrupacion ORDER BY orden_de_ordenamiento

Ejemplo: select nombre, apellido, clave from usuarios; El comando select recupera los registros de una tabla detallando los nombres de los campos separados por comas, indicamos que seleccione todos los campos de la tabla que nombramos. Existe una cláusula, where que es opcional, con ella podemos especificar condiciones para la consulta select. Es decir, podemos recuperar algunos registros, solo los que cumplan con ciertas condiciones indicadas con la cláusula where. Por ejemplo, si queremos ver el usuario cuyo nombre es Mario, para ello utilizamos where y luego de ella, la condición: select nombre, apellido, clave form usuarios where nombre=Mario;

Para actualizar: Para MySQL las actualizaciones se llevan a cabo mediante la sentencia UPDATE, cuya sintaxis es la siguiente: UPDATE nombre_base/nombre_tabla SET columna_1 = expresion1, columna_2 = expresion2,… columna_n = expresión WHERE condición. Por ejemplo, en la tabla que creamos “usuarios”, queremos cambiar los valores de todas las claves por “7777” seria: Update usuarios set clave = “7777”; 5

Este cambio afectara a todos los registros. Pero podemos modificar algunos registros, para hacer esto debemos establecer condiciones de selección, y lo hacemos mediante la sentencia “where” Por ejemplo queremos cambiar el valor correspondiente a la clave del usuario de nombre Mario, y queremos como nueva clave ‘6666’, utilizamos una condición where que afecte solamente a este registro: Update usuarios set clave = ‘6666’

where nombre = ‘Mario’;

Si no encuentra registros que cumplan con la condición del where, ningún registro es afectado. Las condiciones no son obligatorias, pero si omitimos la cláusula where, la actualización afectara a todos los registros.

Para eliminar: La sentencia para borrar o eliminar registros de una tabla es: delete. La sintaxis seria: DELETE FROM nombre_tabla WHERE condición. Si se omite la condición WHERE el contenido TOTAL de la tabla se borrará. Ejemplo: delete from usuarios;

Esta sentencia hace que la totalidad del contenido de la tabla usuarios se borre completamente.

6

Utilidad de la cláusula WHERE: Esta condición es en realidad una de las sentencias más importantes a nivel de las bases de datos relacionales, ya que es la que le impone condiciones a nuestro Modificado, Borrado o Seleccionado, evitando de esta forma el que datos importantes (o no importantes en algunos casos) sean Modificados, Borrados o Seleccionados. La sentencia WHERE tiene tanto (o más protagonismo) que la sentencia que la utiliza.

7

5. ¿Cuáles son los tipos de los campos y qué significa llave primaria o key? A continuación se muestran algunos de los tipos de datos que puede almacenar una tabla: CHAR/ CHAR() : Las columnas de tipo char o char() almacenan un carácter o una cadena de caracteres de 0 hasta 255 respectivamente (Si lo recuerdan, este fue el tipo de datos que le asignamos a todas nuestras columnas en la tabla UNO) VARCHAR: Estas columnas almacenan una cadena de caracteres variables de 0 a 255. INT/ INTEGER: Contiene un entero de tamaño normal (este normal es para nosotros en realidad un tamañote) entre -2147483648 y 2147483647 o entre 0 y 4294967295. FLOAT/ FLOAT(): Guarda un número de coma flotante.

DOUBLE: Contiene un número de coma flotante de precisión normal. DOUBLE

PRECISION

REAL : Son sinónimos de DOUBLE

8

DECIMAL: Guarda un número de coma flotante sin empaquetar. Esto de sin empaquetar implica que se guarda como una cadena (véase CHAR), usando un carácter para dígito del valor. DATE: Almacena un valor de fecha, los rangos permitidos son desde ‘1000-0101’ y ‘9999-12-31’ (Fecha en la que podría que nosotros ya no estemos vivos). Estos son algunos de los tipos de datos que puede tener una tabla.

Llave primaria o key: Una llave primaria o key es un campo clave que se asigna a la tabla, esta llave diferenciara un registro de otro, porque es el único campo de un registro que no puede o debe ser igual al de otro.

6. Prueba de los comandos mencionados Utilizando el ejemplo facilitado por el profesor, el cual utiliza la sentencia SELECT se utiliza para consultar los datos de la base de datos. El resultado fue el siguiente:

9

Y la sentencia de código, utilizada para esta prueba fue: s.executeQuery ("SELECT nombre,apellido,edad FROM estu");

Ahora mostraremos una consulta, pero utilizando la sentencia WHERE, solicitando un estudiante especifico, en este

caso el nombre especifico fue

“Oradys”

10

La sentencia de código utilizada es: s.executeQuery

("SELECT

nombre,apellido,edad

FROM

estu

WHERE

nombre='Oradys'");

En la siguiente prueba utilizamos la sentencia UPDATE, esta es utiliza para hacer una modificación en uno de los campos de un estudiante de la tabla:

Se puede observa a simple vista la modificación realizada en la cual fue cambiada el código de la estudiantes Oradys que tenia el código de 22 y dicho código fue modificado por el código 38. El segmento de código utilizado para lograr esta modificación fue la siguiente: s.executeUpdate("UPDATE estu set edad='38' WHERE nombre='Oradys'" );

11

Para eliminamos un registro dentro de la tabla se utiliza la sentencia DELETE, y se especifica el nombre que se desea eliminar en este caso fue el de Oradys.

Se observa que el registro ya no

La sentencia de código utilizada para eliminar fue la siguiente: s.executeUpdate("DELETE FROM estu WHERE nombre='Oradys'");

y para consultar si el nombre fue eliminado se utiliza: s.executeQuery

("SELECT

nombre,apellido,edad

FROM

estu

WHERE

nombre='Oradys'");

En el siguiente ejemplo vamos a insertar (y para esto se utiliza la sentencia INSERT INTO) un nuevo registro, el registro que se va a insertar tiene como valores los siguientes datos: nombre=’Roman’, apellido=’Gonzalez’, edad=’29’.

12

La sentencia de código utilizada fue la siguiente s.executeUpdate("INSERT INTO estu (nombre, apellido, edad) VALUES ('Roman', 'Gonzalez', '29')");

Nota: En la prueba de los comandos MYSQL solo estamos mostrando la línea de código en donde la utilizamos, ya que es la parte que cambia en todo el programa.

13

7. Elabore un programa OO que lea el archivo de texto de las calificaciones de los estudiantes del CRUV y cree una tabla de profesores, otra de estudiantes y otra de asignatura.

7.1 Programa fuente principal import java.io.*; import javax.swing.*; public class Principal { public static void main(String[] args)throws IOException { String archivoriginal="2006-SEGUNDO.TXT"; Capturaimp capt=new Capturaimp(); Creartablas create=new Creartablas(); Copiararchivo copy=new Copiararchivo(archivoriginal); PruebaRemotaMysql cons=new PruebaRemotaMysql(); String opc=new String(); int op=0; while (op!=4) { System.out.println(" \n MENU " + "\n"); System.out.println("1.CREAR TABLAS"); System.out.println("2.INSERTAR DATOS EN LAS TABLAS"); System.out.println("3.CONSULTA DE UN ESTUDIANTE"); System.out.println("4.SALIR" + "\n" + "\n"); opc=capt.devmsn1("INTRODUZCA LA OPCION QUE DESEA: "); op=Integer.parseInt(opc); //opciones para hacer el llamado a las clases adecuadas switch(op) { case 1: create.tablas(); break; case 2: String resp=copy.creararchivo(); capt.imprimir(resp); break;

}

case 3: String ced=capt.devmsn1("INTRODUZCA LA CEDULA A BUSCAR:"); cons.consulta(ced); break;

14

} } }

captura imprime // clase que permite ingresar datos y despliega resultados import import import import import

javax.swing.*; java.text.*; java.lang.String.*; java.io.*; java.util.*;

class Capturaimp { private String msnj; public Capturaimp(){ } // metodo para capturar datos public String devmsn1(String mens)throws IOException { //flujos que permiten la captura por tevlado InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); System.out.print(mens); msnj=br.readLine();

}

return (msnj);

//metodo para desplegar resultados public void imprimir(String mensj){ System.out.println(mensj); } }

15

Crear tabla /* esta clase se conecta a la base de datos y permite crear las tablas para profesor, estudiantes y asignaturas */ import java.sql.*; class Creartablas{ public Creartablas(){ } public void tablas ()// método para crear tablas { Connection conn = null; try { String userName = "FIEC-02"; String password = ""; // se indica el servidor, puerto y la base de datos facultad de mysql String url = "jdbc:mysql://serfiec:3306/facultad"; Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Coneccion Database OKKK!!!"); try { Statement s = conn.createStatement (); /* creación de las tablas mediante la sentencia CREATE TABLA s.executeUpdate("CREATE TABLE educa ( nombre VARCHAR(70), codigo VARCHAR(10),asignatura VARCHAR(70))"); s.executeUpdate("CREATE TABLE materias ( nombre VARCHAR(70), codigoasig VARCHAR(8), codigohor VARCHAR(8))"); s.executeUpdate("CREATE TABLE student (cedula VARCHAR(20),codigoasig VARCHAR(8),codigo VARCHAR(70),nota VARCHAR(2))"); s.close (); System.err.println ("TABLAS CREADAS CORRECTAMENTE"); } catch (Exception e) { System.err.println ("Problemas con acceso a la tabla"+e); } } catch (Exception e) { System.err.println ("No puede conectarse al Servidor Mysql"); } finally { if (conn != null) { try { conn.close (); System.out.println ("\n !!!!!Cerrada la coneccion a Mysql"); } catch (Exception e) { /* sin mensajes de error */ } } } } }

16

Copiar archivo /* clase que extrae los datos necesarios de un archivo de texto, los imprime en pantalla y luego pasa estos datos a las tablas correspondientes, para simplificar, los datos que se extraen corresponden a la facultad de ciencias agropecuarias */ import java.io.*; import javax.swing.*; import java.text.*; import java.lang.String.*; import java.sql.*; class Copiararchivo { private String archivoName; public Copiararchivo(String an){ this.archivoName=an; // captura el nombre del archivo de texto } public String creararchivo(){ Connection conn = null; String respuesta=" "; try { String userName = "FIEC-02"; String password = ""; // se indica el servidor, puerto y la base de datos facultad de mysql String url = "jdbc:mysql://serfiec:3306/facultad"; Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Coneccion Database OKKK!!!"); // flujos para la captura del archivo FileReader arch1 = new FileReader(archivoName); BufferedReader in = new BufferedReader(arch1); String s = new String(); String nombasig=new String(); String codasig=new String(); String codhor=new String(); String ced=new String(); String codigprof=new String(); String calif=new String(); String nombreprof=new String(); boolean op=false; Statement st = conn.createStatement (); while((s=in.readLine())!= null) //lectura del archivo { //verifica si la linea corresponde a la de asignatura if(s.startsWith("ASIGNATURA",3)) { nombasig= "";

17

//se separa la línea dentro de un vector para extraer los datos necesarios String[] dats0=s.split (" "); //se extrae del vector el codigo de asignatura y el código de horario codasig=dats0[4]; codhor=dats0[6]; /*en el vector, el nombre de la asignatura empieza en la posición 7, se procede a concatenar a partir de esa posición hasta el final*/ for(int j=7;j
18

st.executeUpdate("INSERT INTO student (cedula, codigoasig , codigo, nota )" + "VALUES ('"+cedu+"', '"+codasig+"', '"+codigprof+"', '"+calf+"' )"); } catch(Exception e) { } }//while st.close (); respuesta +="ARCHIVO LEÍDO CORRECTAMENTE Y DATOS INSERTADOS CORRECTAMENTE "

;

try { in.close(); } catch ( IOException e ) { respuesta +="El archivo no se pudo cerrar correctamente"; } } catch (Exception e) { respuesta +="El archivo no se pudo cerrar correctamente" + "\n" + }

e;

return(respuesta); } //fin método } // fin de Copiararchivo

19

consulta de un estudiante por cedula /*esta clase recibe una cedula y procede a buscarla en la tabla de estudiantes. Contiene dos métodos, uno para la búsqueda de la cedula y el otro para la búsqueda de la materia y el profesor */ import java.sql.*; class PruebaRemotaMysql { private String userName = "FIEC-02"; private String password = ""; // se indica el servidor, puerto y la base de datos facultad de mysql private String url = "jdbc:mysql://serfiec:3306/facultad"; public PruebaRemotaMysql(){ } public void consulta (String id) { Connection conn = null; try { Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Coneccion Database OKKK!!!"); try { Statement s = conn.createStatement (); //se aplica la sentencia y la condicion mysql para la busqueda s.executeQuery ("SELECT cedula, codigoasig, codigo, nota FROM student WHERE cedula='"+id+"'"); ResultSet rs = s.getResultSet (); int count = 0; System.out.println ("Datos de la Tabla \n"); while (rs.next ()) { //captura de los datos correspondientes a la cedula. String cedulaVal = rs.getString ("cedula"); String codigasigVal = rs.getString ("codigoasig"); String codigprofVal = rs.getString ("codigo"); String notaVal = rs.getString ("nota"); /*lamado al metodo consulta2, para la búsqueda de la asignatura y el profesor, se pasan como parámetros: código de asignatura, código del profesor; capturados de los datos de la tabla del estuadiante*/ String result=consulta2(codigasigVal,codigprofVal);

20

/*aplicamos un split para separar el nombre del professor y el de la asignatura*/ String[] datoss=result.split("''"); String nombrematVal=datoss[0];/*captura el nombre de materia*/ String nombreprofVal=datoss[1]; ];/*captura el nombre del profesor*/ //salida de los datos por consola System.out.println ("\n Nombre de la Asignatura = " + nombrematVal + "\n Nombre del profesor = " + nombreprofVal + "\n Calificacion = " + notaVal); ++count; } rs.close (); s.close (); System.out.println ("\n Registros recuperados...."+ count); } catch (Exception e) { System.err.println ("Problemas con acceso a la tabla"+e); } } catch (Exception e) { System.err.println ("No puede conectarse al Servidor Mysql"); } finally { if (conn != null) { try { conn.close (); System.out.println ("\n !!!!!Cerrada la coneccion a Mysql"); } catch (Exception e) { } } } }

21

//método que busca el nombre de la material y del profesor public String consulta2 (String codas,String codprf) { Connection conn = null; String nombrematVal=new String(); String nombreporfVal=new String(); String retorn=new String(); try {

Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password);

try

{ //Uso de la tabla estu de la base de datos facultad Statement s = conn.createStatement (); Statement z = conn.createStatement ();

//uso del metodo select para la tabla materias s.executeQuery ("SELECT nombre FROM materias WHERE codigoasig='"+codas+"'"); //uso del metodo select para la tabla materias z.executeQuery ("SELECT nombre FROM educa WHERE codigo='"+codprf+"'"); ResultSet rs = s.getResultSet (); ResultSet rz = z.getResultSet (); int count = 0; while (rs.next ())//busqueda de la materia { nombrematVal=rs.getString ("nombre"); } rs.close (); s.close (); while (rz.next ())//busqueda del profesor { nombreporfVal=rz.getString ("nombre"); } rz.close (); z.close (); } catch (Exception e) { System.err.println ("Problemas con acceso a la tabla"+e); } } catch (Exception e) { System.err.println ("No puede conectarse al Servidor Mysql"); } finally { if (conn != null) {

22

try { conn.close (); } catch (Exception e) { }

} } retorn =nombrematVal + "''" + nombreporfVal; return(retorn);//retorna datos concatenados

} }

23

7.2 Ejecución del programa En esta parte de la ejecución del programas realizamos lo solicitado por el facilitado el en punto el cual consistía en crear un tabla e insertar datos en la misma

En esta pantalla a través de la opción uno creamos las tablas de profesor, estudiante y asignatura; y se puede observar el mensaje que nos dice que la tabla fue creada correctamente.

Estructura por las que se encuentran conformadas las tablas:

nombre

nombre

educa código asignatura

materias codigoasig codigohor

student

24

cedula

codigoasig

codigo

nota

25

en la pantalla que presentamos

escogemos la opción dos la cual

es utilizada para insertar datos dentro de las tablas dichos datos son extraídos de un archivos

Estos son algunos de los datos introducidos en las tablas

26

8.

Consultar a partir de la cédula, las calificaciones identificadas

con asignatura y docente

Escogemos la opción 3 la cual realiza la consulta de un estudiante a partir de la cedula dada.

y los datos obtenidos son los siguientes

27

En esta pantalla podemos observar que la cedula introducida no se encuentra en la base de datos por lo cual nos manda un mensaje de la cantidad de archivos recuperados el cual es cero por no estar en la base de datos.

28

9. Compare la solución del punto #8 usando Base de datos vs. Archivos. Comparando una búsqueda utilizando base de datos y archivos, resulta mas ventajoso y mas eficiente consultar mediante base de datos, ya que cuenta con una sentencia (WHERE) que reduce la búsqueda, buscando datos de un registro en especial, también se reduce códigos, porque con el uso de archivos se tiene que escribir muchas condiciones para encontrar un registro. Otro punto es que con base de datos se cuenta con información seleccionada, es decir contamos con tablas que contiene solamente los datos que corresponden a esas tablas.

29

Related Documents

Respuestas
November 2019 29
Respuestas
October 2019 27
Respuestas
April 2020 16
Respuestas
November 2019 26
Respuestas
November 2019 26
Respuestas
July 2020 15