Você está na página 1de 19

DML (Lenguaje de

Manipulacin de Datos)
Unidad 2

2.1. INSERT

La sentencia INSERT permite agregar nuevas filas de datos a


las tablas existentes. Est sentencia tiene como sintaxis
genrica.

INSERT INTO tabla_o_vista [(lista_de_columnas)] VALUES


(lista_de_valores_de_datos)

Para insertar datos en una relacin, se especfica la tupla


que se desea insertar o se formula una consulta cuyo
resultado sea el conjunto de tuplas que se desea insertar.

Obviamente, los valores de los atributos de las tuplas que


se inserten deben pertenecer al dominio de los atributos.
De igual modo, las tuplas insertadas deben ser de la aridad
-nmero de atributos- correcta.

Un formato posible es:

INSERT INTO nombre-tabla VALUES (serie de valores);

El orden en el que se asignen los valores en la clusula VALUES tiene que


coincidir con el orden en que se definieron las columnas en la creacin del
objeto tabla, dado que los valores se asignan por posicionamiento
relativo.

Investigar:

Insertar mediante un SELECT

insert into libros (titulo,autor,codigoeditorial,precio)


select 'Harry Potter y la camara secreta','J.K. Rowling',codigo,54
from editoriales where domicilio like 'San Martin%'

2.1. UPDATE

En determinadas situaciones puede ser deseable cambiar un valor dentro


de una tupla, sin cambiar todos los valores de la misma. Para ello se
utiliza el comando UPDATE cuya sintaxis se muestra a continuacin.

UPDATE tabla SET {columna = expresin,} + [WHERE condicin;]

Se especificar en la clusula SET las columnas que se actualizarn y con


qu valores. La clusula WHERE indica las filas con las que se va a
trabajar, sin la clusula WHERE la actualizacin afectar a todas las filas
de la tabla.

Si se desea actualizar a nulos, se asignar el valor NULL.

UPDATE cliente SET observaciones = NULL;

UPDATE Departamento SET nombre = 'Crdito' WHERE


nombre = 'Credito';

La clausula WHERE permite SELECT anidados como en el


caso del INSERT o el DELETE.

2.2. DELETE

Borrar todas las filas que cumplan la condicin especificada en la


clusula WHERE. Si esta clusula se omite, se borrarn todas las filas de la
tabla. DELETE borra todas las filas de una tabla, pero no la definicin de
la tabla del diccionario. Esta es una diferencia con la sentencia DROP
TABLE, que elimina el contenido de la tabla y la definicin de la misma.

La sintaxis es la que sigue:

DELETE FROM tabla [WHERE condicin];

Obsrvese que cada comando DELETE slo opera sobre una relacin. Si se
desea borrar tuplas de varias relaciones es necesario utilizar una orden
DELETE por cada relacin.

Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las


siguientes consideraciones:

Solo podemos borrar datos de una nica tabla.

Cuando borramos datos de una vista, los estamos borrando tambin de la tabla.
Las vistas son solo una forma de ver los datos, no una copia.

Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY
como tabla maestra, si la tabla dependiente tiene registros relacionados la
sentencia DELETE fallar a no ser que la tabla hija contenga la sentencia ON
DELETE CASCADE.

TRUNCATE

TRUNCATE es una mejor alternativa a DELETE cuando se


desea borrar todo el contenido de la tabla. La sintaxis
es:

TRUNCATE TABLE nombre_tabla;

DELETE Vs TRUNCATE

Eliminar registros con la sentencia TRUNCATE es ms rpido que con la


sentencia DELETE, especialmente cuando la tabla tiene numerosos
disparadores, ndices y otras dependencias como por ejemplo integridad
referencial.

La sentencia TRUNCATE no es transaccional.

No se puede deshacer (ROLL BACK) y ocurre un error en casos de bloqueo


de tabla.

la tabla puede recrearse como una vaca con TRUNCATE TABLE, incluso si
los archivos de datos o de ndice se han corrompido

En MySQL el manejador de tablas reinicia el valor AUTO_INCREMENT


usado. Esto es cierto incluso para MyISAM y InnoDB

SELECT

La recuperacin de los datos en el lenguaje SQL se realiza mediante la


sentencia SELECT, seleccionar.

Esta sentencia permite indicar al SGBD la informacin que se quiere


recuperar. Esta es la sentencia SQL, ms habitual.

La sentencia SELECT consta de cuatro partes bsicas:

La clusula SELECT seguida de la descripcin de lo que se desea ver, los nombres


de las columnas a seleccionar. Esta parte es obligatoria.

La clusula FROM seguida de la especificacin de las tablas de las que se han de


obtener los datos. Esta parte es obligatoria.

La clusula WHERE seguida por un criterio de seleccin, una condicin. Esta parte
es opcional.

La clusula ORDER BY seguida por el criterio de ordenacin. Esta parte es


opcional.

Una primera aproximacin a la sintaxis de la sentencia SELECT puede


mostrarnos la siguiente expresin:

SELECT {* | {columna,}+} FROM {tabla,}+ [WHERE condicin] [ORDER BY


{expresinColumna [ASC | DESC],}+];

Seleccin de columnas

Las columnas a seleccionar se enumeran sin ms en la clusula SELECT.


Para seleccionar todas las columnas use el carcter asterisco ' *'.

Cuando se consulta una base de datos, los nombres de las columnas se


usan como cabeceras de presentacin. Si ste resulta demasiado largo,
corto o crptico, puede cambiarse con la misma sentencia SQL de
consulta, creando un alias de columna.

Clusula FROM

La clusula FROM define las tablas de las que se van a seleccionar las
columnas.

Se puede aadir al nombre de las tablas el usuario propietario de las


mismas de la forma usuario.tabla. De esta manera podemos distinguir
entre las tablas de un usuario y otro.

Oracle siempre considera como prefijo el nombre del propietario de las


tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios
pueden tener tablas que se llamen igual sin que surjan conflictos.

Tambin se puede asociar un alias a las tablas para abreviar los nombres
de las tablas. Un ejemplo se puede ver en la sentencia SQL siguiente:

SELECT d.nombre "Nombre Departamento", d.ciudad "Ubicado en" FROM


departamento d

Un campo calculado o campo derivado es una expresin numrica y que


deber ser referenciada mediante un alias mediante el uso de la clusula
AS, en Oracle y MySQL est sentencia es opcional.

Restriccin y ordenacin de datos

La sentencia SELECT recupera todas las columnas o un subconjunto de


ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que
especifiquemos una condicin en la clusula WHERE.

Esta condicin regresa todas las filas que cumplen dicha condicional. La
complejidad del criterio de bsqueda es prcticamente ilimitada, y en l
se pueden combinar operadores de diversos tipos con funciones de
columnas, componiendo expresiones ms o menos complejas.

Condicin de bsqueda basada en una comparacin compuesta

Se puede utilizar el operador lgico OR en la clusula WHERE para mostrar


uno u otro dato que coincida.

Condicin de bsqueda basada en rango

La condicin BETWEEN indica los puntos extremos del


rango, por lo cual el resultado incluir por ejemplo a
todos los empleados cuyo salario est entre 2,500 y
5,000 pesos.

La condicin de pertenencia de un conjunto (IN)


comprueba si un valor de los datos se corresponde con
uno de los valores especificados en una determinada
lista, que en este caso est compuesta por slo dos
opciones.

Ejemplo: 'Chofer' y 'Secretaria'.

Clusula ORDER BY

En general, las filas de la tabla resultados de una consulta SQL, no estn


ordenadas por ningn criterio particular. Sin embargo podemos garantizar
que los resultados de la consulta queden ordenados utilizando la clusula
ORDER BY en la instruccin SELECT. La clusula ORDER BY est compuesta
por una lista de identificadores de columna segn los cuales hay que
ordenar los resultados, separados por comas.

ORDER BY se usa para especificar el criterio de ordenacin de la respuesta


a la consulta. Por defecto la ordenacin es ascendente, aunque se puede
especificar un orden descendente (DESC).

La ordenacin se puede establecer sobre el contenido de columnas o


sobre expresiones con columnas.

Ejemplo: Consulta de los empleados ordenado de manera descendente por


su salario y en caso de igualdad de salario, ordenado ascendentemente
por su nombre.

Clusula DISTINCT

Cuando se realiza una consulta sobre una tabla en la que se extrae


informacin de varias columnas, puede ocurrir que, si no incluimos la/s
columna/s que forman la clave principal, obtengamos filas repetidas en la
respuesta.

Si este comportamiento es no satisfactorio podemos utilizar la clusula


DISTINCT para eliminar las filas duplicadas obtenidas como respuesta a
una consulta.

Você também pode gostar