Vous êtes sur la page 1sur 9

Introduccin a MySQL: CREATE,ALTER,DROP (DDL)

Buenas Para este segundo artculo de introduccin al trabajo con MySQL, hablaremos del lenguaje de definicin de datos, mostraremos su aplicacin en MySQL, tambin veremos las consultas que componen este lenguaje. El Lenguaje de Definicin de Datos (DDL): Este lenguaje nos permite manejar comandos para definir los objetos de nuestras bases de datos. Sentencias que Maneja el DDL El lenguaje de definicin de datos, maneja todas las sentencias que usamos para indicar los datos que vamos a manejar dentro de nuestra base de datos, estos datos sern almacenados en las tablas de nuestra base de datos, las sentencias que utiliza este lenguaje son: a) CREATE TABLE: Esta sentencia la usamos para como su nombre lo indica la creacin de nuestras tablas. La sintaxis de esta sentencia es sencilla simplemente se coloca la palabra CREATE TABLE seguido del nombre de la tabla luego entre parntesis los nombres de los campos separados por coma, al lado de cada campo se indica el tipo de dato que este va a contener. Un ejemplo: CREATE TABLE nombre_tabla(campo1 INT(10),campo2 VARCHAR(20)); Fcil verdad?? Con esta sentencia podemos ir creando nuestras tablas, pero en la definicin de la sintaxis indicbamos que se deba de establecer los tipos de datos de cada campo pero cules son?? Tipos de Datos 1.- Datos Numricos: Como su nombre lo indica representan a los campos que contendrn valores numricos como por ejemplo la edad, precios, etc. y estn compuestos por: 1.1.-Enteros: - TINYINT: es un entero con o sin signo, los valores aceptados son desde 0 a 255 cuando no tiene signo y -127 a 255 cuando se le indica un signo. -BIT : Como su nombre lo indica almacena valores que contienen un bit. - BOOL: En este tipo de campo solo se permiten cero (0) uno (1). En algunas versiones se toma como TINYINT(1). -SMALLINT: En este tipo de datos se representa a un entero corto o pequeo, la capacidad de almacenamiento es de 65535. - MEDIUMINT: En este tipo de datos se representa a un entero, la diferencia con el SMALLIN es la
capacidad ya que este tipo de campo abarca una mayor cantidad de caracteres para guardar, la cual en este caso es de 8388607.

- INTEGER o INT: Representa a un nmero entero, es ms utilizado normalmente para hacer referencia a este tipo de datos, su capacidad de almacenamiento es de 4294967295. -BIGINT: Es utilizado cuando la capacidad del INT es poca para representar a un entero, su capacidad de almacenamiento es de 18446744073709551615. 1.2 Decimales o Punto Flotante:

-DECIMAL: Como su nombre lo indica permite nmeros decimales dentro de sus valores, la sintaxis del decimal es DECIMAL(M,D), donde M tiene un rango de 1 a 64 y D tiene un rango de 0 a 30, aunque en la declaracin se utiliza la coma(,) para separar el entero del decimal cuando se trabaja con los nmeros el punto es el separador del entero y decimal ejemplo: 100.50. -FLOAT: Es el que se utiliza normalmente para el trabajo con nmeros decimales, ya que este permite una especificacin opcional de la precisin, la escala de este tipo de datos va desde 0 a 23, que resulta en una precisin de 4 Bytes. -DOUBLE: Al igual que el FLOAT trabaja con decimales, el alcance de este es el doble del FLOAT, este tipo de datos tiene una precisin de 8 Bytes, el doble de float y va desde el 24 a 53. -REAL: Al igual que DOUBLE es tomado con dato de doble precisin es decir de 8 Bytes. 2.- Datos de Fecha y Hora: Como su nombre lo indica son para almacenar datos de tipo temporales (fecha y hora), como por ejemplo la fecha de nacimiento, el horario de una clase, y est compuesto por: -DATE: En este tipo de datos almacenamos las fechas, el formato que tiene MySQL para guardar este tipo de datos es ao-mes-dia (0000-00-00). -TIME: En este tipo de dato almacenamos las horas que necesitemos en nuestra base de datos el formato es hora:minutos:segundos (00:00:00), normalmente guardado en hora militar, si se desea convertir para mostrarse en AM y PM se puede hacer uso de la funcin DATE_FORMAT. -DATETIME: Como su nombre lo indica es una combinacin de los dos tipo de datos anteriores, el formato es el siguiente ao-mes-dia hora:minuto:segundo (0000-00-00 00:00:00). -TIMESTAMP: Se muestra en el mismo formato que los campos de tipo DATETIME. -YEAR: Como su nombre lo indica se utiliza para almacenar aos, por defecto la cantidad de dgitos es de 4 aunque puede establecerse que se utilicen dos si se desea almacenar los aos en este formato. 3.-Datos de Tipo String o Cadenas de Texto: Este tipo lo de datos lo utilizamos para almacenar las cadenas de texto que necesitemos dentro de nuestra base de datos, como por ejemplo un nombre, apellido etc., dentro de de este tipo de datos tenemos: -CHAR: Almacena una cadena de caracteres indicando al lado la cantidad que contendr (CHAR(10) indicara una cadena de 10 carcteres), la cantidad de carcteres que se puede almacenar en un campo de este tipo va desde 0 hasta 255. -VARCHAR: Al igual que CHAR almacenamos cadenas de caracteres, la cantidad se especifica al lado (VARCHAR(10) indicara una cadena de 10 carcteres), y se puede almacenar una cantidad de caracteres de 0 a 255. Pero entonces cual es la diferencia entre CHAR y VARCHAR?? La diferencia radica en que las cadenas de tipo CHAR cuando guardas un dato rellena con espacios en blanco a la derecha hasta completar la capacidad de la columna y cuando se traen en una consulta se borran, en cambio las cadenas de tipo VARCHAR guardan solo la cantidad de caracteres que se indica en nuestra

cadena, ac una tabla comparativa en el tamao de almacenamiento tomada del manual de MySQL:
CHAR(4) Almacenamiento necesario VARCHAR(4) Almacenamiento necesario ' ' 'ab ' 4 bytes 4 bytes '' 'ab' 'abcd' 'abcd' 1 byte 3 bytes 5 bytes 5 bytes

Valor '' 'ab' 'abcd'

'abcd' 4 bytes

'abcdefgh' 'abcd' 4 bytes

-BLOB: En este tipo de dato se guarda informacin binaria, normalmente se utiliza para guardar imgenes, sonidos, entre otros, dentro de este campo existen los TINYBLOB,MEDIUMBLOB,LONGBLOB, la diferencia es la capacidad de almacenamiento entre ellos. Existen otros tipos de datos dentro de MySQL, solo se hablo de los ms conocidos y utilizados, para ms informacin el manual de MySQL es nuestro amigo. Campos Claves en MySQL Los campos claves son campos que indicamos para hacer ms fciles nuestras bsquedas ya que se crea una indexacin de nuestros datos, dentro de este tipo de campo tenemos: 1.-PRIMARY KEY: Como su nombre lo indica son claves primarias, en palabras sencillas lo que quiere decir esto es que en la indexacin de nuestros datos MySQL le da prioridad a este tipo de clave seguido de las claves nicas. Las claves primarias no permiten que haya datos duplicados dentro de este tipo de campo. 2.-UNIQUE: Este tipo de clave como su nombre lo indica no permite que exista duplicidad de datos. 3.-FOREING KEY: Las claves forneas son aquellas que hacen referencia a la clave primaria de otra tabla, se utilizan para crear relaciones entre ellas, este tipo de clave solo se implementan en MySQL para el motor de almacenamiento InnoDB, se habla de que MyISAM posteriormente soportara este tipo de claves. Ya conocemos las claves ahora como las implementamos en la creacin de nuestras tablas??. La sintaxis es la siguiente: CREATE TABLE personas (id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, nombre VARCHAR(40) NOT NULL,cedula varchar(20) UNIQUE NOT NULL);

La sentencia que acabamos de colocar crea una tabla llamada personas que contendr el nombre y la cedula adems de un campo auto-incremental que es la clave primaria de esta tabla y una clave nica que es la cedula, de manera que no haya repeticin de esta, sencillo no??. Motores de Almacenamiento de MySQL Cuando creamos las tablas de nuestra base de datos MySQL tiene diferentes tipos de almacenamiento donde podemos los cuales nos permiten realizar acciones dependiendo de cul sea nuestra necesidad, por defecto las tablas de MySQL tienen el motor de almacenamiento en MyISAM. A continuacin veremos un resumen de los motores de almacenamiento de MySQL: 1.- ISAM: Era el motor por defecto de MySQL en versiones anteriores, maneja tablas no transaccionales. Caractersticas: a) El mximo tamao de una tabla es 4GB. b) Slo pueden ser definidos 16 ndices por tabla. c) Claves con longitud mxima de 256 bytes. d) No puede usarse sentencias de respaldo de tablas y restauracin de tablas. Este motor de almacenamiento se considera obsoleto y es poco recomendable su uso, fue reemplazado por el motor MyISAM. 2.- MyISAM: Es el formato por defecto de MySQL, est basado en el cdigo de ISAM, pero tiene otras caractersticas que llevaron a ser su reemplazo. Caractersticas: a) Todos los datos son almacenados en formato complemento a dos y el formato de la IEEE de punto flotante. b) Manejo de tablas no-transaccionales. c) El mximo nmero de ndice por tablas son 64. El mximo nmero de columnas por ndices es 16. d) MyISAM automticamente actualiza las columnas definidas como AUTO_INCREMENTO en operaciones NSERT/UPDATE, incrementado la velocidad en al menos 10%. 3.-INNODB: Este motor de almacenamiento permite a MySQL realizar transacciones (propiedades ACID). Caractersticas: a) Soporta la definicin de claves forneas (FOREIGN KEY). b) En una sentencia SELECT puedan mezclarse diferentes tipos de tablas.

c) Integrada completamente con el servidor MySQL, InnoDB mantiene su propio buffer pool para mantener datos e ndices en memoria principal d)Manejo de usuarios concurrentes. e)Si una actualizacin falla todos los cambios son revertidos (en un ambiente no transaccional todos los cambios hechos son permanentes). f)Los motores transaccionales proporcionan un mejor desempeo sobre tablas que tienen muchas actualizaciones concurrentes. Existen otros motores de almacenamiento en MySQL se nombraron los ms utilizados, en lo personal utilizo el motor de almacenamiento InnoDB ya que soporta transacciones y por las caractersticas ya expuestas. Ya conocemos los motores de almacenamiento de MySQL, entonces como hacemos una tabla indicando el motor de nuestra preferencia??. Como se indico por defecto el motor de almacenamiento de MySQL es MyISAM, si no especificamos el motor a utilizar este tomara este motor automticamente, pero si deseamos crear una tabla de tipo InnoDB como lo haramos?? Tomando el ejemplo anterior de personas tendramos la siguiente sentencia: CREATE TABLE personas (id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, nombre VARCHAR(40) NOT NULL,cedula varchar(20) UNIQUE NOT NULL) ENGINE = InnoDB; Como podemos observar para indicar el motor de almacenamiento utilizamos la palabra ENGINE, tambin podemos indicarlo mediante la palabra TYPE al igual que ENGINE solo debemos de indicar el motor de la base de datos a utilizar. Creacin de Claves Forneas en MySQL Como se indico en los motores de almacenamiento el motor InnoDB es el que soporta claves forneas, aunque se pueden crear en todos los motores solo tiene sentido para este tipo de almacenamiento, por lo que en la creacin de tablas que utilicen este tipo de clave debemos crearlas InnoDB, veamos un ejemplo de la creacin de una clave fornea: Tabla persona: CREATE TABLE personas (id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, nombre VARCHAR(40) NOT NULL,cedula varchar(20) UNIQUE NOT NULL) ENGINE = INNODB; Tabla factures: CREATE TABLE facturas( id INT(11) AUTO_INCREMENT NOT NULL,precio FLOAT NOT NULL,descripcion VARCHAR(40) NOT NULL,persona_id INT(11)

NOT NULL,PRIMARY KEY(id), CONSTRAINT claveforanea FOREIGN KEY(clave_foranea) REFERENCES personas(id)) ENGINE = INNODB; Como podemos notar la primera tabla es la misma que habamos trabajado, creamos una tabla profesin que va a estar relacionada con otra llamada factura, la relacin la establece el id de personas, entonces que hicimos creamos la clave fornea la cual le colocamos el nombre claveforanea (ah puede ser cualquier nombre) en el campo de la tabla facturas llamado persona_id y dijimos a cual tabla hace referencia es decir al campo id de personas sencillo no?? Adems le indicamos que borrara en cascada es decir si se borra un dato de personas se borra todo lo que haya en factura que pertenezca a esa persona, veamos un ejemplo: Llenamos la tabla personas: INSERT INTO personas (nombre,cedula) VALUES ('carlos',123456); INSERT INTO personas (nombre,cedula) VALUES (juan','987456'); INSERT INTO personas (nombre,cedula) VALUES (pedro','456789'); Llenemos la tabla factura: INSERT INTO facturas (precio,descripcion,persona_id) VALUES ('100','articulos de oficina',1); INSERT INTO facturas (precio,descripcion,persona_id) VALUES ('200','juguetes',2); INSERT INTO facturas (precio,descripcion,persona_id) VALUES ('100','papeleria,3); Con estas consultas llenamos las tablas, al momento de borrar un dato de persona se borrara automticamente en factura ejemplo DELETE FROM personas WHERE id = 1; Automticamente se borraran todas las facturas que tena esta persona. Las sentencias de insercin, actualizacin y borrado que se tocaron en este tema se explicaran cuando se hable del lenguaje de manipulacin de datos (DML). La creacin de otros objetos como las vistas e ndices se ver ms adelante cuando se haya trabajado con el lenguaje DML. Con el comando CREATE tambin podemos crear bases de datos, asi como vistas e ndices que se nombraron anteriormente, para crear una base de datos sencillamente se utiliza la siguiente sentencia: CREATE DATABASE nombre_base_de_datos; Fcil no?? Y para indicar la base de datos a utilizar sencillamente usamos el comando USE seguido del nombre de la base de datos ejemplo: CREATE DATABASE test;

USE TEST; Luego procedemos a crear nuestras tablas. b) ALTER TABLE: Esta sentencia se utiliza para modificar la estructura de una tabla ya existente, mediante de esta podemos aadir, borrar y modificar los campos de nuestra tabla. Veamos cmo podemos hacerlo: -Renombrar Tabla: Se utiliza para cambiar el nombre a una tabla la sintaxis es: ALTER TABLE nombre_actual RENAME TO nuevo_nombre; -Aadir un campo (ADD COLUMN): Como su nombre lo indica nos permite aadir un campo a una tabla que ya habamos creado, veamos un ejemplo de su uso: ALTER TABLE personas ADD COLUMN edad INT(3) NOT NULL; Como podemos observar lo que se hizo fue indicar la tabla a modificar se indico el comando ADD COLUMN el nombre del campo y el tipo de dato tal y cual como se hace en CREATE TABLE, fcil no?? Si deseamos darle una ubicacin especifica antes de otro campo de nuestra tabla sencillamente indicaramos ALTER TABLE tabla ADD COLUMN campo VARCHAR( 20 ) NOT NULL FIRST; Con esta sentencia sencillamente indicaramos que el campo nuevo estar al comienzo de una tabla. ALTER TABLE tabla ADD COLUMN campo INT(20) NOT NULL AFTER`campo_anterior_al_nuevo`; Con esta sentencia indicaramos que el campo nuevo estar despus del campo que se especifique en campo_anterior_al_nuevo. Fcil no?? -Eliminar un Campo (DROP): Con esta sentencia sencillamente eliminamos un campo de una tabla, veamos un ejemplo: ALTER TABLE tabla DROP campo_a_borrar; -Modificar un Campo (CHANGE):Con esta sentencia modificamos un campo de una tabla la sintaxis es la siguiente ALTER TABLE tabla CHANGE campo_actual campo_nuevo INT(2) NOT NULL; Si nos fijamos la sentencia nos pide un campo actual que es el nombre del campo, campo nuevo ac se coloca el nombre nuevo del campo, si no se desea cambiar

el nombre se coloca el mismo que en campo actual, luego sencillamente se indica el tipo de dato como se indico en la sentencia CREATE TABLE. -Agregar KEY: Con esta sentencia se aade una clave a una tabla. Su sintaxis es sencilla: PRIMARY KEY: ALTER TABLE tabla ADD PRIMARY KEY(campo_que_sera_clave_primaria); UNIQUE: ALTER TABLE tabla ADD UNIQUE ( campo_que_sera_clave_unica) FOREIGN KEY ALTER TABLE profesion ADD CONSTRAINT nombre_clave_foranea FOREIGN KEY (campo_clave_foranea) REFERENCES table_referencia(campo_referencia); -Borrar Key: Con este tipo de sentencia sencillamente lo que hacemos es borrar claves que contengan las tablas. ALTER TABLE tabla DROP PRIMARY KEY; ALTER TABLE tabla DROP INDEX campo_indice; ALTER TABLE nombretabla DROP FOREIGN KEY nombre_clave_foranea; Estas son algunas de las acciones que se pueden hacer al momento de modificar una tabla para ms informacin tenemos el manual de MySQL. c) DROP TABLE: Se utiliza para borrar una tabla de una base de datos su sintaxis es la siguiente: DROP TABLE nombre_tabla; Al igual que con la sentencia CREATE la sentencia DROP tambin nos permite borrar base de datos, vistas e ndices la sintaxis es igual a la de las tablas pero indicando lo que se desea borrar, con las vistas lo veremos cuando hablemos de estas en un prximo articulo. Bueno eso es todo por este artculo espero sea de agrado y sirva a las personas que leen este blog dedicado a el desarrollo web, cualquier crtica o sugerencia es aceptada, hasta una prxima entrada saludos

DDL (Data Definition Language) Muchos piensan que sql son solo sentencias para realizar consultas en la base de datos , de tal manera conociendo la clausula select y poco mas ya es suficiente. Pero DDL es la parte de lenguaje sql que tiene como finalidad la definicin de estructura de datos. Las diversas operaciones que podemos realizar con DDL se basan en 3 ordenes distintas : CREATE, ALTER, DROP Algunas instrucciones DDL CREATE DATABASE : Crea una nueva base de datos y el archivo usado para almacenarla. CREATE TABLE : Crea una nueva tabla. ALTER TABLE : Modifica la definicin de una tabla alterando, agregando o eliminando columnas y restricciones. CREATE INDEX : Crea un ndice en una tabla determinada. DROP INDEX : Quita uno o varios ndices de la base de datos actual. DROP TABLE : Quita la definicin de una tabla y todos sus datos, ndices y restricciones. DML (Data Manipulation Language) El subconjunto de Sql dedicado a la manipulacin de datos. Es el ms conocido. Su finalidad no es actuar sobre la estructura de datos sino sobre los datos contenidos en ellas SELECT , INSERT , UPDATE , DELETE , FOR , FROM TOP OUTPUT : Devuelve filas insertadas, actualizadas o eliminadas a la aplicacin que realiza la llamada como parte de la instruccin INSERT, UPDATE o DELETE. WITH : Especifica un conjunto de resultados o vista con nombre temporal definidos en el mbito de una instruccin SELECT, INSERT, UPDATE o DELETE. DCL (Data Control Language) Es la parte menos conocida de de Sql , siendo la finalidad controlar el acceso a datos denegando y otorgando privilegios sobre los objetos existentes. COMMIT : Guarda los trabajos realizados en las transacciones ROLLBACK : Restaura la base de datos al estado original desde el comando COMMIT pasado en las transacciones SAVEPOINT : establecer un punto en que es posible un ROLLBACK. SAVE TRANSACTION : Establece un punto de almacenamiento dentro de una transaccin

Vous aimerez peut-être aussi