Anuncios

Bienvenidos sean a este post, hoy veremos como crear tablas.

Anuncios

Antes de comenzar veamos como es su sintaxis:

CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] nombreTabla
    (definiciones de creacion) [opciones de tabla] [opciones particion]
Anuncios
Nota: 
Los elementos entre corchetes son temporales.
Anuncios
Anuncios

En este caso tenemos la primera opcion que identifica al comando luego tenemos una opcional que nos permite establecer si crear o reemplazar (en caso de existir) la tabla a crear, el siguiente modificador que tambien es opcional nos permite crear una tabla que existira mientras la sesion donde se creo este vigente y cuando esta se cierre sera eliminada, despues tenemos el modificador que es obligatorio (TABLE), seguido del mismo condicional que vimos al crear bases que ejecutara este comando si la base no existe en caso contrario ignora la ejecucion y nos da un aviso, lo cual es ideal para evitar interrupciones en caso de un error como puede ser en un script, por ultimo el nombre de la tabla, luego entre parentesis tenemos todos los datos que estableceran las columnas de la tabla, y dos valores opcionales como son las opciones de la tabla y como es su particion, con todo esto comentado la forma mas basica de crear una tabla es:

CREATE TABLE tabla1 (nombre varchar(20));
Anuncios

Como pueden ver simplemente con el CREATE TABLE y el nombre seguido aunque sea de una sola columna donde siempre deben pasar como minimo el nombre, el tipo y el tamaño de la columna, con esto ya tienen su primera tabla en una base pasemos a ver otro caso:

Anuncios
Nota: 
Recuerden ingresar primero a una base con el comando USE
Anuncios
MariaDB [base1]> CREATE TABLE IF NOT EXISTS tabla2 (
    -> nombre varchar(20),
    -> apellido varchar(20),
    -> edad int (20),
    -> ciudad varchar(20)
    -> );
Anuncios

En este caso usamos al IF NOT EXISTS para que primero chequee si existe una tabla con ese nombre, luego vean como agregamos varios campos para almacenar distintos tipos de datos, en este caso almacenaremos el nombre, el apellido, la edad y su ciudad, como pueden ver es muy simple de crear, veamos algunas sintaxis de forma teoricas:

CREATE OR REPLACE tableta (nombre varchar(20));
Anuncios

Esta creara una nueva tabla o reemplazara una existente, esto equivale a hacer lo siguiente:

DROP TABLE IF EXISTS tableta;
CREATE TABLE tableta(nombre varchar(20));
Anuncios

Primero siempre elimina la tabla informada y luego procede a crearla con los nuevos parametros pero trabajar con este parametro nos trae un inconveniente: si eliminamos primero la tabla y luego al crearla ocurre un error y esta no se genera caeremos en un error importante y tambien en la perdida de la informacion por lo tanto usen este comando cuando no sea importante la tabla a reemplazar, veamos otro:

CREATE TEMPORARY TABLE tableta (nombre varchar(20));
Anuncios

Como dijimos esta tabla se generara de forma temporal por medio de TEMPORARY y la misma solo existira mientras la sesion creadora este activa y una vez que la cerremos se borrara dicha tabla, esto es ideal para hacer una simple verificacion de intercambio de informacion o similar, ya vimos como definir una columna o campo de forma muy basica pasemos a ver los parametros que disponemos:

  • NOT NULL | NULL, define si el valor no puede ser nulo o si puede serlo.
  • DEFAULT valor, determina el valor predeterminado de la columna, tambien puede ser una expresion
  • ON UPDATE tipo, actua al momento de actualizarse y tipo puede ser: NOW o CURRENT_TIMESTAMP, y tambien podemos pasar la precision
  • AUTO_INCREMENT, el campo debe ser de tipo int y por cada nuevo dato ingresado se incrementara automaticamente, el mas utilizado como id del dato.
  • ZEROFILL, completa con cero todos los digitos del tamaño de la columna
  • UNIQUE KEY, indica que es la unica clave de la tabla
  • PRIMARY KEY, indica que es la clave principal de la tabla, puede trabajar en conjunto con la anterior
  • INVISIBLE, permite convertir algunas columnas en invisibles a partir de la version 10.3.3
  • { WITH | WITHOUT } SYSTEM VERSIONING, marca la columna como incluida o excluida de la version del servidor, se implementa a partir de la version 10.3.4
  • COMMENT ‘texto’, permite agregar un comentario a la columna
Anuncios

Para entender el concepto de todos vamos a implementar algunos de los mas utilizados mediante la creacion de una tabla:

MariaDB [base1]> CREATE TABLE tabla3 (
    -> id int(20) NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
    -> nombre varchar(20) NOT NULL,
    -> apellido varchar(20) NOT NULL,
    -> edad int(3) NULL DEFAULT (9 + 9),
    -> ciudad varchar(20)
    -> COMMENT 'Es una tabla de prueba'
    -> );
Anuncios
Anuncios

