Vous êtes sur la page 1sur 24

Universidad De Panam�Centro Regional Universitario De

Veraguas
Licenciatura En Inform 疸 ica Para La Gesti Educativa Y
Empresarial

Laboratorio #9
Mysql

PROFESOR

Diego Santimateo

INTEGRANTES
CONCEPCIÓN JAIRO 9-724-1589

Sánchez Azurim 9-721-1231

APARICIO YULIAN 9-719-452

Fecha de entrega
12/12/2007
Preguntas

1. Describa qué es una base de datos y un motor (manejador) de


base de datos.

Una base de datos es un colección de información, que también permite guardar


grandes cantidades de datos de forma organizada, para que luego podamos encontrar
y utilizar fácilmente, además esta relacionada entre sí.

Un motor de base de Datos es un software, donde se puede administrar muchos


datos para llegar a obtener información, es como el corazón de la base de datos ya que
se encarga del control total de los posibles aspectos que la puedan afectar entre otras
cosas.

2. Describa una tabla y sus componentes. Haga ejemplos de


varios registros. Indique cómo están constituidos los registros.

Las tablas es donde, se almacena la información y esta compuesta por filas y


columnas. Contiene los campos que son los distintos tipos de datos que la componen
por ejemplo nombre, apellido, dirección, etc.

Ejemplos de Registros:
EL registro empleados tiene los siguientes campos: DNI, Nombre, Apellidos, Edad,
Población, Sueldo. Los campos DNI, Nombre y Apellidos son elementos o campos
característicos. Los restantes son secundarios.
Los registros están constituidos por la información que va contenida en los campos de
la tabla, por ejemplo nombre del cliente, el apellido del cliente, dirección del cliente, etc.
Es cuando se refiere a una persona en especial.

3. ¿Qué es SQL?

SQL (Structured Query Language), es un lenguaje de alto nivel, estándar para


manejar las bases de datos está compuesto por comandos, cláusulas, operadores.
Además este lenguaje permite trabajar con cualquier tipo de lenguaje (ASP o PHP) en
combinación con cualquier tipo de base de datos (MS Access, SQL Server, MySQL.),
pero a pesar que es entandar el no es idéntico para cada base de datos. También es
muy accesible al aprendizaje.

¿Qué es MYSQL?

MySQL es un software creado por MySQL AB y es un software multiusuario, multihilos


(soporta una gran carga de forma muy eficiente) y un servidor SQL. Es un sistema de
administración de base de datos.

4. Identifique la estructura de los comandos SQL en Mysql para


insertar, eliminar, actualizar y consultar registros de una tabla,
así como para crear una tabla.

Comandos:
Insertar: INSERT INTO `Nombre Tabla` (` Nombre Campo ` , ` Nombre Campo ` , `Nombre Campo`)
VALUES ('Valor', ' Valor', ' Valor ');
Se utiliza para insertar datos en una tabla.

Eliminar: DELETE FROM nombre_tabla WHERE condicion


Si se omite la condición where el contenido total de la tabla se borra.
Se utiliza para borrar datos de una tabla.

Actualizar: UPDATE nombre_base/nombre_tabla SET columna_1 = expresion1,


columna_2 = expresion2,… columna_n = expresión WHERE condicion.
Se utiliza para actualizar datos en una tabla.
Consultar: Select nos permite hacer una consulta a la base de datos.

Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");

El Statement obtenido tiene un método executeQuery(). Este método


sirve para realizar una consulta a base de datos.

Crear una Tabla: CREATE TABLE nombre_tabla (campo1 tipo(longitud), campo2


tipo(longitud), campo_n tipo(longitud))
Se utiliza para crear una tabla.

Utilidad de la cláusula WHERE: Para especificar las condiciones que deben reunir los
registros que se van a seleccionar. Esta cláusula se utiliza cuando se va ha buscar en
la base de datos mySQL , algo especifico.

5. ¿Cuáles son los tipos de los campos y qué significa llave


primaria o key?

Los tipos de Campos son los siguientes:

•Texto: para introducir cadenas de caracteres hasta un máximo de 255


•Memo: para introducir un texto extenso. Hasta 65.535 caracteres
•Numérico: para introducir números
•Fecha/Hora: para introducir datos en formato fecha u hora
•Moneda: para introducir datos en formato número y con el signo monetario
•Autonumérico: en este tipo de campo, Access numera automáticamente el
contenido
•Sí/No: campo lógico. Este tipo de campo es sólo si queremos un contenido del tipo
Sí/No, Verdadero/Falso, etc.
•Objeto OLE: para introducir una foto, gráfico, hoja de cálculo, sonido, etc.
•Hipervínculo: podemos definir un enlace a una página Web

key son punteros para poder asociarse con una o varias columnas de la tabla. Esto
sirve para agilizar las consultas a las tablas, evitando de esta manera que myQSL
tenga que revisar todos los datos disponibles para devolver el resultado.
6. Pruebe cada uno de los comandos mencionados, utilizando
como base el ejemplo de la clase de la semana #12. Use el
servidor SERFIEC de la facultad.

Resultado de la prueba:

Insertar datos: Para insertar datos a la tabla utilizamos:

s.executeUpdate("INSERT INTO estu (nombre,apellido,edad)VALUES('Sanchez','Azurim',23)");

Mensaje que se
genera se accesa a la
tabla estu.

Se le Inserto los datos de Azurim Sanchez


Eliminar Datos: Para eliminar datos de la tabla se utilizo:

s.executeUpdate("DELETE FROM estu WHERE nombre='Sanchez'");

Mensaje que se
genera al eliminar
datos de la tabla estu

Se
Se elimino los datos de Azurim, para ello se utilizo la
cláusula where
Actualizar Datos: Para ello se utilizo:

s.executeUpdate("UPDATE estu SET edad=21 WHERE nombre='Jairo'");

Mensaje que se
genera acceder a la
tabla estu

Se Actualizo la edad de Jairo, para ello se utilizo la


cláusula where. Antes tenia 17 ahora se la actualiza
por 21.

Antes Después

Consultar Datos: Para hacer la consulta a la tabla estu se utilizo el comando


Select.
s.executeQuery ("SELECT nombre,apellido,edad FROM estu");
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. ¿Dedicó tiempo para diseñar sus tablas?¿Qué datos pueden
duplicarse y cuáles no?
Programa
//Clase BaseDatos se encarga de invocar a todos los metodos ya sea para crear las
tablas, para insertar los datos en las tablas o realizar una consulta de un
estudiante,, esta opciones son manejadas por medio de un menu.

import java.sql.*;
import java.io.*;
import javax.swing.*;

public class BaseDatos


{
public static void main (String[] args)
{
Statement conect;
int opc=0;
RemotoMysql objeto3 = new RemotoMysql(); //objeto de la clase que realiza la conexion
conect=objeto3.coneccion(); //metodo de conexion
CrearTablas objeto1 = new CrearTablas(conect);//objeto de la clase que crea las tablas
InsertarDatos objeto2 = new InsertarDatos(conect); //objeto de la clase que inserta los datos a
la tabla
while(opc!=4){
System.out.println("\n\n\n ****************************MENU******************"+"\n"
+" Opciones a Marcar "+"\n"+" * 1: Crear las tablas"
+"\n"+" * 2: Insertar Datos en las tablas"+"\n"+" * 3: Consultar
estudiante"+"\n"+" * 4: Salir del programa");

String op = JOptionPane.showInputDialog(null,"*Seleccione una opcion*");


opc=Integer.parseInt(op);
switch (opc)
{
case 1: {
objeto1.crear();
}
break;
case 2: { //insertar datos del archivo a las tablas
String mensajes="Introduzca el nombre del archivo";
String archivo=objeto3.Captura(mensajes);
objeto2.inserta(archivo);
}
break;
case 3: { //consultar los datos del estudiante
String mensajes="Introduzca la cedula del estudiante";
String ced=objeto3.Captura(mensajes);
ConsultaDatos objeto4=new ConsultaDatos(conect,ced);
objeto4.ConsultaEstudiante();
}
break;
case 4: {
System.out.println("\n\n Fin del Programa \n\n");
}
break;
}//fin switch
}
}
}

/**************************************************************************************************/

//Clase CrearTablas se encarga de crear las tablas de estudiante, profesor y asignatura


en la base de datos por medio de los comandos de SQL.

import java.sql.*;

public class CrearTablas


{
Statement s;
public CrearTablas(Statement conect)
{
this.s=conect;
}
public void crear(){
Connection conn = null;
try
{
//Creacion de la tabla profesor (tbleprofesor)
s.executeUpdate("CREATE TABLE IF NOT EXISTS tbleprofesor (nombre_Prof
VARCHAR(40), cod_prof VARCHAR(4))");
//Creacion de la tabla estudiante (tbleestudiante)
s.executeUpdate("CREATE TABLE IF NOT EXISTS tbleestudiante (nombre_Est
VARCHAR(40), nota CHAR, cod_prof VARCHAR(4))");
//Creacion de la tabla asignatura (tbleasignatura)
s.executeUpdate("CREATE TABLE IF NOT EXISTS tbleasignatura (nombre_Asig
VARCHAR(40), cod_asig VARCHAR(4), cod_prof VARCHAR(4))");
System.out.println ("\n\n\n");
System.out.println (" Se ha creado la tabla de Estudiante, Profesor,
Asignatura ");
s.close ();
}catch (Exception e)
{
System.err.println ("acceso a la tabla"+e);
}
}
}
//Clase InsertaDatos se encarga de leer un archivo que contiene la cedula del
estudiante , la nota , el nombre del profesor y la asignatura. Para luego insertarlo
dentro de cada tabla dependiendo de los datos que necesite cada una.

import java.io.*;
import javax.swing.*;
import java.sql.*;

public class InsertarDatos {


Statement s;

public InsertarDatos(Statement conect)


{
this.s=conect;
}

public void inserta(String archivo){


// --** VARIABLES LOCALES **--
String datresul=" ", result=" ", esca=" ";
String esc=new String();
String car=new String();
String codigoasig=" ",asignatura=" ", cod_profe=" ", nombreprof=" ", cedula=" ",calif=" ";

try {
FileReader arch1 = new FileReader(archivo);
BufferedReader arch = new BufferedReader(arch1);

String linea=new String();


String asig=new String();
String prof=new String();

while((linea=arch.readLine())!= null){ //lectura del archivo


int cantline=linea.length(); //calcula la longitud de la linea
String bus_escuela = new String("ASIGNATURA");
int cant2 = linea.indexOf(bus_escuela);

if(cant2 != -1){ //se captura el nombre y codigo de la asignatura


codigoasig=linea.substring(22,26); //codigo de la asignatura
asignatura=linea.substring(27,cantline); //nombre de la asignatura
}

String bus_prof = new String("PROFESOR");


int cant3 = linea.indexOf(bus_prof);

if(cant3 != -1){ //se captura el nombre y el codigo del profesor


cod_profe=linea.substring(15,19);//codigo del profesor
nombreprof=linea.substring(20,cantline);//nombre del profesor
//Aqui se inserta en la tabla asignatura el nombre, el codigo y el cod del prof
s.executeUpdate("INSERT INTO tbleasignatura (nombre_Asig , cod_asig ,
cod_prof )VALUES('"+asignatura+"','"+
codigoasig+"','"+cod_profe+"')");
//aqui se inserta en la tabla profesor el nombre, codigo y el cod del prof
s.executeUpdate("INSERT INTO tbleprofesor (nombre_Prof , cod_prof )
VALUES('"+nombreprof+"','"+cod_profe+"')");
}
try
{
if(cantline==43){
cedula=linea.substring(15,31);
calif=linea.substring(42,cantline);
//aqui se inserta en la tabla estudiante la cedula , la calificacion y el cod prof
s.executeUpdate("INSERT INTO tbleestudiante
(nombre_Est , nota , cod_prof )VALUES('"+cedula+
"','"+calif+"','"+cod_profe+"')");
}
}catch(Exception e) { }

}//fin del while


s.close();
try {
arch.close();
}
catch ( IOException e )
{
System.out.println ( "El archivo no se pudo cerrar correctamente";
}
}catch (Exception e)
{
System.out.println ( "El archivo no se pudo cerrar correctamente" + "\n" + e;);
}
}
} //fin metodo
// Clase remotoMysql se encarga de realizar la conexión con la base de datos la
cual devuelve un Statement que sera utilizado por otras clases.
import java.sql.*;
import java.io.*;
import javax.swing.*;

class RemotoMysql
{
Statement st;
String mensaje;

public RemotoMysql()
{
}
/*******************************************************************************************/

public Statement coneccion()


{
Connection conn = null;

try
{
String userName = "FIEC-03";
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 st = conn.createStatement ();

}
catch (Exception e)
{
System.err.println ("acceso a la tabla"+e);
}
}catch (Exception e)
{
System.err.println ("No puede conectarse al Servidor Mysql");
}
finally
{
if (conn != null)
{}
}
return(st);//
}

/*******************************************************************************************/
public String Captura(String mensajes)
{
mensaje = JOptionPane.showInputDialog(null,mensajes);
return(mensaje);
}

7. Diseñe una clase que permita consultar a partir de la cédula, las


calificaciones identificadas con asignatura y docente.
//Clase ConsultaDatos por medio de la cedula del estudiante realiza la busqueda
en la tabla tbleestudiante, donde capturara la cedula, la nota y el codigo del profesor
como una llave primaria, que se utilizara para buscar en las otras tablas los datos
de la asignatura y el profesor del estudiante

import java.sql.*;

public class ConsultaDatos


{

Statement s;
String cedula;
String lista=new String();

/*******************************************************************************************************/

public ConsultaDatos(Statement conect,String ced){


this.s=conect;
this.cedula=ced;
}

/*******************************************************************************************************/
//este metodo busca la cedula del estudiante en la tabla tbleestudiante y tambien utiliza el
metodo ConsultaProf_Est que se encuentra en esta misma clase.
public void ConsultaEstudiante()
{

String n_prof;
String n_asig;
try
{
//aqui se realiza la busqueda de la cedula del estudiante en la tabla tbleestudiante
s.executeQuery ("SELECT nombre_Est,nota,cod_prof FROM tbleestudiante
WHERE nombre_Est='"+cedula+"'");
ResultSet rs = s.getResultSet ();
int count = 0;
System.out.println (" Consulta ");
System.out.println ("||||||||||||||||||||||||||Datos del Estudiante |||||||||||||||||||||||||||||\n");
while (rs.next ())
{
//captura la cedula del estudiante
String nombreVal = rs.getString ("nombre_Est");

//captura la nota del estudiante


String codVal = rs.getString ("nota");

//captura el nombre del profesor


String codValor = rs.getString ("cod_prof");

//metodo que devuelve el nombre del profesor y la asignatura


String datos=ConsultaProf_Est(codValor);

String[] busqueda=datos.split(",");
n_prof=busqueda[0]; //nombre del profesor
n_asig=busqueda[1]; //nombre de la asignatura

System.out.println ("\n Cedula = " + nombreVal+ "\n


Calificacion = " + codVal);
System.out.println ("\n Nombre del Profesor = " + n_prof + "\n Nombre de la
asignatura = " + n_asig);
System.out.println ("............................................................................");
++count;
}
rs.close ();
s.close ();
System.out.println ("\n Registros recuperados...."+ count);
}catch (Exception e)
{
System.err.println ("acceso a la tabla"+e);
}

} //fin del metodo ConsultaEstudiante

/**********************************************************************************************/
//Este metodo se encarga de buscar los datos de la asignatura y el profesor por medio del
codigo que se obtiene el el metodo de la consulta del estudiante.
public String ConsultaProf_Est (String codValor)
{
String nameProf=new String();
String nameAsig=new String();
Connection conn = null;
try
{
String userName = "FIEC-03";
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);
try
{
Statement st1 = conn.createStatement ();
Statement st2 = conn.createStatement ();

//aqui se realiza la busqueda del codigo del profesor dentro de la tabla tbleprofesor
st1.executeQuery ("SELECT nombre_Prof,cod_prof FROM tbleprofesor
WHERE cod_prof='"+codValor+"'");
ResultSet s1 = st1.getResultSet ();
//aqui se realiza la busqueda del codigo del profesor dentro de la tabla tbleasignatura
st2.executeQuery ("SELECT nombre_Asig,cod_asig,cod_prof FROM
tbleasignatura WHERE cod_prof='"+codValor+"'");

ResultSet s2 = st2.getResultSet ();


int count = 0;

while (s1.next ())//busqueda de la materia


{
nameProf=s1.getString ("nombre_Prof");//captura el nombre del profesor
}

while (s2.next ())//busqueda del profesor


{
nameAsig=s2.getString ("nombre_Asig");//captura el nombre de la
asignatura
}
s1.close();
st1.close();
st2.close();
s2.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)
{
try
{
conn.close ();
}
catch (Exception e) { /* sin mensajes de error */ }
}
}

lista=nameProf + "," + nameAsig;


return(lista);
}//fin del metodo ConsultaProf_Est
}

/***************************************************************************************************/
8. Compare la solución del punto #8 usando Base de datos vs. Archivos.

Base de datos Archivos

*La busqueda de un registro se realiza  *La busqueda de un registro o un dato


mas rapido,reduciendo codigo, ya que en determinado en un archivo, necesita de
una base de datos se trabaja con tablas muchas condiciones para encontrar un
que permite organizar la informacion de registro, ya que la informacion no esta
una mejor manera, accediendo solo a las estructurada por tabla sin no de manera
tablas donde se encuentra un registro o la secuencial, y esto es una desventaja para
informacion que se necesita mediante la cualquier programador ya que necesita la
clausula WHERE. implementacion de mucho codigo y tiempo
para encontrar los registro que se
necesitan.
9. Evidencia de Ejecuión

menu del programa


aquí se muestra el mensaje cuando son creadas las tablas dentro de la base de
datos
aquí se le pide al usuario que introduzca el nombre del archivo

aquí se despliega un mensaje al momento de insertar los datos a las tablas


aquí se le pide al usuario quue introduzca la cedula del estudiante a buscar

aquí se despliega los datos del estudiante como la cedula, la nota, el nombre del
profesor y el nombre de la asignatura.
En su sitio de esnips coloque un documento con el desarrollo de este laboratorio.
Presente un comentario en http://www.esnips.com/web/inf222 identificando el URL de
su documento para que todos podamos compartir los trabajos.

Haga de http://www.esnips.com/web/inf222 su sitio favorito.

Vous aimerez peut-être aussi