Bases de datos
Campos numéricos
Vamos a ir mencionando los nombres de los distintos campos numéricos y a explicar cómo son:
- Bit y Bool: un número de 1 bit, es decir, o un 0 o un 1, sólo puede tomar ambos valores.
- 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.
- SmallInt: número comprendido entre -32768 y 32767, o sin signo entre 0 y 65535 (número de 16 bits/2 bytes).
- MediumInt: comprendido entre -8388608 y 8388607, o sin signo entre 0 y 16777215 (24 bites/3 bytes).
- Int (o integer): número entre -2147483648 y 2147483647, o sin signo entre 0 y 4294967295 (32 bites/4 bytes).
- 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).
- 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).
-
- 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).
- 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:
- Date: el formato en que lo guarda es año-mes-día, y guarda desde el año 1001 al 9999.
- DateTime: el formato es año-mes-día hora:minuto:segundo, y guarda desde el año 1001 al 9999.
- 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 |
- Time: el formato es hora:minuto:segundo, con un rango desde -838 horas a 838 horas.
- 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
- 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.
- VarChar: cantidad finita de caracteres con un máximo de 255, aunque podemos indicarle que este máximo sea menor.
- TinyText y TinyBlob: Texto con una longitud máximo de 255 caracteres.
- Blob y Text: texto con un máximo de 65535 caracteres. Text es también muy usado, aunque no tanto como varchar.
- MediumBlob y MediumText: texto con un máximo de 16.777.215 caracteres.
- 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.
- Enum: campo que puede tener un único valor de una lista que se especifica.
- Set: un campo que puede contener ninguno, uno ó varios valores de una lista.
Ejemplo:
mysql> CREATE DATA BASE HOSPITAL;
mysql> CREATE TABLE
MEDICO (CED_MEDICO VARCHAR(12), PRIMARY KEY(CED_MEDICO), NOM_MEDICO VARCHAR(25), APELLIDO_MEDICO
VARCHAR(30), TARJETA_PRO VARCHAR (20), CELULAR VARCHAR(10), CORREO VARCHAR(40) ,
ESPECIALIDAD TEXT) ENGINE=INNODB;
mysql> CREATE TABLE
PACIENTE (NUM_DOCUMENTO VARCHAR(12), PRIMARY KEY(NUM_DOCUMENTO),
NOMBRES_PACIENTE VARCHAR
(25), APELLIDO_PACIENTE VARCHAR (30), TIPO_DOCUMENTO VARCHAR (20), DIRECCION VARCHAR
(25), CELULAR VARCHAR (10), CORREO VARCHAR (40), CED_MEDICO VARCHAR (12), FOREIGN
KEY (CED_MEDICO) REFERENCES MEDICO (CED_MEDICO)) ENGINE=INNODB;
mysql> CREATE TABLE HISTORIAL (ID_HIST INT NOT NULL
AUTO_INCREMENT, PRIMARY KEY(ID_HIST),
FECHA_INGRESO VARCHAR
(8), TRATAMIENTO TEXT, INTERVENCION VARCHAR (20), FECHA_SALIDA VARCHAR (8),
CONTRAINDICACIONES TEXT, NUM_DOCUMENTO VARCHAR (12), FOREIGN KEY (NUM_DOCUMENTO)
REFERENCES PACIENTE (NUM_DOCUMENTO))
ENGINE=INNODB;
mysql> CREATE TABLE ENFERMEDAD (COD_ENFERMEDAD
VARCHAR(30) , PRIMARY KEY(COD_ENFERMEDAD),
NOM_ENFERMEDADES VARCHAR (25), SINTOMAS TEXT, ID_HIST
INT NOT NULL AUTO_INCREMENT, FOREIGN KEY (ID_HIST) REFERENCES HISTORIAL (ID_HIST))
ENGINE=INNODB;
mysql> CREATE TABLE ANALISIS_MEDICO (COD_EXAMEN
VARCHAR(30) , PRIMARY KEY(COD_EXAMEN),
TIPO_EXAMEN VARCHAR (40), INSTRUCCIONES TEXT)
ENGINE=INNODB;
mysql> CREATE TABLE REALIZANDO (ID_REALIZANDO INT
NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID_REALIZANDO), ID_HIST INT NOT NULL
AUTO_INCREMENT, FOREIGN KEY (ID_HIST) REFERENCES HISTORIAL (ID_HIST),
COD_EXAMEN VARCHAR(30), FOREIGN KEY (COD_EXAMEN) REFERENCES ANALISIS_MEDICO (COD_EXAMEN))
ENGINE=INNODB;