Justi 12 de mayo de 2008 a las 13.15
   Imprimir artículo
elWebmaster.com

Taller de PHP: MySql – Creación de tablas


Taller de PHP: MySql - Creación de tablas¡Bienvenidos a otra clase del Taller de PHP! Seguimos con el tema de MySQL. La clase pasada vimos qué era phpMyAdmin; hoy vamos a ver cómo crear las tablas usándolo (esto siempre y cuando ya tengamos la Base de datos creada).

Además veremos cómo crear una tabla en la base de datos, declarando la longitud y los tipos de datos que manejaremos. Por último conoceremos qué son los índices y cómo se relacionan con la tabla creada. ¡Comencemos!

Como primer medida apenas entramos al sistema vamos a ver una pantalla como la siguiente:

Fíjense que a la izquierda (en el sector más oscuro) esta el listado de base de datos y a la derecha hay una serie de información.

Si la base de datos (a partir de ahora la llamaremos db, por data base, base de datos en ingles) ya existe hacemos clic en la misma, caso contrario, escribimos en el formulario de la derecha donde dice crear nueva base de datos o en inglés create new database con el nombre que nosotros queremos y hacemos clic en el botón crear.

Perfecto, en este momento nuestra db no contiene ninguna tabla, para ver como creamos tablas, vamos a crear una tabla que contenga datos de contactos de personas amigas (una agenda).

¿Cómo crear una tabla?

En realidad esta parte es la más fácil de todas, simplemente vamos al formulario donde dice crear nueva tabla en la base de datos e incluimos el nombre que queremos usar, para nuestro caso práctico va a ser agenda, en el siguiente campo del formulario debemos incluir el numero de campos que queremos que contenga nuestra tabla, que va a ser 5.

Se nos abre un nuevo formulario con los 5 campos para completar, en donde dice campo o field dependiendo el idioma en que tengan phpMyAdmin, vamos a poner el nombre que queremos que tengan nuestros campos. En tipo o type vamos a poner el tipo de dato que vamos a usar.

Los más utilizados son varchar, char, int, tinyint, text, datetime, timestamp y enum, jaja, ustedes a esta altura del partido ya me habrán sacado la ficha y sabrán que yo los hago esperar un poquito antes de explicar qué es cada cosa, pero están equivocados, se los voy a explicar ahora mismo.

varchar y char son similares, pero a su vez bastante diferentes, jeje. Siempre que se utilicen estos dos tipos, hay que declarar la longitud de los mismos, si prestan atención al lado de declarar el tipo, tienen que declarar también la longitud. Los char tienen un máximo de 255 caracteres (los varchar también). Por ejemplo si declaramos un char de 30, se añadirán espacios a la derecha hasta la longitud especifica si lo que se incluye es algo menos a estos caracteres. De todas formas cuando se recuperan los datos, estos espacios se borran.

Los varchar también son cadenas de caracteres pero la diferencia es que la longitud es variable. También posee un máximo de 255 caracteres (para las versiones anteriores a MySql 5.0.3 y de 65.535 para las superiores), pero la diferencia principal con los char es que solo se almacenan los caracteres utilizados, si yo declaro un campo con 255 caracteres pero almaceno solo la palabra “Hernán”, no voy a ocupar el resto del espacio.

En los dos casos, si asignan un valor mayor al declarado, la cadena de caracteres se trunca. Y esto me da pie para explicar el Text.

Text es también una cadena de texto pero esta permite almacenar mucha más información incluidos espacios en blanco y saltos de linea. Estos campos son utilizados en general para almacenar información recibida a través de campos de tipo “textarea” (recuerden la clase de formularios).

Los int y tinyint son para almacenar números enteros, el rango con signo del tinyint es de -128 a 127 y sin signo de 0 a 255. Y los “int” son bastante más grandes, con signo van del -2147483648 a 2147483647 y sin signo de 0 a 4294967295.

Entre los tipos de datos de fecha y hora los dos más comunes son datetime y timestamp. La diferencia practicamente esta en la forma en que guarda la información, datatime para el valor 0 la guarda como ‘0000-00-00 00:00:00’ y timestamp como ‘00000000000000’.

La diferencias practicas entre uno u otro es que por ejemplo TIMESTAMP admite fechas entre 1970 y 2037 solamente, a diferencia de DATETIME que admite desde el rango 1001-01-01 00:00:00 al 9999-12-31 23:59:59. Una de las ventajas que puede tener TIMESTAMP es que el campo se puede poner que se actualice al momento de cambiar cualquier otro valor almacenado, es muy común utilizar este tipo para guarda la fecha de modificación de una línea.

Por último me queda explicar enum que también corresponde al tipo de datos de caracteres, como el char y el varchar, la diferencia es que hay que especificar que valores queremos que se puedan utilizar, y solo se va a poder completar el campo con estos valores.

Bueno, ahora que expliqué cada tipo de dato, ya podemos crear nuestra tabla agenda, para ello vamos a crear el primer campo con el nombre idAgenda, este campo va a ser un int ya que va a ser el valor de identificación único de cada línea que agreguemos, y como no sabemos el tamaño que tendrá nuestra agenda, por las dudas le ponemos un largo de 10, o sea, es un campo llamado idAgenda del tipo int(10). Por último, como es el identificador primario y se auto incrementa, vamos a tener que seleccionar en “extra” el valor “auto_increment” y marcar el primer radio button con el iconito con una llave que dice “Primaria” o “Primary”. Esto le indica que es la llave primaria de la tabla, el valor único que nos ayudara a identificar una fila almacenada.

El segundo campo lo llamaremos “nombres” y va a ser un varchar(255). El tercero va a ser para almacenar los números de teléfono. Acá es donde surge la duda. ¿Es un int o es un varchar? Yo elegiría varchar, ya que puede ser que se almacenen números de teléfono con letras, o es posible separar un teléfono en conjunto de dígitos, por ejemplo 4547-6789, en este caso si se hubiese elegido int, no sería un dato válido para la tabla. El cuarto campo vamos a llamarlo “email”, puede ser un varchar(100) y el último un “enum” llamado “grupo”, aquí en el campo “longitud/valores” vamos a incluir los grupos posibles de la siguiente forma: ‘familia’, ‘trabajo’, ‘amigos’.

Finalmente hacemos clic en “save” y listo, ya tenemos nuestra tabla creada.

¿Qué son los índices?

Los índices (Key, o INDEX) son un grupo de datos que MySQL asocia con una o varias columnas de la tabla. Prácticamente son usados para encontrar rápidamente los registros que tengan un determinado valor en alguna de sus columnas. Es como un Índice en un libro, sirve para avisarle por donde comenzar a buscar en lugar de tener que leer a través de toda la tabla para encontrar los registros que estábamos buscando.

Hay cuatro tipo de índices, “primary key” (nuestro campo auto incremental es nuestra primary key, es el identificador de nuestra fila, cuando nos refiramos a la información guardada con idAgenda = 5, estamos buscando la información guardada en la fila donde coincida con el idAgenda), “unique”, “index” y “fulltext”, el unique es para indicarle que no se puede repetir ese valor en toda la tabla, por defecto el primary key ya es un índice unique. El “index” es el índice como lo explique antes y “fulltext” sirve para realizar búsquedas dentro del contenido con cadena de textos básicamente.

Bueno, eso es todo por hoy, a partir de la clase que viene ya vamos a comenzar a hacer consultas sobre nuestra tabla creada, hasta la semana que viene :)

<< CLASE ANTERIOR  

