ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

BASE DE DATOS


Enviado por   •  5 de Septiembre de 2014  •  2.656 Palabras (11 Páginas)  •  258 Visitas

Página 1 de 11

3. Tipos de campos de una base de datos

Tipos de campos en MySQL

¿Creías que íbamos a empezar a crear la base de datos? Pues lo siento, aún no toca, jeje, nos queda algo muy importante, que es los tipos de campos en los que vamos a almacenar los datos. Os dejo puestos todos los tipos, divididos en tres clases: numéricos, fechas y texto. Todos no son importantes, nosotros utilizaremos sobre todo Datetime, text, int y varchar, por lo que si quereis mirar esos cuatro y pasad al siguiente capítulo os dejo, jeje, o miradlos todos a modo informativo.

Campos numéricos

Vamos a ir mencionando los nombres de los distintos campos numéricos y a explicar cómo son:

1. Bit y Bool: un número de 1 bit, es decir, o un 0 o un 1, sólo puede tomar ambos valores.

2. Tinyint: número entero que si le ponemos signo estará entre -128 y 127, y sin signo entre 0 y 255 (para los más entendidos, un número de 8 bites, o de un byte). No podemos poner un número fuera de ese rango o dará error.

3. SmallInt: número comprendido entre -32768 y 32767, o sin signo entre 0 y 65535 (número de 16 bits/2 bytes).

4. MediumInt: comprendido entre -8388608 y 8388607, o sin signo entre 0 y 16777215 (24 bites/3 bytes).

5. Int (o integer): número entre -2147483648 y 2147483647, o sin signo entre 0 y 4294967295 (32 bites/4 bytes).

6. BigInt: número entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807, o sin signo entre 0 y 18.446.744.073.709.551.615 (64 bites/8 bytes).

7. Float: número decimal en punto flotante de precisión simple. Los valores válidos van desde -3.402823466x10^38 a -1.175494351x10^-38, o desde 1.175494351x10^-38 a 3.402823466x10^38 (decimales en punto flotante de 4 bytes).

8.

9. Double: número decimal en punto flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157x10^308 a -2.2250738585072014x10^-308, o desde 2.2250738585072014x10^-308 a 1.7976931348623157x10^308 (decimales en punto flotante de 8 bytes).

10. Decimal: yo os aconsejo este para almacenar número decimales. hay que indicarle dos valores separados por una coma llamémosles "M,D". Este tipo de campo es el más preciso, M sería la presición o el número de dígitos totales, y D el número de dígitos decimales que tendrá.

Fechas

Pasamos a los tipos de campo que más trabajo me dieron en su momento, jeje:

1. Date: el formato en que lo guarda es año-mes-día, y guarda desde el año 1001 al 9999.

2. DateTime: el formato es año-mes-día hora:minuto:segundo, y guarda desde el año 1001 al 9999.

3. TimeStamp: en este caso el formato lo elijes tu en función del tamaño de caracteres que le pongas al campo. Sólo llega entre 1970 y 2037. Según el tamaño de caracteres quedará de la siguiente forma:

Tamaño Formato

14 aaaammddhhmmss

12 aammddhhmmss

8 aaaammdd

6 aammdd

4 aamm

2 aa

4. Time: el formato es hora:minuto:segundo, con un rango desde -838 horas a 838 horas.

5. Year: guarda solo un año de entre 1901 y 2155, que puede tener sólo dos cifras o las cuatro, dependiendo del tamaño de caracteres que le pongamos.

Campos de texto

1. Char: es una cantidad fija de caracteres (los que le digamos, si le decimos 5 siempre tendrás que guardar 5 caracteres). El máximo que le podemos indicar es 255.

2. VarChar: cantidad finita de caracteres con un máximo de 255, aunque podemos indicarle que este máximo sea menor.

3. TinyText y TinyBlob: Texto con una longitud máximo de 255 caracteres.

4. Blob y Text: texto con un máximo de 65535 caracteres. Text es también muy usado, aunque no tanto como varchar.

5. MediumBlob y MediumText: texto con un máximo de 16.777.215 caracteres.

6. LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación os paquetes puleden tener un máximoo puede ocupar más de 16 Mb.

7. Enum: campo que puede tener un único valor de una lista que se especifica.

8. Set: un campo que puede contener ninguno, uno ó varios valores de una lista.

La diferencia entre char y varchar es que char ocupa siempre el mismo espacio llenemos la cantidad fija de caracteres o no, y varchar ocupa lo que llenemos, por lo que es preferible usar varchar que char. A Enum y Set se le indican los valores entrecomillados con comilla simple y separador por comas, de la siguiente forma: 'value1','value2',...

