Objetos de una base de datos



Documentos relacionados
CONSULTAS BASICAS EN SQL SERVER

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

MANUAL BÁSICO DEL LENGUAJE SQL

Qué es SQL. Características de SQL:

SQL (Structured Query Language)

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

El lenguaje SQL es un lenguaje estándar para el acceso y

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Base de datos en Excel

Procedimientos para agrupar y resumir datos

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Como sabemos una base de datos esta compuesta de tablas donde almacenamos registros catalogados en función de distintos campos (características).

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

A.1. Definiciones de datos en SQL

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Base de datos relacional

Toda base de datos relacional se basa en dos objetos

BASES DE DATOS - Microsoft ACCESS 2007-

1. DML. Las subconsultas

Trabajos de Ampliación. Bases de datos NoSQL.

ADMINISTRACIÓN DE BASE DE DATOS

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

La ventana de Microsoft Excel

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

15 CORREO WEB CORREO WEB

5- Uso de sentencias avanzadas

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

Consultas con combinaciones

Acceso a bases de datos MySQL con PHP

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

PS.Vending Almacén Pocket PC

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

Bases de Datos Relacionales

Activación de un Escritorio Remoto

GMAIL (avanzado) 1. Accede a la web de Gmail, Te destacamos las funcionalidades que vamos a enseñarte a. 2. Vamos a enseñarte a:

Gestión de Retales WhitePaper Noviembre de 2009

Internet Information Server

SENTENCIAS Y CONSULTAS EN SQL SERVER

Tecnología de la Información y la Comunicación. Base de datos. Consultas

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Curso de PHP con MySQL Gratis

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

TUTORIAL PRÁCTICO DE BASES DE DATOS EN ACCESS CREAR UNA AGENDA

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Capítulo 9. Archivos de sintaxis

Formas de llevar a cabo un backup de una base de datos MySQL

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Bases de Datos 2. Teórico

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Bases de datos: Sistemas de bases de datos:

Guardar y abrir documentos

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Manual CMS Mobincube

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Concesionario de coches

Operación de Microsoft Word

T12 Vistas y tablas temporales

WINDOWS : TERMINAL SERVER

Gobierno del Estado de México

Año: 2008 Página 1 de 18

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

Tablas y Campos Nuevos

GENERACIÓN DE TRANSFERENCIAS

Escudo Movistar Guía Rápida de Instalación Para Windows

Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

GedicoPDA: software de preventa

Combinar correspondencia (I)


Grupo: Documentación Tipo documento: Manual de Usuario V.1.0 /2011 René Darío Pacios Díaz

Oficina Online. Manual del administrador

Instalación del programa PSPP y obtención de una distribución de frecuencias.

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

Seminario de Informática

vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Recuperador datos externos

MANUAL DE AYUDA MODULO TALLAS Y COLORES

RELACIÓN DE PRÁCTICAS DEL TEMA 2

Manual Oficina Web de Clubes (FBM)

Transcripción:

QUÉ ES UNA BASE DE DATOS Una base de datos es un conjunto de datos organizados e interrelacionados que se organizan y relacionan entre sí de manera sistemática, esto es, siguiendo unas determinadas reglas. En muchos sitios veremos que se refieren a una base de datos con la abreviatura BD o DB (del inglés database). Ejemplos de bases de datos: La base de datos de una tienda online, con los datos de sus clientes, productos, métodos de pago, etc. La base de datos de un foro online, almacenando las conversaciones, usuarios, temas, etc. La base de datos de un blog, con los artículos, categorías, etiquetas, etc. Objetos de una base de datos Las bases de datos normalmente presentan 6 tipos de objetos: Tablas Vistas Funciones Índices Procesos almacenados Triggers o disparadores Veamos cada uno de estos objetos con más detalle. Tablas Las tablas son los principales objetos de una base de datos. Representan la estructura física donde se almacenan los datos. Las tablas contienen registros y cada registro contiene campos. Un registro es cada una de las filas de la tabla, mientras que el campo es cada una de las columnas de la tabla. 1

Vistas INSTITUTO SUPERIOR TECNOLÓGICO Son tablas que se forman a partir de otras tablas como resultado de una consulta SQL. Se pueden realizar sobre ellas las mismas operaciones que sobre las tablas, pero es importante recordar que los cambios afectan a las tablas originales, pues una vista es sólo eso, un modo de visualizar los datos de otras tablas. Funciones Son operaciones que el sistema gestor de base de datos realiza sobre las mismas. Estas operaciones son necesarias para poder interactuar con la base de datos. Ejemplo: Operaciones para crear los objetos de la base de datos: tablas, vistas, etc. Índices Los índices permiten acceder a los elementos con mayor rapidez a los registros de una tabla de una base de datos. Normalmente se utilizan en aquellos campos que son más frecuentes en las búsquedas. Ejemplo: Utilizar el número de pasaporte para localizar a un ciudadano europeo en una base de datos interestatal. De todos los datos de la tabla ciudadano europeo, escogeríamos el pasaporte como índice. Procesos almacenados Se trata de un programa que se almacena en la base de datos y que se ejecuta directamente en el sistema gestor de base de datos. Ejemplo: buscar en la base de datos todos los usuarios cuya fecha de nacimiento sea hoy y enviarles una felicitación de cumpleaños Triggers o disparadores Es un proceso que se ejecuta únicamente cuando se cumple una condición preestablecida. Los triggers o disparadores pueden crear, editar o borrar tablas en una base de datos. Ejemplo: Envío de un correo electrónico de bienvenida a un usuario que se acaba de registrar. Qué es un sistema gestor de bases de datos Un sistema gestor de bases de datos es una aplicación informática que permite al usuario interactuar con las bases de datos. Es una interfaz que permite al usuario acceder a los datos almacenados en las bases de datos que lo integran. Nos acostumbramos a referir a estos sistemas con las siglas DBMS, que provienen del nombre en inglés: Database Management System. 2

Modelos de bases de datos Tenemos diferentes modelos de bases de datos, entre ellos cabe destacar: Modelo tabla. Se trata de una serie formada por una tabla bidimensional compuesta por registros y por campos en la que se recogen los datos. Modelo relacional. Este es el modelo que se acabó imponiendo y el más popular actualmente. Está basado en el modelo de tablas, pero permitiendo la relación entre las diferentes tablas en base a unas reglas. MySQL se basa en este modelo, por lo que lo vamos a ver con más detalle. Ahora simplemente especificar estos puntos: Los elementos de una base de datos relacional son capaces de relacionarse sin necesidad de duplicar la información. Utilizan SQL (Structured Query Language) para obtener la información de varias fuentes en una única consulta Utilizan claves para establecer estas relaciones (claves primarias y externas, que veremos enseguida). 3

Conceptos básicos de las bases de datos relacionales Los principales conceptos de las bases de datos relacionales son: Datos Entidades Claves primarias Claves externas Relaciones Restricciones de integridad referencia Metadatos A continuación veremos cada uno de ellos con detalle y ejemplos que sirvan para entender los conceptos. Datos. Los datos son hechos conocidos que se pueden registrar y que tienen un significado implícito. Ejemplos: nombre, apellido, dirección, teléfono. Entidades. Una entidad es todo aquello de lo que nos interesa tener unos datos guardados. Ejemplos: Clientes, personas, productos, trabajadores. En un modelo de entidad-relación, las relaciones las conforman los atributos y los campos del tema que nos interesa guardar. 4

Claves primarias Cada entidad tiene que tener una clave primaria que identifique únicamente al conjunto de datos. Siguiendo con el ejemplo, la entidad Clientes tendrá como clave primaria el código cliente, la entidad facturas el número facturas y la entidad producto el código producto. Es muy importante que la clave primaria sea única y que jamás se pueda repetir. Así, no pueden haber dos facturas con un mismo número. Claves externas Las claves externas son las claves externas de otra entidad que forman parte de la tabla de la entidad actual. Así, en nuestro ejemplo, en la entidad Factura, el código cliente y el código producto son entidades externas. 5

Relaciones INSTITUTO SUPERIOR TECNOLÓGICO Las relaciones son lo que dice el término, como se relacionan las entidades entre sí a través de sus campos y atributos. Así, en nuestro ejemplo, la entidad Facturas se relaciona con las entidades Clientes y Productos a través del código cliente y el código producto de cada uno de sus campos respectivamente. Se pueden distinguir tres tipos de relaciones: Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa. Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con una lista de Alcaldes, una población sólo puede tener un alcalde, y un alcalde lo será únicamente de una población. Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la otra tabla (tabla principal) puede tener más de un registro relacionado en la primera tabla (tabla secundaria). Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, duna población puede tener más de un habitante, pero un habitante pertenecerá (estará empadronado) en una única población. Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente. Las relaciones varios a varios se suelen representar definiendo una tabla intermedia entre las dos tablas. Restricciones de integridad referencial Las restricciones de integridad referencia son las condiciones que se han de cumplir para que el modelo tenga sentido y sea coherente. Siguiendo con nuestro ejemplo, para que en las Facturas se pueda poner el código cliente, antes ha de existir el cliente. 6

Metadatos INSTITUTO SUPERIOR TECNOLÓGICO Los metadatos son datos que informan sobre los datos presentes en una base de datos. Ejemplos: longitud de un campo (número de caracteres), tipo de campo (texto, número..), información del campo, etc. Qué es SQL SQL y MySQL SQL (Structured Query Language) es un lenguaje declarativo estándar para la gestión de bases de datos relacionales, que permite recuperar y modificar fácilmente información de interés de las bases de datos mediante consultas. Actualmente, la mayoría de sistemas gestores de contenidos utilizan SQL, por lo que si se conoce SQL, se puede trabajar con diferentes DBMS como MySQL, Oracle, SQL Server, PostgreSQL, etc. Características de SQL: Es un lenguaje declarativo de alto nivel que permite una alta productividad, ya que está basado en la gestión de un conjunto de registros. Explota tanto la flexibilidad como la potencia de los sistemas relacionales Se divide en dos sublenguajes: o Data Definition Language (DDL): lenguaje para la creación de objetos de una base de datos o Data Manipulation Language (DML): lenguaje para la manipulación y consulta de los datos de una base de datos. Operaciones básicas con MySQL Con MySQL se pueden realizar muchos tipos de operaciones. Las operaciones básicas son: Crear bases de datos Crear usuarios, grupos de usuarios y contraseñas. Crear y modificar tablas Eliminar tablas Cargar datos Añadir y modificar registros en las tablas Consultar y actualizar los registros Eliminar registros Hacer consultas conjuntas a varias tablas en modo vista Operaciones de agrupación, orden, comparación, etc. Operaciones avanzadas, como programación de triggers, procesos almacenados, etc. 7