En este caso creamos una nueva tabla donde tenemos el primer campo que es el id de la persona, definimos primero el tipo de dato y su tamaño, luego establecemos que no debe ser nulo seguido del auto incrementador, siempre que usemos a AUTO_INCREMENT debe ser notificado como NOT NULL para que el mismo sistema le asigne un valor y lo incremente en caso de ser necesario, despues le decimos que esta sera la clave primaria y unica por lo tanto este dato no puede repetirse en el resto de la tabla como clave de la misma, el siguiente campo almacena el nombre y le decimos que no puede ser nulo, lo mismo con el apellido para obligar a la persona que carga los datos a tener que ingresar los mismos, el siguiente campo que es la edad puede ser nulo pero le pasamos un valor predeterminado y en este ejemplo no es un valor sino el resultado de una operacion, por ultimo tenemos el campo donde almacenamos la ciudad de la persona pero no informamos si puede ser nulo o no, el sistema de manera predeterminada lo configura para que pueda ser nulo, por ultimo le agregamos un comentario a la tabla, esta es la manera mas predeterminada de trabajar para crear una tabla, tambien pueden agregar el IF NOT EXISTS para evitar errores en caso de que la tabla exista, pasemos a hablar sobre el siguiente tema.

Anuncios

El siguiente tema son las opciones de la tabla que disponemos para configurar, esto no es tan usual pero pueden necesitarlo para algunas configuraciones especificas, veamos el listado:

Anuncios
  • [STORAGE] ENGINE [=] ‘nombre’, establece el nombre del engine o motor de almacenamiento
  • AUTO_INCREMENT [=] valor, establece el valor de auto incremento
  • AVG_ROW_LENGTH [=] valor, establece el valor promedio de ancho de la fila
  • [DEFAULT] CHARACTER SET [=] ‘nombre’, establece el charset predeterminado de la fila
  • CHECKSUM [=] {0 | 1}, establece si no se hace o si se hace, respectivamente, el checksum de todas las filas de la tabla
  • [DEFAULT] COLLATE [=] ‘nombre’, establece el valor de intercalacion predeterminado
  • COMMENT [=] ‘texto’, establece el comentario en la tabla
  • CONNECTION [=] ‘cadena de conexion’, establece cual va a ser el servidor o la cadena de conexion
  • DATA DIRECTORY [=] ‘path del directorio’, establece donde esta el directorio de la base, se debe pasar el path completo
  • DELAY_KEY_WRITE [=] {0 | 1}, se usa para acelerar o no las operaciones de escritura, con 0 se retrasa y con 1 se acelera
  • ENCRYPTED [=] {YES | NO}, determina si la tabla estara encriptada o no
  • ENCRYPTION_KEY_ID [=] ‘valor’, establece la clave de encriptacion pero debido a un bug actualmente se encuentra deshabilitada
  • IETF_QUOTES [=] {YES | NO}, permite un analisis compatible con IETF de comillas y comas incluidas pero crea incompatiblidad con el formato CSV de mysql y mariadb, de manera predeterminada esta desactivada
  • INDEX DIRECTORY [=] ‘path del directorio’, establece el directorio de indices se debe pasar el path completo
  • INSERT_METHOD [=] {NO | FIRST | LAST}, este opcion determina en cual de las tablas subyacentes se debe insertar las nuevas filas
  • KEY_BLOCK_SIZE [=] valor, establece el valor del bloque de la clave
  • MAX_ROWS [=] valor, el valor maximo de filas
  • MIN_ROWS [=] valor, el valor minimo de filas
  • PACK KEYS [=] {0 | 1 | DEFAULT}, se usan para determinar si los indices deben ser comprimidos
  • PAGE_CHECKSUM [=] {0 | 1}, activa o no el checksum de pagina para mayor seguridad
  • PAGE_COMPRESSED [=] {0 | 1}, activa o no la compresion de la pagina
  • PAGE_COMPRESSION_LEVEL [=] {0..9}, establece el nivel de compresion en caso de estar activo
  • PASSWORD [=] ‘texto’, establece una contraseña para la tabla
  • ROW_FORMAT [=] {valor}, establece el formato de la fila y los valores son: DEFAULT, DYNAMIC, FIXED, COMPRESSED, REDUNDANT, COMPACT, PAGE
  • SEQUENCE [=] {0 | 1}, activa o no si la tabla es una secuencia
  • STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}, establece si debe recalcular las estadisticas persistentes automaticamente
  • STATS_PERSISTENT [=] {DEFAULT | 0 | 1}, indica si las estadisticas de InnoDB creadas por ANALYZE TABLE quedan en el disco o no
  • STATS_SAMPLE_PAGE [=] {DEFAULT | valor}, se utiliza para indicar cuantas paginas se usan para obtener una muestra de las estadisticas de indices
  • TABLESPACE nombre, podemos pasar el nombre de un tablespace generado para nuestra tabla
  • TRANSACTIONAL [=] {0 | 1}, provee una proteccion contra «crasheos» o errores graves para tablas de tipo Aria
  • UNION [=] (nombreTabla[, nombreTbl…]), debe usarse cuando se crea una tabla combinada, se puede pasar todas las tablas que se necesiten entre los parentesis
  • WITH SYSTEM VERSIONING, se usa para crear tablas versionadas.
Anuncios

Estas son opciones para establecer algunos datos de la tabla pero en general les recomiendo dejarlo de manera predeterminada, por lo general con lo visto antes de estas opciones les alcanzara y les sobrara para trabajar con la creacion de las tablas, por si tienen curiosidad y quieren ahondar un poco mas sobre los detalles y otros temas no mencionado en este post les recomiendo visitar la pagina de la documentacion oficial:

https://mariadb.com/kb/en/create-table/

Anuncios

En resumen, hoy hemos visto como crear tablas, el comando que se usa, como se hace desde la forma mas basica hasta las mas utilizada con sus caracteristicas mas importantes siendo implementadas, por ultimo mencionamos las opciones para modificar los parametros generales de la tabla, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50