Índice de contenido
Odbc Driver... 3 Configuración...3 Referencia de comandos SQL...5 Sentencia SELECT...5 Sintaxis...5 Entradas... 5 Salidas... 6Sentencia SELECT simple...6
Sentencia Select conteniendo las palabras clave ALL y DISTINCT...6
Sentencia select con expresiones aritméticas...7
Cláusula WHERE...8 Operadores de comparación...8 Operadores lógicos...9 Sub Query...9 Predicado BETWEEN...10 Predicado LIKE(%, _ Y \)...10 Predicado NULL...11
Predicado de comparación cuantificada...11
Predicado EXISTS...11
Predicado IN...11
Funciones de agregado...12
Uso de las palabras clave DISTINCT y ALL...12
ORDER BY... 13
GROUP BY y HAVING...13
GROUP BY...13
HAVING... 14
Combinación de WHERE ,GROUP BY,HAVING ,ORDER BY...14
Operaciones con conjuntos...14
UNION... 14
UNION ALL...14
Operación de renombrado...15
Alias de columna...15
SELECT con múltiples tablas...15
Uso del operador ...15
Sentencia INSERT INTO...15
Syntax... 15
Salidas... 16
Formas de sentencias INSERT...16
Notas de uso...17
Sentencia UPDATE...17
Sintaxis... 17
Entradas... 17
Salidas... 18
Formas de la sentencia UPDATE...18
Con expresiones aritméticas...18
Cláusula WHERE y sub consultas...19
Notas de uso...20
Sentencia DELETE...20
Sintaxis... 20
Entradas... 20
Salidas... 21
Formas de la sentencia DELETE...21
Cláusula WHERE, sub consultas...21
Odbc Driver
Se trata del driver de acceso a datos Velneo. Satisface los siguientes estándares ODBC: - Driver ODBC Version: 3.00
- ODBC Version: 3.52
- ODBC API Conformance Level 1 - ODBC SQL Conformance Core Level - ODBC SQL Interface Core Level - ANSI SQL-92 Entry Level
No se podrá instalar Velneo ODBC Driver ni en Windows XP ni en WIndows 2003. Si lo hacemos, el programa de instalación mostrará un aviso y abortará la instalación.
No se podrá instalar la versión de 64 bits de Velneo ODBC Driver en sistemas operativos de 32 bits. Si lo hacemos, el programa de instalación mostrará un aviso y abortará la instalación. No debemos instalar un componente de Velneo de 64 bits en una carpeta donde tengamos instalados compoonentes de 32 bits ni viceversa.
Configuración
En la configuración del driver debemos definir los siguientes elementos:
• Data source name: Nombre por el que se conocerá la conexión ODBC y que será usado en los distintos clientes del driver ODBC.
• Description: Campo opcional que permite documentar el uso del driver.
• Username: Nombre de usuario necesario para acceder a la ejecución de la instancia. Debemos asegurarnos de que el grupo de usuarios al que pertenezca al usuario tenga activada la propiedad Puede ejecutar proyectos de datos con vDataClient y que tenga asignados permisos para ejecutar la instancia de datos con la que se quiera establecer la conexión.
• Password: Contraseña del usuario necesaria para acceder a la ejecución de la instancia.
• Port: Si no lo hemos indicado en Hostname, podremos indicar aquí el puerto de acceso.
No debemos definir el puerto en ambos.
• Database: Instancia del proyecto de datos a cuyos datos queremos acceder.
Una vez configurados los campos anteriores podemos hacer uso del botón "Get" que nos devuelve el listado de instancias a las que el usuario tiene acceso en ese servidor.
Una vez seleccionada la instancia podemos pulsar el botón "Ok" y la conexión a base de datos quedará configurada.
El botón "Test" nos permite comprobar que la conexión está establecida.
Pulsando el botón "Diagnostics" podremos ver los mensajes de sistema que devuelve el driver. Una ayuda rápida en inglés se desplegará al pulsar el botón "Help".
Cuando definimos una conexión a una instancia además de las tablas del proyecto en curso, tendremos disponibles las instancias de datos de todos los proyectos heredados, y por tanto, se podrá acceder a la información de todas las tablas disponibles heredadas.
De esta forma será más sencillo acceder a la información y facilita la configuración de conexiones del driver, minimizando las tareas de administración.
Notas importantes:
Hasta la versión 7.17 no se podían vincular tablas de Velneo desde MS Access, pero sí es posible a partir de la versión 7.18.
En la versión 7.18 solamente se podrán vincular tablas que tengan índices de clave única, es decir, que cuando hay índices en la tabla que no sean de tipo clave única, no se podrá realizar la vinculación.
A partir de la versión 7.19, para conectarnos a un vServer con protocolo VATPS activado que produce excepciones (por ejemplo cuando nos conectamos a un vServer con un certificado autogenerado), debemos añadir la excepción en un fichero.
En Windows hay que añadirlo a la rama de registro: HKEY_CURRENT_USER\Software\Velneo\SslExceptions
Añadiendo como claves alfabéticas (REG_SZ), las VRL’s correspondientes, con la clave vacía, por ejemplo:
subdominio.dominio.com:9999
En Linux la ruta del fichero es (en el usuario que lanza el componente): $HOME/.config/Velneo/SslExceptions.conf
Por ejemplo, si queremos ignorar las excepciones cuando nos conectamos a localhost:6900, el fichero quedaría de la siguiente manera:
[General]
localhost:6900=""
En OSX, el fichero estará en ~/Library/Preferences y se llamará com.velneo.SslExceptions.plist.
Referencia de comandos SQL
En este capítulo se incluye información sobre la lista de comandos SQL.
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:
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
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 (_).
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 =, !=, >, <, <= o >=. 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
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 y HAVING
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
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
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-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. [ 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:
Actualiza todos los registros solamente si ninguno de los campos es la clave primaria. Si no, retorna error.
UPDATE ANEXOS 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 < 30;
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 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 < 30; 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 = SOME (SELECT CODIGO FROM IDIOMAS);
Predicado EXISTS
DELETE FROM ANEXOS WHERE EXISTS (SELECT CODIGO FROM IDIOMAS WHERE NOMBRE IS NULL);