SERVIDOR LOCAL Wampserver Lo primero que vamos a hacer es descargar WAMPServer. Una vez descargado dar doble click al instalador. El instalador es bastante fácil de seguir, pero de todas formas aquí dejo algunas capturas de pantalla: 8

9

10

No creo que sea necesario, pero recomiendo que se le dé un re-start a la computadora después de la instalaciónuna vez instalado podrán ver el icono de WampServer en la Barra de Tarreas. Si se le da click al icono el menú de opciones aparece. 11

INSTITUTO SUPERIOR TECNOLÓGICO Al escoger Localhost en el menú se abre el navegador defecto con la dirección: http://localhost mostrando la página index.php creada por el programa. En ella se desglosan la configuración de PHP así como también las herramientas disponibles. INICIAR LA CONSOLA DE MYSQL Para ingresar a la consola de MySql, realizamos lo siguiente: 12

XAMPP INSTITUTO SUPERIOR TECNOLÓGICO Instalación de XAMPP Ve a la página de XAMPP y haz clic en el enlace que se corresponda a tu sistema operativo. En Download, selecciona XAMPP y a continuación Installer. Una vez descargado, ejecútalo. Verás una pantalla como esta: Selecciona las opciones de XAMPP que te interesen. Se recomienda todas las opciones, excepto FileZilla. 13

Una vez finalizada la instalación, hay que iniciar los servicios desde el panel de control de XAMPP. Lo podemos hacer desde el icono que hemos creado en el escritorio, como desde el archivo xampp-control que encontraremos en la carpeta donde hayamos instalado XAMPP, en Windows sería en C:\xampp. Para iniciar los servicios, hemos de pulsar Start en Apache y en MySQL. Iniciar la consola de MySQL Hay varias maneras de poder ejecutar comandos de MySQL. Pero antes de nada, es necesario que sepamos que es la consola de MySQL, cómo la iniciamos y algunos de los comandos de MySQL. Antes de nada, asegúrate que el servidor de MySQL está en marcha. Si utilizas XAMPP, es tan fácil como pulsar Start y ver que está en funcionamiento. Cuando instalas el servidor de MySQL, automáticamente se instala mysql, el monitor de MySQL. Éste es un programa de comandos por línea. Veamos pues como iniciar la consola de MySQL: 1. Ejecuta la ventana de terminal: Windows 7. Haz clic en el botón inicio y en el campo de búsqueda teclea cmd y pulsa enter. O ves a Todos los Programas > Accesorios > Símbolo del Sistema. Mac OS X. Abre una ventana de búsqueda y escoge Aplicaciones > Utilidades > Terminal. Ubuntu, Escoge Aplicaciones > Accesorios > Terminal, o pulsa el logo de Ubuntu y teclea terminal. 2. Ejecuta mysql en la ventana de terminal: Windows 7. Ve a la carpeta donde tienes instalado MySQL. En el caso que hayas instalado XAMPP, teclea cd c:\xampp\mysql\bin y pulsa enter. Para iniciar mysql, teclea mysql -u root y pulsa enter. Nota importante. En el caso de haber puesto una contraseña, el comando será mysql -u root -p password en lugar de mysql -u root, donde has de sustituir password por tu contraseña. En el caso que todo haya ido como esperado, verás que en el terminal aparece mysql>. En Windows verás lo siguiente: 14

COMPONENTES DEL 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 las bases de datos. COMANDOS Existen dos tipos de comandos SQL: Los DLL que permiten crear y definir nuevas bases de datos, campos e índices. Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Comandos DLL: Comando Descripción CREATE Utilizado para crear nuevas tablas, campos e índices DROP ALTER Comandos DML: Comando Empleado para eliminar tablas e índices Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos. Descripción 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 los campos y registros especificados DELETE Utilizado para eliminar registros de una tabla de una base de datos Cláusulas Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. Cláusula GROUP BY HAVING ORDER BY 15 Descripción Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos específicos Utilizada para expresar la condición que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico

Orden de ejecución de los comandos Dada una sentencia SQL de selección que incluye todas las posibles cláusulas, el orden de ejecución de las mismas es el siguiente: 1.- Cláusula 2.- Cláusula 3.- Cláusula GROUP BY 4.- Cláusula HAVING 5.- Cláusula 6.- Cláusula ORDER BY OPERADORES LÓGICOS Operador AND OR NOT Uso Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas. Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negación lógica. Devuelve el valor contrario de la expresión. OPERADORES DE COMPARACIÓN Operador Uso < Menor que > Mayor que <> Distinto de <= Menor ó Igual que >= Mayor ó Igual que = Igual que 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 16

Funciones de Agregado Las funciones de agregado se usan dentro de una cláusula en grupos de registros para devolver un único valor que se aplica a un grupo de registros. Función Descripción 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 TIPOS DE CAMPO Estos tipos de campos más comunes son los siguientes: Alfanuméricos Numéricos Booleanos Fechas Memos Autoincrementables Contienen cifras y letras. Presentan una longitud limitada (255 caracteres) Existen de varios tipos, principalmente, enteros (sin decimales) y reales (con decimales). Poseen dos formas: Verdadero y falso (Sí o No) Almacenan fechas facilitando posteriormente su explotación. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra... Son campos alfanuméricos de longitud ilimitada. Presentan el inconveniente de no poder ser indexados (veremos más adelante lo que esto quiere decir). Son campos numéricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta más que evidente: Servir de identificador ya que resultan exclusivos de un registro. 17

TIPOS DE DATOS A la hora de crear tablas, hay que indicar el tipo de datos de cada campo. Necesitamos pues conocer los distintos tipos de datos. Estos son: D 1. Tipos numéricos 2. Tipos de Fecha 3. Tipos de Cadena 1 Tipos numéricos: Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no. TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 Bit ó Bool: un número entero que puede ser 0 ó 1 SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 BigInt: número entero con o sin signo. Con signo el rango de valores va desde - 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde - 3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. xreal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde - 1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena Tipo de Campo TINYINT SMALLINT MEDIUMINT INT Tamaño de Almacenamiento 1 byte 2 bytes 3 bytes 4 bytes 18

INTEGER BIGINT FLOAT(X) FLOAT DOUBLE DOUBLE PRECISION REAL DECIMAL(M,D NUMERIC(M,D) 4 bytes 8 bytes 4 ú 8 bytes 4 bytes 8 bytes 8 bytes 8 bytes M+2 bytes sí D > 0, M+1 bytes sí D = 0 M+2 bytes if D > 0, M+1 bytes if D = 0 Todos los tipos enteros pueden tener un atributo opcional (no estándar) UNSIGNED. Los valores sin signo pueden usarse cuando quiere permitir sólo números no negativos en una columna y necesita un rango numérico mayor para la columna. 2 Tipos fecha: A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día está comprendido entre 0 y 31. Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-día horas: minutos: segundos TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo: Tamaño 14 12 Formato AñoMesDiaHoraMinutoSegundo aaaammddhhmmss AñoMesDiaHoraMinutoSegundo aammddhhmmss 8 ñomesdia aaaammdd 6 AñoMesDia aammdd 4 AñoMes aamm 2 Año aa 19

Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS' Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos. Tipo de Campo DATE DATETIME TIMESTAMP TIME YEAR Tamaño de Almacenamiento 3 bytes 8 bytes 4 bytes 3 bytes 1 byte 3 Tipos de cadena: Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object) La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres. Blob y Text: un texto con un máximo de 65535 caracteres. MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb. Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores. 20

Tipo de campo CHAR(n) VARCHAR(n) TINYBLOB, TINYTEXT BLOB, TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT ENUM('value1','value2',...) SET('value1','value2',...) Tamaño de Almacenamiento n bytes n +1 bytes Longitud+1 bytes Longitud +2 bytes Longitud +3 bytes Longitud +4 bytes 1 ó dos bytes dependiendo del número de valores 1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores 21

PRIMEROS PASOS EN LA CONSOLA DE MYSQL Antes de empezar, se debe aclarar que toda sentencia de SQL termina con un punto y coma (;). Para mostrar las bases de datos existentes en el Servidor MySql, utilizamos el siguiente comando: mysql > show databases; Para trabajar con una base de datos utilizamos: mysql > use nombrebasedatos; Para visualizar las tablas de una Base de Datos: mysql > show tables; Para observar la estructura de una tabla, digitamos el siguiente comando: Mysql > describe NombredeTabla; 1. mysql > describe autosenventa; Asi mismo para visualizar la versión de MySql utilizamos el comando: mysql> VERSION(); Para observar la fecha actual: se pueden hacer pequeñas operaciones como: mysql> CURRENT_DATE(); 22

Se puede utilizar 2 o más comandos a la vez: mysql> VERSION(), CURRENT_DATE(); Se puede realizer operaciones matematicas: mysql> SIN(PI()/4), (4+1)*5; mysql> 7 *8; Para visualizar el usuario actual: mysql> select user(); Para visualizar fecha y hora actual: mysql> select now(); Para cerrar o salir de la consola: mysql> exit; 23

CREANDO UNA BASE DE DATOS Mysql> create database biblioteca; Si todo va como esperado, aparecerá una línea de código similar a ésta: Query OK, 1 row affected (0.05 sec). Acabamos de crear una base de datos llamada biblioteca. Para comprobarlo, es tan fácil como utilizar el comando que justo acabamos de aprender, show databases; Veremos que ahora en el listado aparece biblioteca. Para empezar, seleccionemos ahora la base de datos biblioteca: Mysql> use biblioteca; CREAR UNA TABLA Partimos de la base de datos que acabamos de crear llamada biblioteca. En ella queremos crear una tabla llamada libros que recoja el fondo bibliográfico. En nuestra tabla de ejemplo crearemos los campos titulo, autor, fecha_publicacion y cantidad. Mysql> create table libros( ); libro_id int unsigned auto_increment, titulo varchar(50) not null, autor varchar(30) not null default 'Desconocido', cantidad smallint unsigned default 0, primary key (libro_id) No nos asustemos, aquí hemos introducido muchas cosas de golpe, vayamos paso por paso. Hemos creado varios campos con una serie de parámetros. Los campos han de ir separados por coma y dentro del paréntesis. Aquí el punto y coma va al final, después del paréntesis. Es muy fácil olvidárselo, por lo que prestad especial atención en este punto. Veamos ahora que hemos hecho: create table libros crea una tabla llamada libros. Podríamos haber hecho lo siguiente: create table libros; 24

Lo que habría pasado, es que habríamos creado una tabla vacía, esto es, sin ningún campo. Como hemos dicho, una tabla está compuesta por campos y por registros. Para poder introducir un registro en la misma, primero es necesario crear los campos, que es lo que hemos hecho. Así en nuestro ejemplo hemos creado cuatro campos:libro_id, titulo, autor y cantidad. por qué crear un libro_id? Veamos ahora uno por uno cada uno de los campos creados: libro_id int unsigned auto_increment, Lo primero que indicamos siempre es el nombre del campo que estamos creando. int significa integer, lo que quiere decir que tiene que ser un número entero. unsigned significa que no puede ser negativo, por lo que la cuenta empezará con el 1. auto_increment significa que el propio gestor de bases de datos, en este caso MySQL, incrementará de manera automática este valor cada vez que introduzcamos un registro en esta tabla. titulo varchar(50) not null, Ahora estamos creando un campo llamado titulo. Varchar significa caracteres y varchar(50) indica que este campo está formado por una cadena de como máximo 50 caracteres. Significa que este campo es obligatorio y que no podemos dejarlo en blanco. autor varchar(30) not null default 'Desconocido', Efectivamente, esta sentencia crea un campo llamado autor de como mucho 30 caracteres que tampoco puede dejarse en blanco. Aquí introducimos una diferencia, y es que hemos añadido default 'Desconocido'. Significa que si no introducimos nada, el sistema automáticamente pondrá que el autor es Desconocido. Así, un libro siempre tiene título, pero no siempre aparece un autor, pensemos en muchos libros de texto o en libros de autor anónimo. cantidad smallint unsigned default 0, smallint es un tipo de número entero que no admite valores grandes, esto nos sirve para evitar errores de tecleado. Aquí hemos creado un campo llamado cantidad que es un número entero pequeño positivo y que en caso de dejarlo en blanco el sistema pondrá que no hay ninguno. El motivo por el que el default es 0 y no 1, es porque un libro se puede haber extraviado. 1 primary key (libro_id) Aquí definimos que la clave primaria de esta tabla será el id del libro. Mostrar las tablas de una base de datos 25

Para ver la tabla que acabamos de crear, utilizamos este comando: Mysql> show tables; Veremos ahora que aparece "libros" en el resultado. Mostrar los campos de una tabla Para inspeccionar los campos de la tabla "libros", usamos el comando explain: Mysql> explain libros; Mysql> describe libros; MODIFICAR UNA TABLA Imaginemos ahora que queremos añadir el campo "editorial" a nuestra tabla "libros". Mysql> alter table libros add editorial varchar(50) not null; Si ahora ejecutamos el comando explain libros; veremos que ha creado un campo llamado editorial. Imaginemos que en lugar de 50 caracteres sólo admita 20. Lo podemos modificar así Mysql> alter table libros modify column editorial varchar(20) not null; Ya hemos creado nuestra tabla libros con cuatro campos. Ahora vamos a proceder a incluir registros en la tabla. INSERTAR REGISTROS EN LA TABLA Mysql> insert into libros (titulo, autor, cantidad) values ('Un mundo cualquiera', 'Pepito Frito', 2); Con esta simple sentencia hemos creado nuestro primer registro en MySQL. Lo que le decimos es que inserte dentro de libros "Un mundo cualquiera" en el campo título, "Pepito Frito" en el campo autor y 2 en el campo cantidad. Para visualizar los registros de la tabla libros, escribimos el siguiente comando: 26

Mysql> select * from libros; Imaginemos ahora que hemos comprado un libro más y que queremos actualizar la cantidad a 3, veamos ahora como lo podemos modificar. Modificar registros de una tabla Mysql> update libros set cantidad=3 where titulo like 'Un mundo cualquiera'; Le decimos que actualiza la tabla libros, poniendo en cantidad 3 y que la condición es que el título sea "Un mundo cualquiera". Con where estamos estableciendo una condición, si no la ponemos, lo que hará es poner 3 en TODOS los registros, por lo que es muy importante no olvidarse el where. Podemos también hacer la modificación de la siguiente manera: Mysql> update libros set cantidad=10 where libro_id = 1; MODIFICAR EL NOMBRE DE UNA TABLA Si quisiéramos cambiar el nombre de la tabla libros al de fondo_bibliotecario, haríamos lo siguiente: Mysql> rename table libros to fondo_bibliotecario; 27

CONSULTAS DE ACCIÓN Explicamos detenidamente las sentencias delete, insert into y update, para la realización de consultas en las bases de datos. Las consultas de acción son aquellas que no devuelven ningún registro, son las encargadas de acciones como añadir y borrar y modificar registros. Tanto las sentencias de actualización como las de borrado desencaderán (según el motor de datos) las actualizaciones en cascada, borrados en cascada, restricciones y valores por defecto definidos para los diferentes campos o tablas afectadas por la consulta. DELETE Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula que satisfagan la cláusula. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en concreto. Su sintaxis es: DELETE Tabla criterio Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la operación. Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta de selección que utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si elimina los registros equivocados podrá recuperarlos desde las copias de seguridad. DELETE Empleados Cargo = 'Vendedor' INSERT INTO Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser de dos tipo: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra tabla. Para insertar un único Registro: En este caso la sintaxis es la siguiente: INSERT INTO Tabla (campo1, campo2,..., campon) VALUES (valor1, valor2,..., valorn) Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y así sucesivamente. 28

Para seleccionar registros e insertarlos en una tabla nueva En este caso la sintaxis es la siguiente: campo1, campo2,..., campon INTO nuevatabla tablaorigen [ criterios] Se pueden utilizar las consultas de creación de tabla para archivar registros, hacer copias de seguridad de las tablas o hacer copias para exportar a otra base de datos o utilizar en informes que muestren los datos de un periodo de tiempo concreto. Por ejemplo, se podría crear un informe de Ventas mensuales por región ejecutando la misma consulta de creación de tabla cada mes. Para insertar Registros de otra Tabla: En este caso la sintaxis es: INSERT INTO Tabla [IN base_externa] (campo1, campo2,, campon) TablaOrigen.campo1, TablaOrigen.campo2,,TablaOrigen.campoN Tabla Origen En este caso se seleccionarán los campos 1,2,..., n de la tabla origen y se grabarán en los campos 1,2,.., n de la Tabla. La condición puede incluir la cláusula para filtrar los registros a copiar. Si Tabla y Tabla Origen poseen la misma estructura podemos simplificar la sintaxis a: INSERT INTO Tabla Tabla Origen.* Tabla Origen De esta forma los campos de Tabla Origen se grabarán en Tabla, para realizar esta operación es necesario que todos los campos de Tabla Origen estén contenidos con igual nombre en Tabla. Con otras palabras que Tabla posea todos los campos de Tabla Origen (igual nombre e igual tipo). En este tipo de consulta hay que tener especial atención con los campos contadores o autonuméricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo homólogo en la tabla origen, no incrementándose como le corresponde. Se puede utilizar la instrucción INSERT INTO para agregar un registro único a una tabla, utilizando la sintaxis de la consulta de adición de registro único tal y como se mostró anteriormente. En este caso, su código especifica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un valor así como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final de la tabla. También se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la cláusula... como se mostró anteriormente en la sintaxis de la consulta de adición de múltiples registros. En este caso la cláusula especifica los campos que se van a agregar en la tabla destino especificada. La tabla destino u origen puede especificar una tabla o una consulta. Si la tabla destino contiene una clave principal, hay que asegurarse que es única, y con valores no nulos; si no es así, no se agregarán los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo 29

Contador en la consulta. Se puede emplear la cláusula IN para agregar registros a una tabla en otra base de datos. Se pueden averiguar los registros que se agregarán en la consulta ejecutando primero una consulta de selección que utilice el mismo criterio de selección y ver el resultado. Una consulta de adición copia los registros de una o más tablas en otra. Las tablas que contienen los registros que se van a agregar no se verán afectadas por la consulta de adición. En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la cláusula VALUES. Si se omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallará INSERT. Ejemplos INSERT INTO Clientes ClientesViejos.* ClientesNuevos Empleados.* INTO Programadores Empleados Categoria = 'Programador' Esta consulta crea una tabla nueva llamada programadores con igual estructura que la tabla empleado y copia aquellos registros cuyo campo categoria se programador INSERT INTO Empleados (Nombre, Apellido, Cargo) VALUES ( 'Luis', 'Sánchez', 'Becario' ) INSERT INTO Empleados Vendedores.* Vendedores Provincia = 'Madrid' UPDATE 30

Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico. Su sintaxis es: UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=ValorN Criterio UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.: UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03 PaisEnvío = 'ES' UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización. UPDATE Empleados SET Grado = 5 Grado = 2 UPDATE Productos SET Precio = Precio * 1.1 Proveedor = 8 AND Familia = 3 Si en una consulta de actualización suprimimos la cláusula todos los registros de la tabla señalada serán actualizados. UPDATE Empleados SET Salario = Salario * 1.1 31

ACTIVIDAD Un colegio X desea crear una Base de datos solo con los alumnos que cumplan lo siguiente: Deben vivir en las ciudades de Pasaje, Machala y El Guabo. La edad de los alumnos debe ser entre 17 y 18 años. Deben ser de la especialidad de Técnico y Ciencias. Cualquier curso y paralelo. Crear una base de datos llamada colegio y una tabla llamada alumno con los siguientes campos: Id_alumno, Nombre, Apellido, edad ciudad, curso, especialidad, paralelo. Identificar los tipos de datos Agregar 10 registros Realizar modificaciones a los registros (5 cambios) Realizar búsquedas (5 búsquedas) Agregar 2 campos adicionales Capturar pantallas de lo realizado y crear un archivo de Word. 32

TRABAJANDO CON TABLAS BÚSQUEDA Y SELECCIÓN DE DATOS EN SQL La selección total o parcial de una tabla se lleva a cabo mediante la instrucción Select. En dicha selección hay que especificar: -Los campos que queremos seleccionar -La tabla en la que hacemos la selección En nuestra tabla modelo de clientes podríamos hacer por ejemplo una selección del nombre y dirección de los clientes con una instrucción de este tipo: Select nombre, dirección From clientes Si quisiésemos seleccionar todos los campos, es decir, toda la tabla, podríamos utilizar el comodín * del siguiente modo: Select * From clientes Resulta también muy útil el filtrar los registros mediante condiciones que vienen expresadas después de la cláusula Where. Si quisiésemos mostrar los clientes de una determinada ciudad usaríamos una expresión como esta: Select * From clientes Where poblacion Like 'Madrid' Además, podríamos ordenar los resultados en función de uno o varios de sus campos. Para este ultimo ejemplo los podríamos ordenar por nombre así: Select * From clientes Where poblacion Like 'Madrid' Order By nombre Teniendo en cuenta que puede haber más de un cliente con el mismo nombre, podríamos dar un segundo criterio que podría ser el apellido: Select * From clientes Where poblacion Like 'Madrid' Order By nombre, apellido Si invirtiésemos el orden «nombre,apellido» por «apellido, nombre», el resultado sería distinto. Tendríamos los clientes ordenados por apellido y aquellos que tuviesen apellidos idénticos se subclasificarían por el nombre. Es posible también clasificar por orden inverso. Si por ejemplo quisiésemos ver nuestros clientes por orden de pedidos realizados teniendo a los mayores en primer lugar escribiríamos algo así: 33

Select * From clientes Order By pedidos Desc Una opción interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo buscásemos el saber en qué ciudades se encuentran nuestros clientes sin necesidad de que para ello aparezca varias veces la misma ciudad usaríamos una sentencia de esta clase: Select Distinct poblacion From clientes Order By poblacion Así evitaríamos ver repetido Madrid tantas veces como clientes tengamos en esa población. OPERADORES SELECCIÓN DE DATOS II Hemos querido compilar a modo de tabla ciertos operadores que pueden resultar útiles en determinados casos. Estos operadores serán utilizados después de la cláusula Where y pueden ser combinados hábilmente mediante paréntesis para optimizar nuestra selección a muy altos niveles. Operadores matemáticos: > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Distinto = Igual Operadores lógicos And Or Not Otros operadores Like In y Not In Is Null y Is Not Null Between...And Selecciona los registros cuyo valor de campo se asemeje, no teniendo en cuenta mayúsculas y minúsculas. Da un conjunto de valores para un campo para los cuales la condición de selección es (o no) valida Selecciona aquellos registros donde el campo especificado esta (o no) vacío. Selecciona los registros comprendidos en un intervalo 34

Distinct Desc Selecciona los registros no coincidentes Clasifica los registros por orden inverso Comodines * Sustituye a todos los campos % Sustituye a cualquier cosa o nada dentro de una cadena _ Sustituye un solo carácter dentro de una cadena Veamos a continuación aplicaciones prácticas de estos operadores. En esta sentencia seleccionamos todos los clientes de Madrid cuyo nombre no es Pepe. Como puede verse, empleamos Like en lugar de = simplemente para evitar inconvenientes debido al empleo o no de mayúsculas. Select * From clientes Where poblacion Like 'madrid' And Not nombre Like 'Pepe' Si quisiéramos recoger en una selección a los clientes de nuestra tabla cuyo apellido comienza por A y cuyo número de pedidos está comprendido entre 20 y 40: Select * From clientes Where apellidos like 'A%' And pedidos Between 20 And 40 El operador In, lo veremos más adelante, es muy práctico para consultas en varias tablas. Para casos en una sola tabla es empleado del siguiente modo: Select * From clientes Where poblacion In ('Madrid','Barcelona','Valencia') De esta forma seleccionamos aquellos clientes que vivan en esas tres ciudades. SELECCIÓN DE DATOS III Cómo realizar selecciones sobre varias tablas. Ejemplos prácticos basados en una aplicación de e-comercio. Una base de datos puede ser considerada como un conjunto de tablas. Estas tablas en muchos casos están relacionadas entre ellas y se complementan unas con otras. Refiriéndonos a nuestro clásico ejemplo de una base de datos para una aplicación de e-comercio, la tabla clientes de la que hemos estado hablando puede estar perfectamente coordinada con una tabla donde almacenamos los pedidos realizados por cada cliente. Esta tabla de pedidos puede a su vez estar conectada con una tabla donde almacenamos los datos correspondientes a cada artículo del inventario. De este modo podríamos fácilmente obtener informaciones contenidas en esas tres tablas como puede ser la designación del artículo más popular en una determinada región donde la designación del 35

artículo sería obtenida de la tabla de artículos, la popularidad (cantidad de veces que ese artículo ha sido vendido) vendría de la tabla de pedidos y la región estaría comprendida obviamente en la tabla clientes. Este tipo de organización basada en múltiples tablas conectadas nos permite trabajar con tablas mucho más manejables a la vez que nos evita copiar el mismo campo en varios sitios ya que podemos acceder a él a partir de una simple llamada a la tabla que lo contiene. En este capítulo veremos cómo, sirviéndonos de lo aprendido hasta ahora, podemos realizar fácilmente selecciones sobre varias tablas. Definamos antes de nada las diferentes tablas y campos que vamos a utilizar en nuestros ejemplos: Nombre campo id_cliente nombre apellidos direccion poblacion codigopostal telefono email Tabla de clientes Tipo campo Numérico entero Texto Texto Texto Texto Texto Numérico entero Texto Tabla de pedidos Nombre campo Tipo campo id_pedido Numérico entero id_cliente Numérico entero id_articulo Numérico entero fecha Fecha cantidad Numérico entero Tabla de artículos Nombre campo Tipo campo id_articulo Numérico entero titulo Alfanumérico autor Alfanumérico editorial Alfanumérico 36

precio Numérico real Estas tablas pueden ser utilizadas simultáneamente para extraer informaciones de todo tipo. Supongamos que queremos enviar un mail a todos aquellos que hayan realizado un pedido ese mismo día. Podríamos escribir algo así: Select clientes.apellidos, clientes.email From clientes,pedidos Where pedidos.fecha like '25/02/00' And pedidos.id_cliente= clientes.id_cliente Como puede verse esta vez, después de la cláusula From, introducimos el nombre de las dos tablas de donde sacamos las informaciones. Además, el nombre de cada campo va precedido de la tabla de provenencia separados ambos por un punto. En los campos que poseen un nombre que solo aparece en una de las tablas, no es necesario especificar su origen aunque a la hora de leer la sentencia puede resultar más claro el precisarlo. En este caso el campo fecha podría haber sido designado como "fecha" en lugar de "pedidos.fecha". Veamos otro ejemplo más para consolidar estos nuevos conceptos. Esta vez queremos ver el título del libro correspondiente a cada uno de los pedidos realizados: Select pedidos.id_pedido, articulos.titulo From pedidos, articulos Where pedidos.id_articulo=articulos.id_articulo En realidad la filosofía continúa siendo la misma que para la consulta de una única tabla. SELECCIÓN DE DATOS IV El empleo de funciones para la explotación de los campos numéricos y otras utilidades. Ejemplos prácticos. Además de los criterios hasta ahora explicados para realizar las consultas en tablas, SQL permite también aplicar un conjunto de funciones predefinidas. Estas funciones, aunque básicas, pueden ayudarnos en algunos momentos a expresar nuestra selección de una manera más simple sin tener que recurrir a operaciones adicionales por parte del script que estemos ejecutando. Algunas de estas funciones son representadas en la tabla siguiente : Función Descripción Sum(campo) Calcula la suma de los registros del campo especificado Avg(Campo) Calcula la media de los registros del campo especificado Count(*) Nos proporciona el valor del número de registros que han sido seleccionados Max(Campo) Nos indica cual es el valor máximo del campo Min(Campo) Nos indica cual es el valor mínimo del campo Dado que el campo de la función no existe en la base de datos, sino que lo estamos generando 37

virtualmente, esto puede crear inconvenientes cuando estamos trabajando con nuestros scripts a la hora de tratar su valor y su nombre de campo. Es por ello que el valor de la función ha de ser recuperada a partir de un alias que nosotros especificaremos en la sentencia SQL a partir de la instrucción AS. La cosa podría quedar así: Select Sum(total) As suma_pedidos From pedidos A partir de esta sentencia calculamos la suma de los valores de todos los pedidos realizados y almacenamos ese valor en un campo virtual llamado suma_pedidos que podrá ser utilizado como cualquier otro campo por nuestras páginas dinámicas. Por supuesto, todo lo visto hasta ahora puede ser aplicado en este tipo de funciones de modo que, por ejemplo, podemos establecer condiciones con la cláusula Where construyendo sentencias como esta: Select Sum(cantidad) as suma_articulos From pedidos Where id_articulo=6 Esto nos proporcionaría la cantidad de ejemplares de un determinado libro que han sido vendidos. Otra propiedad interesante de estas funciones es que permiten realizar operaciones con varios campos dentro de un mismo paréntesis: Select Avg(total/cantidad) From pedidos Esta sentencia da como resultado el precio medio al que se están vendiendo los libros. Este resultado no tiene por qué coincidir con el del precio medio de los libros presentes en el inventario, ya que, puede ser que la gente tenga tendencia a comprar los libros caros o los baratos: Select Avg(precio) as precio_venta From articulos Una cláusula interesante en el uso de funciones es Group By. Esta cláusula nos permite agrupar registros a los cuales vamos a aplicar la función. Podemos por ejemplo calcular el dinero gastado por cada cliente: Select id_cliente, Sum(total) as suma_pedidos From pedidos Group By id_cliente O saber el número de pedidos que han realizado: Select id_cliente, Count(*) as numero_pedidos From pedidos Group By id_cliente Las posibilidades como vemos son numerosas y pueden resultar prácticas. Todo queda ahora a disposición de nuestras ocurrencias e imaginación. 38

CONSULTAS DE SELECCIÓN Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros puede ser modificable. Consultas básicas La sintaxis básica de una consulta de selección es la siguiente: Campos Tabla En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: Nombre, Teléfono Clientes Esta sentencia devuelve un conjunto de resultados con el campo nombre y teléfono de la tabla clientes. 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: Empleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40 Empleados Empleados.Cargo = 'Electricista' 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 ordenar. Ejemplo: CodigoPostal, Nombre, Telefono 39

Clientes ORDER BY Nombre INSTITUTO SUPERIOR TECNOLÓGICO Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por más de un campo, como por ejemplo: CodigoPostal, Nombre, Telefono Clientes ORDER BY CodigoPostal, Nombre Incluso se puede especificar el orden de los registros: ascendente mediante la cláusula (ASC - se toma este valor por defecto) ó descendente (DESC) CodigoPostal, Nombre, Telefono Clientes ORDER BY CodigoPostal DESC, Nombre ASC Uso de Indices de las tablas Si deseamos que la sentencia SQL utilice un índice para mostrar los resultados se puede utilizar la palabra reservada INDEX de la siguiente forma:... Tabla (INDEX=Indice)... Normalmente los motores de las bases de datos deciden que índice se debe utilizar para la consulta, para ello utilizan criterios de rendimiento y sobre todo los campos de búsqueda especificados en la cláusula. Si se desea forzar a no utilizar ningún índice utilizaremos la siguiente sintaxis:... Tabla (INDEX=0)... Consultas con Predicado El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son: 40

Predicado ALL TOP DISTINCT Descripción Devuelve todos los campos de la tabla Devuelve un determinado número de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente DISTINCTOW Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados. 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. ALL Empleados * 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 del curso 1994: TOP 25 Nombre, Apellido Estudiantes ORDER BY 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: 41