El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft SQL Server. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordset y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos y crear consultas SQL de paso a través para manipular bases de datos remotas cliente-servidor.
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular bases de datos.
Al igual que los métodos de desplazamiento DAO, SQL proporciona comandos del lenguaje de definición de datos (DDL) y del lenguaje de manipulación de datos (DML). Aunque existen algunas áreas solapadas, los comandos DDL permiten crear y definir nuevas bases de datos, campos e índices, mientras que los comandos DML le permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
DDL
Las instrucciones DDL en SQL son expresiones generadas en torno a los siguientes comandos.
CREATE Utilizado para crear nuevas tablas, campos e índices.
DROP Utilizado para eliminar tablas e índices de la base de datos.
ALTER Utilizado para modificar tablas agregando campos o cambiando la definición de los campos.
DML
Las instrucciones DML son expresiones generadas en torno a los comandos siguientes.
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.
INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.
UPDATE Utilizado para modificar los valores de campos y registros específicos.
DELETE Utilizado para eliminar registros de una tabla de base de datos.
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. La siguiente tabla muestra las cláusulas que podemos utilizar.
Cláusulas
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros.
WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar.
GROUP BY Utilizada para separar los registros seleccionados en grupos específicos.
HAVING Utilizada para expresar la condición que debe satisfacer cada grupo.
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especificado.
Existen dos tipos de operadores en SQL: operadores lógicos y operadores de comparación.
Operadores lógicos
Los operadores lógicos se usan para conectar expresiones, normalmente dentro de una cláusula WHERE. Por ejemplo:
SELECT * from Mitabla WHERE condicion1 AND condicion2
Aquí el operador AND conecta las expresiones condicion1 y condicion2 para especificar que se deben cumplir las dos condiciones para satisfacer el criterio de selección. Los operadores lógicos son:
AND
OR
NOT
Operadores de comparación
Los operadores de comparación se usan para comparar valores relativos de dos expresiones con el fin de determinar la acción que debe ejecutarse. Por ejemplo:
SELECT * from Editores WHERE Id_de_editor = 5
Aquí el operador '=' especifica que sólo se seleccionarán los registros que tengan un campo_Id de editor con un valor de 5.
Los operadores de comparación se enumeran en la siguiente tabla.
Operadores
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
= Igual que
<> Distinto de
BETWEEN Utilizado para especificar un intervalo de valores
LIKE Utilizado en la comparación de un modelo
IN Utilizado para especificar registros de una base de datos
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. Por ejemplo, la función de agregado AVG devuelve el promedio de todos los valores de un campo determinado de un objeto Recordset. La siguiente tabla enumera las funciones dé agregado.
Funciones de agregado
AVG Utilizada para calcular el promedio de los valores de un campo determinado.
COUNT Utilizada para devolver el número de registros de la selección.
SUM Utilizada para devolver la suma de todos los valores de un campo determinado.
MAX Utilizada para devolver el valor más alto de un campo especificado.
MIN Utilizada para devolver el valor más bajo de un campo especificado.
Las instrucciones del lenguaje de manipulación de datos (o DML) SQL se utilizan para recuperar, actualizar, agregar o eliminar registros de tablas. Para estas tareas se admiten diversas instrucciones, pero la mayoría de ellas utilizan la estructura general de la consulta SELECT.
Utilizaremos la instrucción SELECT para recuperar registros de una base de datos en forma de un conjunto de registros, almacenándolos en un nuevo objeto Recordset. Posteriormente, nuestra aplicación puede manipular estos Recordset presentando, agregando, cambiando o eliminando registros según sea necesario. Nuestra aplicación también puede presentar y crear informes a partir de los datos.
SELECT suele ser la primera palabra de una instrucción SQL. La mayoría de las instrucciones SQL son SELECT o SELECT...INTO. Puede utilizar una instrucción SELECT en la propiedad SQL de un objeto QueryDef, en la propiedad RecordSource de un control de datos o como argumento para el método OpenRecordset. Las instrucciones SELECT no modifican los datos de la base de datos; sólo los recuperan.
La estructura general de la consulta SELECT es la siguiente:
SELECT listaCampos FROM nombresTablas WHERE condicionesBúsqueda GROUP BY listaCampos HAVING criterios ORDER BY listaCampos WITH OWNERACCESS OPTION
Cada una de estas instrucciones y cláusulas se describen en las siguientes secciones.
La consulta básica
La consulta SELECT más simple es:
SELECT * FROM nombre Tabla
Por ejemplo, la siguiente consulta SELECT devolverá todas las columnas de todos los registros de la tabla Empleados:
SELECT * FROM Empleados
El asterisco indica que se van a recuperar todas las columnas de la tabla o tablas deseadas. Podríamos especificar sólo algunas columnas. Cuando mostremos los datos de cada columna, aparecerán en el orden que se indica, así que podemos reordenar las columnas para aumentar su legibilidad:
SELECT [Nombre], [Apellido] FROM Empleados
Especificación del origen de los datos
Una instrucción SELECT siempre tendrá una cláusula FROM, indicando la tabla o tablas cuyos registros se extraerán.
Si el nombre del campo está incluido en dos o más tablas en la cláusula FROM, debe precederlo con el nombre de la tabla y el operador . (punto). En el ejemplo siguiente, el campo Departamento está en las tablas Empleados y Supervisores. La instrucción SQL selecciona Departamento de la tabla Empleados y NombreSuperv de la tabla Supervisores:
SELECT Empleados.Departamento, NombreSuperv
FROM Supervisores, Empleados
WHERE Empleados.Departamento = Supervisores.Departamento;
Cuando la cláusula FROM incluye más de una tabla no es importante el orden en el que aparecen.
Especificación de una tabla en una base de datos externa
Algunas veces necesitaremos hacer referencia a una tabla en una base de datos externa, a la que pueda conectarse el motor de base de datos Microsoft. Esto se consigue con la cláusula opcional IN. La cláusula IN aparece generalmente a continuación del nombre de una tabla en una cláusula FROM, pero también puede utilizarse en una cláusula SELECT INTO o INSERT INTO, donde la tabla de destino está en una base de datos externa.
Podemos utilizar IN para conectarnos a una sola base de datos externa a la vez.
En algunos casos, el argumento ruta de acceso se refiere al directorio que contiene los archivos de base de datos. Por ejemplo, cuando trabajamos con tablas de bases de datos Access, el argumento ruta de acceso especifica el directorio que contiene los archivos .accdb El nombre de archivo de la tabla deriva de los argumentos destino o expresión Tabla.
Para especificar una base de datos que no sea SQL, añadir un punto y coma (;) al nombre e incluirlo entre comillas simples (") o dobles (" "). Por ejemplo, son válidos:
'Access;'
— O bien —
También podemos utilizar la palabra clave DATABASE para especificar la base de datos externa. Por ejemplo, las dos líneas siguientes especifican la misma tabla:
SELECT * FROM Table IN "" [Access; DATABASE=C:\DBASE\DATA\SALES;]; SELECT * FROM Table IN "C:\DBASE\DATA\SALES" "Access;"
Alias de los nombres de columnas
Cuando se crea un objeto Recordset mediante una instrucción SELECT, los nombres de las columnas de la tabla se transforman en los nombres de objetos Field del Recordset. Si queremos tener nombres de columnas diferentes, utilizaremos la cláusula AS. El siguiente ejemplo utiliza el título "FDN" para nombrar la columna de fecha de nacimiento extraída de la tabla Empleados:
SELECT [Fecha de nacimiento] AS FDN FROM Empleados;
Cada vez que utilicemos consultas que devuelvan nombres de objeto Field ambiguos o duplicados, debemos utilizar la cláusula AS para proporcionar un nombre alternativo para el Field. El siguiente ejemplo utiliza el título "Cuenta principal" para nombrar el Field devuelto en el Recordset resultante:
SELECT COUNT(Id de empleado) AS [Cuenta principal] FROM Empleados;
Uso de variables Visual Basic en instrucciones SQL
En un programa Visual Basic, podemos crear una instrucción SELECT en nuestra aplicación concatenada con variables locales dentro de la instrucción, según se necesite para seleccionar, ordenar o filtrar los datos en su aplicación. Por ejemplo, si tenemos un control TextBox (TituloDeseado) que contiene el nombre de un Titulo y queremos seleccionar todos los libros de la tabla Titulos con este título, podemos crear una instrucción SQL que incluya el valor actual del TextBox. Observar que la consulta SQL incluye entre comillas simples (") el valor de TituloDeseado:
Set Rst = Db.OpenRecordset("SELECT * FROM Titulos " _ & " WHERE Titulo = "' & TituloDeseado.Text & )
;)
ResponderEliminar