sábado, 28 de diciembre de 2019

Serializar un archivo JSON

Comprendiendo la serialización

La serialización es el proceso de transformar un objeto en una forma que pueda persistir para ser almacenado  o transferido de un dominio de aplicación a otro. Al transformar el objeto, se serializa el objeto; cuando se lee de nuevo, se deserializa el objeto. Se puede serializar un objeto hacia un disco, una secuencia de memoria o hacia  una red. Dos formatos comunes para pasar  objetos entre sistemas son XML y JSON. 

Los objetos son serializados en XML o JSON antes de ser transferidos al cliente. El Framework de.NET tiene clases que admiten binarios, XML y JSON, e incluso podemos crear nuestra propia serialización personalizada.

Serializar un archivo JSON
Más fotos de este estilo.

sábado, 21 de diciembre de 2019

Cargar un datagrid de .Net con traducción de valores

Hay veces que tenemos en base de datos almacenados valores codificados y queremos realizar una pantalla que haga el mantenimiento de dicha tabla pero en vez de  mostrar los códigos deseamos mostrar su significado, pero no siempre existe una tabla con los significados para hacer INNER JOIN o no siempre conviene complicarse, es más sencillo hacerlo por código. 

Así por ejemplo tenemos la siguiente pantalla de mantenimiento de una tabla de la base de datos, pero queremos que en el campo Ambito en vez de R ponga Riesgo y en la columna Capa sustituya A por Av y 2 por  Ambos.

Cargar un datagrid de .Net con traducción de valores

sábado, 14 de diciembre de 2019

Parsear manualmente un archivo JSON con Visual Basic



Tenemos un archivo de entrada de tipo JSON y deseamos un listado de ciertas columnas, en este caso están marcadas con la etiqueta de comienzo de “operaciones” (marcada en rojo) :

{
     "
     settings ": {
                "
                campo0 ": ""
                "
                }
          "
     mappings ": {
          "
          operaciones ": {
                " campo1 ": "",
                " campo2 ": "",
                 ...
                 ...
                }       
           }
}

sábado, 7 de diciembre de 2019

Ficheros de extensión en PowerDesigner

Los archivos FilesExtensions (* .xem) nos permiten personalizar y ampliar un metamodelo de PowerDesigner para añadir nuestras necesidades de modelado exactas. Los ficheros de extensión nos permiten definir propiedades adicionales para objetos existentes o especificar tipos de objetos completamente nuevos, modificar la interfaz de PowerDesigner (reorganizar y agregar pestañas de hojas de propiedades, herramientas de Caja de herramientas y elementos de menú) y definir objetivos y opciones de generación adicionales.

Los archivos de extensión tienen extensión .xem y se encuentran en <dir_instalación> \Resource Files\Extended Model Definitions.

Las listas de archivos de extensión por tipo de modelo están disponibles en la aplicación  seleccionando Tools → Resources → Extensions <tipo de modelo>. 

Ficheros de extensión en PowerDesigner

sábado, 30 de noviembre de 2019

Encriptar las conexiones de acceso a base de datos del archivo App.config (Visual Basic. Net)

Muchas veces desarrollamos aplicaciones en las que hay que acceder a una base de datos a través de una cadena de conexión en la que aparece el usuario y la password, además dicha cadena es perfectamente consultable por cualquier desarrollador.

Esta incrustación de cadenas de conexión en el código de la aplicación puede producir vulnerabilidades en la seguridad y problemas de mantenimiento. Además, si la cadena de conexión cambia en algún momento, será necesario compilar de nuevo la aplicación. Por estas razones, se recomienda almacenar las cadenas de conexión en un archivo de configuración de la aplicación.


Encriptar las conexiones de acceso a base de datos del archivo App.config (Visual Basic. Net)
Más imágenes como esta aquí


sábado, 23 de noviembre de 2019

Modelo Conceptual de Datos, PowerDesigner.

Un Modelo Conceptual de Datos (CDM) representa la estructura de una base de datos,independiente de cualquier software o estructura de almacenamiento de datos. Describe entidades (cosas de importancia para una organización) y sus identificadores y otros atributos, junto con las relaciones y las herencias que los conectan.

En el siguiente diagrama conceptual, las entidades de Maestro y Estudiante heredan atributos de la entidad padre persona. Las dos entidades secundarias están vinculadas con una relación de uno a muchos (un maestro tiene varios estudiantes pero cada  estudiante tiene solo un maestro principal). 

Modelo Conceptual de Datos


Podemos ampliar el esquema anterior añadiendo asignaturas y lecciones, un profesor puede impartir una o varias asignaturas, cada asignatura está compuesta por varias lecciones. Los alumnos se inscriben en una o varias asignaturas y asisten a cero o varias lecciones.

Las cardinalidades quedarían de este forma:

Un maestro puede enseñar varias materias y un tema puede ser enseñado por varios maestros (muchos a muchos).

Un maestro puede enseñar varias lecciones y una lección es enseñada por una sola profesor (uno a muchos).

Un estudiante asiste a múltiples lecciones y una lección es seguida por múltiples estudiantes (muchos a muchos).

Un estudiante estudia múltiples materias y un tema puede ser estudiado por estudiantes múltiples (muchos a muchos). 

Con estas nuevas especificaciones, el nuevo modelo conceptual quedaría como el mostrado en la figura inferior.

Modelo Conceptual de Datos, PowerDesigner.


Objetos del modelo conceptual


A continuación se listan los objetos utilizados en un modelo conceptual y sus respectivos símbolos.


Objeto
Símbolo
Descripción
Dominio
No tiene
Rango de valores en los que dicho valor es válido.
Dato
No tiene
Pieza elemental de información.
Entidad








Persona, lugar, cosa o concepto que es relevante para el negocio.
Atributo de entidad
No tiene
Pieza elemental de información asociada a una entidad.
Identificador
No tiene
Uno o más atributos de entidad, cuyos valores identifican de manera única
cada ocurrencia de la entidad.
Relación
Conexión o relación con nombre entre entidades  (metodología ER de modelización).

Herencia
Relación que define una
entidad como caso especial de una entidad más general.

  
Asociación






Conexión o asociación con nombre entre entidades.

Enlace de Asociación
No tiene
Contacto que conecta una asociación a una entidad.


Crear un diagrama conceptual con PowerDesigner

Podemos crear un diagrama conceptual en PowerDesigner Haciendo click en File → New Model

PowerDesigner NewModel


Aparece un cuadro de diálogo donde en Model Types seleccionamos Conceptual Data Model

Conceptual Data Model Power Designer

Al pulsar Ok nos aparece la pantalla del modelo en blanco, en el panel de la derecha aparecen los símbolos que podemos añadir a nuestro modelo.

Conceptual Data Model Power Designer

Ahora podemos crear nuestro modelo eligiendo objetos del panel derecho y arrastrándolos hacia el panel central. Los objetos principales serán las entidades y las relaciones entre estas. Para colocar una entidad arrastramos y hacemos click sobre la parte del diagrama donde deseamos ponerla.  Si arrastramos una relación sobre una entidad y hacemos doble click, genera una relación sobre ella misma (relación 1) , si pinchamos sobre una entidad y arrastramos a una segunda entidad, generamos una relación entre ambas. (relación 2).


Relaciones entre tablas en un modelo conceptual.

Cuando terminemos nuestro diagrama conceptual, lo guardamos  con file → Save  o Save as... como un archivo de tipo .cdm.

Guardar modelo conceptual PowerDesigner


sábado, 9 de noviembre de 2019

Photoshop: poner un sol artificial en una foto

Hay veces que un sol queda mucho mejor en una foto, siempre y cuando esté en la posición adecuada y la foto esté hecha de forma correcta. Sin embargo no siempre está presente el sol en nuestra foto.

Photoshop: poner un sol artificial en una foto
Bosque encantado. Para ver más fotos como esta, haz click aquí

