ESCUELA POLITÉCNICA SUPERIOR
GRADO EN INGENIERÍA ELÉCTRICA – INFORMÁTICA
PRÁCTICA 11: BASES DE DATOS CON MS-ACCESS 2007
OBJETIVOSEsta práctica tiene como objetivo completar las capacidades básicas del diseño y manejo de un Sistema de Gestión de Bases de Datos (SGBD) adquiridas previamente en la formación teórica. Para ello se pretende completar esa formación mediante una serie de ejercicios prácticos y aplicativos con un SGBD de amplio uso y difusión.
PREPARACIÓN:
La práctica se realizará utilizando el SGBD Microsoft Access 2007 contenido en el paquete
Microsoft Office versión 2007. En concreto la versión que se va a utilizar es Microsoft Office 2007, lo cual quiere decir que puede haber ligeras diferencias respecto a otras versiones de este software. Previamente descárguese de la plataforma de enseñanza virtual a su carpeta de trabajo la base de datos “p11.mdb” que encontrará en “Contenido del curso” y la carpeta que contiene los boletines de prácticas.
A lo largo de los diferentes apartados se utilizará de forma indistinta los nombres 'SGBD' y 'base de datos', siendo en este caso ambos términos equivalentes. Para aquellos alumnos que no dispongan de dicho software y quieran realizar o completar ejercicios de bases de datos fuera del horario pueden utilizar el software “Base” de LibreOffice. Ambos son parcialmente compatibles con Microsoft Access, son software libre (gratuitos) y pueden ser utilizados en Sistemas Operativos Windows, MacOS, Android y
Linux.
¿Qué es Microsoft Access?
Microsoft Access es un sistema de gestión de bases de datos relacionales (SGBDR), lo cual le proporciona una serie de ventajas, entre las que caben destacar:
• Creación de tablas para el almacenamiento y la manipulación de la información. • Definición de relaciones entre tablas.
• Consultas a múltiples tablas.
• Verificación de la integridad de la información.
• Disponible para los Sistemas Operativos Windows y MacOS.
Elementos de Microsoft Access
Al hacer doble click y arrancar la base de datos “p11.mdb” (extensión .mdb), es aconsejable que inicialmente se maximice la ventana de Access 2007. Es posible que al abrir la base de datos aparezca una “Advertencia de Seguridad” debajo de la barra de tareas/menús (ver Figura 0). En ese caso debe seleccionar “Opciones” y a continuación “Habilitar este contenido”.
este contenido”.
El acceso a los elementos de trabajo de una base de datos de Access 2007 se hace a través del área de trabajo con fondo blanco que aparece a la izquierda justo debajo del menú principal de la parte superior. Inicialmente al abrir una base de datos se mostrará el cuadro con el título de “Tablas” y abajo un listado de las tablas de la base de datos. A la derecha de la barra superior aparecerá un control en forma de flecha hacia abajo (ver figura/icono de este apartado). Si se pulsa aparece un menú (ver Figura 1) que nos permitirá movernos por los diferentes elementos de la base de datos: tablas, formularios, informes, … Si luego se selecciona con el menú contextual (botón derecho del ratón) sobre cualquiera de los elementos, podremos acceder a sus propiedades, diseño, opciones de cambio de nombre, etc (ver Figura 2).
Figura 1. Menú de selección de los diferentes opciones y
elementos de la base de datos. Figura2. Propiedades y opciones de trabajo que se muestran mediante el menú contextual para una tabla de una base de datos
• Tablas
Una tabla es un conjunto de información acerca de una persona, cosa objeto o evento. Access representa las tablas en forma similar a las hojas de cálculo, donde las columnas son campos y las filas son registros. Toda la información de la tabla debe describir el tema para el que fue creada. Cada registro de la tabla tiene las mismas características (columnas), y cada una de ellas puede tomar valores en el mismo dominio.
• Consultas
Una consulta es una solicitud de información a la base de datos. Los datos mostrados pueden proceder de una sola tabla o de un conjunto de tablas (relacionadas entre ellas). En las consultas se pueden aplicar criterios para filtrar los datos de las tablas y recuperar sólo los que cumplan con el criterio. Las consultas se utilizan para obtener información de forma interactiva por parte del usuario.
• Informes
Los informes son similares a las consultas. Con un informe es posible recuperar contenidos de la base de datos y presentarlos en una página impresa. Esta es la principal diferencia respecto de las consultas ya que aquí se pretende generar la información en forma de documento. Incluso existe la posibilidad de verlos en la pantalla del ordenador en lugar de dirigirlos a la impresora (una especie de “vista previa” antes de imprimir el documento). Un informe puede recuperar la información de tablas, otras consultas o incluso de formularios. Los informes de Access siguen la filosofía de lo que se ve es lo que se imprime, con lo cual es posible diseñar informes de gran calidad y de forma fácil. En un informe se pueden mostrar totales y realizar operaciones matemáticas con los datos de los campos y registros que contenga el informe. • Formularios
Un formulario permite crear la interfaz de usuario (botones, mensajes, entradas de texto, selección de opciones, etc). Es una forma de interacción entre el usuario y la base de datos que permite presentar, cambiar, eliminar e introducir la información de una o más tablas o de una o más consultas, y todo ello de forma amigable y sencilla. Access no sólo cuenta con elementos gráficos para crear interfaces amigables, sino que incorpora un asistente que genera automáticamente los formularios más habituales.
Diseño de una base de datos en Access
La manera de guardar información en una base de datos relacional es a través de tablas. Por este motivo, para el diseño de una base de datos, se realiza el diseño de cada tabla, los campos que contiene, y las relaciones entre éstas.
Los pasos siguientes son recomendables para la realización de un buen diseño y deben hacerse antes, incluso, de acceder a la creación de ningún objeto:
• Se deben especificar las tablas que se precisan para representar la información.
• Se indicarán para cada tabla los campos que la componen. No confundir campo con registro. Un registro es un elemento de una tabla compuesto de valores en cada uno de los campos. Por ejemplo, en una tabla de 'personas' el registro de una persona concreta podría tener los campos 'nombre', 'apellidos', 'direccion', 'teléfono', ...
• Para cada uno de los campos, se realizará un análisis para determinar el tipo de dato y posibles restricciones de los valores que contendrán.
• Se identificarán los campos comunes en las tablas, para saber cuáles tablas tienen relaciones.
• Se definirán las claves primarias. Las claves primarias son aquellos campos dentro de una tabla que identifican a un registro de forma unívoca. Un ejemplo sería un campo 'DNI' en una tabla 'Personas'). • Finalmente se diseñarán los mecanismos que manipulen estas tablas.
Definición de Tablas en Access
Para definir una tabla se selecciona el la opción “Tabla” dentro del menú crear (ver Figura 3). Para definir la tabla y todos sus campos, con el menú contextual se ha de seleccionar “Vista Diseño” (ver Figura 4). A
continuación aparecerá una ventana para que defina la estructura de una tabla, especificando los nombres de los campos, los tipos de datos de cada campo y una breve descripción del contenido de cada campo. Los nombres de campo de una tabla pueden tener hasta 64 caracteres de longitud y se permiten la inclusión de espacios en los nombres de campo. Los tipos de campos que se pueden definir en una tabla son:
• Texto - El tipo predeterminado. Puede contener cualquier tipo de caracteres, letras o números. La longitud máxima que admite este tipo es de 255 caracteres.
• Memo – Texto extenso o combinación de texto y números.
• Numero - contiene valores numéricos para cálculos o comparaciones. El tipo de número se determina por el tamaño de campo que definimos en sus propiedades.
• Fecha/Hora - Fechas de Calendario para los años entre 100 y 9999 y horas (formato de 12 y de 24 horas).
Figura 3. Creación de una tabla
seleccionando “Vista Diseño”. Figura 4. Inclusión de un campo llamado “nombre” de tipo “texto” en una tabla nueva.
• Moneda - se recomienda se uso en cálculos financieros por ser el modo más preciso para tratar con valores monetarios.
• Autonumérico - Un número único que Access asigna a cada nuevo registro añadido. No se pueden cambiar sus valores ni podemos volver a utilizarlos si eliminamos un registro.
• Sí/No - almacena un único valor que corresponda a la condición "verdadero" o "falso".
• Objeto OLE - como dice su nombre, contiene un Objeto OLE. Un objeto OLE puede ser una hoja de cálculo, un documento escrito, una imagen, o un sonido por ejemplo.
• Hipervínculo - contiene vínculos hacia otros documentos de MS-Office o a una página en la Web. • Asistente para búsqueda – Permite elegir un valor de una lista o de otra tabla. Aparece un cuadro de diálogo.
Además, para cada campo de datos, se pueden imponer una serie de restricciones o propiedades del campo.
REALIZACIÓN DE LA PRÁCTICA EN EL AULA
Para la realización de la práctica se entrega a los alumnos la base de datos Accessalumnos-estudian-asig
con el siguiente diseño:
Tabla Alumnos:
Campo Tipo de Datos Descripción
Id Autonumérico Identificador del registro (Clave primaria)
Nif Texto NIF del alumno
Nombre Texto Nombre del alumno
Apellidos Texto Apellidos del alumno
Teléfono Número Teléfono del alumno
Tabla Asignaturas:
Campo Tipo de Datos Descripción
Id Autonumérico Identificador del registro (Clave primaria)
Nombre_asign Texto Nombre de la asignatura
Código Número Código de la asignatura
Tabla Estudian:
Campo Tipo de Datos Descripción
Id Autonumérico Identificador del registro (Clave primaria)
Id_alumno Número Identificador del alumno
Id_asign Número Identificador de la asignatura
Relaciones entre las tablas:
El conjunto de entidades Alumnos está relacionado mediante una relación “muchos a muchos” con el conjunto de entidades Asignaturas, de forma que un alumno puede estar matriculado de varias asignaturas, y en una misma asignatura hay matriculados varios alumnos. El modelo de datos que utiliza el SGBD es un modelo relacional, en el que para este ejemplo hay una tabla para el conjunto de entidades
Alumnos, una tabla para el conjunto de entidades Asignaturas y una tabla para la relación Estudian. La transformación de las relaciones al modelo conceptual del SGBD se hace creando una relación 1:M (1 : ∞) del atributo Id de la tabla Alumnos al atributo Id_alumno de la tabla Estudian, y una relación 1:M (1 : ∞) del atributo Id de la tabla Asignaturas al atributo Id_asign de la tabla Estudian.
Además, hay que Exigir integridad referencial, para que en la tabla de la relación, sólo pueda haber registros que estén relacionados con registros existentes en las tablas Alumnos y Asignaturas. El tipo de relación debe ser “Uno a Varios”, y debe estar seleccionada las dos casillas de verificación Actualizar en cascada los campos relacionados y Eliminar en cascada los campos relacionados.
EJERCICIOS
Ejercicio 1: Abrir la base de datos con Microsoft Access. Abrir cada una de las tablas en “Vista de Diseño” y observar los campos (atributos) que forman cada una de las tablas. Para ello seleccione una tabla cualquiera y con el menú contextual (botón derecho del ratón) seleccione la opción “Vista Diseño”. A continuación, abrir las tablas para ver el contenido. Para ello símplemente haga doble click sobre la tabla que desee.
Por último, abrir las relaciones entre las tablas para ver la estructura general de la base de datos, es decir, todas sus tablas y las relaciones que hay entre ellas. Para ello seleccione del menú “Herramientas de base de datos” y la opción “Relaciones”. Aparecerá una figura parecida a la Figura 5. Comprobar que la integridad referencial se cumple, es decir, comprobar que en la tabla “Estudian”, sólo haya registros que estén relacionados con registros existentes en las tablas “Alumnos” y “Asignaturas”.
Figura 5. Vista general de las relaciones de la base de datos con sus tablas y sus relaciones.
Comprobar que el tipo de relación debe ser “Uno a Varios” (en Access 1:∞), y debe estar seleccionada las dos casillas de verificación “Actualizar en cascada los campos relacionados” y “Eliminar en cascada los campos relacionados”. Para ello hacer doble click en las relaciones (flechas) que unen las diferentes tablas.
Ejercicio 2: Crear la consulta que muestre el nombre y apellidos de los alumnos ordenados por el apellido, utilizando el asistente gráfico de Access. Para ello:
1. Seleccione “Consultas” del área de trabajo con fondo blanco de la izquierda. Pasamos entonces de ver las Tablas a ver las consultas, que inicialmente estarán vacías porque no hemos creado todavía ninguna. A continuación en el menú principal seleccione la opción/pestaña de “Crear” y luego la opción “Diseño de Consulta”. Aparecerá un cuadro de diálogo para que indique las tablas que participan en la consulta. 2. Seleccione la tabla Alumnos y pulse el botón Agregar. Pulsar Cerrar. Aparece la ventana de edición de la consulta. Los campos que queremos que se observen en la consulta los vamos seleccionando en la zona inferior. Seleccionamos los campos nombre y apellidos.
3. Para seleccionar los campos de la Tabla “Alumnos” que queremos participen en la consulta los seleccionamos uno por columna que aparecen en la parte inferior del cuadro de diálogo del diseño de la consulta. Como queremos ordenar por apellidos, en la fila Orden para la columna apellidos seleccionamos ascendente (ver Figura 6).
Figura 6. Creación de una consulta para la tabla “alumnos”.
4. Para finalizar, guárdela como “Consulta de alumnos”.
5. Si ahora hace por ejemplo doble click sobre la consulta se ejecutará mostrándose una lista de los alumnos ordenados alfabéticamente por el primer apellido.
La creación de una consulta con este asistente gráfico genera realmente una instrucción SQL. Podemos ver la orden SQL que se ha generado, seleccionando la opción “Vista SQL” del menú “Inicio” y sub-opción “Ver” (ver Figura 7). Esta sentencia SQL consta de tres partes:
• Cláusula SELECT: Selecciona los campos que van a aparecer en la consulta.
• Cláusula FROM: Especifica el nombre de las tablas que participan en la consulta.
• Cláusula ORDER BY: Especifica el criterio de ordenación.
• Normalmente, después de la cláusula FROM aparece la cláusula WHERE (“criterios” en ACCESS), donde se especifican las condiciones de la consulta, pero en este caso no aparece, ya que no se ha impuesto ninguna condición.
Figura 7. Vista de la consulta en formato SQL en Access. El botón “! Ejecutar” ejecuta la sentencia SQL y devuelve su resultado.
Ejercicio 3: No siempre en una base de datos se dispone de asistentes gráficos para crear una consulta como en Access. Sin embargo, todas las bases de datos relacionales (incluido Access) soportan el lenguaje SQL. Para practicar el lenguaje SQL cree esta vez una consulta en ese formato (sin utilizar el asistente gráfico del ejercicio anterior) para que muestre cuáles son los nombres y apellidos de los alumnos matriculados en la asignatura Física. Antes de nada vaya a la vista “Consultas” dentro área de trabajo con fondo blanco y cree una nueva consulta (pestaña/opción “Crear” del menú principal y opción “Diseño Consulta” pero luego seleccionando del menú “Ver” la “Vista SQL”). Para el diseño de la consulta SQL ayúdese del “Anexo” al final de la práctica. Tenga en cuenta que en Access para seleccionar el campo de una tabla se sigue una notación parecida a las estructuras en C. Se pone primero el nombre de la tabla, luego un punto y finalmente el nombre del campo de la tabla.
Para crear la consulta nueva que usa las tres tablas de la base de datos, situaríamos los campos correspondientes en la zona de campos que participan en la consulta: Apellidos y Nombre del alumno e identificador de asignatura, estableceríamos el orden ascendente a apellidos, y escribiríamos el valor del identificador de la asignatura Física en la zona de especificación de Criterios.
Luego, modifique la consulta SQL para que aparezca el nombre de la asignatura en la consulta y no aparezca el identificador de asignatura.
Ejercicio 4: Diseñe un formulario para la introducción de los datos de los alumnos con todos los campos, con el título Introducir Información sobre los alumnos. Para ello, siga los siguientes pasos.
1. En primer lugar, seleccione la vista “Formularios” en el área de trabajo con fondo blanco de la izquierda. Después cree el formulario pero esta vez utilizando la opción “Asistente para formularios” de la pestaña/opción del menú principal “Crear” (ver Figura 8).
Figura 8. Creación de un formulario con el asistente de formularios de Access.
Una vez que aparezca el cuadro de diálogo para la creación de formularios seleccione la tabla Alumnos y todos los campos (se desea que aparezcan en el formulario todos los campos de la tabla).
2. En el siguiente cuadro de diálogo puede seleccionar la distribución de los elementos en el formulario. Puede elegir entre una presentación en columnas, tabular, hoja de datos o justificado. Deje la opción predeterminada. Lo mismo para la siguiente pantalla en la que se le pide que elija un estilo.
3. El último cuadro de diálogo se utiliza para definir un título para el formulario, y poder abrir el formulario con los datos, o bien modificar el diseño generado por el asistente.
4. Cambie el título del formulario a Introducir Información sobre alumnos, y pulse el botón Finalizar. 5. Para abrir el formulario, seleccione el formulario y pulse el botón Abrir (o doble click). Verá algo similar a la Figura 9.
Figura 9. Ejemplo de formulario para introducir datos de alumnos.
6. Para modificar el formato del formulario, seleccione el formulario en “Formularios”, y seleccione la vista “Vista Diseño” con el menú contextual (ver resultado en figura 10). Esta opción permite personalizar el formulario que verá el usuario al introducir datos. La forma de diseñarlo (y programarlo) con etiquetas, campos para introducir datos y botones, se asemeja al trabajo con algunos entornos de programación visual de aplicaciones y programas para los entornos de escritorio tipo Windows.
Tras esto, diseñe un formulario para la presentación de los datos de las asignaturas con todos los campos, con el título Introducir Información sobre las asignaturas. Haga lo mismo para la tabla Estudian.
Ejercicio 5: Diseñe un informe para la presentación de los alumnos ordenadas por apellidos, con el título “Listado de alumnos”. Para ello, siga los siguientes pasos.
1. En primer lugar, seleccione Informes en el área de trabajo con fondo blanco de la izquierda. Se debe realizar el diseño mediante el “Asistente para informes” de la pestaña/menú principal “Crear” (paso parecido al anterior para la creación de un formulario). Para ello debe seleccionar la tabla Alumnos y todos los campos excepto el id (se desea que aparezcan en el informe todos los campos de la tabla, excepto el identificador).
2. El paso siguiente del asistente es un cuadro de diálogo que pregunta si desea realizar algún “nivel de agrupamiento”. En nuestro caso esto no tiene utilidad, pero sí sería interesante en el caso de un listado de alumnos por asignaturas. Por tanto, pulse el botón Siguiente.
3. En el paso siguiente se seleccionan los campos por los que desea ordenar (ascendente o descendente). Seleccione las listas de forma que se ordene por apellido y si coinciden los apellidos, por nombre.
4. A continuación, aparece un cuadro de diálogo para que seleccione la orientación de la página y el espaciado entre las líneas del informe. Seleccione el botón de opción de orientación Vertical y el distribución Tabular (opciones por defecto).
5. El ante-último cuadro de diálogo pide el estilo que desea aplicar al informe. Seleccione el estilo “oficina” por defecto o cualquier otro si lo desea.
6. El último cuadro de diálogo, le pide un título del informe, que en nuestro caso será “Listado de alumnos” y puede seleccionar entre ver la presentación del informe o modificar el diseño del mismo. Deje los valores por omisión y pulse el botón Finalizar.
7. Al igual que con los formularios, para modificar el formato/diseño de un informe, hay que seleccionar el informe en el área de trabajo con fondo blanco de la izquierda, y pulsar la opción “Vista Diseño” con el menú contextual (ver Figura 10).
Figura 10. Diseño de un informe sobre datos de una Tabla de Alumnos
8. Para visualizar el contenido del informe que se imprimiría, sólo ha de hacer doble click sobre el informe o también con el menú contextual (botón derecho del ratón) y la opción “Abrir”.
9. Diseñe ahora un informe para la presentación de asignaturas ordenadas por nombre, con el título “Listado de asignaturas”.
Ejercicio 6: Cree una nueva tabla llamada “Cursos”, que contenga los campos, identificador del curso (no olvide marcar este campo como clave principal) y nivel del curso (con los textos: Primero, Segundo, Tercero y Cuarto).
Para ello, siga las instrucciones siguientes: Seleccione la opción/pestaña “Crear” del menú principal y luego “Tabla”. Con el menú contextual (botón derecho del ratón) seleccione la opción “Vista diseño”. Es conveniente que también tenga visible en el área de trabajo con fondo blanco de la izquierda la vista de “Tablas”. Después aparecerá una ventana para que defina la estructura de una tabla, especificando los nombres de los campos, los tipos de datos de cada campo y una breve descripción del contenido de cada campo (ver Figuras 1 y 2). El único campo Id (clave) de la tabla “Cursos”, será de tipo texto. Una vez que tenga la tabla creada, introducir los valores Primero, Segundo, Tercero y Cuarto.
Ejercicio 7: Se quiere crear la relación entre cursos y asignaturas, de forma que un curso puede tener muchas asignaturas pero una asignatura sólo se puede impartir en un curso. Para ello, introduzca un nuevo campo Id_curso en la tabla “asignaturas”, y complételo con el valor Primero, Segundo, Tercero y
Cuarto según sea el caso. A continuación establezca la relación correspondiente entre las tablas asignaturas y cursos.
Para ello:
1. Seleccione “Relaciones” de la pestaña/menú principal “Herramientas de bases de datos”. Aparecerá el editor de relaciones (ver Figura 5).
2. Arrastre la tabla “Cursos” desde el área de trabajo con fondo blanco de la izquierda, hasta el área de la ventana de relaciones como el que se muestra en la Figura 5.
3. Agregue la relación que considere oportuna entre las tablas Cursos y Asignaturas. Para ello con el ratón seleccione el campo conveniente de las tablas “asignaturas” y/o “Cursos” y arrástrelo hasta el campo conveniente de la otra tabla. Verá que automáticamente se ha creado una relación entre ambas tablas. 4. Finalmente haciendo doble click sobre la relación (flecha) edite las propiedades de la relación de forma que tal y como dice el enunciado del ejercicio un curso (Primero, Segundo, Tercero y Cuarto) pueda tener muchas asignaturas asociadas.
ANEXO: CONSULTAS SQL
1. Consultas básicas
La sintaxis básica de una consulta de selección es la siguiente:
SELECT
Campos FROM
Tabla
En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos. Por ejemplo en la notación SQL de Access tendríamos:
SELECT
Clientes.Nombre, Clientes.Teléfono FROM
Clientes
Esta sentencia devuelve un conjunto de resultados con el campo nombre y teléfono de la tabla clientes. 2. Devolver Literales
En determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una consulta de selección, por ejemplo, supongamos que tenemos una tabla de empleados y deseamos recuperar las tarifas semanales de los electricistas, podríamos realizar la siguiente consulta:
SELECT
Empleados.Nombre, 'Tarifa semanal: ' , Empleados.TarifaHora * 40 FROM
Empleados WHERE
Empleados.Cargo = 'Electricista'
3. Ordenar los registros
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la cláusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a
SELECT
Clientes.CodigoPostal, Clientes.Nombre, Clientes.Telefono FROM
Clientes ORDER BY
Clientes.Nombre
Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre.
Se pueden ordenar los registros por mas de un campo, como por ejemplo:
SELECT
Clientes.CodigoPostal, Clientes.Nombre, Clientes.Telefono FROM
Clientes ORDER BY
Clientes.CodigoPostal, Clientes.Nombre
Incluso se puede especificar el orden de los registros: ascendente mediante la cláusula ASC (se toma este valor por defecto) o descendente (DESC)
SELECT
CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY
Clientes.CodigoPostal DESC , Clientes.Nombre ASC
4. Consultas con Predicado
El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son:
Predicado Descripción
TOP Devuelve un determinado número de registros de la tabla
DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente ALL
Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL y devuelve todos y cada uno de sus campos. No es conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados. SELECT ALL FROM Empleados SELECT * FROM Empleados TOP
Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes de la tabla Estudiantes:
SELECT TOP 25 Estudiantes.Nombre, Estudiantes.Apellido FROM Estudiantes ORDER BY Estudiantes.Nota DESC
Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla de Estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:
SELECT TOP 10 PERCENT
Estudiantes.Nombre, Estudiantes.Apellido FROM
Estudiantes ORDER BY
Estudiantes.Nota DESC
El valor que va a continuación de TOP debe ser un entero sin signo. TOP no afecta a la posible actualización de la consulta.
DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro:
SELECT DISTINCT
Estudiantes.Apellido FROM
Empleados
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios