| Empezando con bases de datos |
Conexión con el servidor de bases de datos
Antes de empezar a trabajar con bases de datos debes cerciorarte de que tanto tu servidor Apache como tu WinMySQLAdmin están conectados.Crear una base de datos
La creación de una base de datos requiere tener previamente establecida una conexión con el servidor y utiliza la siguiente sintaxis:Borrar una base de datos
Para borrar una base de datos se requiere la siguiente función PHP:Lista de bases de datos existentes
A la hora de crear y/o borrar bases de datos resulta conveniente y útil conocer su preexistencia.Depurando los procesos de creación y borrado de bases de datos
Cuando intentábamos crear una base de datos ya existente o borrar una inexistente las funciones mysql_create_db y mysql_drop_db nos devolvían FALSE pero esa respuesta no nos dice la causa por la que no ha sido posible la ejecución de la instrucción.Ver código fuente
Habrás observado que en algunos de los enlaces anteriores se puede visualizar el código fuente del script en vez de ejecutar el ejemplo.Tipos de campos MySQL
Antes de continuar con el manejo de tablas es necesario conocer los diferentes tipos de campos que soportan las tablas de MySQL. Aquí a la derecha los tienes... :)
Tipos del campos en MySQL
Campos numéricos
MySQL soporta los tipos numéricos exactos(INTEGER, NUMERIC, DECIMAL, y SMALLINT) y los tipos numéricos aproximados (FLOAT, DOUBLE precision y REAL).| TINYINT [(M)] [UNSIGNED] [ZEROFILL] | |
| Número entero muy pequeño. Con la opción UNSIGNED puede tomar valores entre 0 y 255. En caso contrario, puede estar comprendido entre -128 y 127. Si el parámetro ZEROFILL solo tiene sentido junto con la opción UNSIGNED ya que no tiene ningún sentido tratar de rellenar con ceros a la izquierda de un número negativo. El valor por defecto de parámetro M (número de cifras) es 4 sin no está activada la opción UNSIGNED. Si esta opción estuviera activada el valor por defecto sería M=3. Para valores de M >valor por defecto reajusta el tamaño al valor por defecto. Si se asigna a M un valor menor que cuatro limita el número de carácteres al tamaño especificado considerando el signo solo en los números negativos. Por ejemplo, si M=3 admitiría 148 pero si intentamos insertar -148 recortaría por la izquierda y solo insertaría -14. Si intentamos insertar un valor fuera de rango registraría el valor dentro del rango más próximo a él. P. ej.: Si tratamos de insertar el valor 437 escribiría 127 ó 255, este último en el caso de tener la opción UNSIGNED. Si pretendiéramos insertar -837 con la opción UNSIGNED escribiría 0 y sin ella pondría -128. El tamaño de un campo TINYINT es de 1 byte. | |
| SMALLINT [(M)] [UNSIGNED] [ZEROFILL] | |
| Número entero pequeño. Con la opción UNSIGNED puede tomar valores entre 0 y 65 535. En caso contrario, puede estar comprendido entre -32 768 y 32 767. Son válidos los comentarios hechos para TINYINT excepto los relativos a los valores por defecto de M que en este caso serían 6 ó 5. Su tamaño es de 2 bytes. | |
| MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL] | |
| Número entero mediano. Con la opción UNSIGNED puede tomar valores entre 0 y 16 777 215. En caso contrario, puede estar comprendido entre -8 388 608 y 8 388 607. También son válidos los comentarios hechos para TINYINT excepto los relativos al valor por defecto de M que en este caso serían 8. Su tamaño es de 3 bytes. | |
| INT [(M)] [UNSIGNED] [ZEROFILL] | |
| Número entero. Con la opción UNSIGNED puede tomar valores entre 0 y 4 294 967 295. En caso contrario, puede estar comprendido entre -2 147 483 648 y 2 147 483 647. Son válidos todos los comentarios de los casos anteriores. Su tamaño es de 4 bytes. | |
| INTEGER [(M)] [UNSIGNED] [ZEROFILL] | |
| Es un sinónimo de INT | |
| BIGINT [(M)] [UNSIGNED] [ZEROFILL] | |
| Número entero grandes. Con la opción UNSIGNED puede tomar valores entre 0 y 18 446 744 073 709 551 615. En caso contrario, puede estar comprendido entre -9 223 372 036 854 775 808 y 21 474 839 223 372 036 854 775 807 647, pero al usarlo desde PHP estará sujeto a las limitaciones máximas de los valores numéricos de este. Son válidos todos los comentarios de los casos anteriores. Su tamaño es de 8 bytes. |
Números de coma flotante
Por la estructura binaria de los microprocesadores y habida cuenta de que algunos números no enteros -sin ir más lejos, el 0.1- requerirían infinitos caracteres binarios para su representación exacta, se hace necesario introducir un redondeo en su tratamiento informático y como consecuencia de ello asumir que se generan errores de medida.| FLOAT(x) [ZEROFILL] | |
| Número de coma flotante. Ignora la opción UNSIGNED pero si acepta ZEROFILL por lo que debe prestarse atención a estas opciones ya que no sería demasiado habitual una presentación como esta: 000-3.47 El valor de x especifica la precisión. Si x<=24 será de precisión simple. cuando 24 <x <=53 lo convertirá automáticamente a doble precisión. Cuando no se especifica el valor de x considera el campo como de precisión simple. Su tamaño es de 4 bytes si x<=24 y de 8 bytes cuando 24 <x <=53 | |
| FLOAT [(M,D)] [ZEROFILL] | |
| Número de coma flotante de precisión simple. Son válidos los comentarios relativos a las opciones UNSIGNED y ZEROFILL del caso anterior. Toma valores en los interavalos siguientes:
FLOAT sin argumentos, representa un número de coma flotante y precisión simple. | |
| DOUBLE [(M,D)] [ZEROFILL] | |
| Número de coma flotante de doble precisión. Siguen siendo válidos los comentarios relativos a las opciones UNSIGNED y ZEROFILL del caso anterior. Toma valores en los interavalos siguientes:
FLOAT sin argumentos, representa un número de coma flotante y precisión doble. | |
| REAL [(M,D)] [ZEROFILL] | |
| Es sinónimo de DOUBLE. | |
| DECIMAL [(M[,D])] [ZEROFILL] | |
| Es un número de coma flotante y doble precisión que se almacena como un campo de tipo CHAR. El valor es guardado como una cadena donde cada carácter representa una cifra. La coma y el signo menos de los números negativos no son tenidos en cuenta en el valor de M -anchura máxima de visualización- aunque si se reserva -automaticamente- espacio para ellos en campo. Si D vale 0 no tendrá parte decimal. Los números toman valores en el mismo intervalo especificado para DOUBLE. Los valores por defecto de M y D son respectivamente 10 y 0. Ocupan M+2 bytes si D > 0; M+1 bytes si D = 0 ó D+2 bytes si M < D | |
| NUMERIC(M,D) [ZEROFILL] | |
| Se comporta de forma idéntica a DECIMAL |
Campos de fecha
MySQL dispone de campos específicos para el almacenamiento de fechas. Son los siguientes:| DATE | |
| Recoge una fecha dentro del intervalo 01-01-1000 a 31-12-9999. MySQL guarda los valores DATE con formato AAAA-MM-DD (año-mes-dia) . Su tamaño es de 3 bytes. | |
| DATETIME | |
| Recoge una combinación de fecha y hora dentro del intervalo 00:00:00 del día 01-01-1000 y las23:59:59 del día 31-12-9999. MySQL guarda los valores DATETIME con formato AAAA-MM-DD HH:MM:SS (año-mes-dia hora:minutos:segundos) . Su tamaño es de 8 bytes. | |
| TIME | |
| Recoge una hora dentro del intervalo -838:59:59 a 838:59:59. MySQL guarda los valores TIME con formato HH:MM:SS (horas:minutos:segundos) . Su tamaño es de 3 bytes. | |
| YEAR ó YEAR(2) ó YEAR(4) | |
| Recoge un año en formato de cuatro cifras (YEAR ó YEAR(4)) o en formato de dos cifras (YEAR(2))dentro del intervalo 1901 a 2155 en el caso de cuatro cifras ó de 1970 a 2069 si se trata de dos cifras. Su tamaño es de 1 byte. | |
| TIMESTAMP [(M)] | |
| Recoge un tiempo UNIX. El intervalo válido va desde 01-01-1970 00:00:00 a cualquier fecha del año 2037. El parámetro M puede tomar los valores: 14 (valor por defecto), 12, 8, o 6 que se corresponden con los formatos AAAAMMDDHHMMSS, AAMMDDHHMMSS, AAAAMMDD, ou AAMMDD. Si se le asigna la opción NUL guardará la hora actual. Cuando se asigna 8 ó 14 como parámetros es considerado como un número y para las demás opciones como una cadena. Independientemente del valor del parámetro, un campo TIMESTAMP siempre ocupa 4 bytes. | |
Campos tipo cadena de caracteres
| CHAR (M) [BINARY] | |||||||
| Es una cadena de tamaño fijo que se completa a la derecha por espacios si es necesario. El parámetro M puede valer de 1 a 255 caracteres. Los espacios finales son suprimidos cuando la cadena es insertada en el registro. Los valores de tipo CHAR son elegidos y comparados sin tener en cuenta Mayúsculas / Minúsculas y utilizan el juego de carácteres por defecto. Se puede utilizar el operador BINARY para hacer la cadena sensible a Mayúsculas / Minúsculas. Se puede utilizar un campo tipo CHAR(0) con el atributo NULL para almacenar una valor booleano. En este caso ocupará un solo byte y podrá tener únicamente dos valores: NUL ó "". Su tamaño es de M bytes siendo 1 <= M <= 255 . | |||||||
| VARCHAR(M) [BINARY] | |||||||
| Es una cadena de caracteres de longitud variable. Su tamaño máximo -especificado en el parámetro M- puede estar comprendido entre 1 y 255 caracteres. Con la opción BINARY es capaz de discriminar entre Mayúsculas / minúsculas. | |||||||
| TINYBLOB o TINYTEXT | |||||||
| TINYBLOB y TINYTEXT son cadenas de caracteres de longitud variable con un tamaño máximo de 255 (28 - 1) caracteres. La diferencia entre ambas es que TINYBLOB si discrimina entre Mayúsculas / minúsculas, mientras que TINYTEXT no lo hace. Ninguno de los campos: BLOB y TEXT admite valores por DEFECTO Las versiones de MySQL anteriores a 3.23.2 permiten utilizar estos campos para indexar. Si se intenta guardar en un campo de este tipo una cadena de mayor longitud que la especificada solamente se guardarán los M primeros caracteres de la cadena. | |||||||
| BLOB o TEXT | |||||||
| BLOB y TEXT son cadenas de caracteres de longitud variable con un tamaño máximo de 65535 (216 - 1) caracteres. La diferencia entre ambas es que BLOB si discrimina entre Mayúsculas / minúsculas, mientras que TEXT no lo hace. Ninguno de los campos: BLOB y TEXT admite valores por DEFECTO | |||||||
| MEDIUMBLOB o MEDIUMTEXT | |||||||
| MEDIUMBLOB y MEDIUMTEXT son cadenas de caracteres de longitud variable con un longitud máxima de 16.777.215 (224 - 1) caracteres. Son válidas las especificaciones hechas en el apartado anterior. El tamaño máximo de los campos de este tipo está sujeto a limitaciones externas tales como la memoria disponible y el tamaño del buffer de comunicación servidor/cliente. | |||||||
| LONGBLOB o LONGTEXT | |||||||
| Su única diferencia con la anterior es el tamaño máximo de la cadena que en este caso es 4.294.967.295 (232 - 1) caracteres. | |||||||
| ENUM('valor1','valor2',...) | |||||||
| Es una cadena de caracteres que contiene uno solo de los valores de la lista (valor1, valor2, etc. etc.). A la hora de insertar un nuevo registro en una tabla, el valor a especificar para un campo de este tipo ha de ser una cadena que contenga uno de los valores especificados en la tabla. Si se tratara de insertar un valor distinto de ellos insertaría una cadena vacía. | |||||||
| SET('valor1','valor2','valor3'...) | |||||||
| Es una cadena de caracteres formados por la unión de ninguno, uno varios de los valores de una lista. El máximo de elementos es 64. Los valores que deben escribirse en los registros de la tabla que contiene este campo serían de este tipo han de ser númericos expresados en forma binaria o en forma decimal. En el supuesto de que contuviera tres valores los posibles valores a insertar en un campo de este tipo a la hora de añadir un registro serían los siguientes.
| |||||||