CLASE SIGUIENTE >>


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (19)

  1. Bruno A. Romeo-Isaacs dice:

    Estoy muy agradecido con ustedes, al permitirme aprender estas tecnicas que pondre en practica, una vez considere que estoy debidamente preparado.

  2. Mario S dice:

    Está todo super bueno el curso, de rápida lectura…me gustó
    Sólo tengo un problema…no pude encontrar la forma de ejecutar el phpMyAdmin. Por favor falta, explicitar un poco más este punto…tengo instalado todo pero no se como llegar a la interfaz que muestras en la clase 17

    Agradecido por todo

  3. Justi dice:

    Hola Mario S, si el servidor que tenés corriendo en tu máquina es XAMPP, podes accederlo ingresando en el navegador “http://localhost” y ahí te aparece una pantalla de XAMPP, elegís el idioma que querés y pasas a otra pantallita.

    Ahí vas a tener un listado de opciones a la izquierda, una de esas es phpMyAdmin, haces clic ahí y listo.

  4. Pedro Castañeda dice:

    Como podría conseguir las clases en pdf?. Me acabo de incorporar al curso y voy retrasado.

  5. carlos(valencia) dice:

    hola, quiero aprender a insertar una tabla de comentario para las noticias que voy a poner en mi pagina, es en html.Por eso he encontrado esta pagina y estoy intentando seguir el curso, lo que pasa es que me ha salido un problema, relleno todos los datos que pone en el ejemplo pero cuando le doy a grabar me sale un mensaje de error que pone esto:
    Error
    consulta SQL:

    CREATE TABLE `agenda` (

    `idAgenda` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `nombres` VARCHAR( 255 ) NOT NULL ,
    `telefono` VARCHAR( 50 ) NOT NULL ,
    `email` VARCHAR( 100 ) NOT NULL ,
    `grupo` ENUM( ‘familia’, ‘trabajo’, ‘amigos’ ) NOT NULL
    ) ENGINE = MYISAM

    MySQL ha dicho:

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘familia’,‘trabajo’,‘amigos’) NOT NULL) ENGINE = myisam’ at line 1

  6. Justi dice:

    el problema es que el blog cambia los simbolos, en el enum hay que poner comillas simples (la que es un palito derechito chiquito arriba, es como un apostrofe, no un acento).

  7. David Montellano dice:

    Así es Carlos, tiene razon lo que te dice Justi, porque si trabajaras directamente con el prompt antes de integrarte al php-myadmin te darias cuenta que tan especifico es con cada caracter. Y pues posiblemente podria tambien ser el cierre con ;(punto y coma), no los olvides. Saludos.

  8. oli dice:

    hola: ¿para el tipo text tambien se debe especificar la longitud? o se deja abierto?

  9. Justi dice:

    @oli no hace especifica la longitud para el tipo “text”. Saludos

  10. Juan dice:

    hola, una consulta, estoy comenzando en el mundillo del php, y al encontrar este curso, lo estoy siguiendo, pero ya salto la primer duda: como edito el “extra” para ponerle el valor de AUTO_INCREMENT ??

    muchisimas gracias, y muy bueno el curso!
    JP.

  11. Justi dice:

    @juan hola, eso lo tenes que hacer desde phpMyAdmin, podes ir al campo que queres hacerlo autoincrement y lo editas en forma visual desde la estructura de la tabla. Otra forma de hacerlo es escribiendo la consulta SQL con alter table pero ya es mas complejo.

  12. _Aioria_ dice:

    Hola, quisiera saber cuál sería el script de MySQL para poder buscar palabras clave dentro de una columna tipo “text” por ejemplo sí tengo guardado en esa columna los datos: “misterio, fantasía,ciencia ficción ” y quiero buscar la palabra: “misterio”.

    es eso posible?

    Saludos!!!

  13. Daniela dice:

    @_Aioria_: La sentencia SQL para buscar una palabra arbitraria dentro de un campo es algo como SELECT * FROM tabla WHERE campo LIKE “%misterio%”. No olvides indexar la columna.

  14. _Aioria_ dice:

    muchas gracias por la repuesta Daniela!!!

  15. jULIO dice:

    Muy bueno este contenido…!! eficiente y eficaz….agradesido hermano…!!!

  16. Luis dice:

    Hola a todos los de la comunidad que estan siguiendo este curso, la verdad que lo veo super interesante y lo seguire desde el principio ya que tengo que programar un proyecto en la escuela sobre una ferreteria.Graciaspor ayudara lo que nos estamos iniciando en PHP,¡¡¡BENDICIONES A TODOS!!!.

  17. lucila dice:

    Buenas estoy empezando mi proyecto fin de carrera, tengo que crear una base de datos con mysql a la que pueda acceder desde una web, para lo que he instalado el xampp y ahora no se que debo hacer para crear la base de datos. Por favor alguien me puede orientar?

  18. MARTHA ROJERO dice:

    TENGO DUDA CON LO DE LOS INDICES PRIMARIOS Y LOS INDICES UNICOS

  19. Lynet dice:

    Hola quisiera saber sobre los atributos por favor, puede aclarar ese punto :(

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder