Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Vamos a ver en este post la sentencia CREATE DATABASE para crear una base de
datos en MySQL.
DATE: Válido para almacenar una fecha con año, mes y día, su rango oscila
entre ‘1000-01-01’ y ‘9999-12-31’.
DATETIME: Almacena una fecha (año-mes-día) y una hora (horas-minutos-
segundos), su rango oscila entre ‘1000-01-01 00:00:00’ y ‘9999-12-31 23:59:59’.
TIME: Válido para almacenar una hora (horas-minutos-segundos). Su rango de
horas oscila entre -838-59-59 y 838-59-59. El formato almacenado es
‘HH:MM:SS’.
TIMESTAMP: Almacena una fecha y hora UTC. El rango de valores oscila
entre ‘1970-01-01 00:00:01’ y ‘2038-01-19 03:14:07’.
YEAR: Almacena un año dado con 2 o 4 dígitos de longitud, por defecto son 4.
El rango de valores oscila entre 1901 y 2155 con 4 dígitos. Mientras que con 2
dígitos el rango es desde 1970 a 2069 (70-69).
Otra sentencia interesante es la CREATE TABLE que sirve para crear las tablas. En
este otro post eplico cómo conectar a una BBDD con PHP:
Realizar una conexión a una base de datos MySQL con PHP
1 CREATE DATABASE IF NOT EXISTS mi_nueva_base_de_datos CHARACTER SET utf8 COLLATE utf8_general_ci;
En este ejemplo he puesto codificación UTF8.
Tras crear una base de datos los tipos de dato que podemos guardar son:
Numéricos
De fecha
Tipo string
TRUNCATE TABLE
DROP TABLE
MySQL SELECT
ALTER TABLE
MySQL INSERT
RENAME TABLE
Veamos a las diferentes sintaxis que tenemos tener en la creación de una tabla extraídas de su web
oficial.
Sintaxis básica de la sentencia CREATE TABLE de
MySQL
Vamos a ir viendo las sintaxis de los diferentes tipos de columnas que puede pueden tener las tablas
en MySQL:
Con el código superior tenemos la sentencia estandar para crear la tabla, solamente tenemos que
poner el nombre de la tabla, nombre de la columna y su tipo.
Podemos tener una base de datos con numerosas tablas, por lo que al crear una nueva podemos tener
una existente con el mismo nombre. Para evitar problemas debemos usar la sentencia ‘IF NOT
EXIST‘:
2 (definición de la tabla,
3 definición de columnas,
4 tipos de columnas
5 );
Definición de la tabla
Vamos con la sintaxis para definir las diferentes definiciones que se pueden hacer sobre la tabla:
2 [index_option] ...
4 [index_option] ...
7 [index_option] ...
9 [index_opción] ...
12 | CHECK (expr)
CONSTRAINT es una restricción, el nombre de la restricción debe ser única en la base de datos.
Estas exigen la integridad de los datos de las clumnas de la tabla.
PRIMARY KEY: Solo se puede crear una primary key por tabla, es la clave primaria que identifica
de manera única cada registro/fila de la tabla. Por ejemplo el documento de identidad DNI de una
persona.
INDEX|KEY: Ambas son sinónimas, puede haber una o varias. Establecen los íncides de la tabla
con los cuales se pueden agilizar las búsquedas en la base de datos. De esta manera se evita la
búsqueda de un parámetro por cada columna de la tabla. Es como un índice de un libro con el que
nos evitamos recorrer cada página.
UNIQUE: Es una restricción por la cual el valor de dicha columna debe ser único y diferente al del
valor de dicha columna de resto de registros. Por ejemplo se suele usar con las columnas declaradas
como primary key.
FULLTEXT: Es un íncide que solo funciona con las columnas con formato char, varchar, text y con
alamcenamiento MyISAM. Este índice facilita las grandes búsquedas sobre texto y realiza
automáticamente comparaciones de texto sobre una cadena dada. Realiza búsquedas más afinadas
que la sentencia LIKE. Se ignoran las palabras con menos de 4 letras y las palabras que aparezcan en
más del 50% de los registros.
FOREIGN KEY: Clave foránea, es un índice por el cual podemos relacionar 2 tablas. Este valor
debe existir en ambas tablas, por ejemplo el código postal de la tabla ‘usuarios’ y la tabla
‘población’.
Si necesitáis más info sobre los índices UNIQUE, FULLTEXT, INDEX, PRIMARY KEY podéis
consultar este post:
Definición de columnas
Vamos con la sintaxis de las definiciones de columna de la sentencia de CREATE TABLE MySQL
3 [COMMENT 'string']
4 [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
5 [STORAGE {DISK|MEMORY|DEFAULT}]
6 [reference_definition]
NOT NULL | NULL: Establecemos si el valor de la columna debe rellenarse obligatoriamente o no.
AUTO_INCREMENT: Establece un valor incial para un incremento posterior con la inserción de
cada nuevo registro.
COMMENT: Comentario a modo informativo de la columna.
COLUMN_FORMAT: Establece la ocupación de la columna, FIXED para un valor fijo,
DYNAMIC para un valor variable y DEFAULT para una coupación por defecto.
STORAGE: Posibilidad de almacenamiento en memoria o disco.
Numéricos
De fecha
Tipo string
1 BIT[(length)]
13 | DATE
14 | TIME
15 | TIMESTAMP
16 | DATETIME
17 | YEAR
18 | CHAR[(length)] [BINARY]
20 | VARCHAR(length) [BINARY]
22 | BINARY[(length)]
23 | VARBINARY(length)
24 | TINYBLOB
25 | BLOB
26 | MEDIUMBLOB
27 | LONGBLOB
28 | TINYTEXT [BINARY]
30 | TEXT [BINARY]
32 | MEDIUMTEXT [BINARY]
34 | LONGTEXT [BINARY]
36 | ENUM(value1,value2,value3,...)
38 | SET(value1,value2,value3,...)
40 | spatial_type
1 RESPUESTA
Tienes una tabla principal, que es la de Alumnos. En esa debes tener un campo, que sea
clave principal (es decir, valor único e irrepetible para cada alumno). Imaginemos que es un
número de matricula.
En las tablas relacionadas, basta con que incluyas un campo (del mismo tipo que la clave
principal, en nuestro caso, numérico), en el que se almacenará, el código del alumno.
Una vez hecho esto, abres Relaciones, y estableces la relación (picando y arrastrando) de un
campo a otro. Aparecerá una linea... y ya está.
el 23 nov. 10
Hola gracias por atenderme, utilizo office 2003, eso ya lo he intentado y funciona, pero a la
hora de poner la tercera tabla de cuotas no se como relacionarla con la tabla de datos
personales y aunque lo haga no aparece id autonumérico de la tabla de datos personales en
la tabla de cuotas
El asunto es que la de datos personales le tiene que dar id de nº de alumno a las dos tablas,
la de trabajos realizados y cuotas socurrrooo necesito ayuda
Muchas gracias
el 23 nov. 10
¿Tienes en cada una de las tablas un campo numérico que sea el código del alumno? Si
cuando escribes datos (por ejemplo a través de un formulario) utilizas un cuadro combinado
que tome los nombres de los alumnos, el solo, automáticamente, toma por defecto el valor
de IdAlumno y lo almacena en ese campo. Lo siento, pero no entiendo cual es el problema.
el 23 nov. 10