Los Ordenadores

Resumen de Instrucciones del Lenguaje SQL Cursos Tutorial SQL

Resumen de Instrucciones del Lenguaje SQL

Sentencias SQL en Visual Basic

logo sql

 I n d i c e de los temas tratados:
1. Introducción

2. ¿Qué es SQL?
3. La sentencia select y la cláusula from
4. Programación SQL desde el control data
5. Eliminación Dinámica De Registros
6. Contar Registros
7. Grupos De Registros
8. Combinación De Datos

  1. Introducción
    Visual Basic es un lenguaje de programación de propósito general, con una gran potencia en toda su estructura. Su implementación en el sistema operativo Windows y sus herramientas visuales, han hecho de este lenguaje un líder indiscutible en lo que a desarrollo de aplicaciones se refiere. Con la versión 3.0. se implementó la gestión de bases de datos a muy alto nivel, pudiendo gestionar bases de datos de tipo Access, Paradox, dBASE, FoxPro, etc.

Este paso de gigante ha hecho de Visual Basic uno de los lenguajes favoritos por los desarrolladores de aplicaciones de bases de datos, en especial el hecho de que Visual Basic implemente el lenguaje SQL, uno de los más potentes y sencillos lenguajes de bases de datos.

  1. ¿Qué es sql?

SQL (Structured Query Language ó Lenguaje Estructurado de Consulta), es un lenguaje bastante sencillo, principalmente orientado a bases de datos y, sobre todo, al manejo de consultas. Visual Basic incorpora esta extensión junto a nuestras bases de datos, obteniendo potentes resultados. De hecho, las consultas que se realizan en Access, están desarrolladas o basadas en este lenguaje, por lo que su implementación en Visual Basic no es complicada.

El objetivo principal de SQL es la realización de consultas y cálculos con los datos de una o varias tablas.

Consejos Para Escribir Mandatos En SQL
He aquí una serie de consejos (a veces normas), que hay que tener en cuenta a la hora de escribir mandatos SQL en nuestras aplicaciones en Visual Basic:
1. Un mandato en SQL se expresa en una cadena de caracteres o String.
2. Dicho mandato se puede escribir en la propiedad RecordSource de un control Data (más adelante, podremos prescindir del control Data para realizar nuestras consultas), con el fin de crear una consulta en la interfaz.
3. Los nombres de los campos especificados (y de las tablas), que contengan más de una palabra, han de encerrarse entre corchetes ([nombre]). Como norma general, se suelen escribir siempre entre corchetes.
4. Para especificar un determinado campo de una determinada tabla, se ha de escribir primero el nombre de la tabla, un punto y, a continuación, el nombre del campo
(nombre_tabla.nombre_campo).
5. Al especificar una expresión de búsqueda, si ésta se refiere a una expresión de caracteres, éstos han de encerrarse entre comillas simples (‘expresión_a_buscar’).
6. Para especificar una fecha en una búsqueda, ésta debe encerrarse entre signos numeral
(#fecha#) en Access, Dbase X, etc., y entre comillas simples (‘fecha’) para bases Sql Server, Informix, etc.
7. Si se utiliza la propiedad RecordSource del control Data, para crear nuestras consultas en SQL, tras introducir el mandato SQL (siempre como una expresión de cadena) es necesario refrescar el control Data (control_data.Refresh).

Mandato Sql Estándar

El lenguaje SQL está compuesto por una serie de sentencias y de cláusulas muy reducidas en número, pero muy potentes en efectividad. De entre todas las palabras, existen cuatro que son las más utilizadas, estando compuestas por una sentencia y por tres cláusulas:

SELECT lista_campos FROM lista_tablas [WHERE criterios [ORDER BY lista_campos]]

  1. La sentencia select y la cláusula from

La sentencia SELECT «selecciona» los campos que conformarán la consulta, es decir, que establece los campos que se visualizarán o compondrán la consulta. El parámetro ‘lista_campo’ está compuesto por uno o más nombres de campos, separados por comas, pudiéndose especificar también el nombre de la tabla a la cual pertenecen, seguido de un punto y del nombre del campo correspondiente. Si el nombre del campo o de la tabla está compuesto de más de una palabra, este nombre ha de escribirse entre corchetes ([nombre]). Si se desea seleccionar todos los campos de una tabla, se puede utilizar el asterisco (*) para indicarlo.

Una sentencia SELECT no puede escribirse sin la cláusula FROM. Una cláusula es una extensión de un mandato que complementa a una sentencia o instrucción, pudiendo complementar también a otras sentencias. Es, por decirlo así, un accesorio imprescindible en una determinada máquina, que puede también acoplarse a otras máquinas. En este caso, la cláusula FROM permite indicar en qué tablas o en qué consultas (queries) se encuentran los campos especificados en la sentencias SELECT. Estas tablas o consultas se separan por medio de comas (,), y, si sus nombres están compuestos por más de una palabra, éstos se escriben entre corchetes ([nombre]).

He aquí algunos ejemplos de mandatos SQL en la estructura SELECT…FROM…:

SELECT nombre,apellidos FROM clientes;

Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’.

SELECT clientes.nombre, producto FROM clientes, productos;

elecciona el campo ‘nombre’ de la tabla ‘clientes’, y el campo ‘producto’ de la tabla productos.

Hay que tener en cuenta que si dos tablas poseen el mismo nombre de campo (un ‘nombre’ de cliente y un ‘nombre’ de producto, hay que especificar también la tabla a la cual pertenece dicho campo, ya, que de lo contrario, seleccionaría ambos nombres).

SELECT pedidos.* FROM pedidos;

Selecciona todos los campos de la tabla ‘pedidos’.

SELECT * FROM pedidos;

Selecciona todos los campos de la tabla ‘pedidos’.

SELECT nombre, apellidos, telefono FROM clientes;

Selecciona los campos ‘nombre’, ‘apellidos’ y ‘telefono’ de la tabla ‘clientes’. De esta manera obtenemos una agenda telefónica de nuestros clientes.

SELECT [codigo postal] FROM [tabla morosos];

Selecciona el campo ‘codigo postal’ de la tabla ‘tabla morosos’.

Claúsula Where

La claúsula WHERE es opcional, y permite seleccionar qué registros aparecerán en la consulta (si no se especifica aparecerán todos los registros). Para indicar este conjunto de registros se hace uso de criterios o condiciones, que no es más que una comparación del contenido de un campo con un determinado valor (este valor puede ser constante (valor predeterminado), el contenido de un campo, una variable, un control, etc.).

He aquí algunos ejemplos que ilustran el uso de esta cláusula:

SELECT * FROM clientes WHERE nombre=’ALFREDO’;

Selecciona todos los campos de la tabla ‘clientes’, pero los registros de todos aquellos clientes que se llamen ‘ALFREDO’.

SELECT * FROM abonados WHERE provincia=’MADRID’ OR provincia=’VALENCIA OR provincia=’BARCELONA’;

Selecciona todos los campos de la tabla ‘abonados’, pero los registros de todos los abonados de las provincias de ‘MADRID’, ‘VALENCIA’ o ‘BARCELONA’.

SELECT nombre, apellidos FROM abonados WHERE edad>=18;

Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla abonados, escogiendo a aquellos abonados que sean mayor de edad (a partir de 18 años).

SELECT * FROM abonados WHERE edad>=18 AND edad<=45;

Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.

SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45;

Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.

SELECT * FROM diario WHERE fecha=#7/1/97#;

Selecciona los apuntes de ‘diario’ realizados el 1 de Julio de 1.997 (la fecha ha de indicarse en inglés (mes/día/año)).

SELECT * FROM diario WHERE fecha<=#12/31/96#;

Selecciona los apuntes de ‘diario’ realizados antes del 1 de Enero de 1.997.

SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND #7/31/97#;

Selecciona los apuntes de ‘diario’ realizados en Julio de 1.997.

SELECT * FROM clientes WHERE nombre LIKE ‘AL*’;

Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’.

SELECT * FROM clientes WHERE apellidos LIKE ‘*EZ’;

Selecciona los clientes cuyos apellidos terminen con los caracteres ‘EZ’.

SELECT * FROM clientes WHERE apellidos LIKE ‘*ZAMO*’

Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los caracteres ‘ZAMO’.

SELECT * FROM clientes WHERE provincia IN (‘MADRID’, ‘BARCELONA’,

‘VALENCIA’,’TOLEDO’, ‘AVILA’);

Selecciona todos los clientes de las provincias de MADRID, BARCELONA, VALENCIA,

TOLEDO o AVILA.

Cláusula Order By

La cláusula ORDER BY suele escribirse al final de un mandato en SQL. Dicha cláusula establece un criterio de ordenación de los datos de la consulta, por los campos que se especifican en dicha cláusula. La potencia de ordenación de dicha cláusula radica en la especificación de los campos por los que se ordena, ya que el programador puede indicar cuál será el primer criterio de ordenación, el segundo, etc., así como el tipo de ordenación por ese criterio: ascendiente o descendiente.
(…) ORDER BY campo1 [ASC/DESC][,campo2 [ASC/DESC]…]
La palabra reservada ASC es opcional e indica que el orden del campo será de tipo ascendiente (0-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se indica que el orden del campo es descendiente (9-0 Z-A). Si no se especifica ninguna de estas palabras reservadas, la cláusula ORDER BY toma, por defecto, el tipo ascendiente [ASC].

He aquí algunos ejemplos:

SELECT nombre, apellidos, telefono FROM clientes ORDER BY apellidos, nombre;

Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’.

SELECT * FROM pedidos ORDER BY fecha DESC;

Relación de ‘pedidos’ ordenados desde el más antiguo hasta el más moderno.

SELECT * FROM abonados ORDER BY apellidos, nombre, fecha_nacimiento DESC;

Relación de ‘abonados’ por ‘apellidos’ y ‘nombre’ ascendiente, y por ‘fecha_nacimiento’ en orden descendiente (del más viejo al más joven).

  1. Programación SQL desde el control data

Gracias al control ‘Data’ podremos hacer nuestros primeros pinitos en SQL. Lo primero que hay que tener en cuenta es que la consulta realizada en SQL posea los mismos campos que la interfaz diseñada, y que los controles encargados de mostrar o modificar la base de datos, estén perfectamente vinculados al control Data. Por ejemplo: realizamos una ficha de ‘clientes’, por lo que diseñamos una interfaz con diversas Text Box vinculadas a un control Data que contendrá los datos. Estas Text Box se vinculan gracias a las propiedades ‘DataSource’ y ‘DataField’. La propiedad ‘DataSource’ corresponde a la fuente de los datos, en este caso, el nombre del control ‘Data’. En la propiedad ‘DataField’ se especifica el nombre del campo a tratar por cada Text Box (‘nombre’, ‘direccion’, ‘nif’, ‘telefono’, etc.). Por otro lado, en la propiedad ‘DatabaseName’ del control ‘Data’, se ha de especificar la ruta completa de la base de datos (fichero .MDB), y la propiedad ‘RecordSource’ se reservará para indicar, en una cadena o String, el mandato en SQL correspondiente cuando sea necesario.

Siguiendo con este ejemplo, esta ficha se reservará para consultas determinadas, y la Form será mostrada desde una Form anterior, desde la que se establece las condiciones de la consulta (‘que sean de Madrid’, ‘que hayan nacido antes de 1960’, ‘que habiten en Peñaranda de Bracamonte’, etc.). Se podría crear una variable de tipo String en un módulo, e insertar el mandato en SQL correspondiente antes de llamar a la ficha. Al llamar a la ficha, la Form correspondiente tendrá un evento Load, donde se insertará un código parecido a éste:

control_data.RecordSource = variable_SQL
control_data.Refresh

Obviamente, dependiendo del caso, la programación se hará diferente. Pero la norma común es crear una interfaz en concreto, con unos campos concretos y, cuando sea necesario, establecer como valor de la propiedad ‘RecordSource’ el mandato en SQL, y refrescar el control Data correspondiente. De esta manera, el control Data contendrá el resultado de la consulta.

  1. Eliminación Dinámica De Registros

¿Quién no ha sentido la necesidad de eliminar de un golpe un grupo de registros en común, en lugar de hacerlo uno por uno?. Esta operación puede ser mucho más habitual de lo que parece en un principio y, por ello, el lenguaje SQL nos permitirá eliminar registros que cumplan las condiciones o criterios que nosotros le indiquemos a través de la sentencia DELETE, cuya sintaxis es la siguiente:

DELETE FROM tablas WHERE criterios
Donde el parámetro ‘tablas’ indica el nombre de las tablas de las cuales se desea eliminar los registros, y, el parámetro ‘criterios’, representa las comparaciones o criterios que deben cumplir los registros a eliminar, respetando a aquellos registros que no los cumplan. Si – por ejemplo – quisiéramos eliminar todos los pedidos realizados por el cliente cuyo código sea 4 en el día de hoy, utilizaríamos la siguiente sentencia:
DELETE FROM pedidos WHERE [codigo cliente]=4 AND fecha=Now();

Aritmética Con Sql
¿Quién no ha echado en falta el saber el total de ingresos o de gastos de esta fecha a esta otra?.
¿Quién no ha deseado saber la media de ventas de los comerciales en este mes?. ¡Tranquilos!: el lenguaje SQL nos permitirá resolver estas y otras cuestiones de forma muy sencilla, ya que posee una serie de funciones de carácter aritmético:

Sumas O Totales
Para sumar las cantidades numéticas contenidas en un determinado campo, hemos de utilizar la función SUM, cuya sintaxis es la siguiente:
SUM(expresión)
Donde ‘expresión’ puede representar un campo o una operación con algún campo.
La función SUM retorna el resultado de la suma de la expresión indicada en todos los registros que son afectados por la consulta. Veamos algunos ejemplos:
SELECT SUM(unidades) FROM pedidos;
Retorna el total de unidades pedidas (la suma de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo campo en el RecordSet.
SELECT SUM(ingresos-gastos) AS saldo FROM diario;
Retorna el saldo final de una tabla llamada ‘diario’. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘saldo’.
SELECT SUM(unidades) AS total FROM pedidos WHERE fecha=Now();
Retorna el total de unidades pedidas hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘total’.

Promedios O Medias Aritméticas
Para averiguar el promedio de unas cantidades utilizaremos la función AVG, cuya sintaxis es la siguiente:
AVG(expresión)
La función AVG retorna el promedio o media aritmética de la expresión especificada, en todos los registros afectados por la consulta. Esto es lo mismo que realizar una suma (SUM) y, después, dividir el resultado entre el número de registros implicados.

He aquí algunos ejemplos:
SELECT AVG(unidades) FROM PEDIDOS;
Retorna el promedio de unidades pedidas (la media de todos los valores almacenados en el campo ‘unidades’ de la tabla ‘pedidos’). Este resultado se toma como un nuevo campo en el RecordSet.
SELECT AVG(ingresos-gastos) AS saldo_medio FROM diario;
Retorna el saldo medio de una tabla llamada ‘diario’. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘saldo_medio’.
SELECT AVG(unidades) AS media FROM pedidos WHERE fecha=Now();
Retorna el promedio de unidades pedidas hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama
‘media’.

Valores Mínimos Y Máximos

También es posible conocer el valor mínimo o máximo de un campo, mediante las funciones MIN y MAX, cuyas sintaxis son las siguientes:

MIN(expresión)

MAX(expresión)

He aquí algunos ejemplos:

SELECT MIN(unidades) AS minimo FROM pedidos;

Retorna el pedido más pequeño y lo refleja en el campo ‘minimo’.

SELECT MAX(unidades) AS maximo FROM pedidos WHERE fecha=Now();

Retorna el pedido más grande de hoy y lo refleja en el campo ‘maximo’.

SELECT MAX(gastos) AS maximo FROM diario;

Retorna el gasto más costoso reflejado en el diario contable, y lo representa en el campo ‘maximo’.

  1. Contar Registros

Otra operación muy común es realizar un recuento de registros. Aunque a primera vista pueda parecer poco práctico, la realidad es bien distinta. ¿Q quién no le gustaría conocer cuántos pedidos se han realizado hoy?. ¿O comprobar cuántos pagos se han realizado por una determinada cantidad?. ¿O saber cuántos clientes cumplen hoy años, se jubilan, son menores o mayores de edad, tienen alguna deuda, viven en esta ciudad o en tal otra, tienen teléfono móvil, están casados o solteros, etc.?. Para conocer cuántos registros hay utilizaremos la función COUNT, cuya sintaxis es la siguiente:
COUNT(expresión)
La función COUNT retorna el número de registros indicados en la expresión.

He aquí algunos ejemplos:

SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now();

Retorna el número de pedidos realizados hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama ‘num_pedidos’.

SELECT COUNT(*) AS casados FROM clientes WHERE casado=True;

Retorna el número de clientes casados. Este resultado se toma como un nuevo campo y se le llama ‘casados’.

SELECT COUNT(*) AS num_pagos FROM diario WHERE gastos=25594;

Retorna el número de pagos por un importe equivalente a 25594. Este resultado se toma como un nuevo campo en el RecordSet, y se le llama ‘num_pagos’.

SELECT SUM(unidades) AS total, AVG(unidades) AS media, COUNT(*) AS registros, MAX(unidades) AS maximo, MIN(unidades) AS minimo FROM pedidos WHERE fecha BETWEEN #1/1/97# AND #6/30/97#;

Retorna el total, la media, el máximo y el mínimo de unidades pedidas, y el número de pedidos realizados, durante el primer semestre de 1.997.

Omisión De Registros Duplicados

En una consulta podría ser útil omitir registros que estén duplicados. Por ejemplo, en nuestros pedidos hay duplicación, puesto que un cliente realiza varios pedidos en el mismo día. Quizá necesitemos una historia para conocer los días y los clientes que realizaron algún pedido, pero no necesitaremos toda la lista, si no que nos diga, únicamente, mediante una línea, qué cliente realizó algún pedido y en qué día. Para ello, utilizaremos el predicado DISTINCT, cuya sintaxis es la siguiente:

SELECT DISTINCT lista_campos …
El predicado DISTINCT omite aquellos registros duplicados en los campos especificados. En el problema expuesto, utilizaremos la siguiente sentencia:
SELECT DISTINCT [codigo cliente],fecha FROM pedidos;
Si deseamos que la consulta sea más completa y nos visualice también el nombre y los apellidos correspondientes del cliente en cuestión (estos datos están en la tabla ‘clientes’ y no en ‘pedidos’), escribiríamos este mandato:
SELECT DISTINCT pedidos.fecha, pedidos.[codigo cliente], clientes.nombre, clientes.apellidos
FROM pedidos, clientes WHERE clientes.[codigo cliente] = pedidos.[codigo cliente];

Reemplazar Datos
Imaginemos por un momento que el precio de los productos ha subido un 10%, y que tenemos que actualizar nuestra tabla de productos con el nuevo importe. La solución más primitiva sería acceder a la tabla y, el precio de cada producto multiplicarlo por 1.1 y reemplazarlo a mano. Con diez productos, la inversión de tiempo podría llegar al cuarto de hora, y no estaremos exentos de fallos al tipear el importe o al realizar el cálculo en la calculadora. Si la tabla de productos superase la cantidad de 100 productos (algo muy probable y fácil de cumplir), la cosa ya no es una pequeña molestia y un poco de tiempo perdido.

El lenguaje SQL nos permite solucionar este problema en cuestión de pocos segundos, ya que posee una sentencia llamada Update, que se ocupa de los cálculos y reemplazos. Su sintaxis es la siguiente:
UPDATE lista_tablas SET campo=nuevo_valor [,campo=nuevo_valor] [WHERE…]
Donde lista_tablas representa el nombre de las tablas donde se realizarán las sustituciones o reemplazos. El parámetro campo indica el campo que se va a modificar, y el parámetro nuevo_valor representa una expresión (constante, valor directo, un cálculo, etc.) cuyo resultado o valor será el nuevo valor del campo.

En el problema expuesto anteriormente escribiríamos la siguiente sentencia:
UPDATE productos SET pvc=pvc*1.1;
Si este incremento de precio de costo debe afectar al precio de venta al público un 30% de beneficio, podríamos escribir la siguiente línea para ahorrar trabajo y tiempo:
UPDATE productos SET pvc=pvc*1.1, pvp=pvp*1.3;
La sentencia UPDATE es muy versátil y potente, por lo que podemos realizar reemplazos condicionantes, ya que permite la cláusula WHERE. De ello se deduce que – por ejemplo -, si se desea bajar un 10% el importe del seguro a aquellos asegurados que cumplan más de dos años de carnet de conducir, y que tengan más de 22 años de edad, tendríamos que escribir la siguiente sentencia:
UPDATE asegurados SET importe=importe/1.1 WHERE edad>22 AND YEAR(Now)-YEAR(expedicion)>2;
Pero ahí no queda la cosa, porque es posible utilizar varias tablas y sustituir el valor de un campo de una de las tablas con el valor del campo de otra tabla, o bien reemplazar el valor de unos campos de alguna tabla si el valor de los campos de otras tablas cumple una serie de requisitos. Estos casos no son tan frecuentes, pero en el caso de haberlos se agradecerá un buen planteamiento en el diseño inicial de la base de datos.

 

  1. Grupos De Registros

A veces, puede ser necesario mostrar un resumen de los datos que tenemos, especificando el total – por ejemplo -, de los ingresos y de los gastos de cada día, en lugar de visualizar todos los ingresos y gastos realizados al detalle. Para llevar a cabo esta tarea hemos de tener en cuenta, en primer lugar, bajo qué campo se van a agrupar los datos (en lo expuesto, sería el campo fecha), y, a continuación, realizar la consulta mediante la cláusula GROUP BY, cuya sintaxis es la siguiente:
SELECT … FROM … [WHERE …] GROUP BY lista_campos
Básicamente, la cláusula GROUP BY agrupa o combina registros con idéntico valor en los campos especificados, en un único registro. Esto significa que en un sólo registro se mostrará la información común a muchos registros, como si dijésemos, al terminar las cuentas: «hoy se ha ingresado tanto y se ha gastado tanto, con lo que hay un beneficio de tanto», sin necesidad de especificar cada movimiento (cada ingreso, cada cobro, cada pago, cada factura, cada transferencia bancaria, etc.).

Imaginemos que queremos hacer un resumen de nuestros pedidos, y queremos saber cuántos pedidos y unidades han realizado cada uno de nuestros clientes. Para ello, se escribiría una sentencia como ésta:
SELECT codigo_cliente, count(codigo_cliente) AS num_pedidos, SUM(unidades) AS cantidad FROM pedidos GROUP BY codigo_cliente;

Para saber cuántos pedidos se realizaron cada día, escribiríamos esta línea:

SELECT fecha, count(fecha) AS num_pedidos FROM pedidos GROUP BY fecha;

Para conocer cuántas unidades se pidieron cada día, tipearíamos esta sentencia:

SELECT fecha, SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha;

En la siguiente sentencia se muestra para cada cliente aquellos días en que se realizó un pedido, resumiéndose el número de pedidos realizados así como el total de unidades pedidas:

SELECT fecha, codigo_cliente, COUNT(codigo_cliente) AS num_pedidos, SUM(unidades) AS cantidad FROM pedidos GROUP BY fecha, codigo_cliente HAVING fecha<#1/6/97#;

Como se puede apreciar, se ha especificado una condición a través de la cláusula HAVING, que indica los criterios o condiciones a cumplir por los registros a visualizar en un agrupamiento. En esta ocasión, la condición era de aquellos pedidos realizados antes del seis de Enero de 1.997.

Para conocer una estadítica de pedidos diaria, utilizaremos la siguiente sentencia:

SELECT fecha, COUNT(fecha) AS pedidos, SUM(unidades) AS subtotal, MIN(unidades) AS minimo, MAX(unidades) AS maximo, AVG(unidades) AS promedio FROM pedidos GROUP BY fecha;

Un resultado de ejemplo sería el siguiente:
FECHA PEDIDOS UNIDADES MINIMO MAXIMO PROMEDIO
—– ——- ——– —— —— ——–
2/01/97 9 1599 2 1500 177,6
3/01/97 5 113 1 100 22,6
4/01/97 3 33 3 25 11,0
6/01/97 6 90 5 50 15,0
7/01/97 1 1 1 1 1,0

  1. Combinación De Datos

Las consultas realizadas hasta ahora requerían de una dosis de habilidad para conseguir crear un conjunto de datos que tuviese información combinada de dos tablas. Pero, podemos combinar datos de una manera mucho más sencilla y eficaz: mediante las operaciones JOIN, las cuales permiten combinar datos de dos tablas. La operación JOIN más común es INNER JOIN, cuya sintaxis es:
tabla1 INNER JOIN tabla2 ON tabla1.campo_común=tabla2.campo_común
Donde tabla1 y tabla2 representan el nombre de las tablas a combinar. Ambas tablas han de tener un campo común o igual para poder realizar correctamente la combinación de los datos. Pero veamos un ejemplo para entenderlo mejor:
SELECT * FROM pedidos INNER JOIN clientes ON pedidos.codigo_cliente =clientes.codigo_cliente;
El resultado será un conjunto de registros con los datos de las dos tablas. Este conjunto poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la tabla clientes. En cada registro aparecerán los datos relacionados, es decir, que en un pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el pedido.
La operación INNER JOIN combina los datos de las dos tablas siempre que haya valores coincidentes en los campos comunes o enlazados.

Existen también otras dos formas de combinar: LEFT JOIN y RIGHT JOIN. Ambas tienen la misma sintaxis que INNER JOIN, pero estas operaciones incluyen todos los registros de una tabla y aquellos registros de la otra en que los campos comunes sean iguales. En la operación LEFT JOIN, incluye todos los registros de la primera tabla (parámetro tabla1) y aquellos registros de la segunda tabla (parámetro tabla2) en que los campos comunes sean iguales. En la operación RIGHT JOIN ocurre lo contrario: incluye todos los registros de la segunda tabla y aquellos registros de la primera tabla en que los campos comunes sean iguales.

Aunque la diferencia entre las tres operaciones parezca inexistente, en realidad sí existe. La operación INNER JOIN realiza una combinación con todos aquellos registros de las dos tablas en que el campo común de ambas tenga el mismo valor, mientras que las operaciones LEFT JOIN y RIGHT JOIN realizan la combinación de todos los registros de la tabla que combinan (ya sea la primera para LEFT JOIN o la segunda para RIGHT JOIN), aunque en la otra tabla, en el campo común no haya coincidencia. La prueba se ve rápidamente si se introduce un código de cliente en el campo campo_cliente de la tabla pedidos que no exista:
SELECT * FROM pedidos INNER JOIN clientes ON pedidos.codigo_cliente =clientes.codigo_cliente;
El registro que contiene el pedido del cliente que no existe no aparece, puesto que no hay coincidencia. Si escribimos:
SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo_cliente =clientes.codigo_cliente;
Observaremos que aparecen todos los registros de la tabla pedidos, incluido aquel donde indicamos que el pedido fue solicitado por el cliente inexistente, pero en los campos relacionados (campos de la tabla clientes) no habrá ningún dato relacionado o combinado. Si ahora escribimos lo siguiente:
SELECT * FROM pedidos LEFT JOIN clientes ON pedidos.codigo_cliente =clientes.codigo_cliente; obtendremos el mismo resultado que con la operación INNER JOIN, puesto que se visualizan todos aquellos registros que existen en clientes y aquellos que coincidan con el campo clave en la tabla pedidos. Como el código inexistente no existe en la tabla clientes, este registro no aparece. Para comprobar el efecto aún mejor, modificar el código inexistente en el registro de la tabla pedidos por uno que sí exista. Tras ello, volver a introducir las sentencias SQL para comprobar la diferencia.

Lo más normal es utilizar la operación INNER JOIN para omitir aquellos registros no coincidentes, aunque las operaciones LEFT JOIN y RIGHT JOIN nos pueden servir para descubrir entradas erróneas en códigos.

Veamos algunos ejemplos más:
SELECT fecha, codigo_producto, unidades, apellidos, nombre FROM pedidos INNER JOIN clientes ON pedidos.codigo_cliente = clientes.codigo_cliente WHERE fecha<#1/6/97#;
Combina pedidos y clientes, visualizando aquellos pedidos realizados antes del 6 de Enero de 1997 por los campos fecha, codigo_producto, unidades, apellidos y nombre.
SELECT fecha, unidades, productos.* FROM pedidos INNER JOIN productos ON pedidos.codigo_producto = productos.codigo_producto;
Combina pedidos y productos, visualizando los pedidos por los campos fecha y unidades, y por todos los campos de la tabla productos.
SELECT fecha, unidades, productos.* FROM pedidos INNER JOIN productos ON pedidos.codigo_producto = productos.codigo_producto ORDER BY fecha, producto;

El resultado será el mismo que con el anterior ejemplo, salvo que la presentación de los registros se realizará ordenada por la fecha y el nombre del producto

 

Arquitectura de un Ordenador Resumen de la Etapas y Características

Arquitectura de un Ordenador
Resumen de la Etapas y Características

Arquitectura de los ordenadores:
De una forma muy simple podemos decir que un ordenador consta de dos zonas fundamentales: la unidad central de proceso (UCP o CPU, según utilicemos las siglas castellanas o inglesas), que es la encargada de la ejecución de los programas, y varias unidades periféricas que permiten al ordenador comunicarse con el exterior, bien sea para capturar datos y mostrar resultados, o bien para almacenar la información.

Unidad central de proceso
El auténtico «cerebro» del ordenador es la unidad central de proceso (CPU), en torno a la cual se organizan los restantes elementos del sistema. En la CPU de los ordenadores convencionales suelen distinguirse tres zonas básicas:

Memoria principal
En ella se almacenan dos tipos de información: el programa o secuencia de instrucciones a ejecutar (algoritmo) y los datos que manejarán dichas instrucciones. La memoria está constituida por un conjunto de células capaces de almacenar un dato o una instrucción. Con el fin de que la unidad de control pueda diferenciar a cada una de las células, éstas van numeradas; al número que identifica a una célula se le llama dirección.

Una vez determinada la dirección de una célula, se puede leer la información que contiene o escribir una nueva información en su interior. Para poder realizar estas operaciones la memoria dispone de dos registros especiales: el registro de dirección y el registro de intercambio de datos. Según se vaya a efectuar una operación de «lectura» o de «de escritura», se seguirán los siguientes pasos:

– Lectura
1 . Almacenar la dirección de la célula en la que se encuentra la información a leer en el registro de dirección.
2. Cargar en el registro de intercambio la información contenida en la célula apuntada por el registro de dirección.
3. Transferir el contenido del registro de intercambio al registro de la CPU que corresponda.

– Escritura
1. Transferir al registro de intercambio la información a escribir.
2. Almacenar la dirección de la célula receptora de la información en el registro de dirección.
3. Cargar el contenido del registro de intercambio en la célula apuntada por el registro de dirección.

Evidentemente, las operaciones de lectura no destruyen la información almacenada en la célula, cosa que, por el contrario, sí ocurre con las operaciones de escritura, ya que la destruyen al sustituirla por una nueva información.

Dentro de la arquitectura de todo ordenador cabe distinguir dos zonas básicas: la unidad central de proceso
y el conjunto de órganos periféricos. En la primera de estas zonas es donde residen las unidades
esenciales que permiten al ordenador realizar su trabajo: el tratamiento de la información
.

Unidad de control
Esta unidad es la que se ocupa de controlar y coordinar el conjunto de operaciones que hay que realizar para dar el oportuno tratamiento a la información. Su cometido obedece a las indicaciones contenidas en el programa; como resultado de su «interpretación», la unidad de control genera el conjunto de órdenes elementales que revertirán en la ejecución de la tarea solicitada. En líneas generales, su actuación se concreta en los siguientes puntos:

1. Extra de de la memoria .principal la instrucción a ejecutar. Para ello dispone de un registro denominado «contador de instrucciones» (o contador de programas), en el que almacena la dirección de la célula que contiene la próxima instrucción a ejecutar, y de un segundo registro «de instrucción» en el que deposita la instrucción propiamente dicha. Este último está dividido en dos zonas: una contiene el código de operación que identifica la operación a ejecutar (suma, resta…) y la segunda la dirección de la célula en la que está almacenado el operando.

2. Una vez conocido el código de la operación, la unidad de control ya sabe qué circuitos de la unidad aritmético-lógica deben intervenir, y puede establecer las conexiones eléctricas necesarias, a través del secuenciador.

3. A continuación extrae de la memoria principal los datos necesarios para ejecutar la instrucción en proceso; para ello simplemente ordena la lectura de la célula cuya dirección se encuentra en la segunda zona del registro de instrucción.
4. Ordena a la unidad aritmético-lógica que efectúe las oportunas operaciones elementales. El resultado de este tratamiento se deposita en un registro especial de la unidad aritmético-lógica denominado «acumulador».

5. Si la instrucción ha proporcionado nuevos datos, estos son almacenados en la memoria principal.

6. Por último, incrementa en una unidad el contenido del contador de instrucciones, de tal forma que coincida con la dirección de la próxima instrucción a ejecutar. Algunas operaciones, como, por ejemplo, las de bifurcación, se limitan a modificar el contador de instrucciones, de forma que la siguiente instrucción a procesar no sea la que se encuentra inmediatamente a continuación de la que está en curso.

Unidad aritmético-lógica
La misión de la unidad aritmético-lógica es operar los datos que recibe siguiendo las indicaciones dadas por la unidad de control. El motivo por el que a esta unidad se le otorga el nombre de «aritmético-lógica» es que puede realizar tanto operaciones aritméticas como operaciones basadas en la lógica Booleana. Para que la unidad aritmético-lógica sea capaz de realizar una operación aritmética, por ejemplo una suma, se le deben proporcionar los siguientes datos:

1. Código de operación que indique la operación a efectuar; en este caso sería el código de suma.
2. Dirección de la célula en la que se encuentra almacenado el primer sumando.
3. Dirección del segundo sumando.
4. Dirección de la célula en la que se almacenará el resultado.

Los bloques fundamentales que integran la unidad central de proceso del ordenador controlan, operan y coordinan la actividad del sistema que, en líneas generales, se resume en la lectura e interpretación de un programa almacenado y en su ejecución.

La memoria principal de un sistema ordenador almacena dos tipos de información: programas o conjuntos ordenados de instrucciones y datos. Las operaciones que se realizan sobre esta unidad se reducen a dos: lectura y escritura.

La unidad de control es el auténtico «cerebro» que controla y coordina el funcionamiento del ordenador. A raíz de la interpretación de las instrucciones que integran el programa, esta unidad genera el conjunto de órdenes elementales necesarias para que se realice la tarea solicitada.

La transferencia de informaciones entre el ordenador y los periféricos se realiza a través de determinadas unidades «adaptadoras» denominadas canales. Su capacidad para gestionar y controlar la transferencia de informaciones descarga a la unidad central de este tipo de tareas

Cabe observar que en el formato de instrucción que hemos considerado, solo se dispone de un código de operación y una única dirección de operando (en los ordenadores actuales los formatos de las instrucciones contienen toda la información necesaria).

El hecho de que esta instrucción tan condensada se traduzca en un proceso de suma se debe a que, al interpretar su código de operación, la unidad de control genera una secuencia de tres micro-instrucciones elementales que afectan al registro especial que hemos denominado «acumulador». En éste es donde se almacenan los resultados de las sucesivas operaciones. Las tres micro-instrucciones elementales que dan lugar a la operación suma -afectando a una sola dirección: el acumulador- son las siguientes:

a) Cargar el primer operando en el acumulador.
b) Sumar el segundo operando con el contenido del acumulador.
c) Cargar el contenido del acumulador en la dirección del resultado.

Unidades periféricas
Cabe distinguir dos grandes grupos de unidades periféricas. Las unidades de comunicación que permiten el diálogo con el exterior (de entrada o salida) y las memorias auxiliares que sirven para almacenar grandes volúmenes de datos de forma permanente/Como ejemplos tradicionales de periféricos de comunicación podemos citar el lector de tarjetas perforadas, el teclado, la impresora, la pantalla de operador… Y como ejemplo de memorias auxiliares, las unidades de disco y de cinta magnética.


Periféricos de Entrada Mas Usados

La comunicación entre los periféricos y el ordenador se realiza a través de los denominados «canales», que se ocupan de gestionar la transferencia de información.En los ordenadores actuales, las transferencias a través de los canales se pueden simultanear con el desarrollo de un programa de cálculo, ya que el, canal sólo necesita la unidad periférica implicada en la entrada o salida y la dirección de la célula de la memoria principal en la que se leerá o escribirá la información.


Periféricos de Salida Mas Usados

El canal mantiene un contador con el número de informaciones a transferir, el cual le indica el trabajo que tiene pendiente; para ello, incrementa una unidad al contador cada vez que le llega una información para transferir y le resta una unidad cada vez que efectúa una transferencia. Cuando el contador esté a 0, el canal advertirá a la unidad de control que ha finalizado la transferencia de información.

REFORZANDO CONCEPTOS…

Circuito lógico: Conjunto organizado de componentes electrónicos que permite sintetizar funciones de variables lógicas.
Circuito integrado: Circuito en el que todos sus componentes están integrados en una sola pieza de material semiconductor.
Programa: Conjunto de instrucciones que al ser ejecutadas secuencialmente permiten la realización de una tarea.
Microprocesador: Un microprocesador es un circuito integrado capaz de ejecutar un programa, operando datos y controlando a las unidades implicadas.
Unidad central de proceso (CPU): Unidad que controla y coordina todas las actividades que lleva a cabo un sistema ordenador. En ella se realizan las operaciones de interpretación del programa y de tratamiento aritmético y lógico de los datos.
Microordenador: Sistema para el tratamiento de información cuya unidad central de proceso es un microprocesador.
Bit: Contracción de dígito binario (O ó 1), se utiliza para designar a la unidad elemental de información binaria.
¿Cuáles son las principales características de un microordenador?

Son sistemas orientados al tratamiento de la información de reducido tamaño y basados en un microprocesador.
¿Cuáles son sus unidades básicas?
El microprocesador que constituye la unidad central de proceso, la memoria encargada de almacenar instrucciones y datos, la unidad de entrada/salida que permite establecer las comunicaciones con los periféricos y los propios dispositivos periféricos.
¿Cómo se implementan las distintas unidades básicas de un microordenador?
Mediante varios circuitos integrados de alta escala de integración (LSI) o por medio de un único chip (microordenadores).
¿Cuáles son las unidades funcionales de un microordenador?
– CPU (microprocesador).
– Memoria.
– Unidades de entrada/salida.
– Periféricos.
¿En qué se diferencian las memorias de tipo ROM y RAM?
La memoria ROM sólo permite leer la información que almacena y suele estar grabar por el fabricante, mientras la memoria RAM permite tanto operaciones de lectura como de escritura y es utilizada libremente por el usuario.

Descargar Un Apunte Muy Completo Sobre Este Tema

Fuente Consultada:
Gran Enciclopedia de la Informática Tomo I
Cómo Son y Como Funcionan Casi Todas Las Cosas Reader´s Digest
Gran Enciclopedia Universal Tomo 26

Que es un Microprocesador? Fabricacion Chip de Silicio Definicion

¿Qué es un Microprocesador? Fabricación Chip de Silicio

chip de silicio, electronica siglo xxEn un espacio no mayor que el de un botón de camisa, un microchip contiene hasta 450.000 componentes electrónicos.

Sus conexiones forman circuitos eléctricos que sólo son visibles bajo el microscopio.

Los microchips regulan relojes y los programas de las lavadoras de ropa; nos derrotan en los juegos de video y controlan los robots de las líneas de producción de autos.

En cuanto a la electrónica, los circuitos de los microchips no son especialmente complejos; muchos son simples interruptores.

La magia de los microchips radica en su pequeñez, que permite que las señales fluyan a velocidad fulminante.

De este modo pueden realizar hasta 1000 millones de cálculos por segundo. La mayoría de los microchips son de silicio, uno de los elementos más abundantes de la Tierra, que se obtiene fácilmente de la arena y las rocas.

Chips para todo: Un chip microprocesador como los de las lavadoras de ropa, por ejemplo, es una computadora en sí, además de que puede ser el centro de gobierno de las funciones de una computadora grande.

Los chips de memoria almacenan la información de las computadoras en series de circuitos idénticos.

Los chips de interfaz convierten en código binario  las señales que el microprocesador recibe —mediante un teclado, por ejemplo—, para que las puedan utilizar los circuitos electrónicos. También convierten las señales de salida en cifras o palabras para la pantalla.

El silicio es el elemento mas abundante en la corteza terrestre (28% -elemento químico de número atómico 14. ) después del oxigeno.  Su uso en la electrónica se debe a sus características de semiconductor. Esto significa que, dependiendo de que materiales se le agreguen (dopándolo) puede actuar como “conductor” o como un “aislador”. 

Durante los últimos 40 años, este modesto material ha sido el motor que impulsa la revolución microelectrónica. Con el silicio se han construido incontables generaciones de circuitos integrados y microprocesadores, cada una reduciendo el tamaño de los transistores que lo componen.

Cómo conduce electricidad el silicio
El silicio puro no es conductor de la electricidad. En estado impuro contiene ciertos elementos que lo habilitan para conducir corriente, aunque de manera débil. Por esto se le califica de semiconductor.

Los semiconductores permiten el delicado control de corriente necesario para ciertos dispositivos electrónicos, como los transistores, en una medida que es imposible lograr con los conductores metálicos.

Los semiconductores se logran añadiendo al silicio algunos elementos, por lo general fósforo o boro. Si se introduce un poco de fósforo en estado gaseoso al estar fabricando el chip de silicio, los átomos de ese gas forman enlaces con algunos átomos de silicio.

Cuatro electrones de las órbitas externas de los átomos del silicio se enlazan con los también externos del fósforo, pero queda libre un electrón de este último y genera una corriente eléctrica al aplicarse un voltaje. Los electrones tienen carga negativa, así que estos cristales se llaman semiconductores tipo n (negativos).

Si se mezcla un poco de boro con el silicio, queda un electrón menos en el sistema de enlaces, dejando un hueco que atrae a los electrones libres. Los huecos libres crean una carga positiva, por lo que estos cristales se llaman semiconductores tipo p (positivos).

Los transistores
Los transistores son componentes comunes de los microchips. Se usan como interruptores para que la corriente se interprete en dígitos binarios: 1 para el encendido y O para el apagado.

Un transistor muy empleado tiene dos islas de semiconductor tipo n, sobre una base de semiconductor tipo p. Cuando el transistor está apagado, los electrones libres de las capas n se desplazan hacia la capa p y son absorbidos por los huecos libres.

El transistor se enciende al aplicar, desde otro circuito de baja energía, un voltaje a una compuerta de aluminio situada por encima de la base p. Este voltaje atrae los electrones libres de la base p hacia la compuerta, donde forman un puente entre las dos islas n y un paso para la corriente a través del circuito del interruptor activo.

El transistor se apaga al cortar la corriente. Entonces los electrones libres regresan a la base p y son absorbidos por los huecos libres. Como no forman puente entre las islas, la corriente no puede fluir por el circuito.

Fabricación del microchip
Los chips se producen por centenares en una hoja de cristal ultrapuro de silicio sintético. Esas hojas son tan delgadas que se necesitan unas 10 para formar una capa de 1 mm. de grosor.

Los diagramas de los circuitos se preparan en computadora y después se reducen al tamaño del chip, dispuestos lado a lado en una placa de vidrio llamada máscara.

Debido a que los interruptores y otros componentes se integran en capas separadas del chip, se hace una máscara para cada operación. Estas máscaras, que bloquean las partes que no se necesitan, tienen un tamaño varias veces mayor que el del chip, pero después se reducen con técnicas fotográficas.

Se sobreponen las capas —tipo pon, o las aislantes de bióxido de silicio— y se borran químicamente las partes inútiles.

Esto se realiza tratando cada capa con un revestimiento sensible a la luz ultravioleta, colocando encima una máscara y exponiéndola a dicha luz. Las partes expuestas se vuelven resistentes al ácido, y las partes no expuestas se eliminan cuando se aplica éste.

Los contactos de aluminio y otras partes similares se depositan en forma de vapor en las áreas grabadas para ellos. Al endurecerse el aluminio, se le añaden las conexiones de los circuitos que hacen contacto con bornes fijos en los bordes del chip.

Todos los chips terminados se prueban con delicadas sondas eléctricas para verificar que funcionen correctamente. Cerca del 70% resultan defectuosos, por lo que se marcan como rechazados y se desechan.

Después de la prueba, cada chip se separa de su hoja con un cortador de punta de diamante, bajo un microscopio.

Los chips aprobados se montan uno por uno en un estuche y se cubren con plástico. La superficie de contacto está enlazada a conectores metálicos con finos alambres de oro, ligados éstos a espigas metálicas.

Diseño del chip Cada circuito electrónico se diseña por computadora.

El diseñador puede manipular la imagen en pantalla con una pluma electrónica y revisar el diseño general del circuito en una impresión en papel.

Las máscaras para cubrir las zonas no deseadas de cada capa del chip se hacen con un negativo maestro que es unas 250 veces más grande que el chip.

El negativo se reduce con técnicas fotográficas y el circuito se imprime por cientos en el silicio. La hoja se recorta bajo el microscopio con una cortadora de diamante.

  1. LAS PRIMERAS CAPAS: Se utiliza un láser para rebanar la barra de silicio, por cada rodaja obtenida de la barra de silicio son fabricados centenares de microprocesadores, cada microprocesador requiere de menos de un centímetro cuadrado de una de estas laminas de silicio.
  2. CAPA DE SILICIO: se utiliza una capa aislante de dióxido de silicio (Si02) sobre la lamina, para que se conduzca la electricidad a través del microprocesador.
  3. FOTO-RESISTENCIA: es revestido con una sustancia llamada ‘photoresist’ (foto-resistencia), este material es viscoso y recorre todo cuando es expuesto a luz ultravioleta.
  4. CUBRIENDO: Mascaras fotográficas de foto-resistencia son colocadas sobre la lamina.
  5. EXPOSICIÓN: El recubrimiento y la lamina son expuestos a la luz ultravioleta, así el recubrimiento se esparce sobre determinadas áreas de la lamina.
  6. GRABANDO: Los pedacitos de foto-resistencia son removidos con un solvente, esto revela el dióxido de silicio oculto. La parte final de este proceso involucra remover el dióxido de silicio revelado, el proceso de recubrimiento y grabación es repetido en cada una de las laminas del circuito, a veces es necesario repetir este proceso en mas de 20 ocasiones, dependiendo de la complejidad del microprocesador.Este proceso de grabación es utilizado desde hace mucho tiempo, desarrollado siglos atrás, el proceso fue utilizado primero por artistas para crear impresiones en el papel, telas y madera. En la fabricación de microprocesadores, el proceso de grabación fotográfica se hace posible por medio de cintas de material conductivo, con grosor casi siempre menores al de un cabello humano son preparados circuitos patrones.
  7. SOBRECARGANDO: Ahora se inundan las áreas expuestas de lamina de silicio, el primer pedazo con el que nosotros empezamos, en un químico combinado de iones (partículas cargadas), las áreas de silicio sobrecargadas dirigen electricidad a cada transistor para encenderlo.Los electrones fluyen de arriba a abajo entre los diferentes niveles, formando canales a través del proceso de cubrimiento y grabación, luego que los canales estén en un determinado lugar se llenan con uno de los metales mas comunes (aluminio).

EL MICROPROCESADOR: El desarrollo del microprocesador en la década de los setenta del siglo XX inició la revolución informática. Su aparición ha supuesto una drástica reducción del tamaño y precio de los equipos para el tratamiento de la información, y ha contribuido a acercar la informática a todo tipo de usuarios. Hoy día, muchos aparatos, desde los automóviles hasta las lavadoras, utilizan microprocesadores para controlar sus procesos.

microprocesadorUn procesador es un sistema capaz de ejecutar una serie ordenada de instrucciones llamada programa. La ejecución de las instrucciones la lleva a cabo el procesador siguiendo el orden en que están escritas, excepto cuando la propia instrucción obliga al procesador a alterar la secuencia.

El procesador no sólo debe ser capaz de ejecutar el programa, sino también de controlar las distintas unidades que permitirán la comunicación con el exterior y la memoria donde se almacenarán los datos.

La diferencia básica entre procesadores y microprocesadores reside en el tamaño. El microprocesador ocupa un volumen mínimo dentro de las complejas tarjetas que contienen el hardware electrónico de los microordenadores.

El gran avance de la microelectrónica en las últimas décadas ha permitido la miniaturización de los circuitos. En el año 1961 aparecieron los primeros circuitos integrados. A partir de ese momento, el objetivo ha sido aumentar su densidad de integración.

En 1964 nacen los circuitos integrados de baja escala de integración (SSI, small scale integration); en 1968, los circuitos integrados de mediana escala de integración (MSI, médium scale integration); y en 1971, los circuitos integrados de alta escala de integración (LSI, large scale integration).

Este último peldaño hizo posible la mi niaturización de los procesadores hasta llegar al microprocesador. En la actualidad, se ha llegado a la «muy alta escala de integración» (VLSI, very large scale integration).

La tendencia actual es incrementar esta elevadísima densidad de integración con el fin de aumentar el rendimiento y la velocidad de trabajo, además de reducir el volumen físico y el consumo energético de los circuitos electrónicos.

Hoy día, las aplicaciones del microprocesador son incontables: controladores de procesos industriales, controladores de máquinas herramientas, procesadores paira instrumentos de medida, controladores de semáforos, sistemas de recolección de datos climatológicos, juegos electrónicos, microordenadores, etc.

El concepto de microprocesador
El concepto de microprocesador es un concepto tecnológico, ya que hace referencia a la construcción, en un circuito integrado, de la unidad de control, unidad aritmético-lógica y banco de registros de un ordenador. El microprocesador es, por tanto, una UCP (unidad central de proceso, CPU en inglés) en una sola pastilla.

A medida que el nivel de integración aumenta con el tiempo, la máquina que cabe en un solo chip es cada vez más potente.

Así, se ha pasado del primer microprocedor fabricado en 1971, con un ancho de palabra de 4 bits y cuyo diseño empleaba 2.300 transistores, a microprocesadores de 8, 16 y 32 bits de ancho de palabra, a los microprocesadores RISC de 32 y 64 bits de ancho de palabra, con una complejidad y unas prestaciones realmente elevadas, y a los microprocesadores CISC.

Por otro lado, ha aparecido toda una serie de microprocesadores de propósito específico, entre los que cabe destacar procesadores de señal (Digital Signal Processor), procesadores gráficos y procesadores de comunicaciones.

A comienzos de los años noventa, se produjo un cambio decisivo en el diseño general de los ordenadores: prácticamente todos ellos, desde las máquinas pequeñas hasta los grandes superordenadores, están construidos con microprocesadores. Por tanto, el término microprocesador, como una forma especial de construir la UCP, ha caído en desuso.

Podemos definir como un MICROPROCESADOR a un sistema capaz de ejecutar una serie ordenada de instrucciones denominada programa. La ejecución de las instrucciones la efectúa el procesador de forma secuencial, es decir, siguiendo el orden en el que están escritas, excepto cuando la propia instrucción obligue al procesador a alterar la secuencia.

Además al procesador no sólo se le exige que sea capaz de ejecutar el programa o secuencia de instrucciones, sino también que controle a las distintas unidades que permitirán la comunicación con el exterior y a la memoria donde se almacenarán los datos.

El microprocesador utilizado como circuito programable

partes de un microprocesador

Icografía: Juan E. Serrano y Texto: Manuel Irusta Para El Mundo

Un microprocesador no es más que un circuito integrado con la posibilidad de ser programado. Una de sus aplicaciones inmediatas es, por tanto, la sustitución de los circuitos digitales de lógica cableada.

La principal diferencia entre el diseño del sistema de microprocesador digital y el diseño del sistema digital lógico alambrado consiste en que el primero usa el microprocesador para reemplazar la unidad lógica alambrada, mediante el almacenamiento de las secuencias del programa en la memoria de sólo lectura, en lugar de armar estas secuencias con compuertas, flip-flops, contadores y elementos semejantes. Una vez completo el diseño, puede hacerse cualquier modificación con sólo cambiar el programa en la ROM.

esquema grafico de microprocesador

En resumidas cuentas, un microprocesador no es más que un circuito integrado al que se le ha añadido la posibilidad de ser programado. Por lo tanto, una de sus aplicaciones inmediatas es la sustitución de los circuitos digitales de lógica cableada.
Otra aplicación importante es en el empleo como unidad central de proceso de los microordenadores.

 El microprocesador utilizado como unidad central de proceso de un microordenador 11 microprocesador o unidad central de proceso de un ordenador moderno, que constituye el núcleo del ordenador, es un solo chip de silicio de tamaño diminuto. Mientras otros componentes recogen, transmiten y dan salida a los datos, el procesador es el único que calcula.

Las funciones esenciales de la UCP son las siguientes: controlar el flujo de información; operar los datos; gestionar la memoria; gobernar toda la actividad del ordenador de acuerdo a las instrucciones recibidas.

En torno a la UCP se organizan las restantes unidades funcionales y dispositivos que conforman la arquitectura de un microordenador. En la UCP de un ordenador convencional se distinguen tres zonas básicas: la memoria principal, la unidad de control y la unidad aritmético-lógica.

Memoria principal
La memoria principal es el dispositivo que conserva durante todo el tiempo de trabajo del ordenador las instrucciones y los datos necesarios para el desarrollo del proceso.

Funciona mediante un conjunto de células numeradas (al número que identifica a una célula se le llama dirección). Una vez determinada la dirección de una célula, se puede leer la información que contiene o escribir una nueva información en su interior.

Para poder realizar estas operaciones, la memoria dispone de dos registros especiales: el registro de dirección de memoria y el registro de intercambio o de datos. El registro de dirección de memoria indica el número de la célula afectada y el registro de intercambio de datos contiene la información leída o la que hay que escribir en la célula en cuestión.

En ella se almacenan dos tipos de información: el programa o secuencia de instrucciones a ejecutar, y los datos que manejarán dichas instrucciones. Las operaciones que se realizan sobre esta unidad se reducen a dos: lectura y escritura. Evidentemente, las operaciones de escritura destruyen la información almacenada en la célula, al sustituirla por una nueva información. No ocurre así con las de lectura.

Unidad de control
Esta unidad se ocupa de controlar y coordinar el conjunto de operaciones necesarias para realizar el oportuno tratamiento de la información. Su objetivo consiste en extraer de la memoria principal la instrucción a ejecutar. Para ello dispone de un registro, denominado contador de instrucciones, en el que almacena la dirección de la célula que contiene la próxima instrucción a ejecutar, y de un segundo registro, llamado de instrucción, en el que deposita la instrucción propiamente dicha.

Este último está dividido en dos zonas: una contiene el código que identifica la operación a ejecutar, y la segunda la dirección de la célula en la que está almacenado el operando.

Una vez conocido el código de la operación, la unidad de control ya sabe qué circuitos de la unidad aritmético-lógica deben intervenir, y puede establecer las conexiones eléctricas necesarias a través del secuenciador.

A continuación extrae de la memoria principal los datos necesarios para ejecutar la instrucción en proceso. Para ello simplemente ordena la lectura de la célula cuya dirección se encuentra en la segunda zona del registro de instrucción.

Posteriormente, ordena a la unidad aritmético-lógica que ejecute las oportunas operaciones elementales. El resultado de este tratamiento se deposita en un registro especial de la unidad aritmético-lógica, denominado «acumulador». Si la instrucción ha proporcionado nuevos datos, estos son almacenados en la memoria principal.

Por último, incrementa en una unidad el contenido del contador de instrucciones, de tal forma que coincida con la dirección de la próxima instrucción a ejecutar.

También consta de un reloj. El reloj es el oscilador electrónico que hace que el microprocesador vaya de un paso al siguiente al ejecutar las instrucciones (cada instrucción de la máquina ocupa varios ciclos del reloj). La velocidad del reloj se mide en megaherzios.

Unidad aritmético-lógica
La unidad aritmético-lógica (ALU, arithmetica logical unit) es el dispositivo encargado (te ejecutar las operaciones aritméticas y lógicas, almacenando el resultado en un registro llamado acumulador. Todas estas operaciones las realiza siguiendo las indicaciones dadas por la unidad de control.

La unidad lógico-aritmética está conectada al mundo exterior a través del «bus», canal de señales que une la ALU con las otras áreas de la unidad central de proceso, y ésta con dispositivos internos y externos. La ALU puede así recoger los datos entrada y dar salida a los resultados.

DESCRIPCIÓN DEL FUNCIONAMIENTO: Los programas de computación son «recetas» con instrucciones escritas una debajo de otra, de modo que para que funcionen, primero debe leerse la orden que se encuentra en la fila 1, luego la de la fila 2, y así sucesivamente, del mismo modo que leeríamos una receta de cocina.

Si en algún momento el programa tiene que saltar a otro punto, es necesario romper con la secuencia, hay una llamada que indica exactamente en qué línea se debe seguir, al igual que ocurre cuando leemos un revista y, al final de la nota, aparece un cartel que dice «continúa en la página xx».

Cuando ejecutamos un programa instalado en el disco rígido de la PC, por ejemplo, Word, lo que ocurre es que su secuencia de instrucciones se copia en la memoria principal de la computadora, memoria RAM, y luego, por bloques, pasa a la memoria caché, que es la memoria interna del microprocesador.

Cuando el microprocesador empieza a realizar su trabajo, lee una orden detrás de otra, ya sea desde su caché interno (en caso de que la instrucción se encuentre allí) o desde la RAM, y procede a ejecutarla. Cuando esto ocurre, Word, Excel o el programa que sea empieza a funcionar.

Cuando las instrucciones están en la memoria, el microprocesador las lee y ejecuta. Sin embargo, cabe preguntarse ¿por qué algunas computadoras arrancan más rápido que otras, abren Word más velozmente, muestran antes las imágenes en el monitor, etc.? Una de las principales razones es que su microprocesador es mejor y puede entender y procesar más rápido las órdenes que se le dan.

Podríamos preguntarnos, entonces qué determina que un microprocesador sea mejor que otro. A continuación, se enumeran los puntos clave de los que depende el desempeño del CPU:

  • Su rapidez de trabajo.
    • La comunicación que tiene con la placa madre.
    • Su eficiencia.
    • La cantidad de memoria interna que posee.


    Algunos Conceptos Básicos del Microprocesador:

    ¿Cuáles son las dos zonas fundamentales de un ordenador?
    La unidad central de proceso (CPU) que se encarga de la ejecución de los programas y del control de las restantes unidades, y los dispositivos periféricos.

¿Cuáles son los componentes básicos de la CPU?
La memoria principal, la unidad de control y la unidad aritmético-lógica.

¿Cómo funciona la memoria principal?
Mediante un conjunto de células numeradas y dos registros especiales con los que realiza las transacciones: el registro de dirección que indica el número de la célula afectada y el de intercambio que contiene la información leída o la que hay que escribir en la célula en cuestión.

¿Cuál es el objetivo de la unidad de control?
Controlar la ejecución de las instrucciones del programa; para ello cuenta con dos registros primarios: uno de ellos memoriza el número de la instrucción en curso, mientras que el segundo almacena la instrucción propiamente dicha.

¿Qué tareas realiza la unidad aritmético-lógica?
Tal como su nombre indica, se encarga de ejecutar las operaciones aritméticas y lógicas, almacenando el resultado en un registro llamado acumulador.

¿Qué son las unidades periféricas?
Son dispositivos que se ocupan de facilitar el diálogo entre el ordenador y el mundo exterior o de almacenar grandes volúmenes de información y mantenerla a disposición del ordenador.

¿Qué es un canal?
Es una unidad encargada de realizar las transacciones de información entre la unidad de control y los periféricos. Su utilidad estriba en que descargan a la unidad central de proceso del control directo de la entrada y salida de datos.

Fuente Consultada:
Gran Enciclopedia de la Informática Tomo I
Cómo Son y Como Funcionan Casi Todas Las Cosas Reader´s Digest
Gran Enciclopedia Universal Tomo 26
Sitio Web: http://www.angelfire.com/ca6/germancho/intelmade