Y ya que estareis ansiosos, en el siguiente capítulo comenzaremos a hacer nuestra base de datos con lo aprendido y lo que nos queda por aprender.

AUTOINCREMENTO:

mysql> show databases;

mysql> use MYSQL;

mysql> create table stud(id bigint not null unique auto_increment, name char(20));

(debe de salirte esta informacion o a mi me salio esto: Query OK, 0 rows affected (0.03 sec))

mysql> insert into stud(name) values ('rodolfo'),('dielman'),('Divlain'),

('Rosemberg'),('Dexter');

Estos les puse yo de nombres, tu cambialos por los de tu familia jajajaja.

A mi me salió esta información por defaul

Query OK, 5 rows affected (0.05 sec)

Records: 5 Duplicates: 0 Warnings: 0

Luego escribe:

mysql> select * from stud;

para que te muestre la tabla

CLAVE PRIMARIA

Mysql> show databases;

(muestra la base de datos)

Mysql> use mysql;

Mysql> create table usuarios (

-> Nombre varchar <20>,

-> clave varchar <10>,

-> primary key <nombre>);

Mysql> describe usuarios;

Te mostrara una tabla con los siguientes datos

Field Type Null Key Default Extra

Mysql> insert into usuarios <nombre, claves>

->Values <’Dielman’, ‘cosi’>;

“Si esta bien te mostrara un mensaje de Query Ok que significa buena consultao algo asi jjjejejejej.

Vuelves a escribir otro enunciado igual, con otro nombre y otra clave”

Mysql> insert into usuarios <nombre, claves>

->Values <’besy’, ‘ballinas’>;

Te volverá a mostrar el mismo mensaje Query ok

Y asi introduciras tres o cuatro nombres y usuarios

Si quieres saber para que sirve la clave primaria repite el enunciado tratando de capturar tu nombre con otra clave, te mostrara un error que te dice que estas duplicando nombre te aparece “Duplicate entry ‘dielman’ For key ‘PRIMARY’.

Ahora para ver la tabla que capturaste te vas a

Mysql> select *from usuarios;

Aki te muestra los nombres con las claves que publicastes.

Y eso es todo el programita de clave primaria.

CAMPO DE TIPO BLOB

Manejo de datos BLOB con PHP y MySQL

Autor: MySQL Hispano

1 . Creando la base de datos

2 . Agregando archivos a la base de datos

3 . Listando los archivos de la base de datos

4 . Descargando archivos de la base de datos

5 . Comentarios finales

Cedido por MySQL Hispano.

Sin duda alguna, una de las preguntas más frecuentes en relación a MySQL es, "¿Cómo puedo almacenar archivos en una base de datos?". La respuesta es, se tienen que usar los tipos de datos BLOB. Estos BLOBs (Binary Large Objects) pueden almacenar prácticamente cualquier tipo de datos, incluyendo documentos de MS Word, imagenes gif/jpeg, archivos PDF, MP3s, etc.

En este artículo vamos a mostrar como crear un repositorio de archivos binarios usando PHP y MySQL para poder almacenar diferentes tipos de archivos. Veremos como almacenar cada uno de los archivos en una base de datos, para posteriormente recuperarlos.

Para probar los ejemplos en este artículo, es necesario tener acceso a un servidor con soporte para PHP, además de contar con un servidor MySQL. Se asume que se cuentan con los privilegios apropiados para crear la base de datos, y que MySQL está corriendo en el mismo servidor que PHP.

Creando la base de datos

Nuestro repositorio de documentos usará una base de datos que contenga únicamente una tabla para almacenar dichos documentos.

[eduardo@casita]$ mysqladmin create repositorio

[eduardo@casita]$

[eduardo@casita]$ mysql repositorio

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 139 to server version: 3.23.41

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE TABLE archivos(

-> id int not null auto_increment primary key,

-> nombre varchar(50),

-> titulo varchar(50),

-> contenido mediumblob,

-> tipo varchar(50));

Query OK, 0 rows affected (0.01 sec)

mysql> grant all on repositorio.* to bingo@localhost identified by 'holahola'

Query OK, 0 rows affected (0.46 sec)

Ahora tenemos una base de datos llamada repositorio, la cual contiene una tabla llamada archivos.

Los detalles de cada campo en la tabla archivos se muestra a continuación:

• id - Un número entero que nos proporcionará un identificador único para cada archivo que iremos almacenando. Éste se irá incrementando automáticamente cada vez que se vaya agregando un nuevo registro.

• nombre - El nombre original del archivo, por ejemplo, foto.gif, curriculum.doc, etc

• titulo - Una breve descripción de cada archivo que se irá guardando en la tabla, por ejemplo "Cartita para mi novia", o "La foto de mi perro". Este título será usado posteriormente al estar revisando los archivos de nuestro repositorio a través de una página web.

• contenido - Un campo de tipo binario (blob) para guardar el contenido de cada archivo. En nuestra tabla hemos usado un tipo mediumblob, el cuál puede almacenar archivos hasta de 16MB.

• tipo - Como veremos más adelante, cada archivo (ya sea un .doc, .gif, .pdf, etc) tiene un tipo único. Cuando se envía un archivo hacía el servidor web a través de una página web, el navegador le envía al servidor la información acerca del tipo del archivo, o bien, del tipo de contenido del archivo. Los tipos de contenido son simples cadenas. El tipo de contenido para un archivo MS Word es "application/msword", el tipo de contenido para una imagen GIF es "image/gif", etc.

Agregando archivos a la base de datos

Ahora que tenemos lista la base de datos que servirá como repositorio de nuestros archivos, vamos a crear un simple página web que permita seleccionar un archivo desde el navegador para posteriormente enviarlo a un script en PHP que se va a encargar de almacenarlo en nuestra base de datos. La página web será nombrada escoger_archivo.html y el script en PHP se llamará guardar_archivo.php.

La página web puede contener todo el código HTML que se desee, pero es necesario que se incluya el siguiente formulario para que se tenga la opción de escoger un archivo y enviarlo al servidor.

<form enctype="multipart/form-data" action="guardar_archivo.php" method="post">

Descripción <input type="text" name="titulo" size="30">

Ubicación <input type="file" name="archivito">

<input type="submit" value="Enviar archivo">

</form>

Del código que hemos escrito tenemos que subrayar lo siguiente:

• El formulario necesita un atributo enctype con un valor multipart/form-data.

• El método de envío tiene que ser POST.

• Se tiene que usar por lo menos un campo del tipo file

Estos son los tres requerimientos básicos que debe cumplir la página HTML que servirá para subir los archivos al servidor. Antes de escribir el código del script guarda_archivo.php, vamos a comentar algo acerca de la forma en como se tomaran los datos del archivo que se va a recibir.

Desde la versión 4.1 de PHP se recomienda se utilice el arreglo $_FILES para leer los datos del archivo que se está subiendo al servidor. A continuación se listan los elementos que contiene este arreglo. Nótese que el nombre de los índices del arreglo depende de como se haya nombrado el campo del tipo file en el formulario.

$_FILES['archivito']['name']

Es el nombre original del archivo.

$_FILES['archivito']['type']

El tipo MIME del archivo,.. image/gif, application/pdf, application/msword,.. etc

$_FILES['archivito']['size']

El tamaño del archivo en bytes.

$_FILES['archivito']['tmp_name']

La ubicación del archivo temporal que se crea cuando se sube un archivo al servidor. Es en esta variable de donde se leen los datos del archivo en sí. Si estos datos no son copiados o movidos a otro lugar, o en nuestro caso, almacenados en una base de datos, se pueden perder, ya que PHP elimina este archivo después de un determinado tiempo.

Por ejemplo, estos son los posibles valores para un archivo j-odbc.zip que se ha subido al servidor:

$_FILES["archivito"][name] => j-jdbc.zip

$_FILES["archivito"][type] => application/zip

$_FILES["archivito"][tmp_name] => /tmp/phpvXQpqP

$_FILES["archivito"][size] => 337945

Cabe mencionar que se tienen que revisar, y en su caso modificar las siguientes variables del archivo de configuración de PHP para que se puedan subir los archivos al servidor, y puedan ser correctamente manejados por un script de PHP.

• file_uploads - Le dice a PHP si se pueden, ó no, subir archivos al servidor. Esta variable debe tener el valor "On".

• upload_max_filesize - Le indica a PHP cuál es el tamaño máximo del archivo que se puede aceptar. Se puede utilizar el sufijo "M" para indicar el valor en MegaBytes, por ejemplo, con un valor 2M se acepta un archivo máximo de 2 MegaBytes.

• upload_tmp_dir - Es el directorio en el que se copia temporalmente el contenido del archivo cuando se sube al servidor.

Ahora es el momento de mostrar el código del script en PHP que va a guardar el archivo en nuestra base de datos.

/* guardar_archivo.php */

require("dbconnect.inc.php");

$archivo = $_FILES["archivito"]["tmp_name"];

$tamanio = $_FILES["archivito"]["size"];

$tipo = $_FILES["archivito"]["type"];

$nombre = $_FILES["archivito"]["name"];

$titulo = $_POST["titulo"];

if ( $archivo != "none" )

