domingo, 21 de noviembre de 2010

MySQL

 MySQL es un sistema de gestión de bases de datos relacional. Su diseño le permite soportar una gran carga de forma muy eficiente.
Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración.

Características de MySQL
Las principales características de este gestor de bases de datos son las siguientes:
  1. Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.
  2. Soporta gran cantidad de tipos de datos para las columnas.
  3. Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc).
  4. Gran portabilidad entre sistemas.
  5. Soporta hasta 32 índices por tabla.
  6. Gestión de usuarios y passwords, manteniendo un muy buen nivel de seguridad en los datos.
¿Qué es lo que le falta?
MySQL surgió cómo una necesidad de un grupo de personas sobre un gestor de bases de datos rápido, por lo que sus desarrolladores fueron implementando únicamente lo que precisaban, intentando hacerlo funcionar de forma óptima. Es por ello que, aunque MySQL se incluye en el grupo de sistemas de bases de datos relacionales, carece de algunas de sus principales características:
  1. Subconsultas: tal vez ésta sea una de las características que más se echan en falta, aunque gran parte de las veces que se necesitan, es posible reescribirlas de manera que no sean necesarias.
  2. SELECT INTO TABLE: Esta característica propia de Oracle, todavía no está implementada.
  3. Triggers y Procedures: Se tiene pensado incluir el uso de procedures almacenados en la base de datos, pero no el de triggers, ya que los triggers reducen de forma significativa el rendimiento de la base de datos, incluso en aquellas consultas que no los activan.
  4. Transacciones: a partir de las últimas versiones ya hay soporte para transacciones, aunque no por defecto (se ha de activar un modo especial).
  5. Integridad referencial: aunque sí que admite la declaración de claves ajenas en la creación tablas, internamente no las trata de forma diferente al resto de campos.
Ejemplo

/*
* PruebaMySQL.java
*
* Programa de prueba para conexión a una base de datos de MySQL.
* Presupone que el servidor de base de datos está arrancado, disponible,
* en el puerto por defecto.
* El usuario y password de conexión con la base de datos debe cambiarse.
* En la base de datos se supone que hay una base de datos llamada prueba y que
* tiene una tabla persona con tres campos, de esta manera:
* mysql> create database prueba;
* mysql> use prueba;
* mysql> create table persona (id smallint auto_increment, nombre varchar(60),
* nacimiento date, primary key(id));
*/
package chuidiang.ejemplos.base_datos;
import java.sql.*;
/**
* Clase de prueba de conexión con una base de datos MySQL
*/
public class PruebaMySQL {
/**
* Crea una instancia de la clase MySQL y realiza todo el código
* de conexión, consulta y muestra de resultados.
*/
public PruebaMySQL()
{
// Se mete todo en un try por los posibles errores de MySQL
try
{
// Se registra el Driver de MySQL
DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()) // Se obtiene una conexión con la base de datos. Hay que
// cambiar el usuario "root" y la clave "la_clave" por las
// adecuadas a la base de datos que estemos usando.
Connection conexion = DriverManager.getConnection (
"jdbc:mysql://localhost/prueba","root", "la_clave");
// Se crea un Statement, para realizar la consulta
Statement s = conexion.createStatement();
// Se realiza la consulta. Los resultados se guardan en el
// ResultSet rs
ResultSet rs = s.executeQuery ("select * from persona");
// Se recorre el ResultSet, mostrando por pantalla los resultados.

while (rs.next())
{
System.out.println (rs.getInt ("Id") + " " + rs.getString (2)+
" " + rs.getDate(3));
}
// Se cierra la conexión con la base de datos.
conexion.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Método principal, instancia una clase PruebaMySQL
*
* @param args the command line arguments
*/
public static void main(String[] args)
{
new PruebaMySQL();
}
}

1 comentario:

Publicar un comentario