You are on page 1of 141

1

TABLA DE CONVERSIONES

UNIVERSIDAD PERUANA LOS ANDES Educacin a Distancia. Huancayo. Impresin Digital SOLUCIONES GRAFICAS SAC Jr. Puno 564 - Hyo. Telf. 214433

NDICE
Presentacin Objetivos Generales UNIDAD TEMTICA I. FUNDAMENTO TEORICO 1.1. Bases de Datos y sistemas de gestin de bases de datos .......... 13 1.1.1. Componentes de los SGBD .................................................. 14 1.1.2. El Gestor de la Base de Datos .............................................. 15 1.1.3. El Administrador de la Base de Datos .................................... 16 1.1.4. Los Usuarios de la Base de Datos ......................................... 17 1.2. Historia de MySQL ............................................................... 18 1.3. Las Principales Caractersticas de Mysql .................................. 19 1.4. Dimensiones Mximas de las tablas MySQL ............................. 22 UNIDAD TEMTICA II. INSTALACION Y CONEXIN DE MYSQL . 27 2.1. Instalar Mysql ..................................................................... 29 2.1.1. Cuestiones Generales sobre la instalacin .............................. 29 2.2. Instalar Mysql en Windows ................................................... 29 2.2.1. Requisitos de Windows ........................................................ 30 2.2.2. Instalacion de Mysql en Windows .......................................... 31 2.2.3. Instalacion de Mysql Maestro en Windows ............................. 41 2.3. Conectndose y Desconectndose al Servidor Mysql ................ 46 2.4. Ejecutando algunas consultas ................................................ 48 2.5. Creando y Usando una Base de Datos .................................... 52 2.5.1. Creando una tabla .............................................................. 54 2.6. Cargando datos en una Tabla ................................................ 57 UNIDAD TEMTICA III. CREACION DE UNA BASE DE DATOS .... 61 3.1. Anlisis de los distintos tipos de tablas ................................... 66 3.1.1. Tablas ISAM....................................................................... 66 3.1.2. Tablas MYLSAM .................................................................. 66
5

3.1.3. Tablas MERGE .................................................................... 67 3.1.4. Tablas HEAP ...................................................................... 67 3.1.5. Tablas INNODB .................................................................. 67 3.1.6. Tablas DBD ........................................................................ 68 3.2. Creacin de tablas e indices .................................................. 68 3.2.1. Creacin de la tabla alumno ................................................. 68 3.2.2. Creacin de la tabla curso.................................................... 76 3.2.3. Creacin de la tabla notas ................................................... 77 3.2.4. Creacin de la tabla profesor ............................................... 78 3.2.5. Creacin de la tabla facultad ................................................ 79 3.3. Ingreso de Datos ................................................................. 80 UNIDAD TEMTICA IV. CONSULTAS DE ACCION ....................... 85 4.1. Consultas de eliminacin ...................................................... 87 4.1.1. Ejemplos de delete ............................................................. 88 4.2. Sintaxis de truncate table ..................................................... 90 4.2.1. Limitaciones de truncate table .............................................. 90 4.2.2. Ejemplo de truncate table .................................................... 90 4.3. Consultas de actualizacin .................................................... 90 4.3.1. Ejemplos de update ............................................................ 92 4.4. Consultas de insercin.......................................................... 96 4.4.1. Ejemplos de insert .............................................................. 98 UNIDAD TEMTICA V. EJECUCIN DE CONSULTAS ................. 101 5.1. Consultas select bsicas ....................................................... 103 5.2. Limitacin de los registros con la clusula where ..................... 104 5.3. Utilizacin de combinaciones ................................................. 108 5.3.1. Inner join .......................................................................... 108 5.3.2. Combinacin de varias tablas ............................................... 109 5.3.3. Outer join .......................................................................... 111 5.4. Conversin de los conjuntos de resultados en informes ............ 114 5.4.1. Order by ........................................................................... 114
6

UNIDAD TEMTICA VI. CREACION DE VISTAS ......................... 123 6.1. Utilizacin de vistas de particiones de tablas ........................... 123 6.2. Creacin de una vista con el diseador de vistas ..................... 124 6.3. Modificacin de una vista con el diseador de vistas ................ 128 6.4. Organizacin del conjunto de resultados ................................. 130 6.5. Utilizacin de vistas para combinar tablas ............................... 130 6.6. Combinacin de dos tablas en una vista ................................. 133 6.7. Combinacin de varias tablas en una vista .............................. 135 REFERENCIAS BIBLIOGRFICAS .................................................... 141

PRESENTACION
En la poca actual, la informacin - y su tratamiento automatizado - no slo es necesaria para el eficiente funcionamiento de toda organizacin, sino que se ha convertido en uno de los principales elementos de competitividad. En este contexto, el almacenamiento de la informacin (en forma de datos) y su disponibilidad para las aplicaciones de negocio se hace indispensable para la normal operacin y funcionamiento de cualquier empresa. El personal que opera las diferentes aplicaciones rutinarias interacta con la "Base de datos". Ya sea que la base de datos sea usada para apoyar alguno de los niveles organizacionales comentados o todos, debe elegirse la tecnologa adecuada que garantice su permanente y eficiente disponibilidad, as como que facilite el desarrollo de aplicaciones y la administracin de la base de datos misma por parte del personal del rea de sistemas de la organizacin. El objetivo de este texto auto instructivo es mostrar el uso del programa cliente mysql para crear y usar una sencilla base de datos. MYSQL (algunas veces referido como "monitor mysql") es un programa interactivo que permite conectarnos a un servidor MySQL, ejecutar algunas consultas, y ver los resultados. Mysql puede ser usado tambin en modo batch: es decir, se pueden colocar toda una serie de consultas en un archivo, y posteriormente decirle a mysql que ejecute dichas consultas. Este autoinstructivo asume que mysql est instalado en alguna mquina y que disponemos de un servidor MySQL al cual podemos conectarnos. Si este no es el caso, tenemos que contactar con nuestro administrador MySQL. (Si nosotros somos los administradores, es necesario consultar la documentacin de MySQL que se refieren a la instalacin y configuracin del servidor MySQL). CPC. Wilmer Huari Prez

OBJETIVOS GENERALES
1. Conocer y describir la importancia y caractersticas del software de base de datos MySQL. 2. Conocer y aplicar el proceso de instalacin de MySQL, as como tambin conectar y desconectar al servidor MySQL. 3. Describir y crear los diferentes tipos de tablas, base de datos e ndices. 4. Conocer y aplicar el proceso de insertar, eliminar y modificar datos de una Base de Datos MySQL. 5. Disear consultas a partir de una Base de Datos MySQL. 6. Disear vistas a partir de una Base de Datos MySQL.

10

FUNDAMENTO TERICO

TABLA DE CONTENIDO

1.1. Bases de Datos y sistemas de gestin de bases de datos 1.1.1. Componentes de los SGBD 1.1.2. El Gestor de la Base de Datos 1.1.3. El Administrador de la Base de Datos 1.1.4. Los Usuarios de la Base de Datos 1.2. Historia de MySQL 1.3. Las Principales Caractersticas de Mysql 1.4. Dimensiones Mximas de las tablas MySQL

Objetivos

Conocer la historia del software de base de datos MySQL. Conocer y describir la importancia del software de base de datos MySQL. Conocer y describir las caractersticas del software de base de datos MySQL.

Al finalizar el estudio del presente fascculo, el estudiante: Conocer la historia del software de base de datos MySQL. Comprender la importancia del software de base de datos MySQL. Comprender las caractersticas del software de base de datos MySQL.

11

En el presente fascculo se desarrollar los fundamentos tericos de una base de datos y en particular de una base de datos Mysql. Se analizar los componentes de una SGBD, se analizar la administracin y usuario de base de datos, una historia breve de la evolucin de Mysql, as como sus caractersticas e importancia de una base de datos Mysql y por ltimo se describir las dimenciones mnimas de una tabla en Mysql.

12

FUNDAMENTO TERICO

1.1.

BASES DE DATOS Y SISTEMAS DE GESTIN DE BASES DE DATOS

Aunque al principio los organismos de estandarizacin intentaron dar una definicin a este trmino, sta no fue totalmente aceptada, surgiendo a lo largo de los aos diferentes definiciones que intentaron adaptarse a los cambios tecnolgicos y nuevas caractersticas o propiedades que se les ha ido exigiendo a las bases de datos. As, han sido propuestas innumerables definiciones para las bases de datos las cuales intentan exponer en una corta definicin, tarea bastante difcil, todas aquellas caractersticas exigibles a las bases de datos. Una Base de Datos es una coleccin de archivos relacionados que almacenan tanto una representacin abstracta del dominio de un problema del mundo real cuyo manejo resulta de inters para una organizacin, como los datos correspondientes a la informacin acerca del mismo. Tanto la representacin como los datos estn sujetos a una serie de restricciones, las cuales forma parte del dominio del problema y cuya descripcin est tambin almacenada en esos archivos. De la que podemos extraer las siguientes consideraciones: Se trata de una coleccin de archivos relacionados; es decir, a diferencia de los sistemas clsicos que manejan organizaciones clsicas de almacenamiento, en una base de datos los archivos no son independientes entre s, la base de datos puede ser vista como un nico depsito en el cual se almacena toda la informacin correspondiente al dominio de un problema. En estos archivos se encuentra almacenada tanto la representacin abstracta del dominio del problema: es decir, la visin fsica, lgica y cada una de las visiones externas de la informacin, como los datos conocidos acerca del mismo en un momento dado. El que tanto la representacin como los datos estn sujetos a una serie de restricciones implica: Que las restricciones innatas al problema estn representadas. Restricciones acerca de las propiedades de las entidades, datos y relaciones existentes en el dominio del problema.

13

Que el acceso a la informacin almacenada est sujeto a una serie de restricciones que garantizan la integridad de la misma. Estas restricciones impiden que algn procedimiento viole las reglas que vinculan los datos entre los diferentes niveles de representacin. Es importante conocer la diferencia entre lo que es una base de datos y/o que es un Sistema de Gestin de Bases de Datos, trminos que se confunden muy a menudo cuando se est trabajando con la informacin haciendo uso de esta tecnologa. Hasta estos momentos se ha estado tratando nicamente el trmino de bases de datos, aportando una definicin en esta misma seccin. Cuando se habla de bases de datos se .habla de informacin que est almacenada cumpliendo toda una serie de caractersticas y restricciones como las que se han expuesto anteriormente. Pero para que la informacin pueda ser almacenada como se ha descrito y el acceso a la misma satisfaga las caractersticas exigidas a una base de datos para ser denominada como tal, es necesario que exista una serie de procedimientos (un sistema software) que sea capaz de llevar a cabo tal labor. A este sistema software es a lo que se le denomina Sistema de Gestin de Bases de Datos. As, un SGBD es una coleccin de programas de aplicacin que proporcionan al usuario de la base de datos los medios necesarios para realizar las siguientes tareas: Definicin de los datos a los distintos niveles de abstraccin (fsico, lgico y externo). Manipulacin de los datos en la base de datos. Es decir, la insercin, modificacin, borrado y acceso o consulta a los mismos. Mantenimiento de la integridad de la base de datos. Integridad en cuanto a los datos en s, sus valores y las relaciones entre ellos. Control de la privacidad y seguridad de los datos en la base de datos. Y, en definitiva, los medios necesarios para el establecimiento todas aquellas caractersticas exigibles a una base de datos. 1.1.1. Componentes de los SGBD Para realizar todas las funciones descritas en la seccin anterior, y otras ms, es necesario que el SGBD cuente con una serie de componentes cuya funcin sea el desarrollo de las mismas de forma que satisfaga los requisitos impuestos para estos sistemas. Cuando se utiliza el trmino de componentes de un SGBD se est realizando una, y quizs peligrosa, generalizacin, puesto que estos componentes son muy variados. As, un SGBD cuenta tanto con herramientas software como
14

de

con personal humano especializado en la realizacin de las tareas y acciones necesarias para la gestin adecuada de la informacin. 1.1.2. El Gestor de la Base de Datos El gestor de la base de datos, a veces denominado monitor, es un componente software encargado de garantizar el correcto, seguro, ntegro y eficiente acceso y almacenamiento de los datos. Este componente es el encargado de proporcionar una interfaz entre los datos almacenados y los programas de aplicacin que los manejan. El que este componente realice sus funciones asignadas correctamente depender de muchos factores, entre los que se pueden citar: el volumen de la base de datos, las estructuras fsicas definidas para el almacenamiento de los mismos, los procedimientos desarrollados para la manipulacin de los datos, las caractersticas del hardware y la calidad del propio gestor. Puede verse al gestor de la base de datos como un intrprete entre el usuario (de cualquier tipo) y los datos. Toda operacin que se quiera realizar contra la base de datos debe ser previamente permitida por el gestor de la misma, el cual, una vez interpretada y validada, o bien realiza la operacin devolviendo el resultado de la misma al programa/procedimiento que la solicit, o bien la rechaza. As, el gestor de la base de datos es el responsable de: Garantizar la privacidad de los datos, permitiendo slo el acceso a los mismos a los usuarios autorizados. Garantizar la seguridad de los datos, realizando los procedimientos necesarios para que los datos puedan ser recuperados tras un fallo que ocasione una prdida o deterioro temporal de los mismos. Garantizar la integridad de los datos, gestionando que los datos que se almacenan en la base de datos satisfagan las restricciones definidas en el esquema de la misma. Garantizar el acceso concurrente a la base de datos de forma que varios usuarios puedan acceder al mismo o distinto dato sin que ello ocasione una prdida de la integridad de la base de datos. Interaccionar con el sistema operativo y, en particular, con el gestor de archivos del mismo, de forma que los procedimientos DML puedan ser entendidos por el sistema operativo para el correcto almacenamiento y recuperacin de la informacin. Para ello, el gestor de la base de datos cuenta con un subcomponente denominado procesador de consultas. Es uno de los componentes ms complejos del SGBD, aunque su complejidad depender del propio SGBD y de las caractersticas del sistema operativo y
15

hardware en el cual se implante. As, en aquellos sistemas en los que existe la restriccin de que no puedan acceder varios usuarios simultneamente a la base de datos, o la seguridad de los datos sea llevada nicamente por el usuario de la base de datos, este componente ser ms simple. 1.1.3. El Administrador de la Base de Datos Otro de los componentes de los SGBD es el administrador de la base de datos -Data Base Administrator (DBA)-. Se trata de un componente humano de suma importancia en el resultado que el uso de las bases de datos va a tener en la resolucin de un determinado problema. El DBA tiene una serie de responsabilidades en cuanto a la definicin, administracin, seguridad, privacidad e integridad de la informacin que es tratada, as como 'en el desempeo del SGBD en el procesamiento de la misma. Entre las tareas asignadas al DBA se encuentran: La definicin del esquema cannico o lgico de la base de datos. Es decir, la codificacin mediante" sentencias del DDL del conjunto de definiciones que representan las caractersticas del problema que va a ser tratado haciendo uso del SGBD. En esta definicin se incluyen aquellas especificaciones necesarias para que el SGBD pueda mantener la integridad de los datos almacenados en la base de datos. La definicin del esquema fsico de la base de datos. Es decir, la especificacin de las estructuras de almacenamiento y los mtodos de acceso a la informacin almacenada en los dispositivos fsicos de almacenamiento. Esta definicin se realiza haciendo uso del DSDL (o el propio DDL) mediante un conjunto de sentencias que son compiladas y traducidas a una especificacin entendible por la mquina y que es almacenada en el diccionario de datos junto con el esquema cannico. La definicin de los sub esquemas o visiones externas o de usuario de la base de datos. Aquellas vistas parciales de la base de datos que son almacenadas en el diccionario de datos son definidas por el DBA, el cual es el nico que tiene acceso y, por tanto, privilegios suficientes para la gestin de este componente. El control de la privacidad de los datos, mediante la concesin de privilegios a usuarios o grupos de stos para el acceso a la informacin almacenada en la base de datos. Esta tarea se realiza en base al esquema de la base de datos y en base a las operaciones bsicas que pueden realizarse con los datos (consulta, insercin, modificacin y borrado), concedindose privilegios para una o varias de estas acciones a grupos de datos definidos en el esquema de la base de datos.
16

Mantenimiento de los esquemas. As, el DBA es el responsable de: Introducir las modificaciones necesarias en el esquema lgico; modificaciones producidas por un cambio en el problema tratado por el SGSD o una ampliacin del mismo. Introducir las modificaciones necesarias en la representacin fsica de los datos, de forma que esta representacin evolucione paralelamente a la extensin de la base de datos y a la introduccin de nuevos requisitos funcionales y/o de desempeo. Introducir las modificaciones y nuevas definiciones de los subesquemas o visiones externas o de usuario, aportando una explotacin efectiva de la base de datos. La especificacin de los procedimientos necesarios para el mantenimiento de la seguridad de los datos almacenados en la base de datos. Es decir, cundo, cmo y de qu forma se deben realizar y definir los procesos que garanticen que los datos puedan ser recuperados aun despus de un fallo que d lugar a una prdida temporal de los mismos. 1.1.4. Los Usuarios de la Base de Datos Tradicionalmente se ha considerado a los usuarios de las bases de datos como un componente ms de los SGBD, posiblemente debido a que estos sistemas fueron de los primeros en considerar a stos como una parte importante del correcto, adecuado y necesario funcionamiento de los mismos. Naturalmente, en un sistema de esta complejidad existen muchos tipos de usuarios que acceden e interaccionan con el mismo, as se pueden considerar: Usuarios Terminales: Aquellos usuarios que, a travs de programas de aplicacin, interaccionan con la base de datos. Son usuarios no especializados que tienen la visin del problema que les proporcionan las visiones externas o subesquemas que utilizan los programas de aplicacin a los cuales tienen privilegios de ejecucin. Usuarios Tcnicos: Aquellos que desarrollan los programas de aplicacin que van a ser utilizados por los usuarios terminales de la base de datos. Son profesionales informticos que, haciendo uso de lenguajes de programacin, preparan procedimientos que son invocados desde una interfaz orientada al usuario para realizar las operaciones necesarias en la gestin del problema. Usuarios Especializados: Aquellos que utilizan el SGBD como una herramienta en el desarrollo de otros sistemas ms o menos complejos. Estos usuarios necesitan una buena gestin de la informacin que es procesada por otro sistema comercial o desarrollado por ellos y, por tanto, utilizan al SGBD como un submdulo de sus sistemas particulares, interaccionando con l en la medida que le es necesario. Por ejemplo, en el
17

desarrollo de sistemas expertos, el SGBD puede ser el encargado de la gestin de la base y metabase de conocimiento del mismo. Usuarios Crticos: Cuya denominacin, aunque algo ruda, consideramos la ms acertada. Estos usuarios pueden tener desde mucho, hasta ningn conocimiento tcnico de la tecnologa de base de datos, y/o del SGBD en el cual se soporta la base de datos con la cual interactan pero, independientemente de ello, requieren de la base de datos informacin en un formato, detalle y bajo unos requisitos que generalmente no estn previstos de antemano (en el proceso de anlisis del problema y diseo del esquema) y en un tiempo mnimo. Se trata de aquellos usuarios gerenciales o pertenecientes al staff de las empresas en las cuales se ha instalado la base de datos, los cuales, en base a expectativas de gestin, administracin, mercado, marketing o simplemente por inters personal, realizan consultas no previstas sobre la informacin almacenada en la base de datos. Como hoy en da la mayora de los SGBD cuenta con un lenguaje de cuarta generacin integrado en su producto, las interacciones de estos usuarios contra la base de datos pueden realizarse sin que los usuarios tcnicos tengan que estar preparndoles continuamente procedimientos nuevos, y de un corto tiempo de vida, para la realizacin de las mismas. Sin embargo, al tratarse de consultas complejas, y debido a que el lenguaje de cuarta generacin no genera un cdigo objeto efectivo para interaccionar con la base de datos, y al no estar previstas las estructuras fsicas para este tipo de interrogantes, el desempeo de estos procesos es bajo, ocasionando la crtica generalizada de estos usuarios, los cuales son, generalmente, los que tienen poder decisorio sobre la in versin y contratacin en la empresa (de ah el nombre que los autores han dado a los mismos). 1.2. HISTORIA DE MYSQL Empezamos con la intencin de usar mSQL para conectar a nuestras tablas utilizando nuestras propias rutinas rpidas de bajo nivel (ISAM). Sin embargo y tras algunas pruebas, llegamos a la conclusin que mSQL no era lo suficientemente rpido o flexible para nuestras necesidades. Esto provoc la creacin de una nueva interfcie SQL para nuestra base de datos pero casi con la misma interfcie API que mSQL. Esta API fue diseada para permitir cdigo de terceras partes que fue escrito para poder usarse con mSQL para ser fcilmente portado para el uso con MySQL. La derivacin del nombre MySQL no est clara. Nuestro directorio base y un gran nmero de nuestras bibliotecas y herramientas han tenido el prefijo "my" por ms de 10 aos. Sin embargo, la hija del co-fundador Monty Widenius tambin se llama My. Cul de los dos dio su nombre a MySQL todava es un misterio, incluso para nosotros.
18

El nombre del delfn de MySQL (nuestro logo) es "Sakila", elegido por los fundadores de MySQL AB de una gran lista de

que

fu

nombres sugerida por los usuarios en el concurso "Name the Dolphin" (ponle nombre al delfn). El nombre ganador fue enviado por Ambrose Twebaze, un desarrollador de software Open Source de Swaziland, frica. Segn Ambrose, el nombre femenino de Sakila tiene sus races en SiSwate, el idioma local de Swaziland. Sakila tambin es el nombre de una ciudad en Arusha, Tanzania, cerca del pas de origen de Ambrose, Uganda. 1.3. LAS PRINCIPALES CARACTERSTICAS DE MYSQL La siguiente lista describe algunas de las importantes del software de base de datos MySQL. Interioridades y portabilidad Escrito en C y en C++ Probado con un amplio rango de compiladores diferentes Funciona en diferentes plataformas. Usa GNU Automake, Autoconf, y Libtool para portabilidad. APIs disponibles para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, y Tcl. Uso completo de multi-threaded mediante threads del kernel. Pueden usarse fcilmente mltiple CPUs si estn disponibles. Proporciona sistemas de almacenamiento transaccionales y no transaccionales. Usa tablas en disco B-tree (MyISAM) muy rpidas con compresin de ndice. Relativamente sencillo de aadir otro sistema de almacenamiento. Esto es til si desea aadir una interfcie SQL para una base de datos propia. Un sistema de reserva de memoria muy rpido basado en threads. Joins muy rpidos usando un multi-join de un paso optimizado. Tablas hash en memoria, que son usadas como tablas temporales. Las funciones SQL estn implementadas usando una librera altamente optimizada y deben ser tan rpidas como sea posible. Normalmente o hay reserva de memoria tras toda la inicializacin para consultas. El cdigo MySQL se prueba con Purify (un detector de memoria perdida as como con Valgrind, una herramienta GPL comercial) (http://developer.kde.org/~sewardj/). caractersticas ms

19

El servidor est disponible como un programa separado para usar en un entorno de red cliente/servidor. Tambin est disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autnomas. Dichas aplicaciones pueden usarse por s mismas o en entornos donde no hay red disponible. Tipos de columnas Diversos tipos de columnas: enteros con/sin signo de 1, 2, 3, 4, y 8 bytes de longitud, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, y tipos espaciales OpenGIS. Registros de longitud fija y longitud variable. Sentencias y funciones Soporte completo para operadores y funciones en las clusulas de consultas SELECT y WHERE. Por ejemplo: mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30; Soporte completo para las clusulas SQL GROUP BY y ORDER BY. Soporte de funciones de agrupacin (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX(), MIN(), y GROUP_CONCAT()). Soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo estndards de sintaxis SQL y ODBC. Soporte para alias en tablas y columnas como lo requiere el estndard SQL.
han DELETE, INSERT, REPLACE, y UPDATE devuelven el nmero de filas que han

cambiado (han sido afectadas). Es posible devolver el nmero de filas que seran afectadas usando un flag al conectar con el servidor. El comando especfico de MySQL SHOW puede usarse para obtener informacin acerca de la base de datos, el motor de base de datos, tablas e ndices. El comando EXPLAIN puede usarse para determinar cmo el optimizador resuelve una consulta. Los nombres de funciones no colisionan con los nombres de tabla o columna. Por ejemplo, ABS es un nombre vlido de columna. La nica restriccin es que para una llamada a una funcin, no se permiten espacios entre el nombre de funcin y el '(' a continuacin. Puede mezclar tablas de consulta (como en MySQL)
20

distintas bases de

datos

en

la misma

Seguridad Un sistema de privilegios y contraseas que es muy flexible y seguro, y que permite verificacin basada en el host. Las contraseas son seguras porque todo el trfico de contraseas est encriptado cuando se conecta con un servidor. Escalabilidad y lmites Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. Tambin conocemos usuarios que usan MySQL Server con 60.000 tablas y acerca de 5.000.000 de registros. Se permiten hasta 64 ndices por tabla (32 antes de MySQL 4.1.2). Cada ndice puede consistir desde 1 hasta 16 columnas o partes de columnas. El mximo ancho de lmite son 1000 bytes (500 antes de MySQL 4.1.2).Un ndice puede usar prefijosde una columna para los tipos de columna CHAR, VARCHAR, BLOB, o TEXT. Conectividad Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. En sistemas Windows de la familia NT (NT,2000,XP, o 2003), los clientes pueden usar named pipes para la conexin. En sistemas Unix, los clientes pueden conectar usando ficheros socket Unix. En MySQL 5.0, los servidores Windows soportan conexiones con memoria compartida si se inicializan con la opcin --sharedmemory. Los clientes pueden conectar a travs de memoria compartida usando la opcin --protocol=memory. La interfaz para el conector ODBC (MyODBC) proporciona a MySQL soporte para programas clientes que usen conexiones ODBC (Open Database Connectivity). Por ejemplo, puede usar MS Access para conectar al servidor MySQL. Los clientes pueden ejecutarse en Windows o Unix. El cdigo fuente de MyODBC est disponible. Todas las funciones para ODBC 2.5 estn soportadas, as como muchas otras. La interfaz para el conector J MySQL proporciona soporte para clientes Java que usen conexiones JDBC. Estos clientes pueden ejecutarse en Windows o Unix. El cdigo fuente para el conector J est disponible. Consulte Seccin 25. 3, MySQL Connector/J. Localizacin El servidor puede proporcionar mensajes de error a los clientes en muchos idomas. Soporte completo para distintos conjuntos de carcteres, incluyendo latin1 (ISO-8859-1), german, big5, ujis, y ms. Por ejemplo, los carcteres escandinavos '', '' y '' estn permitidos en nombres de tablas y columnas. El soporte para Unicode est disponible. Todos los datos se guardan en el conjunto de carcteres elegido. Todas las comparaciones para columnas normales de cadenas de carcteres son case-insensitive.
21

La ordenacin se realiza acorde al conjunto de carcteres elegido (usando colacin Sueca por defecto). Es posible cambiarla cuando arranca el servidor MySQL. Para ver un ejemplo de ordenacin muy avanzada, consulte el cdigo Checo de ordenacin. MySQL Server soporta diferentes conjuntos de carcteres que deben ser especificados en tiempo de compilacin y de ejecucin. Clientes y herramientas MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Estos comandos estn disponibles a travs de la lnea de comandos y el cliente mysqlcheck. MySQL tambin incluye myisamchk, una utilidad de lnea de comandos muy rpida para efectuar estas operaciones en tablas MyISAM. Todos los programas MySQL pueden invocarse con las opciones -help o -? para obtener asistencia en lnea. 1.4. DIMENSIONES MXIMAS DE LAS TABLAS MYSQL En MySQL 5.0, usando el motor de almacenamiento MyISAM, el mximo tamao de las tablas es de 65536 terabytes (256 ^ 7 - 1 bytes). Por lo tanto, el tamao efectivo mximo para las bases de datos en MySQL usualmente los determinan los lmites de tamao de ficheros del sistema operativo, y no por lmites internos de MySQL. El motor de almacenamiento InnoDB mantiene las tablas en un espacio que puede ser creado a partir de varios ficheros. Esto permite que una tabla supere el tamao mximo individual de un fichero. Este espacio puede incluir particiones de disco, lo que permite tablas extremadamente grandes. El tamao mximo del espacio de tablas es 64TB. La siguiente tabla lista algunos ejemplos de lmites de tamao de ficheros de sistemas operativos. Esto es slo una burda gua y no pretende ser definitiva. Para la informacin ms actual, asegrese de consultar la documentacin especfica de su sistema operativo.

En Linux 2.2, puede utilizar tablas MyISAM mayores de 2GB usando el parche para LFS (Large File Support) en el sistema de ficheros ext2. En Linux 2.4 y posteriores, existen parches para ReiserFS soportando
22

grandes archivos (hasta 2TB). La mayora de distribuciones Linux se basan en el kernel 2.4 o 2.6 e incluyen todos los parches LFS necesarios. Con JFS y XFS, se permiten ficheros mayores de un petabyte para Linux. Sin embargo, el tamao mximo de ficheros todava depende de diversos factores, uno de ellos siendo el sistema de ficheros usado para almacenar tablas MySQL. Para un resumen ms detallado acerca de LFS en Linux, recomendamos la pgina de Andreas Jaeger Large File Support in Linux en http://www.suse.de/~aj/linux_lfs.html. Usuarios de Windows, por favor tengan en cuenta que: FAT and VFAT (FAT32) no se consideran apropiados para sistemas de produccin con MySQL. Use NTFS para ello. Por defecto, MySQL crea tablas MyISAM con una estructura interna que permite un tamao mximo de unas 4GB. Puede chequear el tamao mximo de tabla para una tabla con el comando SHOW TABLE STATUS o con myisamchk -dv tbl_name. Si necesita una tabla MyISAM con un tamao mayor a 4GB (y su sistema operativo soporta ficheros grandes), el comando CREATE TABLE permite las opciones AVG_ROW_LENGTH y MAX_ROWS. Tambin puede cambiar esas opciones con ALTER TABLE una vez que la tabla se ha creado, para aumentar el tamao mximo de la tabla. Otros mtodos para cambiar los lmites de tamao de ficheros para tablas MyISAM son: Si una tabla es de slo lectura, puede usar myisampack para comprimirla. myisampack normalmente comprime una tabla al menos un 50%, lo que permite, a efectos prcticos, tablas mucho mayores. myisampack puede mezclar mltiples tablas en una misma tabla. MySQL incluye la biblioteca MERGE que permite tratar una coleccin de tablas MyISAM con una estructura idntica en una tabla MERGE.

23

1. Investigar y mencionar algunas organizaciones locales, nacionales e internacionales que utilice Base de Datos MySQL. 2. Describir las funciones e importancia que cumple las bases de datos MySQL en las organizaciones mencionadas en la anterior actividad.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008.

24

1. Qu es una Base de Datos? 2. Qu entiende Ud. por SGBD? 3. Por qu es importante una Base de Datos MySQL? 4. En qu se diferencia una base de datos MySQL de otras bases de datos? 5. Cules son las principales caractersticas de una Base de Datos MySQL?

25

26

INSTALACION Y CONEXIN DE MYSOL


TABLA DE CONTENIDO

2.1. Instalar Mysql 2.1.1. Cuestiones Generales sobre la instalacin 2.2. Instalar Mysql en Windows 2.2.1. Requisitos de Windows 2.2.2. Instalacion de Mysql en Windows 2.2.3. Instalacion de Mysql Maestro en Windows 2.3. Conectndose y Desconectndose al Servidor Mysql 2.4. Ejecutando algunas consultas 2.5. Creando y Usando una Base de Datos 2.5.1. Creando una tabla 2.6. Cargando datos en una Tabla

Objetivos
Conocer y aplicar el proceso de instalacin de MySQL. Conocer y aplicar el proceso de conexin y desconexin al servidor MySQL.

Al finalizar el estudio del presente fascculo, el estudiante: Instalar correctamente el software MySQL. Conectar adecuadamente al servidor MySQL. Desconectar adecuadamente del servidor MySQL.

27

En el presente fascculo se describir paso a paso el proceso de instalar el software de base de datos Mysql, los requisitos mnimos para instalar Mysql y Mysql maestro en Windows. Tambin se desarrollar el proceso de conexin y desconexin al servidor Mysql, se har una demostracin de crear y usar una base de datos y por ltimo se cargar datos en una tabla.

28

INSTALACION Y CONEXIN DE MYSOL

2.1. INSTALAR MYSQL En esta seccin se describe cmo obtener e instalar MySQL: 1. Debe determinarse si la plataforma donde se desea hacer la instalacin est soportada. Ntese que no todos los sistemas soportados son igualmente adecuados para ejecutar MySQL. En algunas plataformas el funcionamiento ser mucho ms robusto y eficiente que en otras. 2. Debe elegirse la distribucin que se instalar. Hay varias versiones de MySQL disponibles, y la mayora lo estn en varios formatos de distribucin. Se puede elegir entre distribuciones prearmadas que contienen programas binarios (precompilados) o bien cdigo fuente. En caso de duda, debe elegirse una distribucin binaria. Tambin se provee acceso pblico al cdigo fuente para quienes deseen ver los desarrollos ms recientes y colaborar en el testeo de cdigo nuevo. 3. 4. 5. Descargar la distribucin que se desea instalar. Instalar la distribucin. Realizar cualquier ajuste que sea necesario con posterioridad a la instalacin. Luego de instalar MySQL.

6. Si se desea ejecutar los scripts para medir el rendimiento de MySQL, debe estar disponible el soporte de Perl para MySQL. 2.1.1. Cuestiones Generales sobre la Instalacin Antes de instalar MySQL, se debera hacer lo siguiente: 1. 2. 3. Determinarse si la plataforma donde se desea hacer la instalacin est soportada. Elegirse la distribucin que se instalar. Descargar la distribucin que se desea instalar y verificar su integridad.

2.2. INSTALAR MYSQL EN WINDOWS Desde la versin 3.21, MySQL AB proporciona una versin Windows nativa de MySQL, que representa un apreciable porcentaje de las descargas diarias de MySQL. Esta seccin describe el proceso para instalar MySQL en Windows.
29

El instalador para la versin Windows de MySQL 5.0, en conjunto con un asistente de configuracin dotado de interfaz grfica, instala automticamente MySQL, crea un fichero de opciones, inicia el servidor, y otorga seguridad a las cuentas de usuario por defecto. Si se est actualizando una instalacin existente de MySQL anterior a la versin 4.1.5, deben observarse los siguientes pasos: 1. 2. 3. 4. 5. Obtener e instalar la distribucin. Establecer un fichero de opciones, de ser necesario. Seleccionar el servidor que se desea emplear. Iniciar el servidor. Colocar contraseas a las cuentas MySQL creadas inicialmente.

Este proceso tambin debe realizarse con instalaciones nuevas de MySQL, cuando el paquete de instalacin no incluya un instalador. MySQL 5.0 para Windows est disponible en tres formatos de distribucin: La distribucin binaria contiene un programa de instalacin que instala cada elemento necesario para iniciar el servidor inmediatamente. La distribucin de cdigo fuente contiene todo el cdigo y ficheros de soporte para generar ejecutables utilizando el compilador de VC++ 6.0 Siempre que sea posible debera emplearse la distribucin binaria. Es ms simple que las otras y no se necesita ninguna herramienta adicional para poner en funcionamiento el servidor MySQL. 2.2.1. Requisitos de Windows Para ejecutar MySQL para Windows, se necesita lo siguiente: Un sistema operativo Windows de 32 bits, tal como 9x, Me, NT, 2000, XP, o Windows Server 2003. Se recomienda fuertemente el uso de un sistema operativo Windows basado en NT (NT, 2000, XP, 2003) puesto que stos permiten ejecutar el servidor MySQL como un servicio. Soporte para protocolo TCP/IP. Una copia de la distribucin binara de MySQL para Windows, que se puede descargar de http://dev.mysql.com/downloads/. Nota: Si se descarga la distribucin a travs de FTP, se recomienda el uso de un cliente FTP adecuado que posea la caracterstica de reanudacin (resume) para evitar la corrupcin de ficheros durante el proceso de descarga. Una herramienta capaz de leer ficheros .zip, para descomprimir el fichero de distribucin.
30

Suficiente espacio en disco rgido para descomprimir, instalar, y crear las bases de datos de acuerdo a sus requisitos. Generalmente se recomienda un mnimo de 200 megabytes. Tambin podran necesitarse los siguientes tems opcionales: Si se planea conectarse al servidor MySQL a travs de ODBC, se deber contar con un driver Connector/ODBC. Si se necesitan tablas con un tamao superior a 4GB, debe instalarse MySQL en un sistema de ficheros NTFS o posterior. Al crear las tablas no debe olvidarse el uso de MAX_ROWS y AVG_ROW_LENGTH. 2.2.2. Instalacion de MySQL en Windows Para el proceso de instalacin de MySQL se va ha utilizar la versin 5 de MySQL. a) Ubique el archivo instalador de MySQL. El proceso de instalacin es similar al de cualquier programa. Haga doble clic sobre el archivo.

Figura 2.1. Ubicacin del instalacin MySQL b) El asistente de instalacin lo guiara en el proceso de instalacin. Haga clic en Next.

31

Figura 2.2. Asistente de instalacin MySQL c) Para evitar inconvenientes en el proceso de instalacin seleccione la opcin Typical y haga clic en Next.

Figura 2.3. Tipos de instalacin

32

d) Ante la ventana de advertencia para el proceso de instalacin haga clic en Install para iniciar el proceso de instalacin.

Figura 2.4. Resumen de instalacin MySQL e) Observe el proceso de instalacin, evite presionar el botn Cancel.

Figura 2.5. Proceso de Instalacin MySQL


33

f) Seguidamente podr inscribirse en una cuenta de correo propia de MySQL, seleccione la opcion Skip Sign-Up. Haga clic en Next.

Figura 2.6. Determinacin ante cuenta MySQL g) Finalmente se terminar el proceso de instalacin, haga clic en Finish.

Figura 2.7. Finalizacin de la Instalacin MySQL

34

h)

Una vez terminado el proceso de instalacin se iniciar el proceso de configuracin de MySQL.

Figura 2.8. Asistente de configuracin MySQL i) Una ver terminado el proceso de instalacin se iniciar el proceso de configuracin de MySQL. Para este proceso seleccione la opcin Detailed Configuration. Haga clic en Next.

Figura 2.9. Opciones de configuracin MySQL

35

j) Para la configuracin de MySQL seleccione la opcion Developer Machine para el servidor puede ejecutar adicionalmente otras aplicaciones conjuntamente con MySQL.

Figura 2.10. Tipo de Configuracin MySQL k) Asimismo configure el servidor para que pueda utilizar bases de datos multidimencionales, esto a travs de la seleccin de la opcin Multifunctional Database. Haga clic en Next.

Figura 2.11. Tipo de Uso de la Base de Datos


36

l) Presione Next ante la ventana de configuracin que indica el espacio disponible para la instalacin.

Figura 2.12. Configuracin de instancias m) Para la configuracin de conexiones concurrentes seleccin la opcin Decisin Support (DSS)/-OLAP. Presione Next.

Figura 2.13. Configuracin del nmero de concurrencias


37

n)

Mantenga las opciones de configuracin de redes, asimismo mantenga el numero de puerto a 3306, seguidamente haga clic en Next.

Figura 2.14. Configuracin del nmero de puerto o) Seleccione la opcin Standard Carcter Set para configurar por defecto los caracteres a utilizar.

Figura 2.15. Configuracin del tipo de caracteres a utilizar.

38

p) Seleccione la opcin Install As Windows Service que es la opcin recomendada para My SQL Server. Haga clic en Next.

Figura 2.16. Configuracin del Servicio MySQL q) Seguidamente ingrese el password requerido para iniciar el servicio MySQL, asimismo mantenga activada la opcin Modify Security Setting. Haga clic en Next.

Figura 2.17. Ingreso del Password


39

r) Presione el botn Execute para iniciar el proceso de configuracin.

Figura 2.18. Inicio de Configuracin s) Seguidamente se inicia el proceso de configuracin, este proceso puede tardar unos minutos.

Figura 2.19. Proceso de Configuracin.

40

t) Una vez terminado el proceso de configuracin, presione el botn Finish para terminar.

Figura 2.20. Configuracin terminada. 2.2.3. Instalacin de MySQL Maestro en Windows Para el proceso de instalacin de MySQL se va a utilizar la versin 5 de MySQL. a) Ubique el archivo setup instalador de MySQL Maestro. El proceso de instalacin es similar al de cualquier programa. Haga doble clic sobre el archivo.

Figura 2.21. Ubicacin del instalador de MySQL Maestro.


41

b) Ante el asistente de instalacin haga clic en Next para iniciar el proceso de instalacin.

Figura 2.22. Ventana de bienvenida de MySQL Maestro. c) Lea la ventana de informacin y haga clic en Next para continuar el proceso de instalacin.

Figura 2.23. Palabras de bienvenida de MySQL Maestro


42

d) Acepte las condiciones del contrato y haga clic en Next para continuar.

Figura 2.24. Aceptacin de las condiciones de uso de MySQL e) Determine el directorio en el cual se instalar MySQL Maestro y haga clic en Next.

Figura 2.25. Seleccin del directorio de instalacin.


43

f) Presione Next en la ventana que selecciona el Grupo del programa.

Figura 2.26. Determinacin del grupo de instalacin. g) Seguidamente presione Next para iniciar el proceso de instalacin.

Figura 2.27. Inicio del proceso de instalacin.


44

h) El proceso de instalacin se iniciar, tenga cuidado de no presionar Cancel.

Figura 2.28. Proceso de instalacin iniciado. i) Una vez terminado el proceso de instalacin haga clic en Finish, si la opcin Run MySQL Maestro esta activada seguidamente se iniciar el programa MySQL Maestro.

Figura 2.29. Termino del proceso de instalacin de MySQL


45

j) Finalmente se iniciar MySQL Maestro.

Figura 2.30. Ventana MySQL Maestro.

2.3. CONECTNDOSE Y DESCONECTNDOSE AL SERVIDOR MYSQL Para conectarse al servidor, usualmente necesitamos de un nombre de usuario (login) y de una contrasea (password), y si el servidor al que nos deseamos conectar est en una mquina diferente de la nuestra, tambin necesitamos indicar el nombre o la direccin IP de dicho servidor. Una vez que conocemos estos tres valores, podemos conectarnos de la siguiente manera: shell> mysql -h NombreDelServidor -u NombreDeUsuario -p. Cuando ejecutamos este comando, se nos pedir que proporcionemos tambin la contrasea para el nombre de usuario que estamos usando.

46

Figura 2.31. Ingreso de password en la conexin MySQL Si la conexin al servidor MySQL se pudo establecer de manera satisfactoria, recibiremos el mensaje de bienvenida y estaremos en el prompt de mysql:

Figura 2.32. Conexin realizada con el Servidor MySQL Welcome to the MySQL monitor. Commands end with; or \g. Your MySQL connection id is 5563 to server version: 5.0.51b Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Este prompt nos indica que mysql est listo para recibir comandos. Algunas instalaciones permiten que los usuarios se conecten de manera annima al servidor corriendo en la mquina local. Si es el caso de nuestra mquina, debemos de ser capaces de conectarnos al servidor invocando a mysql sin ninguna opcin: shell> mysql Despus de que nos hemos conectado de manera satisfactoria, podemos desconectarnos en cualquier momento al escribir "quit", "exit", o presionar [ctrl.]+[D].
47

La mayora de los ejemplos siguientes asume que estamos conectados al servidor, lo cual se indica con el prompt de mysql. 2.4. EJECUTANDO ALGUNAS CONSULTAS En este momento debimos de haber podido conectarnos ya al servidor MySQL, an cuando no hemos seleccionado alguna base de datos para trabajar. Lo que haremos a continuacin es escribir algunos comandos para irnos familiarizando con el funcionamiento de mysql.

Figura 2.33. Consulta al servidor MySQL Un comando normalmente consiste de un sentencia SQL seguida por un punto y coma. Cuando emitimos un comando, mysql lo manda al servidor para que lo ejecute, nos muestra los resultados y regresa el prompt indicando que est listo para recibir ms consultas. Mysql muestra los resultados de la consulta como una tabla (filas y columnas). La primera fila contiene etiquetas para las columnas. Las filas siguientes muestran los resultados de la consulta. Normalmente las etiquetas de las columnas son los nombres de los campos de las tablas que estamos usando en alguna consulta. Si lo que estamos recuperando es el valor de una expresin (como en el ejemplo anterior) las etiquetas en las columnas son la expresin en s. Mysql muestra cuntas filas fueron regresadas y cuanto tiempo tard en ejecutarse la consulta, lo cual puede darnos una idea de la eficiencia del servidor, aunque estos valores pueden ser un tanto imprecisos ya que no se muestra la hora del CPU, y porque pueden verse afectados por otros factores, tales como la carga del servidor y la velocidad de comunicacin en una red. Las palabras clave pueden ser escritas usando maysculas y minsculas. Las siguientes consultas son equivalentes: mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;
48

Aqu est otra consulta que demuestra como se pueden escribir algunas expresiones matemticas y trigonomtricas:

Figura 2.34. Ejecucin de comandos en el servidor MySQL Aunque hasta este momento se han escrito sentencias sencillas de una sola lnea, es posible escribir ms de una sentencia por lnea, siempre y cuando estn separadas por punto y coma:

Figura 2.35. Ejecucin de consultas de identificacin del Servidor MySQL Un comando no necesita ser escrito en una sola lnea, as que los comandos que requieran de varias lneas no son un problema. mysql determinar en donde finaliza la sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de lnea. Aqu est un ejemplo que muestra una consulta simple escrita en varias lneas:

49

Figura 2.36. Ejecucin de consultas de identificacin de usuario. En este ejemplo debe notarse como cambia el prompt (de mysql> a ->) cuando se escribe una consulta en varias lneas. Esta es la manera en cmo mysql indica que est esperando a que finalice la consulta. Sin embargo si deseamos no terminar de escribir la consulta, podemos hacerlo al escribir \c como se muestra en el siguiente ejemplo:

Figura 2.37. Comandos de trmino de consulta De nuevo, se nos regresa el comando el prompt mysql> que nos indica que mysql est listo para una nueva consulta. En la siguiente tabla se muestran cada uno de los prompts que podemos obtener y una breve descripcin de su significado para mysql: Prompt Significado mysql> Listo para una nueva consulta. -> Esperando la lnea siguiente de una consulta multi-lnea. -> Esperando la siguiente lnea para completar una cadena que comienza con una comilla sencilla ('). -> Esperando la siguiente lnea para completar una cadena que comienza con una comilla doble (").
50

Los comandos multi-lnea comnmente ocurren por accidente cuando tecleamos ENTER, pero olvidamos escribir el punto y coma. En este caso mysql se queda esperando para que finalicemos la consulta: mysql> SELECT USER() -> Si esto llega a suceder, muy probablemente mysql estar esperando por un punto y coma, de manera que si escribimos el punto y coma podremos completar la consulta y mysql podr ejecutarla:

Figura 2.38. Consulta para identificacin de usuario activo. Los prompts '> y "> ocurren durante la escritura de cadenas. En mysql podemos escribir cadenas utilizando comillas sencillas o comillas dobles (por ejemplo, 'hola' y "hola"), y mysql nos permite escribir cadenas que ocupen mltiple lneas. De manera que cuando veamos el prompt '> o "> , mysql nos indica que hemos empezado a escribir una cadena, pero no la hemos finalizado con la comilla correspondiente. Aunque esto puede suceder si estamos escribiendo una cadena muy grande, es ms frecuente que obtengamos alguno de estos prompts si inadvertidamente escribimos alguna de estas comillas. Por ejemplo: mysql> SELECT * FROM mi_tabla WHERE nombre = "Lupita AND edad < 30; Si escribimos esta consulta SELECT y entonces presionamos ENTER para ver el resultado, no suceder nada. En lugar de preocuparnos porque la consulta ha tomado mucho tiempo, debemos notar la pista que nos da mysql cambiando el prompt. Esto nos indica que mysql est esperando que finalicemos la cadena iniciada ("Lupita). En este caso, qu es lo que debemos hacer?. La cosa ms simple es cancelar la consulta. Sin embargo, no basta con escribir \c, ya que mysql interpreta esto como parte de la cadena que estamos escribiendo. En lugar de esto, debemos correspondiente y despus \c: \c El prompt cambiar de nuevo al ya conocido mysql>, indicndonos que mysql est listo para una nueva consulta.
51

escribir

antes

la

comilla

mysql> SELECT * FROM mi_tabla WHERE nombre = "Lupita AND edad < 30;

Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si en algn momento nos aparece alguno de ellos, todas la lneas que escribamos a continuacin sern consideradas como parte de la cadena, inclusive cuando escribimos QUIT. Esto puede ser confuso, especialmente si no sabemos que es necesario escribir la comilla correspondiente para finalizar la cadena, para que podamos escribir despus algn otro comando, o terminar la consulta que deseamos ejecutar. 2.5. CREANDO Y USANDO UNA BASE DE DATOS Ahora que conocemos como escribir y ejecutar sentencias, es tiempo de accesar a una base de datos. Supongamos que tenemos diversas mascotas en casa (nuestro pequeo zoolgico) y deseamos tener registros de los datos acerca de ellas. Podemos hacer esto al crear tablas que guarden esta informacin, para que posteriormente la consulta de estos datos sea bastante fcil y de manera muy prctica. Esta seccin muestra como crear una base de datos, crear una tabla, incorporar datos en una tabla, y recuperar datos de las tablas de diversas maneras.

Figura 2.39. Consulta para mostrar bases de datos La base de datos "zoolgico" ser muy simple (deliberadamente), pero no es difcil pensar de situaciones del mundo real en la cual una base de datos similar puede ser usada. Primeramente usaremos la sentencia SHOW para ver cules son las bases de datos existentes en el servidor al que estamos conectados. Es probable que la lista de bases de datos que veamos sea diferente en nuestro caso, pero seguramente las bases de datos "mysql" y "test" estarn entre ellas. En particular, la base de datos "mysql" es requerida, ya que sta tiene la informacin de los privilegios de los usuarios de MySQL. La base de datos "test" es creada durante la instalacin de MySQL con el propsito de servir como rea de trabajo para los usuarios que inician en el aprendizaje de MySQL. Se debe anotar tambin que es posible que no veamos todas las bases de datos si no tenemos el privilegio SHOW DATABASES. Se recomienda revisar la seccin del manual de MySQL dedicada a los comandos GRANT y REVOKE.
52

Si la base de datos "test" existe, hay que intentar accesar a ella:

Figura 2.40. Consultas de prueba. Observe que USE, al igual que QUIT, no requieren el uso del punto y coma, aunque si se usa ste, no hay ningn problema. El comando USE es especial tambin de otra manera: ste debe ser usado en una sola lnea. Podramos usar la base de datos "test" (si tenemos acceso a ella) para los ejemplos que vienen a continuacin, pero cualquier cosa que hagamos puede ser eliminada por cualquier otro usuario que tenga acceso a esta base de datos. Por esta razn, es recomendable que preguntemos al administrador MySQL acerca de la base de datos que podemos usar. Supongamos que deseamos tener una base de datos llamada "zoolgico" (ntese que no se est acentuando la palabra) a la cual slo nosotros tengamos acceso, para ello el administrador necesita ejecutar un comando como el siguiente: mysql> GRANT ALL on zoolgico.* TO MiNombreUsuario@MiComputadora -> IDENTIFIED BY 'MiContrasea'; Donde MiNombreUsuario es el nombre de usuario asignado dentro del contexto de MySQL, MiComputadora es el nombre o la direccin IP de la computadora desde la que nos conectamos al servidor MySQL, y MiContrasea es la contrasea que se nos ha asignado, igualmente, dentro del ambiente de MySQL exclusivamente. Ambos, nombre de usuario y contrasea no tienen nada que ver con el nombre de usuario y contrasea manejados por el sistema operativo (si es el caso). Si el administrador cre la base de datos al momento de asignar los permisos, podemos hacer uso de ella. De otro modo, nosotros debemos crearla:

53

Figura 2.41. Consulta para utilizar una base de datos El mensaje anterior indica que la base de datos no ha sido creada, por lo tanto necesitamos crearla.

Figura 2.42. consulta para crear una base de datos Bajo el sistema operativo Unix, los nombres de las bases de datos son sensibles al uso de maysculas y minsculas (no como las palabras clave de SQL), por lo tanto debemos de tener cuidado de escribir correctamente el nombre de la base de datos. Esto es cierto tambin para los nombres de las tablas. Al crear una base de datos no se selecciona sta de manera automtica; debemos hacerlo de manera explcita, por ello usamos el comando USE en el ejemplo anterior. La base de datos se crea slo una vez, pero nosotros debemos seleccionarla cada vez que iniciamos una sesin con mysql. Por ello es recomendable que se indique la base de datos sobre la que vamos a trabajar al momento de invocar al monitor de MySQL. 2.5.1. Creando una Tabla Crear la base de datos es la parte ms fcil, pero en este momento la base de datos est vaca, como lo indica el comando SHOW TABLES: La parte un tanto complicada es decidir la estructura que debe tener nuestra base de datos: qu tablas se necesitan y qu columnas estarn en cada tabla. En principio, necesitamos una tabla que contenga un registro para cada una de nuestras mascotas.
54

sta puede ser una tabla llamada mascotas, y debe contener por lo menos el nombre de cada uno de nuestros animalitos. Ya que el nombre en s no es muy interesante, la tabla debe contener alguna otra informacin. Por ejemplo, si ms de una persona en nuestra familia tiene una mascota, es probable que tengamos que guardar la informacin acerca de quien es el dueo de cada mascota. As mismo, tambin sera interesante contar con alguna informacin ms descriptiva tal como la especie, y el sexo de cada mascota.

Figura 2.43. Consulta para ver tablas en una base de datos. Y que sucede con la edad?. Esto puede ser tambin de inters, pero no es una buena idea almacenar este dato en la base de datos. La edad cambia conforme pasa el tiempo, lo cual significa que debemos de actualizar los registros frecuentemente. En vez de esto, es una mejor idea guardar un valor fijo, tal como la fecha de nacimiento. Entonces, cuando necesitemos la edad, la podemos calcular como la diferencia entre la fecha actual y la fecha de nacimiento. MySQL proporciona funciones para hacer operaciones entre fechas, as que no hay ningn problema. Al almacenar la fecha de nacimiento en lugar de la edad tenemos algunas otras ventajas: Podemos usar la base de datos para tareas tales como generar recordatorios para cada cumpleaos prximo de nuestras mascotas. Podemos calcular la edad en relacin a otras fechas que la fecha actual. Por ejemplo, si almacenamos la fecha en que muri nuestra mascota en la base de datos, es fcil calcular que edad tena nuestro animalito cuando falleci. Es probable que estemos pensando en otro tipo de informacin que sera igualmente til en la tabla "mascotas", pero para nosotros ser suficiente por ahora contar con informacin de nombre, propietario, especie, nacimiento y fallecimiento. Usaremos la sentencia CREATE TABLE para conformados los registros de nuestras mascotas. indicar como estarn

55

Figura 2.44. consulta para crear una tabla. VARCHAR es una buena eleccin para los campos nombre, propietario, y especie, ya que los valores que almacenarn son de longitud variable. No es necesario que la longitud de estas columnas sea la misma, ni tampoco que sea de 20. Se puede especificar cualquier longitud entre 1 y 255, lo que se considere ms adecuado. Si resulta que la eleccin de la longitud de los campos que hemos hecho no result adecuada, MySQL proporciona una sentencia ALTER TABLE que nos puede ayudar a solventar este problema. El campo sexo puede ser representado en una variedad de formas, por ejemplo, "m" y "f", o tal vez "masculino" y "femenino", aunque resulta ms simple la primera opcin. El uso del tipo de dato DATE para los campos nacimiento y fallecimiento debe de resultar obvio. Ahora que hemos creado la tabla, la sentencia SHOW TABLES debe producir algo como:

Figura 2.45. Resultado de la creacin de una tabla

56

Para verificar que la tabla fue creada como nosotros esperbamos, usaremos la sentencia DESCRIBE:

Figura 2.46. Descripcin de la tabla creada. Podemos hacer uso de la sentencia DESCRIBE en cualquier momento, por ejemplo, si olvidamos los nombres el tipo de las columnas en la tabla. 2.6. CARGANDO DATOS EN UNA TABLA Despus de haber creado la tabla, ahora podemos incorporar algunos datos en ella, para lo cual haremos uso de las sentencias INSERT y LOAD DATA. Supongamos que los registros de nuestras mascotas pueden ser descritos por los datos mostrados en la siguiente tabla.

Debemos observar que MySQL espera recibir fechas en el formato YYYYMM-DD, que puede ser diferente a lo que nosotros estamos acostumbrados. Ya que estamos iniciando con una tabla vaca, la manera ms fcil de poblarla es crear un archivo de texto que contenga un registro por lnea para cada uno de nuestros animalitos para que posteriormente carguemos el contenido del archivo en la tabla nicamente con una sentencia. Por tanto, debemos de crear un archivo de texto "mascotas.txt" que contenga un registro por lnea con valores separados por tabuladores, cuidando que el orden
57

de las columnas sea el mismo que utilizamos en la sentencia CREATE TABLE. Para valores que no conozcamos podemos usar valores nulos (NULL). Para representar estos valores en nuestro archivo debemos usar \N. Para cargar el contenido del archivo en la tabla mascotas, usaremos el siguiente comando: mysql> LOAD DATA LOCAL INFILE "mascotas.txt" INTO TABLE mascotas; La sentencia LOAD DATA nos permite especificar cul es el separador de columnas, y el separador de registros, por default el tabulador es el separador de columnas (campos), y el salto de lnea es el separador de registros, que en este caso son suficientes para que la sentencia LOAD DATA lea correctamente el archivo "mascotas.txt". Si lo que deseamos es aadir un registro a la vez, entonces debemos hacer uso de la sentencia INSERT. En la manera ms simple, debemos proporcionar un valor para cada columna en el orden en el cual fueron listados en la sentencia CREATE TABLE. Supongamos que nuestra hermana Diana compra un nuevo hamster nombrado Pelusa. Podemos usar la sentencia INSERT para agregar su registro en nuestra base de datos.

Figura 2.47. Insercin de valores a una tabla. Notar que los valores de cadenas y fechas deben estar encerrados entre comillas. Tambin, con la sentencia INSERT podemos insertar el valor NULL directamente para representar un valor nulo, un valor que no conocemos. En este caso no se usa \N como en el caso de la sentencia LOAD DATA. De este ejemplo, debemos ser capaces de ver que es un poco ms la tarea que se tiene que realizar si inicialmente cargamos los registros con varias sentencias INSERT en lugar de una nica sentencia LOAD DATA.

58

1. Instalar Mysql en el sistema operativo Windows. 2. Investigar y describir la forma de descargar de la Web el instalador del Mysql. 3. Conectar al servidor Mysql.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008

59

1. EL Mysql puede instalarse en otros sistemas operativos como l Linux y otros? 2. El Mysql es un software libre? 3. Describa paso a paso la manera de instalar Mysql en Windows? 4. Describa paso a paso la manera de conectar al servidor MySQL?. 5. Describa paso a paso la manera de desconectar al servidor MySQL?.

60

CREACIN DE UNA BASE DE DATOS


TABLA DE CONTENIDO

3.1. Anlisis de los distintos tipos de tablas 3.1.1. Tablas ISAM 3.1.2. Tablas MYLSAM 3.1.3. Tablas MERGE 3.1.4. Tablas HEAP 3.1.5. Tablas INNODB 3.1.6. Tablas DBD 3.2. Creacin de tablas e ndices 3.2.1. Creacin de la tabla alumno 3.2.2. Creacin de la tabla curso 3.2.3. Creacin de la tabla notas 3.2.4. Creacin de la tabla profesor 3.2.5. Creacin de la tabla facultad 3.3. Ingreso de Datos

Objetivos

Describir y crear los diferentes tipos de tablas en el MySQL. Describir y crear una Base de Datos MySQL. Establecer las relaciones o ndices en la base de datos MySQL.

61

Al finalizar el estudio del presente fascculo, el estudiante: Estar en la capacidad de crear los diferentes tipos de tablas en el MySQL. Estar en la capacidad de crear una Base de Datos en el MySQL.

Establecer las relaciones o ndices de las tablas en el MySQL.

En el presente fascculo se describir y analizar los diferentes tipos de tablas: tablas ISAM, tablas MYLSAM, tablas MERGE, tablas HEAP, tablas INNODB y tablas DBD, adems se har ejemplos de cada tipo de tabla. Se desarrollar detalladamente el proceso de crear tablas e ndices. Se desarrollar un ejemplo de base de datos de una facultad en donde se crear las siguientes tablas: alumnos, cursos, notas, profesor y facultad cuyo objetivo es el control e informacin de las notas de los alumnos de una determinada universidad y por ltimo se ingresar datos a las tablas

62

CREACIN DE UNA BASE DE DATOS


En las siguientes secciones se describe como crear una base de datos y como realizar consultas sobre ella. Asumiremos que ha establecido una conexin al servidor MySQL y que dispone de permisos para utilizar una base de datos. De lo contrario, solicite dichos permisos a su administrador. Si denominamos a esta base de datos como Acadmico, pida a su administrador que cree y le conceda permiso absoluto de acceso a dicha base de datos nicamente. Para el proceso de creacin se utilizar el MySQL Maestro, para crear una base de datos con este programa realice lo siguiente: a) Ir al men Database y seleccione la opcin Create Database.

Figura 3.1. Men Database

63

b) Seguidamente aparecer la ventana del asistente en la cual deber colocar el nombre de la base de datos, en este caso ser Acadmico.

Figura 3.2. Ingreso del nombre de la base de datos. b) En la siguiente ventana del asistente debe ingresar el password del administrador para poder continuar con el proceso de instalacin. Presione Ready cuando ingrese el password correspondiente.

Figura 3.3. Conexin con el servidor MySQL


64

d) Finalmente haga clic en Ok para terminar el proceso de creacin.

Figura 3.4. Ventana de conexin al servidor MySQL e) Una vez terminado el proceso de creacin de la base de datos, sta aparecer en la ventana del MySQL Maestro.

Figura 3.5. Base de Datos conectada al Servidor.

65

3.1.

ANALISIS DE LOS DISTINTOS TIPOS DE TABLAS

Existen dos tipos de tablas de transaccin segura (InnoDB y BDB). El resto (ISAM, MyISAM, MERGE y HEAP) no son de transaccin segura. La eleccin del tipo de tabla adecuado puede afectar enormemente a1 rendimiento. 3.1.1. Tablas ISAM Las tablas del tipo Mtodo de acceso secuencial indexado (ISAM) era el estndar antiguo de MySQL. st as fueron sustituidas por las tablas MyISAM en la version 3.23.0 (aunque 10s tipos ISAM seguirn estando disponibles hasta MySQL 4.1). Por lo tanto, es probable que solo se tope con este tipo de tablas si esta trabajando con bases de datos antiguas. La principal diferencia entre las dos es que el ndice de las tablas MyISAM es mucho mas pequeo que el de las tablas ISAM, de manera que una instruction SELECT con un ndice sobre una tabla MyISAM utilizara muchos menos recursos del sistema. En contrapartida, las tablas de tipo MyISAM necesitan mucha ms potencia de procesador para insertar un registro dentro de un ndice ms comprimido. Las tablas ISAM presentan las siguientes caractersticas: ISAM almacena los archivos de datos con un extensin . I SD y el archivo de ndice con una extensin . ISM. Las tablas no son archivos binarios portables entre diferentes equipos o sistemas operativos. En otras palabras, no basta con copiar los archivos ISD e ISM. Necesitara utilizar un mtodo de volcado, como mysqldump (analizado en un capitulo posterior). Si se topa con una tabla de tipo ISAM, debera convertirla a tipo MyISAM ya que resultan ms eficaces. Las tablas MyISAM permiten adems utilizar un mayor nmero de las funciones de MySQL. Utilice la siguiente secuencia para convertir una tabla ISAM a una tabla MyISAM: ALTER TABLE nombre-de-tabla TYPE = MYISAM; 3.1.2. Tablas MylSAM Las tablas de tipo ISAM sustituyeron a las tablas ISAM en la versin 3.23.0. Los ndices MyISAM son mucho ms pequeos que los ndices ISAM. Debido a ello, el sistema utiliza menos recursos a1 realizar una operacin de seleccin mediante un ndice de una tabla MyISAM. Sin embargo, MyISAM requiere mas potencia de procesador para insertar un registro dentro de un ndice mucho mas comprimido. Los archivos de datos MyISAM llevan asignada la extensin MYD y la extensin de los ndices es MYI. Las bases de datos MyISAM se almacenan en un directorio.
66

3.1.3. Tablas MERGE Las tablas MERGE son la fusin de tablas MyISAM iguales. Este tipo de tablas se introdujeron en la versin 3.23.25. Por regla general solo se utilizan cuando las tablas MyISAM empiezan a resultar demasiado grandes. Entre las ventajas de estas tablas se pueden mencionar las siguientes: Resultan ms rpidas en determinadas situaciones (se pueden dividir varias tablas en discos diferentes y utilizar una tabla MERGE para acceder a ellas como si se tratara de una sola tabla). El tamao de tabla es ms pequeo. Algunos sistemas operativos tienen un lmite en cuanto a los tamaos de archivo y la divisin de las tablas y la creacin de una tabla MERGE permite solucionar este problema. As mismo, los archivos resultan ms fciles de traducir, como por ejemplo para copiarlos a un CD. Puede convertir la mayor parte de las tablas originales en tablas de solo lectura y permitir la insercin de elementos en la tabla mas reciente. De esta forma solo se correr el riesgo de daar una pequea tabla durante el proceso de actualizacin o insercin y el proceso de reparacin resultara mucho ms rpido. Entre las desventajas de las tablas MERGE se incluyen las siguientes: Resultan mucho ms lentas en bsquedas eq ref. Es necesario tener cuidado a1 cambiar una de las tablas subyacentes, ya que puede daarse la tabla MERGE (en realidad no sufren daos, solo puede ocurrir que no este disponible). El comando REPLACE no funciona sobre ellas. Las tablas utilizan algunos descriptores ms de archivos. 3.1.4. Tablas HEAP Las tablas HEAP son el tipo de tabla ms rpido porque se almacenan en memoria y utilizan un ndice asignado. La contrapartida es que, como se almacenan en memoria, todos los datos se pierden en caso de un fallo en el sistema. adems, no pueden contener una gran cantidad de datos (a menos que disponga de un gran presupuesto para RAM). 3.1.5. Tablas InnoDB Las tablas InnoDB son tablas de transaccin segura (lo que significa que disponen de las funciones COMMIT y ROLLBACK). En una tabla MyISAM, la tabla entera se bloquea al realizar funciones de insercin. Durante esa fraccin de segundo, no se puede ejecutar ninguna otra instruccin sobre la tabla InnoDB utiliza funciones de bloqueo en el nivel de fila de manera que solo se bloquee dicha fila y no toda la tabla, y se puedan seguir aplicando instrucciones sobre otras filas.
67

Por razones de rendimiento, es aconsejable utilizar tablas InnoDB si necesita realizar una gran cantidad de operaciones de insercin y actualizacin sobre los datos de sus tablas en comparacin con operaciones de seleccin. Por el contrario, si las operaciones de seleccin superan a las de actualizacin o insercin, es preferible inclinarse por las tablas MyISAM. 3.1.6. Tablas DBD DBD equivale a Base de datos de Berkeley (creada originalmente en la University o Caliornia, Berkeley). Se trata tambin de un tipo de tabla habilitado para transacciones. Como en el caso de las tablas InnoDB, es necesario compilar la compatibilidad BDB en MySQL para que funcione (la distribucin mysql-max incorpora dicha funcin). 3.2. CREACIN DE TABLAS E INDICES Cuando usted crea una tabla, se debe especificar el nombre de la tabla, el nombre de la columna, y los tipos de datos de la columna. Los nombres de la columna deben ser nicos a una tabla especfica. Sin embargo, se puede usar el mismo nombre de la columna en tablas diferentes dentro de la misma base de datos. Se debe especificar un tipo de datos para cada columna. El planear ndices es una de los aspectos ms importantes para mejorar la actuacin de una consulta. Requiere una comprensin de la estructura del ndice y cmo el dato es usado. El entendimiento de cmo los datos se almacenan y como se accede es el primer paso para el entendimiento de cmo trabajan los ndices, por qu se querra usarlos, y las razones por las que se querra usar cada una de las opciones de los diferentes ndices. Para crear una tabla dentro de la base de datos Acadmico realice lo siguiente: 3.2.1. Creacin de la Tabla Alumno a) Seleccione el icono Tables en la base de datos Acadmico y active su men contextual, en ste seleccione la opcin Create New Table.

Figura 3.6. Opciones para la creacin de Tablas.


68

b) En la ventana del asistente ingrese el nombre de la tabla, en este caso ser Alumno.

Figura 3.7. Ingreso del nombre de la tabla. c) Seguidamente debe de ingresar los campos correspondientes, para esto haga clic en el botn Add para proceder a agregarlos.

Figura 3.8. Campos generados en la tabla


69

c)

Para agregar el campo IdAlumno presione el botn Add y en la ventana Add Field complete de acuerdo al siguiente grafico. Asegrese que este activa la casilla Primary Key. Finalmente haga clic en OK.

Figura 3.9. Caractersticas del campo IdAlumno e) Para agregar el campo A_Apellido realice la misma operacin y complete de acuerdo al siguiente grafico. Finalmente haga clic en OK.

Figura 3.10. Caractersticas del campo A_Apellido


70

f) Para agregar el campo A_Nombre realice la misma operacin y complete de acuerdo al siguiente grafico. Finalmente haga clic en OK.

Figura 3.11. Caractersticas del campo A_Nombre g) Para agregar el campo Fecha_Nac realice la misma operacin y complete de acuerdo al siguiente grfico. Finalmente haga clic en OK.

71

Figura 3.12. Caractersticas del campo Fecha_Nac h) Para agregar el campo A_DNI realice la misma operacin y complete de acuerdo al siguiente grfico. Finalmente haga clic en OK.

Figura 3.13. Caractersticas del campo A_DNI i) Para agregar el campo A_Procedencia realice la misma operacin y complete de acuerdo al siguiente grfico. Finalmente haga clic en OK.
72

Figura 3.14. Caractersticas del campo A_Procedencia j) Una vez terminado el proceso de ingreso de los campos, presione el boton Next para proseguir con el proceso de creacin de una nueva tabla.

Figura 3.15. Campos generados en la tabla Alumno.

73

k)

Ante la ventana de creacin de ndices presione el botn Next.

Figura 3.16. Ventana de adicin de ndices l) En el tipo de tabla seleccione InnoDB luego presione el botn Next.

Figura 3.17. Especificacin de opciones de tabla

74

m) Finalmente presione el botn Ready para terminar el proceso de creacin de tablas.

Figura 3.18. Resumen de creacin de tabla n) Al trmino del proceso de implementacin de la tabla Alumno notar que aparece dentro del icono Tables, asimismo tambin se detalla en el rea de inspeccin de MySQL Maestro.

Figura 3.19. Creacin fsica de la tabla Alumno


75

3.2.2. Creacin de la Tabla Curso Se requiere crear consideraciones. una tabla denominada Curso, bajo las siguientes

Figura 3.20. Campos de la tabla Curso. a) Para esto ejecute la opcin SQL Editor del men Tools

Figura 3.21. Activacin del Editor SQL d) Seguidamente ingrese el cdigo siguiente:

76

e)

Presione el botn Execute Query para ejecutar el cdigo ingresado. Observar que la tabla Curso se ha implementado.

Figura 3.22. Editor SQL con la sentencia a ejecutar. 3.2.3. Creacin de la Tabla Notas Se requiere crear consideraciones. una tabla denominada Notas, bajo las siguientes

Figura 3.23. Campos de la tabla Notas.

77

a) Para esto ejecute la opcin SQL Editor del men Tools e ingrese el cdigo siguiente:

b) Presione el botn Execute Query para ejecutar el cdigo ingresado. Observar que la tabla Notas se ha implementado. 3.2.4. Creacin de la Tabla Profesor Se requiere crear consideraciones. una tabla denominada Profesor, bajo las siguientes

Figura 3.24. Campos de la tabla Profesor. a) Para esto ejecute la opcin SQL Editor del men Tools e ingrese el cdigo siguiente:

78

b) Presione el botn Execute Query para ejecutar el cdigo ingresado. Observar que la tabla Profesor se ha implementado. 3.2.5. Creacin de la Tabla Facultad Se requiere crear una tabla denominada Facultad, bajo las siguientes consideraciones.

Figura 3.25. Campos de la tabla Facultad. a) Para esto ejecute la opcin SQL Editor del men Tools e ingrese el cdigo siguiente:

b) Presione el botn Execute Query para ejecutar el cdigo ingresado. Observar que la tabla Facultad se ha implementado. c) Luego del proceso de creacin de las tablas se obtiene el listado de las mismas que se pueden observar debajo del item Tables.

Figura 3.26. Implementacin de tablas


79

3.3.

INGRESO DE DATOS

Para ingresar datos en una determinada tabla puede hacerlo mediante consultas de accin o en su defecto a travs del SQL Maestro. a) Seleccione la tabla Facultad, active la ficha Data botn Insert vaya ingresando registros en dicha tabla y a travs el

Figura 3.27. Insercin de datos a la tabla Facultad b) Al final del proceso haga clic en el 80botn Save bookmark para guardar los cambios en la tabla.

Figura 3.28. Guardar cambios con bookmark c) Ingrese valores a cada tabla de la base de datos de forma que se tenga informacin con la que se pueda trabajar.

Figura 3.29. Insercin de datos a la tabla Alumno


80

Figura 3.30. Insercin de datos a la tabla Curso

Figura 3.31. Insercin de datos a la tabla notas

Figura 3.32. Insercin de datos a la tabla Profesor

81

1. Crear una base de datos que permita controlar las ventas de una empresa, para lo cual se contar con las siguientes tablas: Factura: almacena las facturas emitidas (campos: num_fac, id_cliente y total) Productos: almacena los productos (id_producto, concepto y precio) ofrecidos por la fecha,

empresa

Detalle_factura: almacena el detalle de los productos vendidos en una factura (num_fac, id_producto y cantidad) Clientes: almacena datos de los clientes de la empresa (campos: id_cliente, apellido1, apellido2, nombre, razn_social. Es importante aclarar que en una factura se puede vender varios productos, y que en una factura determinada solo puede haber un cliente pero un cliente puede estar en diferentes facturas.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008

82

1. Cules son las principales caractersticas de los diferentes tipos de tablas? 2. Describir detalladamente el proceso de crear tablas en el Mysql. 3. Describir detalladamente el proceso de establecer ndices en el Mysql.

83

84

CONSULTAS DE ACCIN

TABLA DE CONTENIDO

4.1. Consultas de eliminacin 4.1.1. Ejemplos de delete 4.2. Sintaxis de truncate table 4.2.1. Limitaciones de truncate table 4.2.2. Ejemplo de truncate table 4.3. Consultas de actualizacin 4.3.1. Ejemplos de update 4.4. Consultas de insercin 4.4.1. Ejemplos de insert

Objetivos

Conocer y aplicar el proceso de insertar datos de una Base de Datos MySQL. Conocer y aplicar el proceso de eliminar datos de una Base de Datos MySQL. Conocer y aplicar el proceso de modificar datos de una Base de Datos MySQL.

85

Al finalizar el estudio del presente fascculo, el estudiante: Comprender y aplicar el proceso de insertar datos de una Base de Datos MySQL. Comprender y aplicar el proceso de eliminar datos de una Base de Datos MySQL. Comprender y aplicar el proceso de modificar datos de una Base de Datos MySQL.

En el presente fascculo se desarrollar detalladamente la forma de cmo insertar nuevos datos, eliminar datos y modificar datos de una base de datos Mysql, para lo cul se analizar las instrucciones: DELETE, TRUNCATE, UPDATE, INSERT Y SELECT INTO, se desarrollar las sintaxis de stas instrucciones con ejercicios aplicados a la base de datos creada en el anterior fascculo.

86

CONSULTAS DE ACCIN
Las consultas de accin son instrucciones SQL que modifican uno ms registros de una tabla existente. Estas instrucciones son: DELETE: Puede eliminar registros individuales, o bien, todos los registros de una tabla. TRUNCATE: TABLE: Elimina cada registro de una tabla. UPDATE: Puede hacer cambios en una o varias columnas dentro de uno o varios registros de una tabla. INSERT: Puede insertar una o varias filas en una tabla existente. SELECT INTO: Puede crear una nueva tabla entera a partir de datos existentes. En el resto de este captulo, explicaremos la sintaxis de cada uno de estos cinco tipos de instrucciones y le mostraremos cmo puede utilizarlos en sus propias aplicaciones. 4.1. CONSULTAS DE ELIMINACIN Puede utilizar dos tipos de instrucciones distintas para eliminar registros de una tabla existente. Las instrucciones DELETE son las ms flexibles de las dos y le permiten especificar exactamente los registros que se desea eliminar. Cuando se quieren eliminar todos los registros de una tabla, TRUNCATE TABLE es ms rpido y utiliza menos recursos del sistema. La instruccin DELETE tiene diversas opciones, pero la sintaxis bsica es bastante sencilla:

87

Examinndola por partes, esto es lo que compone una instruccin DELETE: La palabra clave DELETE identifica la instruccin. La palabra clave opcional FROM se puede emplear si as resulta ms fcil entender el cdigo SQL. Es necesario especificar un nombre de tabla, un nombre de vista o los resultados de una funcin OPENQUERY, OPENROWSET, u OPENDATASOUCE como el origen de las filas que se van a eliminar. La clusula opcional WITH se puede utilizar para proporcionar una sugerencia de la tabla para el optimizador. La clusula FROM tiene la misma sintaxis y opciones que la clusula FROM en una instruccin SELECT. La clusula WHERE tiene la misma sintaxis y opciones que la clusula WHERE en una instruccin SELECT. La clusula OPTION se puede utilizar para proporcionar ms sugerencias. En general, la instruccin DELETE es muy parecida a la instruccin SELECT. De hecho, siempre que SELECT no contenga funciones de agregado, se puede crear una instruccin DELETE para-eliminar las filas correspondientes sustituyendo la palabra clave SELECT por la palabra clave DELETE y eliminando cualquier nombre de columna explcito de la clusula SELECT. 4.1.1. Ejemplos de DELETE La instruccin DELETE ms simple posible elimina las filas de la tabla de destino. Para experimentar sin riesgos, vamos a usar la instruccin SELECT INTO para copiar la tabla Person.Contact y poder trabajar con la copia: SELECT * INTO Person.ContactCopy FROM Person.Contact DELETE Person.ContactCopy DROP TABLE Person.ContactCopy Si ejecuta estas instrucciones; ver estos mensajes de SQL Server: (19972 filas afectadas) (19972 filas afectadas) El primer mensaje registra la creacin en SQL Server de la tabla Person.ContactCopy y el segundo se emite cuando SQL Server ya ha eliminado las 19.972 filas de la nueva tabla. Opcional mente, si le gustara que f uera un poco ms f cil leer la instruccin QL puede incluir la palabra clave FROM: SELECT * INTO Person.ContactCopy FROM Person.Contact DELETE FROM Person.ContactCopy DROP TABLE Person.ContactCopy
88

Para eliminar una sola fila, tiene que incluir una clusula WHERE que especifique la fila en concreto: SELECT * INTO Person.ContactCopy FROM Person.Contact DELETE FROM Person.ContactCopy WHERE ContactID=1 DROP TABLE Person.ContactCopy O, con una Clusula WHERE menos restrictiva, puede eliminar varias filas, pero no la tabla entera: SELECT * INTO Person.ContactCopy FROM Person.Contact DELETE FROM Person.ContactCopy WHERE LastName LIKE Whit% DROP TABLE Person.ContactCopy Tambin puede eliminar filas de una tabla en funcin de las filas de otra tabla mediante la segunda clusula FROM. Suponga un caso en el que tiene contactos y pedidos combinados en un campo comn ContactID. En este caso, puede eliminar todos los pedidos para los contactos que tengan el prefijo 206 con la siguiente instruccin:

Tambin puede utilizar una subconsulta como la tabla de la que se van a eliminar filas (una subconsulta es una consulta SELECT incrustada dentro de otra consulta). Por ejemplo, imagine el problema de eliminar las 10 primeras entradas de una tabla, ordenadas alfabticamente. Puede hacerlo con la siguiente instruccin:

89

Aqu, la instruccin SELECT entre parntesis es una subconsulta que proporciona el conjunto bsico de filas sobre las que debe actuar la instruccin DELETE. El resultado de esta subconsulta recibe el alias t1 y la clusula WHERE especifica cmo deben compararse las filas de tI con las de la tabla permanente Person.ContactCopy. La clusula DELETE elimina automticamente todas las filas coincidentes. Ahora imagine el problema de eliminar todos los contactos que no tienen ningn pedido. Puede hacerlo empleando LEFT JOIN y aplicando una condicin a la tabla Orders:

4.2. SINTAXIS DE TRUNCATE TABLE La otra instruccin que se puede emplear para eliminar filas es TRUNCATE TABLE. La sintaxis de TRUNCATE TABLE es lo ms simple que se puede encontrar: TRUNCATE TABLE table_name Funcionalmente, TRUNCATE TABLE es el equivalente de aplicar una instruccin DELETE a una sola tabla sin clusula WHERE. Sin embargo, TRUNCATE TABLE es ms eficaz si desea deshacerse de todos los datos de una tabla, porque la instruccin DELETE quita las filas de una en una y crea entradas individuales en el registro de transacciones para cada fila. En cambio, la instruccin TRUNCATE TABLE elimina todas las filas cancelando la asignacin de las pginas de datos utilizadas para almacenar los datos de la tabla y slo graba en el registro de transacciones las cancelaciones de asignacin de pginas. 4.2.1. Limitaciones de TRUNCATE TABLE Cuando se utiliza TRUNCATE TABLE para eliminar todas las f ilas de una tabla que tiene una columna ID, el contador de identidad se restablece, por lo que la siguiente fila que se aade recibe el valor de origen inicial para esa columna. Si desea conservar el contador, de tal manera que la prxima fila siguiente reciba el valor siguiente que no se haya asignado an, debera emplear una instruccin DELETE en lugar de una instruccin TRUNCATE TABLE.
90

No se puede usar TRUNCATE TABLE para eliminar filas de una tabla ala que hace referencia una restriccin de clave externa de tabla. Una vez ms, en este caso debe Utilizar una instruccin DELETE. Las eliminaciones que se realizan por medio TRUNCATE TABLE no activan los desencadenadores de eliminacin de la tabla. En algunos casos, existe una manera de evitar cierta limitacin de la instruccin DELETE, pero hay que tener cuidado: si espera que un desencadenador de eliminacin realice alguna accin automtica de limpieza o registro cuando se eliminen las filas, debe evitar el uso de TRUNCATE TABLE. Si una tabla forma parte de una vista y la vista est indizada, no se puede utilizar TRUNCATE TABLE con esa tabla. Si lo intenta, aparecer el mensaje de error 3729, que indica que no se puede truncar la tabla porque una vista hace referencia a ella. Esto funciona porque LEFT JOIN crea cuatro filas para cada contacto y rellena las columnas de la tabla Sales.SalesOrderHeader con valores nulos para todos los contactos que no tienen informacin en la tabla combinada. 4.2.2. Ejemplo de TRUNCATE TABLE Para eliminar todos los datos de la tabla Person.Contact, ejecute lo siguiente: TRUNCATE TABLE Person.Contact 4.3. CONSULTAS DE ACTUALIZACIN En la mayora de las bases de datos, los datos que se almacenan en tablas no son estticos. En efecto, algunos datos (como la lista de los estados de Estados Unidos) no cambian casi nunca o nunca, pero otros datos (como la informacin de las direcciones de clientes) son ms dinmicos. La instruccin UPDATE le brinda un medio de cambiar algunos o la totalidad de los datos contenidos en una tabla. Se puede escribir una instruccin UPDATE de modo que afecte a un solo campo de una sola fila, o de una manera ms general para que calcule los cambios de una columna en cada fila de la tabla, o incluso que realice cambios en varias columnas en cada fila. Adems de la instruccin UPDATE, existen dos instrucciones especializadas para manejar valores grandes almacenados en columnas text, ntext o image. La instruccin WRITETEXT sustituye un valor en una de esas columnas con otro valor totalmente nuevo, mientras que la instruccin UPDATETEXT puede cambiar parte de una de esas columnas. Las instrucciones WRITETEXT y UPDATETEXT estn en desuso y desaparecern del todo en alguna versin futura del producto, por lo que Microsot no recomienda su uso. En lugar de usar estas instrucciones y columnas text, ntext o binary, debera utilizar una instruccin UPDATE estndar con columnas varchar(max), nvarchar(max) o varbinary(max), No vamos a explicar WRITETEXT ni UPDATETEXT; encontrar informacin en los Libros en pantalla si trabaja con una aplicacin heredada que utilice esas instrucciones. La instruccin UPDATE tiene una sintaxis bastante compleja. stas son las clusulas ms comunes:
91

Veamos ahora algunos detalles sobre las distintas partes que componen la instruccin UPDATE: La palabra clave UPDATE identifica la instruccin. Es necesario especificar un nombre de tabla, un nombre de vista o los resultados de una funcin OPENQUERY u OPENROWSET como el origen de las filas que se van a eliminar. La clusula opcional WITH se puede utilizar para proporcionar una sugerencia de la tabla para el optimizador. La palabra clave SET presenta los cambios que se deben realizar. El valor de una columna se puede especificar como una expresin, su valor pre- determinado o como un valor nulo. Tambin se puede definir una variable local como una expresin. Se puede combinar la definicin de una variable local y una columna como la misma expresin. Se puede usar la clusula. WRITE para modificar alguna parte de una columna varchar(max), nvarchar(max) o varbinary(max) en una posicin y longitud especificadas. Tambin se pueden especificar varias columnas en una sola clusula SET. La clusula FROM tiene la misma sintaxis y opciones que la clusula FROM en una instruccin SELECT. La clusula WHERE tiene la misma sintaxis y opciones que la clusula WHERE en una instruccin SELECT. La clusula OPTION se puede utilizar para proporcionar ms sugerencias. 4.3.1. Ejemplos de UPDATE El uso ms sencillo de UPDATE es hacer un solo cambio que afecta a cada fila de una tabla. Por ejemplo, puede cambiar el precio de cada libro de la tabla Production.Product a 20,00 dlares con la siguiente instruccin: UPDATE Production.Product SET Listprice = 20.00
92

Es ms comn que desee limitar las actualizaciones a unas pocas filas. La instruccin siguiente afecta a todos los productos cuyos nombres comienzan por las letras: UPDATE Production.Product SET Listprice = 20.00 WHERE Name LlKE 's%' Con ms precisin an, esta instruccin actualiza el nico producto con el ProductID especificado: UPDATE production.product SET Listprice = 20.00WHERE productID = 327 Tambin puede actualizar ms de una separando las actualizaciones por comas: UPDATE Production.Product SET Listprice = 20.00, ProductNumber = 'LI-5800a' WHERE ProductID = 418 Fjese en que no se repite la palabra clave UPDATE o SET para actualizar varias columnas. Por supuesto, se pueden hacer cosas ms complicadas que igualar una columna a un simple valor. Se puede igualar una columna a los resultados de una expresin, inclusive un expresin que hace referencia a columnas. Por ejemplo, a continuacin se muestra cmo podra elevar e] precio de cada producto un 10 por ciento: UPDATE Production. Product SET ListPrice = ListPrice * 1.1 Cuando SQL Server ve una palabra que no es una palabra clave (como ListPrice en este ejemplo), SQL Server intenta identificarlo como el nombre de un objeto de SQL Server. Aqu, dado que la instruccin UPDATE acta en la tabla Production.Product, resulta evidente para SQL Server que solamente hay un objeto as: la columna ListPrice de la tabla. Puede utilizar la palabra clave especial DEFAULT para establecer una columna en su valor predeterminado:
93

columna

al

mismo

tiempo

UPDATE Production. Product SET size = DEFAULT Para establecer explcitamente una columna que puede contener valores nulos en NULL, puede utilizar la palabra clave NULL. UPDATE Production.Product SET Size = NULL Tambin puede utilizar la instruccin UPDATE para asignar valores a variables locales. Por ejemplo, el lote siguiente crea una variable local, le asigna un valor e imprime el resultado:

Figura 4.1. Utilizacin de UPDATE con una variable local. Observe que SQL Server ha procesado las 504 f ilas de la tabla en este caso, aunque la instruccin UPDATE no ha cambiado ninguno de los datos almacenados en la tabla. Para que la actualizacin sea ms eficiente, puede aadir una clusula WHERE que seleccione un solo registro:

94

Tal vez piense que podra hacer el proceso an ms eficiente seleccionando cero registros de la tabla, Por ejemplo, podra probar la siguiente instruccin:

Pero, si UPDATE no selecciona ninguna fila, no establecer la variable local (intntelo con el Analizador de consultas y valo por s mismo). Tambin puede actualizar simultneamente una fila en una tabla y poner el resultado en una variable local. Observe el ejemplo siguiente:

Figura 4.2. Actualizacin simultnea de una fila y una variable Como puede ver, tanto @newprice como la fila determinada de la tabla tienen el mismo valor despus de ejecutar la instruccin UPDATE, La instruccin PRINT imprime el contenido de la variable en pantalla. Si descompone la instruccin anterior para aplicar un par de asignaciones en la clusula SET, es posible que obtenga resultados inesperados, La figura 4.3 muestra que el resultado es colocar el valor antiguo en la variable
95

local y el valor nuevo en la columna, Esto demuestra que los cambios en una instruccin UPDATE de varias columnas se procesan en el mismo orden en que aparecen en la clusula SET.

Figura 4.3. Resultados inesperados cuando se intenta actualizar una fila y una variable 4.4. CONSULTAS DE INSERCIN Las consultas de insercin estn diseadas para insertar nuevas filas de datos en una tabla. Estas consultas utilizan la instruccin INSERT de T-SQL. La instruccin INSERT normalmente es ms sencilla que las instrucciones DELETE y UPDATE, que ya se ha visto:
96

Esto se descompone como sigue: Las palabra clave INSERT y la palabra clave opcional INTO introducen la instruccin. INTO se utiliza expresamente para mejorar la legibilidad. El argumento table_name proporciona la tabla de destino. Opcionalmente, puede incluir sugerencias de tabla. Tambin se puede especificar view_name, o bien, los resultados de una funcin OPENQUERY u OPENROWSET como el destino de la insercin. column_list es una lista opcional de columnas separadas por comas que recibirn los datos insertados. Los valores que se van a insertar pueden especificarse mediante las palabras clave DEFAULT o NULL, con expresiones. Como alternativa, se puede utilizar una instruccin SELECT crear as una derived_table, que ser el origen de la insercin. para

O bien, se puede utilizar execute_statement con un procedimiento almacenado o un lote SQL para crear los datos que se van a insertar. La clusula DEFAULT VALUES utiliza el valor predeterminado de la tabla para cada columna de la nueva fila. Una instruccin INSERT puede insertar varias filas de datos si los datos que se van a insertar se proporcionan mediante una tabla derivada o los resultados de execute_statement.
97

4.4.1. Ejemplos de INSERT La situacin ms simple en que se usa INSERT es una tabla que tiene valores predeterminados para cada columna. En la base de datos AdventureWorks no existe una tabla as, por lo que vamos a crear una con la que poder experimentar.

Esta tabla tiene una columna con la propiedad IDENTITY y todas las dems columnas pueden contener valores nulos. De esta manera, podemos insertar una ila en esta tabla especificando la clusula DEFAULT VALUES: INSERT INTO Person.Preferences DEFAULT VALUES Por supuesto, si lo desea, tambin puede proporcionar valores para una serie de columnas al realizar la insercin: INSERT INTO Person.Preferences (Name, Value) VALUES (Connection, Fast) No tiene que especificar las columnas en el mismo orden que aparecen en la tabla, slo se tienen que corresponder entre la lista de columnas y la lista de valores. Por ejemplo, la instruccin siguiente insertara la misma ila que la instruccin anterior: INSERT INTO Person.Preferences (Value, Name) VALUES ( Fast, Connection) Cuando se realiza una insercin en una tabla con una columna IDENTITY, no se puede especificar normalmente el valor para esa columna. Pero, al utilizar primero SET IDENTITY_INSERT, se puede determinar un valor para una columna IDENTITY:

98

Si se desea insertar valores en todas las columnas, se puede omitir la lista de columnas. Pero al hacerlo, la instruccin se vuelve ms confusa, por lo que recomendamos que incluya siempre una lista de columnas predeterminada. Tenga en cuenta que esta opcin no est disponible si la tabla contiene una columna IDENTITY. Tambin puede insertar los resultados de una instruccin SELECT. Por ejemplo, si desea clonar una ubicacin en la base de datos de muestra AdventureWorks:

Fjese en que este cdigo f unciona porque la columna LocationID es una columna IDENTITY. Cuando se inserta la informacin duplicada, SQL Server crea automticamente un nuevo valor para esa columna.

99

En la base de datos ventas, diseada en la actividad anterior, implementar las acciones de insertar (insertar 10 datos como mnimo en cada tabla), eliminar y modificar datos.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008

1. Describir detalladamente el proceso de insertar datos de una Base de Datos MySQL. 2. Describir detalladamente el proceso de eliminar datos de una Base de Datos MySQL. 3. Describir detalladamente el proceso de modificar datos de una Base de Datos MySQL.

100

EJECUCIN DE CONSULTAS

TABLA DE CONTENIDO

5.1. Consultas select bsicas 5.2. Limitacin de los registros con la clusula where 5.3. Utilizacin de combinaciones 5.3.1. Inner join 5.3.2. Combinacin de varias tablas 5.3.3. Outer join 5.4. Conversin de los conjuntos de resultados en informes 5.4.1. Order by

Objetivos

Disear consultas a partir de una Base de Datos MySQL. Ejecutar consultas a partir de una Base de Datos MySQL.

101

Al finalizar el estudio del presente fascculo, el estudiante:

Disear consultas a partir de una Base de Datos MySQL. Ejecutar consultas a partir de una Base de Datos MySQL.

En el presente fascculo se desarrollar detalladamente el proceso de crear consultas en Mysql, para lo cual se analizar las instrucciones: SELECT, WHERE. Adems se utilizar combinaciones de varias tablas utilizando las intrucciones: Inner join, Outer join.

102

EJECUCIN DE CONSULTAS
5.1. CONSULTAS SELECT BSICAS Las consultas SELECT son el principal mtodo para leer los datos que estn almacenados en las tablas. Estas consultas pueden ser muy complicadas o muy simples. La ms simple de las consultas SELECT es la que extrae todos los datos de una tabla y los muestra sin ningn orden en particular. El ejemplo siguiente muestra todos los registros de la tabla Person.Contact de la base de datos AdventureWorks, que es una base de datos de prueba que viene incluida con SQL Server y contiene informacin sobre la produccin y ventas de una compaa hipottica: a) Abra SQL Server Management Studio, que se encuentra en el grupo Microsot SQL Server 2005 de Programas en el men Inicio. b) Conctese empleando la Autenticacin de Windows. c) Haga clic en el botn Nueva consulta de la barra de herramientas estndar para crear una nueva consulta en SQL Server. d) Escriba el cdigo siguiente: USE AdventureWorks SELECT * FROM Person.Contact e) Haga clic en el botn Ejecutar de la barra de herramientas Editor SQL o pulse F5 para ejecutarla.

Figura 5.1. SELECT * FROM Person.Contact es una consulta SELECT Bsica No se recomienda que utilice este tipo de consultas con f recuencia, porque provocan que SQL Server realice un recorrido de tabla. El recorrido de tabla
103

se produce cuando SQL Server debe leer todos los registros de la tabla para devolver un conjunto de resultados, lo que puede crear tensin en el servidor. Los pasos siguientes le muestran cmo limitar el nmero de columnas que se devueltas por una consulta SELECT aadiendo una lista de columnas a la consulta: f) Abra otra ventana de consulta de SQL Server o vuelva a utilizar la que ya tiene abierta. g) Escriba el cdigo siguiente: USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact h) Haga clic el botn Ejecutar de la barra de herramientas o pulse F5 para ejecutarlo.

Figura 5.2. Al limitar las columnas devueltas por SELECT, ser ms fcil leer el conjunto de resultados. 5.2. LIMITACIN DE LOS REGISTROS CON LA CLUSULA WHERE Empleando la clusula WHERE con una consulta SELECT, puede limitar el nmero de registros que se devuelven indicando a SQL Server que slo devuelva los registros que cumplan ciertos criterios.
104

Por ejemplo, suponga que desea ver nicamente los contactos con el apellido White. Al usar la clusula WHERE, puede ordenar a SQL Server que devuelva slo esos registros. Vamos a probar esa clusula aqu: a) Abra otra ventana de consulta de SQL Server o vuelva a utilizar la que ya tiene abierta. b) Escriba el cdigo siguiente: USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact WHERE LastName = 'White' c) Haga clic el botn Ejecutar de la barra de herramientas o pulse F5 para ejecutarlo.

Figura 5.3. Utilizacin de la clusula WHERE para limitar el nmero de registros devueltos por una consulta SELECT d) Abra otra ventana de consulta de SQL Server o vuelva a utilizar la que ya tiene abierta. e) Escriba el cdigo siguiente: USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact WHERE LastName <> 'White'
105

f) Haga clic el botn Ejecutar de la barra de herramientas o pulse F5 para ejecutarlo. Si necesita basar la consulta en ms de una columna (por ejemplo, nombre y apellido), tiene que usar la clusula AND. En el ejemplo siguiente, en primer lugar vamos a verificar que existe ms de un Foster en la base de datos basando la bsqueda en una sola columna (LastName) y despus restringiremos la bsqueda basndola en dos columnas (FirstName y LastName) mediante la clusula AND:

Figura 5.4. El operador <> (no es igual a) con la clusula WHERE se puede utilizar para refinar aun mas una consulta SELECT g) Abra otra ventana de consulta de SQL Server o vuelva a utilizar la que ya tiene abierta. h) Escriba el cdigo siguiente: USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact WHERE LastName = 'Foster' i) Haga clic el botn Ejecutar de la barra de herramientas o pulse F5 para ejecutarlo. j) Fjese en que se obtienen 113 registros en el conjunto de resultados. k) Ahora ejecute el cdigo siguiente para limitar an ms el conjunto de resultados:

106

USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact WHERE LastName = 'Foster' AND FirstName = 'Brandon'

Figura 5.5. Consulta SELECT bajo una condicin WHERE. El operador LIKE trabaja con caracteres comodn que sirven para completar los caracteres que no se recuerdan. El carcter comodn % se puede utilizar para completar cualquier nmero de caracteres y se puede utilizar en cualquier posicin de la clusula. Por ejemplo, si utiliza el comodn % al principio (%st), la consulta obtendr todos los valores que terminen por ST, independientemente del nmero de caracteres que precedan al grupo ST.

Figura 5.6. Uso de la consulta AND para limitar aun ms el conjunto de resultados. Tambin puede colocar los comodines al principio y al f inal (%st%) y devolver los valores que tengan ST en cualquier parte de ellos. Asimismo, contamos con el carcter de subrayado C), que sirve para sustituir un solo carcter del valor.

107

En el ejemplo siguiente, buscaremos de forma especfica cualquier valor que comience por ST para demostrar las capacidades del operador LIKE: l) Abra otra ventana de consulta de SQL Server o vuelva a utilizar la que ya tiene abierta. m) Escriba el cdigo siguiente: USE AdventureWorks SELECT FirstName, LastName, Phone FROM Person.Contact WHERE LastName LIKE ST% n) Haga clic el botn Ejecutar de la barra de herramientas o pulse F5 para ejecutarlo.

Figura 5.7. Utilizacin del operador LIKE cuando no se recuerda la ortografa exacta e una palabra. 5.3. UTILIZACIN DE COMBINACIONES Las bases de datos normalmente se componen de ms de una tabla, y las tablas suelen relacionarse de algn modo. 5.3.1. INNER JOIN La combinacin interna o INNER JOIN (a la que tambin se hace referencia como JOIN) se utiliza como parte de una instruccin SELECT para devolver un solo conjunto de resultados formado a partir de varias tablas. JOIN se utiliza para vincular (o combinar) tablas por una columna en comn y devolver registros que se correspondan en esas columnas.
108

La base de datos AdventureWorks demuestra por qu es necesario usar combinaciones. Ahora imagine que desea ver las horas de vacaciones de cada empleado. En la tabla HumanResources.Employee de la base de datos AdventureWorks aparecen las horas de vacaciones acumuladas de cada empleado (en la columna VacationHours). Pero los nombres de los empleados no se encuentran en esta tabla; para mostrar los nombres de los empleados en lugar de sus crpticos identificadores, debe acceder a la tabla Person.Contact en la que se almacenan los nombres de los empleados. Debido a que la tabla HumanResources.Employee tiene una columna ContactID y la tabla Person.Contact tiene una columna ContactID correspondiente, se pueden combinar las dos tablas por la columna ContactlD. a) Si no est ya abierto, abra SQL Server Management Studio y luego conctese con Autenticacin de Windows. Ejecute la consulta siguiente para devolver datos de las tablas HumanResources.Employee y Person.Contact:

Figura 5.8. Al combinar tablas, puede ser ms fcil leer los conjuntos de resultados 5.3.2. Combinacin de Varias Tablas A continuacin, nos interesa ver adems de los nombres de los empleados, los nombres de los departamentos en los que trabajan, para poder calcular tambin las horas de vacaciones por departamento. La tabla HumanResources.Department contiene informacin sobre los
109

departamentos de la compaa, como el nombre del departamento y el nombre del grupo de departamentos. La tabla HumanResources.Employee, como hemos visto ya, incluye datos sobre los empleados, como el identificador de inicio de sesin. El problema es que las tablas Employee y Department no estn relacionadas directamente, sino que se relacionan a travs de una tabla intermedia llamada HumanResources. Employee.DepartmentHistory, por lo que es necesario aadir dos combinaciones ms. Con todas estas combinaciones, debera ver los nombres de los empleados seguidos de los nombres de los departamentos y la cantidad de horas de vacaciones acumuladas para cada empleado: b) En SQL Server Management Studio, ejecute la consulta siguiente para combinar tres tablas:

110

Figura 5.9. Combinando ms de dos tablas se refinan aun ms las consultas. 5.3.3. OUTER JOIN Existen tres tipos de combinaciones externas o OUTER JOIN, RIGHT OUTER JOIN (normalmente abreviado como RIGHT JOIN) se usa si se necesita ver todos los registros de la tabla situada a la derecha en la clusula JOIN, tengan o no un registro correspondiente en la tabla de la izquierda. Para ver todos los registros de la tabla situada a la izquierda, independientemente de que tengan registros correspondientes en la tabla de la derecha, se aplica LEFT OUTER JOIN (o LEFT JOIN). Si se desean ver todos los registros de las dos tablas, tanto si tienen un registro correspondiente en la otra tabla como si no, se usa FULL OUTER JOIN (u OUTER JOIN). En el ejemplo anterior, para ver una lista de todos los departamentos, tengan o no empleados con horas de vacaciones, debe utilizar RIGHT JOIN, que devuelve todos los registros de la tabla a la derecha en la clusula JOIN. Vamos a demostrarlo ejecutando la misma consulta que la vez anterior, pero ahora mostrando todos los departamentos de la tabla Human Resources. Department, independientemente de que tengan o no empleados:
111

c) Escriba y ejecute esta consulta que sustituye una de las combinaciones internas introducidas en el ltimo ejercicio por RIGHT JOIN, como se muestra a continuacin:

Figura 5.10. Al emplear RIGHT JOIN se muestran todos los registros de la tabla a la derecha en la clusula JOIN d) A primera vista, parece que no ha cambiado nada. Vamos a aadir un registro a la tabla HumanResources.Department sin aadir un registro correspondiente a la dems tablas, ejecutando lo siguiente en una nueva ventana de consulta:

112

USE AdventureWorks INSERT INTO HumanResources.Department (Name, GroupName. ModiiedDate) VALUES ('Loss Prevention','Inventory Management', GETDATE())

Figura 5.11. La sentencia INSERT INTO permite ingresar datos a una tabla. e) Ejecute la consulta del paso c) de nuevo y despus, fjese en el departamento Loss Prevention.

Figura 5.12 Al emplear RIGHT JOIN se muestran todos los registros de la tabla a la derecha en la clusula JOIN En la consulta del paso c), debera obtener 296 filas, igual que en consultas de apartados anteriores, porque todos los departamentos de la tabla HumanResources.Department tienen registros correspondientes en las
113

dems tablas. Por eso hemos agregado el registro Loss Prevention en el paso d); no tiene ningn registro correspondiente en las dems tablas, lo que significa que el departamento Loss Prevention no tiene empleados. Despus de agregar el nuevo registro a la tabla HumanResources.Department y ejecutar la consulta de nuevo, debera ver que aparece Loss Prevention con valores nulos en las columnas VacationHours y LoginID. Esos valores nulos indican que no existen registros correspondientes en la tabla de la zquierda (HumanResources.EmployeeDepartmentHistory), pero de todos modos se han devuelto los registros de la tabla de la derecha (HumanResources.Department). 5.4. CONVERSIN DE LOS CONJUNTOS DE RESULTADOS EN INFORMES 5.4.1. ORDER BY ORDER BY organiza el conjunto de resultados por las columnas que se especiiquen. Si tomamos el ltimo ejemplo de los departamentos, empleados y horas de vacaciones, probablemente habr observado que no haba un verdadero orden en el conjunto de resultados. Con ORDER BY, puede organizar el conjunto de resultados segn el nombre del departamento o el nmero de horas de vacaciones, o incluso por el nombre del empleado. Para demostrar cmo unciona esto, vamos a organizar el conjunto de resultados de las consultas anteriores segn los empleados que tienen ms horas de vacaciones acumuladas, aplicando ORDER BY a la columna VacationHours de la tabla HumanResources.Employee: a) b) Si no est trabajando con SQL Server Management Studio, bralo y conctese mediante la Autenticacin de Windows. Ahora, ejecute la consulta siguiente y jese en que el conjunto de resultados es aleatorio:

114

Figura 5.13 Reunin de las tablas mediante la sentencia INNER JOIN c) Aada la clusula ORDER BY al final y observe los resultados

115

Figura 5.14. La utilizacin de ORDER BY puede imponer un orden en los conjuntos de resultados. Fjese en que el conjunto de la Figura 5.14. esta organizado, con los valores ineriores de la columna VacationHours al principio del conjunto de resultados. d) Como es ms til ver mejor los nmeros ms altos al principio de la lista, emplee la clusula DESC (abreviatura de DESCendente) con ORDER BY para invertir el orden del conjunto de resultados. La clusula DESC se utiliza al inal de la clusula ORDER BY, como aqu se muestra:

116

Figura 5.15. La utilizacin de ORDER BY en combinacin con la sentencia DESC puede ordenar el resultado en los conjuntos. Como hemos mencionado, puede usar la clusula ORDER BY con ms de una columna para facilitar an ms la lectura de los resultados. Por ejemplo, si quiere ver primero las cifras ms altas de horas de vacaciones, organizadas por departamento, puede introducir lo siguiente:

117

Figura 5.16. ORDER BY se puede aplicar a ms de una columna ORDER BY puede ser un poderoso aliado para combatir el desorden, pero puede que no sea suficiente. Muchos informes requieren resmenes, adems de orden. Empleando HAVING y GROUP BY puede proporcionar esos resmenes.
118

Disear 3 consultas diferentes, utilizando la base de datos ventas diseada en la actividad del fascculo 3.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008

119

1. Por qu son importantes las consultas? 2. Explique para qu sirve la instruccin INNER JOIN 3. Explique para qu sirve la instruccin OUTER JOIN 4. D un ejemplo de la instruccin INNER JOIN 5. D un ejemplo de la instruccin OUTER JOIN

120

CREACIN DE VISTAS

TABLA DE CONTENIDO

6.1. Utilizacin de vistas de particiones de tablas 6.2. Creacin de una vista con el diseador de vistas 6.3. Modificacin de una vista con el diseador de vistas 6.4. Organizacin del conjunto de resultados 6.5. Utilizacin de vistas para combinar tablas 6.6. Combinacin de dos tablas en una vista 6.7. Combinacin de varias tablas en una vista

Objetivos

Disear vistas a partir de una Base de Datos MySQL. Ejecutar vistas a partir de una Base de Datos MySQL.

121

Al finalizar el estudio del presente fascculo, el estudiante: Disear vistas a partir de una Base de Datos MySQL. Ejecutar vistas a partir de una Base de Datos MySQL.

En el presente fascculo se desarrollar detalladamente el proceso de crear vistas en Mysql, para lo cual se explicar cmo se utiliza el diseador de vistas. Adems se utilizar las vistas para combinar tablas.

122

CREACIN DE VISTAS
Describir las vistas es un reto interesante. Microsoft describe la vista como una tabla virtual o como una consulta SELECT almacenada, pero podra imaginrsela como un televisor. Cuando ve la televisin, normalmente ve gente haciendo diversas actividades. Pero, estn esas personas en realidad dentro del televisor? Puede que lo pensara cuando era pequeo, pero ahora ya sabe que esa gente se encuentra a millones de kilmetros en un estudio. Est viendo a personas que en realidad no estn ah; ve una representacin de ellas. Las vistas funcionan de manera muy parecida. Las vistas se emplean para representar los datos que estn almacenados en una tabla, al igual que el televisor representa a las personas que estn en un estudio. Una vista tiene ms ventajas aparte de mirar los datos almacenados en una tabla; de hecho, estudiaremos tres maneras distintas de usar las vistas. Algunas de las tablas pueden alcanzar un tamao considerable, posiblemente con miles de registros. Dado que es probable que no necesite verlos todos al mismo tiempo, la vista es perfecta para devolver un pequeo subconjunto de los datos de la tabla. Muchas veces descubrir que los usuarios desean ver datos de varias tablas. Un mtodo para conseguir a los usuarios los datos que necesitan es crear una vista que muestre los datos de varias tablas. Despus, los usuarios querrn consultar una vista, como si fuera una tabla. Para f inalizar, vamos a explicar lo que hace falta para modificar los datos mediante una vista; Sin embargo, no podemos entrar en los temas ms avanzados, sin que antes aprenda a crear la ms sencilla de las vistas. 6.1. UTILIZACIN DE VISTAS DE PARTICIONES DE TABLAS En la vida real, muchas empresas tienen tablas sumamente grandes que contienen cientos de miles, si no millones, de registros. Cuando los usuarios consultan tablas de tal tamao, normalmente no desean ver todos esos registros, sino solamente una pequea parte, o subconjunto, de los datos disponibles. Existen dos maneras de devolver un subconjunto de datos: se puede emplear una consulta SELECT especificando la clusula WHERE, o se puede usar una vista. El mtodo de la consulta SELECT sirve para las consultas que se ejecutan con poca frecuencia (denominadas consultas ad hoc), pero este mtodo puede ser complicado para los usuarios que no entienden el cdigo Transact-SQL. Por ejemplo, si desea consultar la base de datos AdventureWorks para ver slo los campos de nombre, apellido y telfono de los contactos con el prefijo 398, puede ejecutar la consulta siguiente:

123

USE AdventureWorks SELECT lastname, irstname, phone FROM person.contact WHERE phone LIKE '398%'

Figura 6.1. Resultado de la consulta del prefijo 398 Esta consulta devuelve un pequeo subconjunto de los datos, pero cuntos de los usuarios finales conocen el cdigo necesario para obtener esta informacin? Seguramente muy pocos. Por ello, puede escribir una consulta en el cdigo de cliente, que es lo que los usuarios ven (normalmente en C# o en un, lenguaje similar); pero entonces la consulta se enviar por la red hasta el servidor cada vez que se acceda a ella, consumiendo el ancho de banda de la red. Si los usuarios ejecutan esta consulta con frecuencia, debera crear una vista basada en la consulta. Una vez creada esa vista, los usuarios podrn consultarla igual que haran con una tabla. La nica, diferencia entre la vista y la tabla es que la vista no contiene ningn dato, simplemente los muestra (igual que el televisor no contiene personas, sino que muestra imgenes de las personas en el estudio). Para empezar a entender el valor de las vistas, vamos a crear una vista sencilla mediante el Diseador de vistas. 6.2. CREACIN DE UNA VISTA CON EL DISEADOR DE VISTAS Diseador de vistas es un trmino nuevo para un concepto antiguo: el asistente. Mientras que la mayora de los asistentes abarcan varias pantallas, los diseadores ocupan solamente una, por lo que pueden ser mucho ms rpidos. En la siguiente serie de pasos, vamos a utilizar el
124

Diseador de vistas para generar una vista que muestra slo los registros de la base de datos que tienen 398 como los tres primeros caracteres del nmero de telfono: a) Abra SQL Server Management Studio seleccionndolo en el grupo Microsot SQL Server 2005 de Programas en el men Inicio y conctese con la Autenticacin de Windows si se le solicita.

b) Ahora en el Explorador de objetos, expanda su servidor y Bases de datos > AdventureWorks; despus, haga clic con el botn derecho en Vistas y seleccione Nueva vista. c) En el cuadro de dilogo Agregar tabla, seleccione Contact (Person) y haga clic en Agregar.

d) Al hacer clic en Cerrar, aparecer el Diseador de vistas. e) En el cuadro de texto editor de sintaxis de Transact-SQL, debajo de la cuadrcula de columnas, escriba lo siguiente (Figura 6.1.): SELECT LastName, FirstName, Phone FROM Person. Contact WHERE (Phone LIKE '398%')

Figura 6.2. Creacin de la vista que muestra los contactos con el prefijo 398 en el Diseador de vistas. ) Abra la ventana Propiedades haciendo clic en Ver>Ventana propiedades. En el cuadro de lista desplegable Esquema, dentro de la ventana Propiedades, seleccione Person. A continuacin, elija Archivo>Guardar vista Person.Vista_1. g) En el cuadro de dilogo Elegir nombre, especifique Contacts_in_398 y haga clic en Aceptar.
125

A continuacin, observar una nueva vista llamada Person.Contacts_in_398 debajo de Vistas en la base de datos AdventureWorks (tambin ver muchas otras vistas, que se crearon en Microsot y que vamos a explicar ms adelante). Puede probar la vista para ver lo que hace consultndola igual que hara con una tabla mediante la instruccin SELECT: h) Seleccione Archivo>Nuevo>Nueva consulta con conexin actual. Conctese con la autenticacin de Windows si se le solicita. i) Para poder comprobar la vista, escriba y ejecute el cdigo siguiente (Figura 6.2): USE AdventureWorks SELECT * FROM Person.Contacts_in_398

Figura 6.3. Consulta de la vista Person.Contacts_in_398 en Management Studio. j) Para verificar que son exactamente los datos que habra devuelto la consulta SELECT, escriba y ejecute la consulta SELECT en la que se basa la vista, como vemos en la Figura 6.4:
126

USE AdventureWorks SELECT lastname, irstname, phone rom Person.Contact WHERE phone LIKE '398%'

Figura 6.4. Ejecucin de la consulta en la que se basa la vista Person.Contacts_in_398 en Management Studio. k) Para verificar que son exactamente los datos que habra devuelto la consulta SELECT, escriba y ejecute la consulta SELECT en la que se basa la vista, como vemos en la Figura 6.3: USE AdventureWorks SELECT lastname, firstname, phone from Person.Contact WHERE phone LIKE '398%' Puede observar que vista y la consulta SELECT han devuelto exactamente los mismos resultados, pero cul ha sido ms fcil de consultar? La vista ha sido mucho ms fcil de consultar porque requiere menos cdigo. Sin embargo, los requisitos de la vista pueden cambiar con el tiempo, por lo que es posible que deba modificarla para reflejar esas necesidades. En el siguiente apartado explicaremos el proceso para modificar una vista existente.

127

6.3. MODIFICACIN DE UNA VISTA CON EL DISEADOR DE VISTAS Conforme pase el tiempo, puede que las necesidades de la vista varen o que, accidentalmente, no haya creado la vista correctamente en el diseador. Sea como sea, es posible que necesite modificar una vista existente para que muestre la informacin necesaria. Por ejemplo, suponga ahora que adems del nombre, apellido y nmero de telfono de los contactos necesita ver el tratamiento, que se almacena en el campo Title de la tabla Person.Contact. Debe modificar la vista Person.Contacts_in_398 para tener en cuenta este nuevo requisito abriendo el Diseador de vistas, que se trata del mtodo grfico para modificar vistas existentes, al que se accede a travs de SQL Server Management Studio. Veamos cmo realizar el cambio: a) Abra SQL Server Management Studio (si no est ya abierto) y expanda su servidor y Bases de datos>AdventureWorks>Vistas.

b) Haga clic con el botn derecho en la vista Person.Contacts_in_398 y seleccione Modificar para entrar en el Diseador de vistas. c) Para aadir el campo del tratamiento a la vista, modifique la consulta SELECT de modo que quede como sigue (Figura 6.5): SELECT title, lastname, firstname, phone from Person.Contact WHERE phone LIKE '398%'

<Figura 6.5. Modificacin de la vista Person.Contacts_in_398 en el Diseador de vistas para aadir la columna Title.

128

d) Haga clic en el botn Guardar de la barra de herramientas. e) Cierre el Diseador de vistas haciendo clic en la X de la esquina superior derecha de la ventana. ) Seleccione Archivo>Nuevo>Nueva consulta con conexin Conctese con la autenticacin de Windows si se le solicita. actual.

g) A continuacin, escriba y despus ejecute el cdigo siguiente para probar as la vista: USE AdventureWorks SELECT * FROM Person.Contacts_in_398 h) Fjese en que ahora se ve el campo del tratamiento adems del nombre, el apellido y el telfono, como se observa en la Figura 6.5. En este punto, deje abierta la ventana Nueva consulta. Ahora tiene una vista que muestra toda la informacin que necesita, pero es difcil de leer. Vamos a explicar cmo utilizar alias para que los usuarios puedan entender mejor los datos.

Figura 6.5. Consulta de la vista Person.Contacts_in_398 en Management Studio.

129

6.4. ORGANIZACIN DEL CONJUNTO DE RESULTADOS Posiblemente se habr percatado de que los conjuntos de resultados obtenidos por ahora no tenan ninguna organizacin: los registros se mostraban aleatoriamente. Esto se debe a que SQL Server almacena los registros en la tabla por el principio de "primero en llegar, primero en ser atendido" (a menos que tenga un ndice agrupado). Por ello, resulta dicil leer el conjunto de resultados, por lo que necesita organizar el conjunto de resultados aadiendo una clusula ORDER BY a uno de los campos de la vista. Esta clusula ordenar los resultados de la vista por el orden del campo que se haya elegido. En los pasos siguientes, vamos a imponer un poco de organizacin a la tabla Person.Contacts_in_398 aadiendo una clusula ORDER BY al campo lastname: a) Vuelva al Diseador de vistas en SQL Server Management Studio, que debera seguir abierto desde el ejercicio anterior. b) En el panel SQL, modifique el cdigo para que presente el aspecto que puede ver en la Figura 6.6 (fjese en la clusula TOP):

Figura 6.6. Modificacin de la vista Person.Contacts_in_398 para incluir una clusula ORDER BY.

130

c) d)

Haga cIic en el botn Guardar y cierre el Diseador de vistas. Para probar los cambios, pase a la ventana de Nueva consulta y escriba y ejecute: USE AdventureWorks SELECT * from Person.Contacts_in_398

e)

A continuacin los resultados aparecen ordenados, tal y como se muestra en la Figura 6.7.

Figura 6.7. Consulta de la vista Person.Contacts_in_398 en Management Studio. f) Para mostrar los resultados ordenados a travs del campo Last Name, utilice el siguiente cdigo: USE AdventureWorks SELECT * FROM Person.Contacts_in_398 ORDER BY [Last Name]

Figura 6.8. Seleccin de informacin ordenada por el campo Last Name


131

Puede ver que, gracias a las vistas, a los usuarios les resulta mucho ms sencillo obtener un pequeo subconjunto de datos. En lugar de escribir consultas SELECT en el cdigo de cliente en los equipos de los usuarios, puede crear una vista que se pueda consultar con mucha ms facilidad y menos cdigo. Pero las vistas sirven para mucho ms. Tambin pueden resultar prcticas a la hora de obtener conjuntos de resultados basados en varias tablas, como vamos a ver a continuacin. 6.5. UTILIZACIN DE VISTAS PARA COMBINAR TABLAS Ya sabe que todos los datos no se encuentran almacenados en una sola tabla, porque eso provocara que las tablas fueran innecesariamente grandes y difciles de manejar. Para obtener todos los datos que necesita en un conjunto de resultados, puede que tenga que consultar ms de una tabla al mismo tiempo empleando una consulta SELECT con una clusula JOIN. Por ejemplo, podra usar la consulta siguiente para ver la informacin demogrfica de todos los contactos con el prefijo 398, ordenados por apellido:

Esta consulta combina las tablas Person.Contact y Sales.Individual por una columna comn (ContactID) para mostrar de esta forma la informacin demogrfica de cada contacto. Aunque es una consulta correcta, no es posible almacenarla en el cdigo de cliente en los equipos de los usuarios, ni siquiera que los usuarios la ejecuten manualmente a travs de SQLCMD, debido al excesivo ancho de banda de red que consumira (sobre todo si esta consulta gana popularidad). Sera mucho mejor convertirla en una vista que combine las dos tablas.

132

Figura 6.9. Seleccin de los telfonos de prefijo 398 ordenados por LastName 6.6. COMBINACIN DE DOS TABLAS EN UNA VISTA Si tiene que acceder a la cantidad de un producto vendido con cierta regularidad, una consulta ad hoc no es lo ms conveniente, porque generar gran exceso de trfico de red, que se podra evitar de otra manera. Al crear una vista, puede ahorrar ese ancho de banda y facilitar a los usuarios la obtencin de los datos. En los pasos a continuacin, vamos a modificar la vista Person.Contacts_in_398 para mostrar la informacin demogrfica de todos los contactos con el prefijo 398 combinando las tablas Person.Contact y Sales.Individual por la columna ContactID que tienen en comn: a) Abra SQL Server Management Studio Autenticacin de Windows si se le solicita. y conctese ahora utilizando su la

b) Dentro del Explorador de objetos, expanda y Bases de datos>AdventureWorks> Vistas. c) d)

servidor

Haga clic con el botn derecho en la vista Person.Contacts_in_398 y seleccione Modificar para abrir el Diseador de vistas. Modifique el cdigo del panel SQL para que quede como se muestra a continuacin (Figura 6.10.):
133

Figura 6.10. Modificacin de la vista Person.Contacts_in_398 para que contenga informacin de dos tablas combinadas. e) Haga clic en el botn Guardar de la barra de herramientas. f) Para comprobar la vista, abra una nueva consulta de SQL Server y luego, escriba y ejecute el cdigo siguiente (Figura 6.11.): USE AdventureWorks SELECT * from Person.Contacts_in_398

134

Figura 6.11. Consulta de la vista Person.Contacts_in_398 en Management Studio. Cuando comparamos la instruccin SELECT del paso d) con la instruccin SELECT del paso f), vemos la diferencia, para mejor, que hay al usar una vista en lugar de una consulta ad hoc. Si escribiramos la instruccin SELECT del paso d) en el cdigo de cliente (lo que significa que estara almacenada en los equipos de los usuarios), habra que enviar todas las lneas de esa consulta por la red hasta el servidor cada vez que se ejecutara la consulta. Como hemos convertido esa consulta en una vista, el nico cdigo que recorre la red desde los clientes hasta el servidor son las dos lneas de cdigo que encontramos en el paso ). Al emplear vistas, se facilita a los usuarios la obtencin de los datos y se ahorra trfico de red. Suponga que necesita ver la tarjeta de crdito que han usado esos contactos para las compras. Deber hacer algn cambio en la vista, aadiendo una tabla ms. 6.7. COMBINACIN DE VARIAS TABLAS EN UNA VISTA Los datos que se necesitan obtener de una base de datos relacional, Como AdventureWorks, normalmente no se guardan en una sola tabla. De hecho, con bastante frecuencia necesitar obtener datos de dos, tres o incluso ms tablas al mismo tiempo para que el conjunto de resultados tenga sentido. En el apartado anterior, hemos aadido informacin demogrfica a la vista Person.Contacts_in_398. Ahora necesitamos ver la tarjeta de crdito que ha usado cada uno de esos contactos. Para mostrar esta inormacin, debe agregar dos tablas ms a la vista: Sales.ContactCreditCard y Sales.CreditCard.
135

Tiene que aadir estas dos tablas debido a la manera en que se relacionan entre s. Sales.CreditCard contiene informacin sobre todas las tarjetas de crdito utilizadas en el sistema, incluido el nombre de la tarjeta de crdito. La tabla Sales.ContactCreditCard contiene tres columnas: ContactID, CreditCardID y ModifiedDate. Por tanto, para obtener el nombre de la tarjeta de crdito empleada por un contacto, debe combinar la tabla Person.Contact con la tabla Sales.ContactCreditCard por la columna ContactID y, despus combinar la tabla Sales.ContactCreditCard con la tabla Sales.CreditCard por la columna CreditCardID:

Una vez aclarados los detalles tcnicos, puede modificar la vista Person.Contacts_in_398 para mostrar los datos de las tarjetas de crdito: a) Abra SQL Server Management Studio y conctese utilizando Autenticacin de Windows si se le solicita. la

b) Situado en el Explorador de objetos, expanda su servidor y Bases de datos>AdventureWorks> Vistas. c) d) Haga clic con el botn derecho en la vista Person.Contacts_in_398 y seleccione Modificar para abrir el Diseador de vistas. Modifique el cdigo del panel SQL para que quede como se muestra a continuacin (Figura 6.12.):

136

Figura 6.12. Modificacin de la vista Person.Contacts_in_398 para que muestre informacin de varias tablas combinadas. e) Haga clic en el botn Guardar de la barra de herramientas. f) Para comprobar la vista, abra una nueva consulta de SQL Server y escriba y ejecute el cdigo siguiente (Figura 6.13.): USE AdventureWorks SELECT * from Person.Contacts_in_398 ORDER BY [Last Name]
137

Figura 6.13. Consulta de la vista Person.Contacts_in_398 en Management Studio. Puede ver el poder y flexibilidad que le puede proporcionar una vista, pero an hay ms. Las vistas tambin se pueden emplear para mantener la seguridad de los datos.

138

Disear 3 vistas diferentes, utilizando la base de datos ventas diseada en la actividad del fascculo 3.

01 02

Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007.

03 Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006 Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008

139

1. Cul es la diferencia entre consulta y vista? 2. Por qu son importantes las vistas? 3. Describa detalladamente el proceso de disear una vista con el diseador de vistas 4. Disear una vista a partir de la combinacin de varias tablas.

140

BIBLIOGRAFA
01 02 03 Gilfillan, Ian. MySQL.. Editorial Sybex. Espaa. 2007. Sanchez, Jorge. MySQL Guia de Entrenamiento. Espaa. Universidad de Madrid: Mxico 2007. Valladares, Alfonso. Manual de referencia de MySQL 5.0. Universidad de Compostela. Espaa. 2006

Referencias Electrnicas en Lnea: 04 Tutorial Bsico de MySQL I [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 15 de Agosto del 2008 Tutorial Bsico de MySQL II [Monografa en lnea]. Espaa. http://www.mysql- hispano.org. Consulta 25 de Agosto del 2008 Tutorial de SQL [Monografa en lnea]. Argentina. http://usuarios.tripod.es/smaug. Consulta 01 de Septiembre del 2008. Tutorial Bsico MySQL [Monografa en lnea]. Argentina. http://www.mysql-hispano.org. Consulta 17 de Septiembre del 2008. MySQL 5.0 Reference Manual [Monografa http://dev.mysql.com. Consulta 01 de Octubre del 2008 en lnea].

05

06

07

08

09

Manual de MySQL [Monografa en lnea]. http://www.webestilo.com. Consulta 01 de Octubre del 2008

141

You might also like