Anuncios

Hola, sean bienvenidos a mi nuevo post. Hoy vamos a preparar nuestro entorno para trabajar con nuestra base de datos creada en el post anterior, tambien vamos a crear unas tablas nuevas, les vamos a cargar informacion y terminaremos haciendo algunas consultas. Con estas tablas trabajaremos en el futuro para ver los proximos comandos de MySQL.

Anuncios

Pongamos manos a la obra, pasemos a crear una tabla de alumnos donde guardaremos los datos personales de cada uno de ellos, otra con sus notas, y finalmente crearemos una tabla la cual identificara que tipo de examen es el de la nota y su fecha. Obviamente esto es para nuestras primeras practicas despues haremos mas bases para consultas mas complejas, comencemos primero creando una tabla llamada alumnos con nuestro cliente de mysql:

MariaDB [tutorial]> CREATE TABLE alumnos
    -> (
    -> id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> nombre varchar(20) NOT NULL,
    -> apellido varchar(20) NOT NULL,
    -> sexo ENUM('F','M') NOT NULL,
    -> edad int(2) NOT NULL,
    -> ciudad varchar(40) NULL,
    -> pcia varchar(4) NULL
    -> );
Query OK, 0 rows affected (0.127 sec)

MariaDB [tutorial]>
Anuncios

Ahora pasemos a la siguiente tabla la llamaremos examenes, la que identifica el tipo de examen y la fecha:

MariaDB [tutorial]> CREATE TABLE examenes
    -> (
    -> id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> fecha DATE NOT NULL,
    -> tipo varchar(1) NOT NULL
    -> );
Query OK, 0 rows affected (0.036 sec)

MariaDB [tutorial]>
Anuncios

Y por ultimo vamos a crear la tabla llamada notas, para las notas de cada examen para cada alumno:

MariaDB [tutorial]> create table notas
    ->  (
    ->  alumno_id int(20) NOT NULL,
    ->  examen_id int(20) NOT NULL,
    ->  nota int(2) NOT NULL
    ->  );
Query OK, 0 rows affected (0.139 sec)

MariaDB [tutorial]>
Anuncios

Observen que el comando de creacion de tabla lo ejecute en minuscula esta vez, esto es solo para demostracion de su correcto funcionamiento como los anteriores pero con otros comandos mas adelante si van a tener que respetar lo de mayusculas y minusculas, en la primera tabla vamos a almacenar todos los datos de cada uno de los alumnos y a su vez le vamos a asignar un id (identificador) ante la eventualidad de que tengamos varias personas con el mismo nombre y apellido y asi poder diferenciarlas, tambien esta va a ser nuestra PRIMARY KEY, esto va a significar que es unica e irrepetible por otro lado este valor en este ejemplo se auto incrementara con respecto al ultimo ingresado, es decir al estar vacio tomara el valor uno, si ya existe uno tomara el valor dos y asi sucesivamente, el resto de los datos son los basicos de una persona. Pasemos a la segunda tabla, en esta tambien utilizaremos un id para cada fecha de examen, este tambien se incrementara automaticamente y aca almacenaremos la fecha y que tipo de examen (Prueba o Examen) y por ultimo, la tercer tabla se va a encargar de vincular el id del alumno con el id del examen y su respectiva nota, vean que hay dos campos, uno identificado como alumno_id y otro como examen_id, estos van a tener los valores de id de las tablas de alumnos y examenes respectivamente, ahora procedamos a completar las tablas para finalmente hacer una prueba de consulta (o como se llama habitualmente Query), vamos a llenar la tabla de alumnos:

MariaDB [tutorial]> insert into alumnos values
    ->  (NULL,'Juan','Perez','M','29','Buenos Aires','BA'),
    ->  (NULL,'Marta','Gargaglione','F','36','Quilmes','BA'),
    ->  (NULL,'Martin','Miranda','M','28','Castelar','BA'),
    ->  (NULL,'Griselda','Contreras','F','31','Rosario','SF'),
    ->  (NULL,'Roberto','Lopez','M','32','Cordoba','CB'),
    ->  (NULL,'Valeria','Suarez','F','33','San Luis','SL');
Query OK, 6 rows affected (0.110 sec)
Records: 6  Duplicates: 0  Warnings: 0

MariaDB [tutorial]>
Anuncios

Estos nombres son de ejemplo, ustedes pueden usar cualquiera no tienen que ser exactamente los mismos, vean el primer campo (id) es NULL, esto cuando lo informamos asi es para que la tabla tome el ultimo valor de id lo incremente y se lo asigne a la linea a cargarse. Si todo sale bien, queda algo asi:

MariaDB [tutorial]> select * from alumnos;
+----+----------+-------------+------+------+--------------+------+
| id | nombre   | apellido    | sexo | edad | ciudad       | pcia |
+----+----------+-------------+------+------+--------------+------+
|  1 | Juan     | Perez       | M    |   29 | Buenos Aires | BA   |
|  2 | Marta    | Gargaglione | F    |   36 | Quilmes      | BA   |
|  3 | Martin   | Miranda     | M    |   28 | Castelar     | BA   |
|  4 | Griselda | Contreras   | F    |   31 | Rosario      | SF   |
|  5 | Roberto  | Lopez       | M    |   32 | Cordoba      | CB   |
|  6 | Valeria  | Suarez      | F    |   33 | San Luis     | SL   |
+----+----------+-------------+------+------+--------------+------+
6 rows in set (0.000 sec)

MariaDB [tutorial]>
Anuncios

Ahora pasemos a introducir informacion en la tabla de examenes:

MariaDB [tutorial]> insert into examenes values
    ->  (NULL, '2017-04-15', 'P'),
    ->  (NULL, '2017-04-22', 'P'),
    ->  (NULL, '2017-04-29', 'E'),
    ->  (NULL, '2017-05-22', 'P'),
    ->  (NULL, '2017-05-29', 'P'),
    ->  (NULL, '2017-06-05', 'E');
Query OK, 6 rows affected (0.122 sec)
Records: 6  Duplicates: 0  Warnings: 0

MariaDB [tutorial]>
Anuncios

Como vemos de nuevo dejamos la primer columna como NULL, porque esta es unica e irrepetible y tambien tiene la opcion de auto incrementarse como vimos en el caso anterior, despues va a almacenar la fecha del examen, no se si explique el formato para SQL el formato de las fechas siempre es AAAA-MM-DD (Año-Mes-Dia) esto es asi por convencion por ende si deben cargar fechas lo deben hacer con el formato que se ve en el ejemplo y que tipo de examen (Prueba o Examen).

Pasemos a confeccionar la ultima tabla:

MariaDB [tutorial]> insert into notas values
    ->  (1,1,5),
    ->  (2,1,6),
    ->  (3,1,6),
    ->  (4,1,3),
    ->  (5,1,4),
    ->  (6,1,7),
    ->  (1,2,6),
    ->  (2,2,7),
    ->  (3,2,7),
    ->  (4,2,6),
    ->  (5,2,4),
    ->  (6,2,7),
    ->  (1,3,9),
    ->  (2,3,5),
    ->  (3,3,6),
    ->  (4,3,1),
    ->  (5,3,2),
    ->  (6,3,7),
    ->  (1,4,7),
    ->  (2,4,8),
    ->  (3,4,5),
    ->  (4,4,10),
    ->  (5,4,9),
    ->  (6,4,10),
    ->  (1,5,7),
    ->  (2,5,7),
    ->  (3,5,4),
    ->  (4,5,6),
    ->  (5,5,7),
    ->  (6,5,8),
    ->  (1,6,5),
    ->  (2,6,8),
    ->  (3,6,10),
    ->  (4,6,5),
    ->  (5,6,6),
    ->  (6,6,7);
Query OK, 36 rows affected (0.099 sec)
Records: 36  Duplicates: 0  Warnings: 0

MariaDB [tutorial]>
Anuncios

Aca en el primer campo vamos a poner el id de alumno, en el segundo campo el id de examen y en el ultimo campo la nota del alumno. Se puede ver que podemos repetir los valores en los campos ya que no definimos ninguna PRIMARY KEY, por esto le decimos a la tabla que ningun valor es unico e irrepetible, permitiendonos poder repetir los valores de los tres campos. Ya con todo esto podriamos hacer una consulta donde queremos saber el listado de los alumnos que tomaron el examen del 22-04-2017, que nos informe el nombre, apellido, edad, sexo, la fecha del examen, la nota y el tipo de examen:

select alumnos.nombre, alumnos.apellido, alumnos.edad, alumnos.sexo, examenes.fecha, notas.nota, examenes.tipo
from alumnos, examenes, notas
where examenes.fecha = '2017-04-22'
and examenes.id=notas.examen_id
and notas.alumno_id=alumnos.id;
Anuncios

Primero seleccionamos los campos de cada una de las tablas con la informacion que necesitamos obtener, luego le informamos de cuales tablas vamos a obtener la informacion y por ultimo creamos las condiciones para que estructure el listado, en este caso le decimos que la fecha de la tabla examenes tiene que ser igual a ‘2017-04-22’, y despues le agregamos dos condicionales AND primero para ejecutar si el valor de id en la tabla de examenes es igual al valor de examen_id en la tabla de notas y por ultimo otro AND para verificar si el alumno_id de la tabla notas sea igual al id de la tabla alumnos. Esto nos devolvera un resultado como este:

+----------+-------------+------+------+------------+------+------+
| nombre   | apellido    | edad | sexo | fecha      | nota | tipo |
+----------+-------------+------+------+------------+------+------+
| Juan     | Perez       |   29 | M    | 2017-04-22 |    6 | P    |
| Marta    | Gargaglione |   36 | F    | 2017-04-22 |    7 | P    |
| Martin   | Miranda     |   28 | M    | 2017-04-22 |    7 | P    |
| Griselda | Contreras   |   31 | F    | 2017-04-22 |    6 | P    |
| Roberto  | Lopez       |   32 | M    | 2017-04-22 |    4 | P    |
| Valeria  | Suarez      |   33 | F    | 2017-04-22 |    7 | P    |
+----------+-------------+------+------+------------+------+------+
Anuncios

En resumen, hoy hemos creado nuestras primeras tablas en nuestra base, hemos ingresado informacion en cada una de ellas, hemos obtenido informacion y hemos hecho una consulta donde pudimos obtener informacion de las tres tablas y vincularlas a cada “estudiante”, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00