# Lenguaje de manipulación de datos

Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje proporcionado por los sistemas gestores de bases de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Bases de Datos del Sistema Gestor de Bases de Datos.
El lenguaje de manipulación de datos más popular hoy en día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

## SQL

En SQL, el lenguaje de manipulación de datos comprende las sentencias de cambio de datos de SQL, las cuales modifican los datos almacenados pero no el esquema ni los objetos de la base de datos. La manipulación de objetos persistentes de la base de datos, por ejemplo, tablas o procedimientos almacenados, a través de las sentencias de esquema de SQL, en lugar de los datos almacenados en ellos, se considera parte de un lenguaje de definición de datos (DDL) separado. En SQL, estas dos categorías son similares en su sintaxis detallada, tipos de datos, expresiones, etc., pero distintas en su función general.

## Elementos del lenguaje de manipulación de datos
### SELECT

La sintaxis básica de select es la siguiente utilizando el estándar de SQL:
donde se sustituye la palabra columna por el nombre del campo a consultar y la palabra tabla por el nombre de la tabla que contiene el campo mencionado.
Aunque a menudo se considera parte del DML, la sentencia SQL SELECT es estrictamente un ejemplo de DQL. Cuando se añaden manipuladores de datos FROM o WHERE a la sentencia SELECT la sentencia se considera entonces parte del DML.

### Insert

La estructura básica para la sentencia insert utilizando el estándar de SQL es la siguiente:
Tomando como ejemplo si se tuviera una tabla llamada 'usuario' con los campos de tipo cadena de caracteres (nombre, apellidos, edad, carrera), donde se inserta los valores que se encuentran en después de la palabra values, los valores se insertan en el orden correspondiente a como se hizo la llamada de los campos, los valores van separados por comas, las comillas dobles indican que se está insertando datos de tipo cadena de caracteres.

### Delete

Para eliminar los registros de una tabla usamos el comando "delete":
La ejecución del comando indicado en la línea anterior borra TODOS los registros de la tabla.
Si queremos eliminar uno o varios registros debemos indicar cuál o cuáles, para ello utilizamos el comando "delete" junto con la cláusula "where" con la cual establecemos la condición que deben cumplir los registros a borrar. Por ejemplo, queremos eliminar aquel registro cuyo nombre de usuario es 'Martín':
Si solicitamos el borrado de un registro que no existe, es decir, ningún registro cumple con la condición especificada, no se borrarán registros, pues no encontró registros con ese dato.

### Update

Para modificar uno o varios datos de uno o varios registros utilizamos "update" (actualizar).
Por ejemplo, en nuestra tabla "usuarios", queremos cambiar los valores de todas las claves, por "Sevilla":
Utilizamos "update" junto al nombre de la tabla y "set" junto con el campo a modificar y su nuevo valor.
El cambio afectará a todos los registros.
Podemos modificar algunos registros, para ello debemos establecer condiciones de selección con "where".
Por ejemplo, queremos cambiar el valor correspondiente a la clave de nuestro usuario llamado 'Martín', queremos como nueva clave 'Boca', necesitamos una condición "where" que afecte solamente a este registro:
Si no encuentra registros que cumplan con la condición del "where", ningún registro es afectado.
Las condiciones no son obligatorias, pero si omitimos la cláusula "where", la actualización afectará a todos los registros.
También se puede actualizar varios campos en una sola instrucción:
Para ello colocamos "update", el nombre de la tabla, "set" junto al nombre del campo y el nuevo valor y separado por coma, el otro nombre del campo con su nuevo valor.

## Clasificación de los DML

Se clasifican en dos grandes grupos de:
* lenguajes de consulta procedimentales
Lenguajes procedimentales. En este tipo de lenguaje el usuario da instrucciones al sistema para que realice una serie de procedimientos u operaciones en la base de datos para calcular un resultado final.
* lenguajes de consulta no procedimentales
En los lenguajes no procedimentales el usuario describe la información deseada sin un procedimiento específico para obtener esa información.