sábado, 2 de noviembre de 2019

Como instalar la red neuronal Microsoft Cognitive Toolkit (CNTK)


Microsoft Cognitive Toolkit, anteriormente conocida como CNTK, es un kit de herramientas de código abierto para el aprendizaje profundo distribuido de grado comercial. CNTK permite al usuario realizar y combinar fácilmente tipos de modelos, como DNN, redes neuronales convolucionales (CNN) y redes neuronales recurrentes (RNN / LSTM). CNTK implementa el descenso de gradiente estocástico (SGD, retro-propagación de error) aprendiendo con diferenciación automática y paralelización en múltiples GPU y servidores.
Permite aprovechar la inteligencia artificial dentro de conjuntos de datos masivos a través del aprendizaje profundo al proporcionar escalas, velocidad y precisión con calidad comercial y compatibilidad con los lenguajes de programación y algoritmos que ya usa. 
Para comenzar he creado una máquina virtual grande  (Hice una prueba con 30 Gb y me quedé sin disco nada más empezar ahora he puesto 90 Gb) y Windows 2008 Server.
La instalación automática me dio este error:

Como instalar la red neuronal  Microsoft Cognitive Toolkit (CNTK)

sábado, 19 de octubre de 2019

Ecualizar una imagen con Python

Introducción


Python es un lenguaje de programación interpretado con una sintaxis que favorece un código legible. Soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. También posee licencia de código abierto. 
Una de sus grandes virtudes es la posibilidad de automatizar procesos que se hacen de manera mecánica. Reducirlos a unas líneas de código que podremos insertar donde necesitemos, ahorrando mucho tiempo que podremos aprovechar para otras tareas más interesantes.

Dentro de los lenguajes de programación, Python destaca por su sencillez, legibilidad y precisión de sintaxis. Es un lenguaje de muy alto nivel, por lo que con pocas líneas de código es posible programar tareas bastante complejas. Este lenguaje es práctico en cuanto  al uso del código.
 En este ejemplo de utilización de Python ecualizaremos una imagen con unas pocas líneas de código.
La ecualización del histograma de una imagen es una transformación para obtener un histograma con una distribución uniforme. Es decir, que exista el mismo número de pixels para cada nivel de color del histograma 
El resultado de la ecualización maximiza el contraste de una imagen sin perder información.
Antes de nada nos descargaremos a nuestro equipo Anaconda, que es una distribución gratuita y de código abierto de los lenguajes de programación Python y R para aplicaciones relacionadas con ciencia de datos y aprendizaje automático. 

Pasos prácticos


Descargamos anaconda de 


Una vez instalado Anaconda veremos una pantalla similar a esta.

Panel de entrada de Anaconda

sábado, 12 de octubre de 2019

Un primer proyecto de Machine Learning con Python paso a paso, el “Hola Mundo”

En este artículo vamos a realizar un proyecto de Machine Learning con Python. Prepararemos datos con pandas, ajustaremos y evaluaremos modelos con scikit-learn La mejor manera de aprender el aprendizaje automático es diseñando y completando pequeños proyectos. Python puede ser intimidante al principio, es un lenguaje interpretado popular y potente. A diferencia de R, Python es un lenguaje completo y una plataforma que se puede usar tanto para investigación como desarrollo y de sistemas de producción.

Un primer proyecto de Machine Learning con Python paso a paso, el “Hola Mundo”
Mujer trabajando en un CPD
También hay muchos módulos y bibliotecas para elegir, que ofrecen múltiples formas de realizar cada tarea. Podemos sentirnos abrumados. La mejor manera de comenzar a usar Python en ML (Machine Learning) es realizar un proyecto completo.

Un proyecto de ML  puede no ser lineal, pero tiene varios pasos bien conocidos:

1. Definición del problema
2. Preparar datos
3. Evaluar algoritmos
4. Mejorar los resultados
5. Muestra de Resultados

Con esto, tendremos una plantilla para utilizar en proyectos sucesivos.

sábado, 5 de octubre de 2019

Primeros pasos con Oracle SQL Developer

Acerca de SQL Developer


Oracle SQL Developer es un entorno de desarrollo integrado (IDE) para trabajar con SQL sobre bases de datos Oracle. Oracle ofrece este producto gratis. Oracle SQL Developer admite pestañas automáticas, información del código, coincidencia de corchetes y coloreado de sintaxis para PL / SQL. 

Oracle SQL Developer es una aplicación gráfica útil para realizar tareas básicas de exploración, creación, edición y eliminación de objetos de una base de datos; ejecuta sentencias y scripts SQL; edita y depura código PL/ SQL; también manipula y exporta (descargar datos; y visualiza y crea informes.
Lo podemos descargar en la página de Oracle SQL developer. Se conecta utilizando la autenticación estándar de Oracle. Una vez conectado, permite realizar operaciones sobre objetos en la base de datos.

También permite conectarse a esquemas de MySQL y bases de datos de terceros (que no sean Oracle), como Microsoft SQL Server, Sybase Adaptive Server, Microsoft Access e IBM DB2. Permite ver metadatos y datos en estas bases de datos; y migrar de datos desde las bases de datos anteriormente descritas hasta Oracle. 

Interfaz de usuario de SQL Developer


La ventana de SQL Developer generalmente utiliza el lado izquierdo para la navegación para buscar y seleccionar objetos, y el lado derecho para mostrar información sobre los objetos seleccionados.

La figura muestra la ventana principal:

Primeros pasos con Oracle SQL Developer

sábado, 28 de septiembre de 2019

Modelado de datos

Un modelo de datos es una representación de la información consumida y producida por un sistema. El modelado de datos implica analizar los objetos de datos presentes en un sistema y las relaciones entre ellos. Los modelos de datos pueden ser conceptuales, lógicos y físicos y permiten analizar y modelar un sistema en todos los niveles de abstracción.

Modelo conceptual de datos 


Un Modelo Conceptual de Datos (CDM) representa la estructura lógica de un dato independientemente de cualquier software o estructura de almacenamiento de datos. Proporciona una representación formal de los datos necesarios para dirigir una empresa o negocio. Puede contener objetos de datos que aún no están implementados en una base de datos.

Modelado de Datos
Minifiguras trabajando en equipo.

sábado, 14 de septiembre de 2019

Exportar una tabla de Access a MySQL

Tenemos una base de datos en Access y necesitamos importar los datos desde Access que están en Windows a una base de datos MySQL que está en un servidor Linux.  Nos enfrentamos a dos dificultades importantes:

La primera es exportar datos de Access a MySQL, he buscado en internet y he encontrado algunos trucos, pero suelen ser métodos complejos que implican descargar en nuestro equipo controladores ODBC y luego hay que configurarlos, las pruebas que hice no fueron exitosas.

La otra dificultad es que el destino no se encuentra en el mismo equipo sino en un servidor web con Linux.

La solución final que tomé y yo creo que aunque no es directa es relativamente sencilla: consiste en exportar los datos en un archivo XML y luego recuperarlos en MySQL importando el archivo XML. Pero hay un problema que veremos más adelante: el formato.

Para exportar en XML basta con entrar en Access y en la pestaña datos externos elegir Archivo XML

Exportar datos desde Access


Exportar una tabla de  Access a MySQL

sábado, 31 de agosto de 2019

Paso de valores y formularios en WordPress

Antes de comenzar conviene tener clara la diferencia entre un tema hijo y un tema desde cero.

Temas hijo y temas desde cero

En primer lugar hay dos conceptos diferentes: Un tema hijo y un tema desde cero. Para hacer un tema desde cero sólo necesitamos crear una subcarpeta en themes ponerle el nombre de nuestro tema desde cero y añadir un archivo llamado style.css que puede estar también vacío y contener sólo estas líneas.

/*
Theme Name: Nombre tema desde cero
Theme URI: https://wordpress.org/themes/temacero/
Text Domain: temacero
*/

El inconveniente de un tema desde cero es que perdemos todos los formatos, cabeceras, estilos, etc. La ventaja es que es muy ligero y podemos hacer con él lo que queramos.

Nota: los nombres de los archivos y las URL´s son muy importantes en Wordpress,  así por ejemplo si creamos uno llamado page-contacto.php  Wordpress lo buscará si no encuentra nada en page.php  y lo mostrará si ponemos en el navegador  una url del estilo localhost/wordpress/contacto  si el nombre del archivo es diferente no funcionará)

si ponemos localhost/wordpress en el navegador, se  abrirá la página principal page.php pero no mostrará nuestro código del archivo anterior , para que lo muestre hay que forzarlo poniendo localhost/wordpress/contacto.

Otra alternativa son los temas hijo, en este caso copiamos el tema completo y lo renombramos como tema-child, en style.css tenemos que añadir una línea indicando quien es el tema padre.

@import url("../tema-padre/style.css");

La ventaja de este método es que conservamos todos los estilos y funcionalidades, el inconveniente, es que ocupa más.

No me voy a extender más porque hay mucha información en la web sobre cómo hacer temas hijo o temas desde cero, lo que nos interesa es una vez tenemos nuestro tema como añadirle funcionalidad y de eso ya sí que no hay nada en la web.

En nuestro caso hemos optado por un tema hijo para no perder funcionalidad.

Formularios en un tema hijo de WordPress

Lo primero que realizaremos será añadir un formulario a la página de inicio, para ello en WordPress elegiremos como página de inicio la home. Para ello tendremos que tener una página en blanco llamada Home en pages.

Paso de valores y formularios en WordPress

sábado, 17 de agosto de 2019

Depurar Temas y Plugins de WordPress Con Eclipse y Xdebug

Hay veces que no basta con las herramientas de WordPress y necesitamos depurar su código interno para hacer lo que queramos y tener más control sobre nuestra página web o blog.

Un depurador remoto, es un programa instalado en el lado del servidor que intercepta todo el código PHP que es ejecutado. Entre otras funciones, tiene la capacidad de parar la ejecución del código a mitad y pasar información a un cliente externo, como un Entorno de Desarrollo Integrado (IDE, Integrated Development Environment). mostraremos cómo usar el depurador remoto XDebug y el IDE de código abierto Eclipse juntos para procesar el código de WordPress y resolver errores. 

En la mayoría de sitios que he visitado para buscar información te cuentan la chorrada de que en el archivo wp-config.php hay que poner la entrada define ('WP_DEBUG' = , true); y a correr, como si todo el mundo supiéramos ya como montar un entorno de desarrollo y depuración para WordPress. No ha sido fácil encontrar información de cómo hacer esto, pero esto es lo que he conseguido después de buscar mucho y probar. Esta guía es para Linux, pero se puede aplicar prácticamente igual (excepto los comandos de Linux) para instalarlo sobre Windows.

El entorno de desarrollo

Se supone que ya tenemos instalado un servidor Apache/PHP/MySQL y una instalación de WordPress. Si no es así, aquí están las instrucciones para hacerlo.

Instalar Xdebug

Para instalar XDebug en el servidor tenemos que abrir un terminar con permisos de root y escribir.

sudo apt-get install php-xdebug

Reiniciamos el servidor apache, para ello basta con pulsar el botón restart del servidor apache de la carpeta Manage Servers del panel de administración de Bitnami-LAMP.  Si no vemos este panel, lo podemos arrancar desde el terminal de Linux con:

sudo  cd /opt/wordpress

y luego escribimos

./manager-linux-x64.run

Esto nos abrirá esta pantalla en la que en la pestaña Manage server podemos poner en marcha MySQL y el servidor Apache.

Reiniciar el servidor Apache desde Bitnami

sábado, 3 de agosto de 2019

Escritura de consultas en SQL


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. 

Escritura de consultas en SQL

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 & )