{

$fp = fopen($archivo, "rb");

$contenido = fread($fp, $tamanio);

$contenido = addslashes($contenido);

fclose($fp);

$qry = "INSERT INTO archivos VALUES

(0,'$nombre','$titulo','$contenido','$tipo')";

mysql_query($qry);

if(mysql_affected_rows($conn) > 0)

print "Se ha guardado el archivo en la base de datos.";

else

print "NO se ha podido guardar el archivo en la base de datos.";

}

else

print "No se ha podido subir el archivo al servidor";

El archivo dbconnect.inc.php contiene únicamente las instrucciones para conectarse a MySQL y seleccionar la base de datos que se va a utilizar. El código de este programita se muestra a continuación.

/* dbconnect.inc.php */

$conn = mysql_connect("localhost","bingo","holahola");

mysql_select_db("repositorio");

Listando los archivos de la base de datos

Ya que hemos guardado algunos archivos en nuestro repositorio, ahora podemos listar la información de éstos, para posteriormente descargarlos. Esta es la labor del script que se muestra a continuación.

/* listar_archivos.php */

require("dbconnect.inc.php");

$qry = "SELECT id, nombre, titulo, tipo FROM archivos";

$res = mysql_query($qry);

while($fila = mysql_fetch_array($res))

{

print "$fila[titulo]

<br>

$fila[nombre] ($fila[tipo])

<br>

<a href='descargar_archivo.php?id=$fila[id]'>Descargar</a>

<br>

<br>";

}

Descargando archivos de la base de datos

Como se puede observar en el código del listado anterior, se ha puesto una liga a un archivo descargar_archivo.php. La funcionalidad de este programita será la de leer los datos de los archivos que se encuentran en la base de datos y mandarlos al navegador. Dependiendo del tipo de archivo del cuál se trate, el navegador podrá mostrar por él mismo el contenido del archivo.

/* Script descargar_archivo.php */

require("dbconnect.inc.php");

$qry = "SELECT tipo, contenido FROM archivos WHERE id=$id";

$res = mysql_query($qry);

$tipo = mysql_result($res, 0, "tipo");

$contenido = mysql_result($res, 0, "contenido");

header("Content-type: $tipo");

print $contenido;

Comentarios finales

Como se puede observar, el código PHP de los programitas es demasiado simple, y no tienen ningún grado de dificultad. El código se ha hecho a propósito lo más simple posible, sin embargo puede adecuarse o tomarse como base para realizar una aplicación real más completa.

Últimos comentarios

Últimos 5 comentarios

Problema a mistrar imagenes (11/04/2007)

Por Gustavo Tabares

Hola, pueden ayudarme ya subo las imagenes a la BD y si las consulto individualmente las puedo ver sin problemas. El problema es cuando trato de meterlas dentro de una celda en html para centrarla me muestra una cantidad de codigo raro y la imagen por ningun lado. por favor ayuda

imagenes blob (19/03/2007)

Por Jordi

Hola amigos,

he escrito el código para poder visualizar imágenes gravadas en la base de datos, de tipo mediumblob, y al mostrarlas solo se ven caracteres i bits, no se visualiza correctamente la imagen , además tengo el header content -type como jpeg,

alguna idea ??

Muchas gracias

manipulacion de imagenes mysql y .net (03/03/2007)

Por elisoft

tengo una base de datos mysql que contiene miles de imagenes, como puedo cargar y mostralas en un formulario de .net ya sea con c# o vb

SI FUNCIONA (17/02/2007)

Por MARIA MEDINA

Si funciona muy bien el codigo todo esta muy bien MUCHAS GRACIAS gusto lo que buscaba bonito y sencillo

descargar con IE (08/02/2007)

Por tefy

Hola, a mi el codigo me anda ... pero tuve que distinguir entre IE y los demas exploradores .. alguien sabe como hacerlo sin tener q hacer esto?, ademas desde IE me pone como nombre del archivo "descargar_archivo" y no el nombre q tiene ... como hago? este es mi codigo:

$result = query($qry,$conn);

$tipo = result($result, 0, "tipoarchivo");

$contenido = result($result, 0, "archivo");

$nombre= result($result, 0, "nombrearchivo");

//header("Content-type: application/octet-stream");

header("Content-type: $tipo");

if(eregi("MSIE",$_SERVER["HTTP_USER_AGENT"]))

header("Content-Disposition:attachment; filename= \'.$nombre.\'");

else

header("Content-Disposition:attachment; filename= \"$nombre\"");

print ("$contenido");

además por ejempli si descargo un pdf desde IE me lo abre en al ventana del IE y no en el acrobat

espero me puedan ayudar !

saludos

...

Descargar como  txt (17 Kb)  
Leer 10 páginas más »