martes, 2 de diciembre de 2014

DDL y DML ¿qué significan?

Cuantas veces uno, en la búsqueda del conocimiento de algo nos encontramos, sobre todo en IT, con los famosos acrónimos de cada cosa, donde no solo tenemos que aprender las nuevas tecnologías y técnicas, sino que a eso, tenemos que sumar en nuestro pequeño diccionario de rubro, la gran mayoría de acrónimos que nos rodean el cual no se hará detalle del mismo pero si su MENCION.

Googleando un poco (nuestro gran aliado), estuve buscando cual es el significado y me base en la primer entrada que apareció, un texto simple, casi en formato ASCII en los tiempos que corren del HTML5 y me llamo la atención.

Lenguaje de definición de datos (DDL: Data Definition Language):Sencillo lenguaje artificial para definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Aparte suele poseer dos subconjuntos de instrucciones:   Lenguaje de definición del almacenamiento de los datos (DSDL: Data Storage Definition Language): permite especificar características físicas de la base de datos (volúmenes y archivos donde van a ser almacenados los datos, etc).   Lenguaje de control de datos (DCL: Data Control Language): encargado del control y seguridad de los datos (privilegios y modos de acceso, etc).   Lenguaje de manipulación de datos (DML: Data Manipulation Language): Lenguaje artificial de cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Las aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programación (C, Cobol, ...) insertando en el código fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que serán afectados por las sentencias del lenguaje. Un DML puede tener o no procedimientos, según sea necesario especificar ademáns cónmo deben obtenerse esos datos. Los DML con procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin procedimientos son conocidos también como declarativos.

Entonces acá viene mi pregunta, en mi interior, vos que buscas sobre lo nuevo, sobre lo que cuesta entender. ¿Entendiste? Si lograste hacerlo realmente te felicito, pero para la gran mayoría de los mortales seguramente leer esto, simplemente genere una confusión adicional a la ya gran tarea de la comprensión, sin tomar en cuenta algunos errores ortográficos. (utilicen el buscador si quieren saber su procedencia)

Con esto no se pretende simplificar las cosas, pero si, explayarlas de forma correcta y contundente, para de esta forma comprender con una base sólida y consistente. Sin más explicaciones, pongo simplemente el texto anterior por ser la primer entrada del blog, y de esta forma también exponer mi forma de pensar con mi tan apreciado rubro del cual cada día disfruto y enfrento, igualmente sacando lo bueno de lo malo, utilizare los anteriormente mencionado para de esta forma explayar a nivel de DBA, todo lo que esto significa desde sus cimientos.

“Lenguaje de definición de datos (DDL: Data Definition Language):Sencillo lenguaje artificial para definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Aparte suele poseer dos subconjuntos de instrucciones:

En el caso de SQL las reglas son bastante claras, la gran mayoría de motores de base de datos utilizan prácticamente un estándar (aunque existen salvedades), empecemos con lo que esto se refiere.

DDL (Data Definition Languaje) > Lenguaje de Definición de Datos.

El lenguaje de definición de datos, tal cual se comenta en parte en el texto anterior, sirve para Crear, Modificar, Borrar y Truncar el contenido de una base de datos.

Para ello en el caso de SQL se utilizan las siguientes sentencias específicas para manipular las estructuras de la base de datos.

CREATE (se utiliza para crear objetos en la base de datos), por ejemplo:

CREATE TABLE MI_TABLA (
                CAMPO_NUMERICO INT,
                CAMPO_ALFANUMERICO NVARCHAR(50)
)

Lo anteriormente mencionado crea una tabla con nombre MI_TABLA, y crea dos columnas en la misma, una llamada CAMPO_NUMERICO con valores enteros y otra llamada CAMPO_ALFANUMERICO con 50 posiciones y UTF-16 (esto permite utilizar el ASCII extendido, el cual se puede utilizar para ingresar alfabetos especiales)

ALTER (se utiliza para modificar objetos en la base de datos)

La sentencia ALTER, es una sentencia MUY UTILIZADA para quienes no utilizan las ayudas WYSWYG de los IDE para los DBA. Este tal cual se explica, te permite, modificar tablas, campos, funciones, triggers, procedimientos almacenados, y todo lo que corresponda a estructura de la base de datos, tiene un uso muy amplio y con características diferentes dependiendo que es lo que se modifica, el siguiente ejemplo mostrara un uso sencillo sobre una tabla, en la que se agregara un campo, se modificara el tipo de valor de otro campo, y se eliminara un campo.

Creación de un campo sobre una tabla ya existente:

ALTER TABLE MI_TABLA
ADD CAMPO_AGREGADO INT

Modificación de un campo sobre una tabla ya existente, modificando el tipo de valor de entero a formato alfanumérico UTF-8 de 20 posiciones:

ALTER TABLE MI_TABLA
ALTER COLUMN CAMPO_AGREGADO VARCHAR(20)

Eliminación de un campo sobre una tabla ya existente:

ALTER TABLE MI_TABLA
DROP COLUMN CAMPO_AGREGADO

Con el ejemplo anterior, simplemente eliminamos el campo que creamos inicialmente.

Más adelante veremos muchos más usos que se pueden realizar con la sentencia ALTER.

DROP (se utiliza para borrar objetos de cualquier índole en una base de datos)

Prestando atención a la sentencia DROP, vemos como en el último ejemplo mencionado en ALTER, esta sentencia aparece. DROP borra objetos de la estructura, sirve para borrar tablas, campos, procedimientos almacenados, funciones, etc... Al igual que ALTER, si utilizamos comandos por consola esta sentencia es utilizada, no con la misma frecuencia que la anterior.

DROP tiene un funcionamiento sencillo y una estructura de escritura bien simple ‘DROP [TIPO ESTRUCTURA] NOMBRE’, veamos sus ejemplos más sencillos:

DROP TABLE MI_TABLA
DROP PROCEDURE MI_PROCEDIMIENTO
DROP VIEW MI_VISTA


Se puede apreciar el uso de la sentencia DROP en los ejemplos anteriores, inclusive en el ejemplo de ALTER TABLE > COLUMN donde utiliza el mismo formato.

TRUNCATE (se utiliza para borrar todos los elementos de una tabla, sin posibilidad de filtro y generando un LOG simple, esto último es muy importante a niveles de performance)

TRUNCATE muchas veces es confundido con la sentencia DELETE que inclusive no corresponde a la familia de sentencias (DDL), ya que ambas tienen un resultado final SIMILAR, pero  funcionan de manera muy diferente, TRUNCATE no permite filtros, es mucho más rápido y utiliza menos el LOG a la hora de ejecutarse y aparte libera el espacio que estaba utilizando dicha tabla, mejorando el mantenimiento de la base de datos.

El ejemplo de TRUNCATE es muy sencillo:

TRUNCATE TABLE MI_TABLA

Hasta aquí en forma general se explicó DDL, en los siguientes párrafos se explicara DML en forma genérica, ya que es lo que mayoritariamente utilizamos en nuestro entorno. DSDL y DCL serán explicadas en otras entradas ya que se necesitan de otras herramientas para poder comprenderlas en profundidad.

“Lenguaje de manipulación de datos (DML: Data Manipulation Language): Lenguaje artificial de cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Las aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programación (C, Cobol, ...) insertando en el código fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que serán afectados por las sentencias del lenguaje. Un DML puede tener o no procedimientos, según sea necesario especificar ademáns cónmo deben obtenerse esos datos. Los DML con procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin procedimientos son conocidos también como declarativos.””

Esta parte es la famosa SELECT *, me encanta esa definición por la gran profundidad que tiene, y por el gran potencial que podemos obtener en base a esto, pero en esta ocasión empezaremos por lo más simple y en parte a lo que explica la definición anterior, DML (Data Manipulation Languaje) > Lenguaje de Manipulación de Datos, es todo lo que corresponde a bucear el contenido de las tablas, muchas veces se confunde a un motor de base de datos, con una especie de muchas planillas de cálculos, o se lo considera una especie de ACCESS con flechas, pero es mucho más que eso, la manipulación de datos que permite SQL simplemente está limitada por la imaginación, y haciendo mención a lo primero que puse, es mucho más que un SELECT * .

Vamos a describir en forma básica, los ejemplos más comunes que son SELECT, INSERT, UPDATE, DELETE. Estas sentencias son muy utilizadas para el manejo de la información, cada una con sus respectivas técnicas y formas de uso tanto para obtener la información acomodada, como así también en forma eficiente.

SELECT (Utilizada para obtener registros/datos desde los objetos de la base de datos)

La sentencia SELECT puede utilizar, literales, tablas, vistas, funciones entre los campos, etc… Por otra parte permite el uso de cruces, condiciones, agrupamientos, condiciones de agrupamientos, pivotes, etc… Tiene un gran potencial y es en la mayoría de los casos, la gran utilizada para generar resultados, o result-set, su estructura es SELECT CAMPOS FROM MI_TABLA

 INSERT (Utilizada para insertar registros en una tabla)

 La sentencia INSERT, soporta inserción estática o por medio de selecciones, su estructura más simple es INSERT INTO MI_TABLA (CAMPOS) VALUES ('DATO'), su comportamiento es lineal, el mismo se lo puede utilizar dentro de transacciones, condicionales, bucles, etc...

UPDATE (Utilizada para modificar registros ya existentes en una tabla)

La sentencia UPDATE, soporta modificaciones completas, con condiciones, o por medio de cruces de datos, en el caso de los cruces de datos es algo más compleja de utilizar y puede derivar a mayores catástrofes, pero bien utilizado optimiza el tiempo en forma considerable, su estructura más simple es UPDATE MI_TABLA SET CAMPO = 'DATO', esto anterior pondrá el valor DATO en CAMPO en todos los registros de la tabla MI_TABLA.

DELETE (Utilizada para borrar registros en una tabla)

La sentencia DELETE, soporta eliminación de registros completa, con condiciones y también por medio de cruces, tal cual en el caso de UPDATE, utilizar DELETE con cruce de datos, simplifica los tiempos pero dicha sentencia tiene que ser muy bien estudiada antes de su ejecución, su estructura más simple es DELETE MI_TABLA, esto anterior elimina todos los registros de la tabla MI_TABLA.

Hasta aquí repasamos los ejemplos más simples de DDL y DML, dejaremos los ejemplos más prácticos para la siguiente entrada, donde se empezara a hablar en más detalle, el uso de los mismos con su entorno y ejemplos.

Hasta la próxima.




No hay comentarios:

Publicar un comentario