Referencia de comandos SQL

En este capítulo se incluye información sobre la lista de comandos SQL:

SELECT

INSERT INTO

UPDATE

DELETE

Sentencia Select

Sintaxis

SELECT [ALL|DISTINCT]
expresión [ AS
nombre ] [, …]
[ FROM tabla
[ WHERE condición ]

[ GROUP BY columna [, …] ]

[ HAVING condición [, …] ]

[ UNION select ]

[ ORDER BY columna [ ASC | DESC ] [, …] ]

Entradas

expresión

Nombre de una columna de una tabla o una expresión.

nombre

Especifica otro nombre de columna o una expresión usando la cláusula AS. nombre no puede ser usado en la condición WHERE. Sí puede, sin embargo, ser referenciado en cláusulas ORDER BY, HAVING o GROUP BY asociadas.

table

Nombre de una tabla existente referenciada por la cláusula FROM.

condición

Expresión booleana que devuelva un resultado true or false. Ver la cláusula WHERE.

columna

Nombre de una columna de una tabla.

select

Una sentencia select con todas sus funcionalidades excepto la cláusula ORDER BY.

Salidas

rows

Conjunto completo de filas resultantes de la especificación de la consulta.

count

Número de filas devueltas por la consulta.

Sentencia SELECT simple

Sentencias select que sólo contienen nombres de columna y una única tabla:

SELECT fieldname FROM tablename

Ejemplos:

SELECT * FROM ANEXOS

– Seleccionar todos los registros de todas las columnas de ANEXOS.

SELECT CODIGO FROM ANEXOS
SELECT NOMBRE FROM ANEXOS
SELECT CODIGO, NOMBRE FROM ANEXOS

– Seleccionar todos los registros de las columnas especificadas de ANEXOS.

Sentencia Select conteniendo las palabras clave ALL y DISTINCT

Sentencias select que contienen palabras claves cuantificadores. Si no se especifican palabras claves, se tomará ALL por defecto.

SELECT DISTINCT fieldname FROM tablename
SELECT ALL fieldname FROM tablename

Ejemplos:

SELECT ALL * FROM ANEXOS

– Seleccionar todos los registros de todas las columnas de ANEXOS.

SELECT DISTINCT * FROM ANEXOS

– Seleccionar los registros de todas las columnas de ANEXOS, quitando aquellos que tengan valores duplicados en las mismas.

SELECT ALL CODIGO FROM ANEXOS
SELECT ALL NOMBRE FROM ANEXOS
SELECT ALL CODIGO, NOMBRE FROM ANEXOS

– Seleccionar todos los registros de las columnas especificadas de ANEXOS.

SELECT DISTINCT CODIGO FROM ANEXOS
SELECT DISTINCT NOMBRE FROM ANEXOS
SELECT DISTINCT CODIGO, NOMBRE FROM ANEXOS
SELECT DISTINCT SUM(CODIGO) FROM ANEXOS

– Seleccionar los registros con valores distintos en las columnas especificadas de ANEXOS.

Sentencia select con expresiones aritméticas

Los operadores aritméticos manipulan operandos numéricos.

  • (unario): Hace positivo el operando.
    Ejemplo:
SELECT +3 FROM ANEXOS;

– (unario): Niega el operando.
Ejemplo:

SELECT -CODIGO FROM ANEXOS;

+: Suma de números.
Ejemplo:

SELECT CODIGO + 200 FROM ANEXOS;

–: Resta de números.
Ejemplo:

SELECT CODIGO - 100 FROM ANEXOS;

*: Multiplicación de números.
Ejemplo:

SELECT CODIGO * 5 FROM ANEXOS;

/: División de números.
Ejemplo:

SELECT CODIGO / 10 FROM ANEXOS;

Más ejemplos:

SELECT NUM_ANEXOS1 + 10 - NUM_ANEXOS2 FROM LIBROS
SELECT NUM_ANEXOS1 + 10, NUM_ANEXOS2 +10 FROM LIBROS
SELECT CODIGO +10-20/2 *100 FROM ANEXOS
SELECT CODIGO +(10-20)/2 *(100 +2) FROM ANEXOS

Cláusula WHERE

La cláusula WHERE en sentencias SELECT es usada para especificar los criterios de selección basados en una condición de búsqueda.

SELECT <select list> FROM <table reference> WHERE <search condition>
Operadores de comparación

Los operadores de comparación son usados en condiciones que comparan una expresión con otra. El resultado de la comparación puede ser TRUE o FALSE.

=: Igual que.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO = 15;

<>: Distinto de.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO <> 15;

>: Mayor que.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO > 15;

<: Menor que.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO < 15;

>=: Mayor o igual que.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO >= 15;

<=: Menor o igual que.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE CODIGO <= 15;

Más ejemplos:

SELECT NOMBRE FROM ANEXOS WHERE NOMBRE <= 'jack';

SELECT CODIGO FROM ANEXOS WHERE NOMBRE = 'jack';

SELECT CODIGO FROM ANEXOS WHERE NOMBRE < 'jack';

Los operadores de comparación pueden ser usados también en campos de tipo cadena.

Operadores lógicos

Operadores lógicos que manipulan el resultado de condiciones.

NOT: Devuelve TRUE si la condición siguiente es FALSE. Devuelve FALSE si es TRUE.
Ejemplo:

SELECT * FROM ANEXOS WHERE NOT (CODIGO = 10)

AND: Devuelve TRUE si las dos condiciones componentes son TRUE. Devuelve FALSE si alguna es FALSE.
Ejemplo:

SELECT * FROM ANEXOS WHERE CODIGO=10 AND NOMBRE='test'

OR: Devuelve TRUE si alguna de las condiciones componentes son TRUE. Devuelve FALSE si ambas son FALSE.
Ejemplo:

SELECT * FROM ANEXOS WHERE CODIGO=10 OR NOMBRE='test'

Más ejemplos:

SELECT NOMBRE FROM ANEXOS WHERE (NOMBRE <= ‘jack’ AND  CODIGO  15) OR (CODIGO=10 AND NOMBRE='test')

SELECT NOMBRE FROM ANEXOS WHERE (NOMBRE <= ‘jack’ OR CODIGO  15) AND (CODIGO=10 OR NOMBRE='test')
Sub Query

Una condición de búsqueda puede incluir una sub consulta. El grado y cardinalidad de la sub consulta puede ser 1. Las sub consultas no pueden tener cláusulas GROUP BY O HAVING.

Ejemplos:

SELECT * FROM ANEXOS WHERE CODIGO = (SELECT CODIGO FROM IDIOMAS WHERE NOMBRE ='Test')

SELECT * FROM ANEXOS WHERE NOMBRE = (SELECT NOMBRE FROM IDIOMAS WHERE CODIGO =20)
Predicado BETWEEN

Mayor que o igual y menor que o igual entre dos límites.

Ejemplos:

SELECT * FROM ANEXOS WHERE CODIGO BETWEEN 30 AND 50;

SELECT * FROM ANEXOS WHERE NOT (CODIGO BETWEEN 10 AND 20);
Predicado LIKE(%, _ Y \)

El predicado LIKE busca cadenas que coincidan con un patrón determinado. Este patrón es especificado por una cadena en la que el signo _ y el signo % pueden tener un significado especial.

%: Busca coincidencia con cualquier cadena de cero o más caracteres.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE NOMBRE LIKE 'ab%cd'

_: Busca coincidencia con cualquier carácter único.
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE NOMBRE LIKE 'ab_cd'

ESCAPE: Escape es interpretado de forma literal, útil cuando se desea buscar cadenas que contengan un tanto por ciento (%) o un carácter de subrayado (_).
Ejemplo:

SELECT NOMBRE FROM ANEXOS WHERE NOMBRE LIKE 'ab\_cd%' ESCAPE '(\)'

Más ejemplos:

SELECT campo1 FROM tabla1 WHERE cadenaCampo1 LIKE '%Valor%'

– Devolverá todas las cadenas que contengan la cadena “Valor”.

SELECT campo1 FROM tabla1 WHERE cadenaCampo1 LIKE 'ab_cd'

– Devolverá aquellas cadenas que tengan 5 caracteres que empiecen por ab y terminen en cd.

SELECT fieldname1 FROM tablename1 WHERE stringfieldname1 LIKE 'ab\%cd%'

– Devolverá todas las cadenas que empiecen por ab%cd.

SELECT fieldname1 FROM tablename1 WHERE stringfieldname1 LIKE 'ab\_cd%'

– Devolverá todas las cadenas que empiecen por ab_cd.

SELECT fieldname1 FROM tablename1 WHERE stringfieldname1 LIKE 'ab\\cd%'

– Devolverá todas las cadenas que empiecen por ab\cd.

SELECT fieldname1 FROM tablename1 WHERE stringfieldname1 NOT LIKE 'ab\\cd%'

– Devolverá todas las cadenas que no empiecen por ab\cd.

Predicado NULL

Busca valores nulos. Este es el único operador que puede ser usado para buscar valores nulos.

Ejemplos:

SELECT * FROM ANEXOS WHERE CODIGO IS NOT NULL;

SELECT * FROM ANEXOS WHERE CODIGO IS NULL;
Predicado de comparación cuantificada

Compara el valor de cada valor en una lista o en una lista resultante de una consulta. Debe ir precedido de =, !=, >, <, =. Evalúa FALSE si la consulta no devuelve filas.

Ejemplos:

SELECT * FROM ANEXOS WHERE CODIGO >= ALL (SELECT CODIGO FROM IDIOMAS);

SELECT * FROM ANEXOS WHERE CODIGO = SOME (SELECT CODIGO FROM IDIOMAS);
Predicado EXISTS

Devuelve TRUE si una sub-consulta retorna al menos una fila.

SELECT * FROM EMP WHERE EXISTS (SELECT ENAME FROM EMP WHERE MGR IS NULL);

SELECT * FROM EMP WHERE NOT EXISTS (SELECT ENAME FROM EMP WHERE MGR IS NULL);
Predicado IN

Comprueba si el valor es igual a cada valor de una lista o de una lista resultante de una consulta.

SELECT * FROM ANEXOS WHERE CODIGO IN (10, 20);

SELECT * FROM ANEXOS WHERE CODIGO NOT IN (10,20);

SELECT * FROM ANEXOS WHERE CODIGO IN (SELECT CODIGO FROM IDIOMAS);

SELECT * FROM ANEXOS WHERE CODIGO NOT IN (SELECT CODIGO FROM IDIOMAS);
Nota
Esta cláusula no es funciona con cláusulas multi-tabla.

Funciones de agregado

Realizan un cálculo sobre un conjunto de valores y devuelven un solo valor.
SUM: Devuelve la suma de todos los valores los valores de la expresión numérica. Solamente puede utilizarse con columnas numéricas.

Ejemplo:

SELECT SUM(CODIGO) FROM ANEXOS

AVG: Devuelve el promedio de los valores de un grupo. Solamente puede utilizarse con columnas numéricas.

Ejemplo:

SELECT AVG(CODIGO) FROM ANEXOS

COUNT: Devuelve el número de valores de un grupo.

Ejemplo:

SELECT COUNT(CODIGO) FROM ANEXOS

COUNT(*): Devuelve el número de filas seleccionadas.

Ejemplo:

SELECT COUNT(*) FROM ANEXOS

MAX: Devuelve el valor máximo de la expresión.

Ejemplo:

SELECT MAX(NOMBRE) FROM ANEXOS

MIN: Devuelve el valor mínimo de la expresión.

Ejemplo:

SELECT SUM(CODIGO) FROM ANEXOS
Uso de las palabras clave DISTINCT y ALL

Las palabras clave opcional DISTINCT puede ser usada con SUM, AVG y COUNT para eliminar valores duplicados antes de que una función de agregado sea ejecutada (el valor por defecto es ALL).

Ejemplos:

SELECT SUM(DISTINCT CODIGO) FROM ANEXOS

SELECT COUNT(ALL CODIGO) FROM ANEXOS

SELECT SUM(DISTINCT CODIGO), COUNT(ALL NOMBRE), AVG(DISTINCT CODIGO) FROM ANEXOS

Más ejemplos:

SELECT DISTINCT SUM(num_anexos1), AVG(codigo), MAX(nombre) FROM LIBROS

– Quita registros duplicados obtenidos en el resultado.

SELECT SUM(CODIGO) + AVG(CODIGO) FROM ANEXOS

ORDER BY

Cláusula que especifica el orden utilizado en las columnas devueltas en una instrucción SELECT. No es posible usarla en sub-consultas.
Argumentos:

ASC (por defecto): Indica que los valores de la columna especificada se deben ordenar de manera ascendente, desde el valor más bajo al más alto.

Ejemplo:

SELECT * FROM ANEXOS ORDER BY CODIGO

DESC (por defecto): Indica que los valores de la columna especificada se deben ordenar de manera descendente, desde el valor más alto al más bajo.

Ejemplo:

SELECT * FROM ANEXOS ORDER BY CODIGO DESC

Más ejemplos:

SELECT * FROM ANEXOS WHERE CODIGO = 1 AND CODIGO =2 ORDER BY NOMBRE

– Orden ascendente por defecto.

SELECT * FROM ENCUADER WHERE CODIGO = 1 AND CODIGO =2 ORDER BY CODIGO, LOCAL, NOMBRE

– Orden ascendente por defecto.

SELECT * FROM ANEXOS WHERE CODIGO = 1 AND CODIGO =2 ORDER BY NOMBRE   DESC, CODIGO ASC

SELECT * FROM ANEXOS WHERE CODIGO = 1 AND CODIGO =2 ORDER BY NOMBRE   DESC, LOCAL ASC, CODIGO DESC

GROUP BY

Agrupa un conjunto de filas seleccionado en un conjunto de filas de resumen de acuerdo a los valores de una o más columnas o expresiones.

Especifica los grupos en los que han de ser situadas las filas seleccionadas y, si en la cláusula SELECT se han incluido funciones de agregado, calcula un valor de resumen para cada grupo.

Ejemplos:

SELECT campo1, AVG(campo2) FROM tabla1 GROUP BY campo1

SELECT campo1, campo2 FROM tabla1 GROUP BY campo1,campo2

SELECT COUNT(campo1), SUM(campo2) FROM tabla1 GROUP BY campo1,campo2

HAVING

Especifica una condición de búsqueda para un grupo o un agregado. Habitualmente es usado con la cláusula GROUP BY.

Ejemplos:

SELECT campo1, AVG(campo2) FROM tabla1 GROUP BY campo1 HAVING AVG(campo2) > 1000

SELECT campo1, AVG(campo2) FROM tabla1 GROUP BY campo1 HAVING AVG(campo2) > 1000 AND campo1=20

SELECT * FROM tabla1 GROUP BY campo1 HAVING campo1 = 20 AND campo2 = ‘abc’

Combinación de WHERE ,GROUP BY,HAVING ,ORDER BY

Ejemplos:

SELECT SUM(CUSTID) AS sumcus FROM salestb WHERE salesperson > ‘c’ GROUP BY status HAVING sumcus > 124 ORDER BY status

Operaciones con conjuntos

Puede ser llevadas a cabo a través de operadores de conjuntos, éstos combinan el resultado de dos consultas en una única colección.

UNION

Devuelve todas las filas con valores diferentes de cada consulta.

Ejemplos:

(SELECT distinct campo1 FROM tabla1) UNION (SELECT distinct campo2 FROM tabla2)
UNION ALL

Devuelve todas las filas seleccionadas por cada consulta, incluyendo todas las duplicadas.

Ejemplos:

(SELECT SAL FROM EMP WHERE JOB = 'CLERK'  UNION SELECT SAL FROM EMP WHERE JOB = 'ANALYST');

Operación de renombrado

Alias de columna

Se trata de un nombre alternativo para sustituir el nombre de columna en un conjunto resultante de una consulta.

Ejemplos:

SELECT AVG(CODIGO) AS "Código promediado" FROM ANEXOS

SELECT SUM(NOMBRE) AS anexo,  CODIGO FROM ANEXOS GROUP BY CODIGO HAVING anexo > 10

SELECT con múltiples tablas

La cláusula SELECT que contenga múltiples tablas devolverá producto cruzado de tablas.

Ejemplo:

SELECT * FROM ANEXOS, IDIOMAS

Uso del operador .

Usando el operador . el nombre de la tabla puede ser usado para referenciar una columna.

Ejemplo:

SELECT ANEXOS.CODIGO, IDIOMAS.NOMBRE FROM ANEXOS, IDIOMAS;

Sentencia INSERT INTO

Syntax

INSERT INTO tabla

{ VALUES ( valor1 [, …] ) | SELECT consulta }

También es posible especificar las columnas para las que queramos insertar datos:

INSERT INTO tabla [ ( columna [, …] ) ]

{ VALUES ( valor1 [, …] ) | SELECT consulta }

Entradas

table: El nombre de una tabla existente.

column: El nombre de una columna de la tabla.

valor1: El valor asignado a la columna correspondiente.

Consulta: Una consulta (query) válida. La lista resultante de la SELECT de esta sub consulta debe tener el mismo número de columnas que la lista resultante de la sentencia INSERT.

Salidas

INSERT #

Mensaje retornado y se insertaron filas. # es el número de filias insertadas.

Formas de sentencias INSERT

INSERT INTO ANEXOS VALUES (47,'Nuevo');

Inserta un nuevo registro con los valores 47 para el primer campo y “Nuevo” para el segundo.

INSERT INTO ANEXOS (CODIGO) VALUES (44);

Inserta un nuevo registro con el valor 44 para el CODIGO y el resto de los campos por defecto.

INSERT INTO ANEXOS (NOMBRE) VALUES ('Nuevo');

Inserta un nuevo registro con el valor “Nuevo” para el NOMBRE y CODIGO con valor auto-incrementado si así está declarado.

INSERT INTO ANEXOS (CODIGO,NOMBRE) VALUES (47,'Nuevo');

Inserta un nuevo registro con el valor 47 en el CODIGO y el valor “Nuevo” en el NOMBRE.

INSERT INTO IDIOMAS SELECT * FROM ANEXOS;

Inserta todos los registros de ANEXOS en IDIOMAS. Inserta solamente si el grado de la sub-consulta es igual al grado de los IDIOMAS.

INSERT INTO IDIOMAS SELECT CODIGO, NOMBRE FROM ANEXOS;

Inserta todos los registros de ANEXOS en IDIOMAS. Inserta solamente si el grado de la sub-consulta es igual al grado de IDIOMAS. La sub-consulta solamente puede contener los campos seleccionados.

INSERT INTO IDIOMAS (CODIGO, NOMBRE) SELECT CODIGO, NOMBRE FROM ANEXOS;

Inserta las columnas especificadas en la sub-consulta a las columnas especificadas de la tabla.

INSERT INTO IDIOMAS (CODIGO, NOMBRE) SELECT CODIGO, NOMBRE FROM ANEXOS WHERE CODIGO BETWEEN 10 AND 20;

Inserta registros basados en la condición de la sub-consulta (cláusula WHERE).

Notas de uso

El mismo nombre de columna no debería aparecer más de una vez en el argumento de columna.

El número de columnas especificado en el argumento de columna debe ser igual al número de valores proporcionados. Si se omite el argumento columna, el número de valores debe ser igual al grado de la tabla.

La expresión para cada columna debería ser del tipo de datos adecuado, pues no se hará una corrección automática del tipo.

Las columnas de la lista de destino pueden ser listadas en cualquier orden.

Sentencia UPDATE

Sintaxis

UPDATE– Reemplaza valores de columnas en una tabla.

<DESTUPDATE tabla SET columna = expresión [, …]

[ WHERE condición ]

Entradas

tabla: Nombre de una tabla existente.

columna: Nombre de una columna de la tabla.

SET: Indica que las columnas siguientes se les asignarán valores específicos.

Si se omite el nombre de una de las columnas de la tabla en la cláusula SET, el valor de la misma permanecerá inalterado.

Expresión: Una expresión o valor válidos para asignar a la columna.

condición: Una condición de búsqueda.

WHERE restringe las filas actualizadas a aquellas en las que la condición especificada es TRUE. Si se omite la cláusula WHERE, el driver actualizará todas las filas de la tabla.

La condición de búsqueda en la sentencia UPDATE puede ser uno de los predicados siguientes:

  • Predicado de comparación.
  • Predicado BETWEEN.
  • Predicado IN.
  • Predicado LIKE.
  • Predicado NULL.
  • Predicado de comparación cuantificada.
  • Predicado EXISTS.

Salidas

UPDATE #

Mensaje devuelto si el resultado ha sido satisfactorio. El carácter # significa el número de filas actualizadas. Si # es igual a 0, querrá decir que no se actualizó fila alguna.

Formas de la sentencia UPDATE

La sentencia UPDATE básica actualiza todos los registros de una tabla con nuevos valores.

Ejemplos:

UPDATE ANEXOS SET CODIGO = 10, NOMBRE = 'Testado'

Actualiza todos los registros solamente si ninguno de los campos es la clave primaria. Si no, retorna error.

UPDATE ANEXOS SET NOMBRE = 'Testado'

Actualiza solamente los campos especificados, el resto permanecerán inalterados.

Con expresiones aritméticas

Las operaciones aritméticas usan operandos numéricos.

Ejemplos:

UPDATE LIBROS SET NUM_ANEXOS1 = NUM_ANEXOS2 +10

Evalúa la expresión aritmética y la actualiza en todos los registros.

Cláusula WHERE y sub consultas

Busca registros basándose en una condición y actualiza solamente aquellos que cumplan la condción. La condición de búsqueda pude tener cualesquiera predicados y sub consultas.

  • Predicado de comparación.
  • Predicado BETWEEN.
  • Predicado IN.
  • Predicado LIKE.
  • Predicado NULL.
  • Predicado de comparación cuantificada.
  • Predicado EXISTS.

Ejemplos:

UPDATE ANEXOS SET CODIGO=23 WHERE CODIGO = 22;

UPDATE ANEXOS SET CODIGO= 10 WHERE CODIGO = (SELECT CODIGO FROM IDIOMAS WHERE NOMBRE = 'test');

UPDATE ANEXOS SET NOMBRE= NULL;

UPDATE ANEXOS SET NOMBRE ='upd' WHERE CODIGO = 1500;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO > 3000;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO = 20;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO <= 1500;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO  3000;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO BETWEEN 30 AND 50;

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE  NOMBRE IN ('SMITH', 'WARD');

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE CODIGO >= ALL (SELECT CODIGO FROM IDIOMAS WHERE CODIGO = 20);

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE NOMBRE = SOME (SELECT NOMBRE FROM IDIOMAS WHERE CODIGO > 10);

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE EXISTS (SELECT CODIGO FROM IDIOMAS WHERE CODIGO = 10);

UPDATE ANEXOS SET NOMBRE = 'upd' WHERE NOMBRE LIKE 'a_a%'

Notas de uso

La misma columna no puede aparecer más de una vez en la cláusula SELECT.

Si no se especifica ninguna cláusula WHERE serán actualizadas todas las filas de la tabla.

Sentencia DELETE

Borra filas de una tabla.

Sintaxis

DELETE FROM tabla [WHERE condición]

Entradas

tabla: Nombre de una tabla existente.

condición: Se trata de una consulta SQL de selección que retorna las filas a borrar.

En el capítulo dedicado a la sentencia SELECT encontrarás información sobre la cláusula WHERE.

La condición de búsqueda en la sentencia DELETE puede ser uno de los predicados siguientes:

  • Predicado de comparación.
  • Predicado BETWEEN.
  • Predicado IN.
  • Predicado LIKE.
  • Predicado NULL.
  • Predicado de comparación cuantificada.
  • Predicado EXISTS.

Salidas

DELETE count

Mensaje retornado si los elementos son borrados satisfactoriamente. “count” es el número de filas borradas. Si es 0, querrá decir que no se ha borrado ninguna fila.

Formas de la sentencia DELETE

Forma básica: Borrar todos los registros de una tabla:

Ejemplos:

DELETE FROM ANEXOS;

Cláusula WHERE, sub consultas

Busca registros basándose en una condición y borra solamente aquellos que la cumplen. La condición de búsqueda puede tener cualesquiera predicados y sub consultas.

Ejemplos categorizados basados en predicados:

Predicado LIKE
DELETE FROM ANEXOS WHERE NOMBRE LIKE  '%Val%'

Encontrará todas las cadenas que incluyan la cadena "Val".

DELETE FROM ANEXOS WHERE NOMBRE LIKE 'ab_cd'

Encontrará todas las cadenas que tengan 5 caracteres que comiencen por "ab" y terminen en "cd".

DELETE FROM ANEXOS WHERE NOMBRE LIKE 'ab\%cd%'

Encontrará todas las cadenas que comiencen por "ab%cd".

DELETE FROM ANEXOS WHERE NOMBRE LIKE 'ab\_cd%'

Encontrará todas las cadenas que comiencen por "ab_cd".

DELETE FROM ANEXOS WHERE NOMBRE LIKE 'ab\\cd%'

Encontrará todas las cadenas que comiencen por "ab\cd".

DELETE FROM ANEXOS WHERE NOMBRE NOT LIKE 'ab\\cd%'

Encontrará todas las cadenas que no comiencen por "ab\cd".

Predicado de comparación
DELETE FROM ANEXOS WHERE CODIGO = 1500;

DELETE FROM ANEXOS WHERE CODIGO > 3000;

DELETE FROM ANEXOS WHERE CODIGO = 20;

DELETE FROM ANEXOS WHERE CODIGO <= 1500;

DELETE FROM ANEXOS WHERE CODIGO >= 3000;
Operadores lógicos
DELETE FROM ANEXOS WHERE CODIGO = 10 AND CODIGO = 20;

DELETE FROM ANEXOS WHERE CODIGO = 10 OR CODIGO = 20;
Predicado BETWEEN
DELETE FROM ANEXOS WHERE CODIGO BETWEEN 30 AND 50;

DELETE FROM ANEXOS WHERE CODIGO NOT BETWEEN 3 AND 5;
Predicado IN
DELETE FROM ANEXOS WHERE CODIGO IN (10,20);

DELETE FROM ANEXOS WHERE CODIGO NOT IN (10,20);
Predicado NULL
DELETE FROM ANEXOS WHERE CODIGO IS NOT NULL;

DELETE FROM ANEXOS WHERE CODIGO IS NULL;
Predicado de comparación cuantificada
DELETE FROM ANEXOS WHERE CODIGO >= ALL (SELECT CODIGO FROM IDIOMAS);

DELETE FROM ANEXOS WHERE CODIGO = SOME (SELECT CODIGO FROM IDIOMAS);
Predicado EXISTS
DELETE FROM ANEXOS WHERE EXISTS (SELECT CODIGO FROM IDIOMAS WHERE NOMBRE IS NULL);

Notas de uso

Si no se especifica ninguna cláusula WHERE, serán borradas todas las filas de la tabla.

results matching ""

    No results matching ""