martes, 21 de septiembre de 2010

Practicando SQL (Parte 1)

Te encuentras en la primer parte de la serie "Practicando SQL":
  1. Configurando ambiente de trabajo y consultas básicas
  2. Consultas con más de una tabla
  3. Consultas con agrupados
  4. Consultas anidadas
Este es el inicio de una serie de posts para practicar SQL. Primero, vamos a configurar todo el ambiente que usaremos, utilizaremos MySQL como nuestro manejador de bases de datos (BD). Pueden descargarlo de la siguiente liga:

http://www.mysql.com/downloads/mysql/

La instalación es bastante sencilla, con la versión MSI Installer Essentials es suficiente para los ejercicios de este tutorial. Al final de la instalación ofrece la opción de configurar el servidor, durante la configuración también puedes dejar todos los valores por default, lo mínimo que tienes que configurar es el password para el servidor.

Podríamos crear nuestras propias tablas e insertar nuestros datos, pero eso nos puede consumir tiempo y es muy aburrido. Es más práctico si usamos una BD existente, como la que pueden encontrar en:

http://downloads.mysql.com/docs/sakila-db.zip

Esta BD tiene alrededor de 15 tablas, por ejemplo: film, actor, categoría, tienda, inventario, cliente. En la siguiente liga, puedes ver el diagrama entidad-relación:

http://forge.mysql.com/w/images/2/23/SakilaSampleDB-0.8.png

Para crear la BD en nuestra instalación:
  1. Inicia la línea de comandos de MySQL, la puedes encontrar en Inicio de Windows> Todos los Programas> MySQL> MySQL Sever 5.1> MySQL Command Line Client. Te pedirá el password que proporcionaste durante la configuración. Y después aparecerá el cursor:
    mysql>
  2. Extrae los archivos de sakila-db.zip, y en la línea de comandos, ejecuta los siguientes dos scripts (nota: en widows usar / para separar directorios), por ejemplo:
    mysql> SOURCE d:/sql/sakila-db/sakila-schema.sql
    mysql> SOURCE d:/sql/sakila-db/sakila-data.sql
  3. Veamos si la instalación correcta, selecciona la BD con:
    mysql> USE sakila
  4. Y veamos que campos contiene la tabla film:
    mysql> describe film;



Nota: las instrucciones terminan con un punto y coma (;). Si por alguna razón olvidas el punto y coma, el cursor continuará en la siguiente línea, ahí puedes poner el punto y coma y volver a dar enter para ejecutar la instrucción.

El comando describe es de gran ayuda para ir conociendo las tablas de esta BD.

Bueno, en este punto ya tenemos configurado nuestro ambiente y ahora podemos a empezar con la parte divertida. Cuando escuchamos BD, una de las primeras tareas que nos vienen a la mente es el realizar consultas a la BD. En SQL, el comando para realizar consultas es SELECT. Veamos una serie de ejemplos.

Mostrar toda la información de la tabla film (despliega 1000 films):
SELECT * FROM film;

Mostrar sólo el título y el rating de todos los films
SELECT title, rating FROM film;

Mostrar sólo los films con rating R
SELECT title, rating FROM film WHERE rating="R";

Siguiente post...
En el siguiente post, veremos algunas consultas más elaboradas. Por el momento dejo una idea de consulta para ir practicando:

Mostrar sólo los films con rating R que duren entre 90 y 120 minutos inclusive.

9 comentarios:

  1. EXCELENTE POST MARY MMM AUN NO TOMO BASE DE DATOS PERO TAL VEZ ME SIRVA PARA PRACTICAR.

    BUEN FIN DE SEMANA.

    ResponderEliminar
  2. Hey Toño...
    q tal?
    buen post...
    solo q me trabé demasiado...
    estoy con ubuntu y mysql es de los repositorios de ubuntu, es decir q lo puedo bajar desde terminal, y según esto lo instalé y quedó pro me manda un error al qererlo ejecutar:
    "ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)"
    no se si sepas algo al respecto...
    para poder seguir con la práctica...
    salu2...

    ResponderEliminar
  3. Hola Chava,

    Instalé MySQL con el siguiente comando:

    sudo apt-get install mysql-server

    Y luego me conecté al servidor usando (pide la contraseña):

    mysql -h localhost -u root -p

    Ahora, cuando reinicié la computadora y me quizé conectar con el comando anterior me salió el mismo error que mencionas. Esto es porque el servidor de MySQL por default no está configurado para reiniciar. Este es el comando para iniciarlo manualmente:

    sudo start mysql

    Y ya me pude conectar y cargar la BD sakila. Me avisas si esto soluciona el problema.

    Saludos,
    Toño.

    ResponderEliminar
  4. Hola Toño...
    XD
    Despues de investigar un poco al fin me pude conectar a mi server...
    XD
    lo que pasa es que olvide mi contraseña y hasta hoy la logre cambiar...
    XD
    ahora si...
    a darle duro al mysql...
    :)

    ResponderEliminar
  5. ah canijo...
    si no es tan dificil...
    :)
    gracias...
    salu2...
    :)

    ResponderEliminar
  6. Hola me gustaria saber como puedo mostrar el numero de peliculas de los actores 'jon', 'Lisa' y 'william'. en una sola tabla por fas me urge
    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola, en la parte 3 de esta serie (Consultas con Agrupados) presentamos esa consulta, falta agregarle una cláusula where para los 3 actores que mencionas. Saludos.

      Eliminar
  7. Antonio sos un grosooooooo !! gracias por la información

    ResponderEliminar