INTRODUCCIÓN MySQL ha crecido. Lo que durante un tiempo se consideró como un sencillo juguete para su uso en sitios Web, se ha convertido en la actualidad en una solución viable y de misión critica para la administración de datos. Antes, MySQL se consideraba como la opción ideal para sitios Web; sin embargo, ahora incorpora muchas de las funciones necesarias para otros entornos y conserva su gran velocidad. MySQL supera desde hace tiempo a muchas soluciones comerciales en velocidad y dispone de un sistema de permisos elegante y potente, y ahora, además, la versión 4 incluye el motor de almacenamiento InnoDB compatible con ACID. MySQL 4 es rápido, dispone de funciones de volcado online e incorpora una gran cantidad de funciones nuevas. Son pocas las razones para desechar MySQL como solución de base de datos. MySQL AB, la compañía responsable del desarrollo de MySQL, dispone de un sistema de asistencia eficiente y a un precio razonable, y, como ocurre con la mayor parte de las comunidades de código abierto, encontrara una gran cantidad de ayuda en la Web. Las funciones estándar no incluidas todavía en MySQL (corno las vistas y 10s procedimientos almacenados) están en fase de desarrollo y es posible que estén disponibles para cuando lea estas líneas. Son muchas las razones para escoger MySQL como solución de misión critica para la administración de datos. Coste: El coste de MySQL es gratuito para la mayor parte de 10s usos y su servicio de asistencia resulta económico. Asistencia: MySQL AB ofrece contratos de asistencia a precios razonables y existe una nutrida y activa comunidad MySQL. Velocidad: MySQL es mucho más rápido que la mayor parte de sus rivales. Funcionalidad: MySQL dispone de muchas de las funciones que exigen 10s desarrolladores profesionales, como compatibilidad completa con ACID, compatibilidad para la mayor parte de SQL ANSI, volcados online, duplication, funciones SSL e integración con la mayor parte de 10s entornos de programación. Así mismo, se desarrolla y actualiza de forma mucho más rápida que muchos de sus rivales, por lo que prácticamente todas las funciones estándar de MySQL todavía no están en fase de desarrollo. Portabilidad: MySQL se ejecuta en la inmensa mayoría de sistemas operativos y, la mayor parte de 10s casos, 10s datos se pueden transferir de un sistema a otro sin dificultad. Facilidad de uso: MySQL resulta fácil de utilizar y de administrar. Gran parte de las viejas bases de datos presentan problemas por utilizar sistemas obsoletos, lo que complica innecesariamente las tareas de administración. Las herramientas de MySQL son potentes y flexibles, sin sacrificar su capacidad de uso. 1. DEFINICIONES Definición 1 MySQL es un sistema gestor de bases de datos (SGBD, DBMS por sus siglas en inglés) muy conocido y ampliamente usado por su simplicidad y notable rendimiento. Aunque carece de algunas características avanzadas disponibles en otros SGBD del mercado, es una opción atractiva tanto para aplicaciones comerciales, como de entretenimiento precisamente por su facilidad de uso y tiempo reducido de puesta en marcha. Esto y su libre distribución en Internet bajo licencia GPL le otorgan como beneficios adicionales (no menos importantes) contar con un alto grado de estabilidad y un rápido desarrollo.
Definición 2 El sistema de base de datos operacional MySQL es hoy en día uno de los más importantes en lo que se refiere al diseño y programación de base de datos de tipo relacional. Cuenta con millones de aplicaciones y aparece en el mundo informático como una de las más utilizadas por usuarios del medio. El programa MySQL se usa como servidor a través del cual pueden conectarse múltiples usuarios y utilizarlo al mismo tiempo. La historia del MySQL (cuya sigla en inglés se traslada a My Structured Query Language o Lenguaje de Consulta Estructurado) se remite a principios de la década de 1980. Programadores de IBM lo desarrollaron para contar con un código de programación que permitiera generar múltiples y extendidas bases de datos para empresas y organizaciones de diferente tipo. Desde esta época numerosas versiones han surgido y muchas de ellas fueron de gran importancia. Hoy en día MySQL es desarrollado por la empresa Sun Mycrosystems. Una de las características más interesantes de MySQL es que permite recurrir a bases de datos multiusuario a través de la web y en diferentes lenguajes de programación que se adaptan a diferentes necesidades y requerimientos. Por otro lado, MySQL es conocida por desarrollar alta velocidad en la búsqueda de datos e información, a diferencia de sistemas anteriores. Las plataformas que utiliza son de variado tipo y entre ellas podemos mencionar LAMP, MAMP, SAMP, BAMP y WAMP (aplicables a Mac, Windows, Linux, BSD, Open Solaris, Perl y Phyton entre otras). Se están estudiando y desarrollando nuevas versiones de MySQL que buscan presentar mejoras y avances para permitir un mejor desempeño en toda aquella actividad que requiera el uso de bases de datos relacionales. Entre estas mejoras podemos mencionar un nuevo dispositivo de depósito y almacenamiento, backup para todos los tipos de almacenamientos, replicación segura, planificación de eventos y otras más. ... vía Definición ABC http://www.definicionabc.com/tecnologia/mysql.php 2. Rol del Administrador de Base de Datos en el MySQL Toda organización que maneja grandes volúmenes de datos requiere un sistema de gestión de base de datos (DBMS). La persona o grupo de personas encargadas de administrar, supervisar y asegurar el adecuado uso de los datos dentro de un DBMS (Database Management System) son los DBA (Administrador de Base de Datos). Estos sistemas permiten manejar grandes montañas de datos de una manera eficiente, permitiendo así disponer de una mejor herramienta para la toma de decisiones de negocios. Por lo tanto, la necesidad de los administradores de bases de datos (DBA) es hoy mayor que nunca. Funciones que realiza un DBA Gestión General de Base de Datos El DBA es la persona con más conocimientos sobre base de datos en una organización. Como tal, debe entender las reglas básicas de la tecnología de base de datos relacional y ser capaz de comunicarlos con precisión a los demás. Modelado de Datos y Diseño de Base de Datos Un DBA debe ser un profesional experto en la recopilación y análisis de las necesidades del usuario para obtener modelos de datos conceptuales y lógicos. Esta tarea es más difícil de lo
que parece. Un modelo conceptual de datos describe los requisitos de datos a un nivel muy alto, un modelo de datos lógico proporciona en profundidad los detalles de los tipos de datos, longitudes, relaciones y cardinalidad. El DBA utiliza técnicas de normalización para ofrecer modelos de datos que reflejen las necesidades de los datos de la empresa. Auditoria Una de las tareas de un DBA es identificar qué usuarios tienen acceso a insertar, actualizar o eliminar datos, y cuándo. Una auditoría NO sólo podría ser necesaria por un tiempo limitado, para usuarios específicos o datos específicos. También puede ser requerida 24/7 para todos los datos que se introduzcan en el DBMS. Regularmente, para realizar las funciones de autorías los DBAs tienen que trabajar en combinación con los auditores internos y externos de la empresa. Integración con aplicaciones La mayoría de las empresas hoy en día utilizan aplicaciones de terceros (casi nadie ya desarrolla sus propias aplicaciones in-house), muy pocas de estas aplicaciones funcionan de manera aislada. En otras palabras, las aplicaciones tienen que interconectarse unas con otras, generalmente utilizando base de datos como el medio para compartir los datos. Los DBAs a menudo se involucran en los procesos de integrar las aplicaciones existentes con las bases datos que administran. Esto puede incluir la creación de aplicaciones a medida, scripts, etc. Resguardo y recuperación de datos Uno de los aspectos más fundamentales del trabajo del DBA es proteger los datos de la organización. Esto incluye hacer copias de seguridad periódicas de los datos y mantenerlos a salvo de la destrucción accidental o intencional. Además, diseñar, implementar y probar un plan de recuperación para que cuando se presenten los problemas, los datos se pueden restaurar rápidamente. Inteligencia de negocios y almacenamiento de datos Una de las áreas de mayor crecimiento para el DBA es la Inteligencia de Negocios (BI) y almacenamiento de datos. Esto se debe a que cada vez más organizaciones están tratando de extraer toda la información que pueda con el fin de tomar mejores decisiones de negocios. Planificación de capacidad En la mayoría de las organizaciones, el número y tamaño de las bases de datos crece rápidamente. Es la responsabilidad del DBA gestionar el creciente volumen de datos y diseñar los planes apropiados para administrarlos. Esto incluye también la gestión del hardware donde se almacenan los datos. Administración de cambios La configuración del servidor SQL Server o MySQL, el esquema de base de datos, el código de Transact-SQL, y muchas otras facetas del ecosistema de aplicaciones cambian con el tiempo. A menudo es la responsabilidad del DBA realizar el análisis de impacto antes de realizar los cambios dentro de una DBMS. Implementar cambios, hacer pruebas piloto y documentar todos los cambios y procedimientos es parte del trabajo de un DBA. Desarrollo de aplicaciones
Muchos administradores de base datos deben de desarrollar aplicaciones y scripts con el objetivo de automatizar tareas relacionadas con la inserción, sustracción o borrado de información dentro del manejador de base de datos. En general, éste debe de colaborar a nivel de integración de sistema con los desarrolladores de aplicaciones, por lo que a veces se ve en la obligación de desarrollar código para casos específicos. 3. Consultas simples y complejas SENTENCIAS SQL CONSULTAS SIMPLES La sentencia SELECT Empezaremos por la sentencia SELECT, que permite recuperar datos de una o varias tablas. La sentencia SELECT es con mucho la más compleja y potente de las sentencias SQL. El resultado de la consulta es una tabla lógica, porque no se guarda en el disco, sino que está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular. Cuando ejecutamos la consulta se visualiza el resultado en forma de tabla con columnas y filas, pues en la SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas queremos seleccionar de la tabla origen. Con la cláusula FROM indicamos en qué tabla tiene que buscar la información. En este capítulo de consultas simples el resultado se obtiene de una única tabla. La sintaxis de la cláusula es: FROM especificación de tabla Una especificación de tabla puede ser el nombre de una consulta guardada (las que aparecen en la ventana de base de datos), o el nombre de una tabla. Aliastabla es un nombre de alias, es como un segundo nombre que asignamos a la tabla, si en una consulta definimos un alias para la tabla, esta se deberá nombrar utilizando ese nombre y no su nombre real, además ese nombre sólo es válido en la consulta donde se define. El alias se suele emplear en consultas basadas en más de una tabla que veremos en el tema siguiente. La palabra AS que se puede poner delante del nombre de alias es opcional y es el valor por defecto por lo que no tienen ningún efecto. Ejemplo: SELECT ......FROM oficinas ofi; equivalente a SELECT ......FROM oficinas AS ofi esta sentencia me indica que se van a buscar los datos en la tabla oficinas que queda renombrada en esta consulta con ofi. En una SELECT podemos utilizar tablas que no están definidas en la base de datos (siempre que tengamos los permisos adecuados claro), si la tabla no está en la base de datos activa, debemos indicar en qué base de datos se encuentra con la cláusula IN. En la cláusula IN el nombre de la base de datos debe incluir el camino completo, la extensión (.mdb), y estar entre comillas simples. Supongamos que la tabla empleados estuviese en otra base de datos llamada otra en la carpeta c:\mis documentos\, habría que indicarlo así: SELECT * FROM empleados IN 'c:\mis documentos\otra.mdb'
Generalmente tenemos las tablas en la misma base de datos y no hay que utilizar la cláusula IN. Selección de columnas La lista de columnas que queremos que aparezcan en el resultado es lo que llamamos lista de selección y se especifica delante de la cláusula FROM. Utilización del * Se utiliza el asterisco * en la lista de selección para indicar 'todas las columnas de la tabla'. Tiene dos ventajas: Evitar nombrar las columnas una a una (es más corto). Si añadimos una columna nueva en la tabla, esta nueva columna saldrá sin tener que modificar la consulta. Se puede combinar el * con el nombre de una tabla (ej. oficinas.*), pero esto se utiliza más cuando el origen de la consulta son dos tablas. SELECT * FROM oficinas o bien SELECT oficinas.* FROM oficinas Lista todos los datos de las oficinas columnas de la tabla origen Las columnas se pueden especificar mediante su nombre simple (nbcol) o su nombre cualificado (nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene la columna y separados por un punto). El nombre cualificado se puede emplear siempre que queramos y es obligatorio en algunos casos que veremos más adelante. Cuando el nombre de la columna o de la tabla contiene espacios en blanco, hay que poner el nombre entre corchetes [ ] y además el número de espacios en blanco debe coincidir. Por ejemplo [código de cliente] no es lo mismo que [ código de cliente] (el segundo lleva un espacio en blanco delante de código) Ejemplos: SELECT nombre, oficina, contrato FROM ofiventas Lista el nombre, oficina, y fecha de contrato de todos los empleados. SELECT idfab, idproducto, descripcion, precio FROM productos Lista una tarifa de productos
Alias de columna. Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un alias de columna mediante la cláusula AS será el nombre que aparecerá como título de la columna. Ejemplo: SELECT idfab AS fabricante, idproducto, descripción FROM productos Como título de la primera columna aparecerá fabricante en vez de idfab Columnas calculadas. Además de las columnas que provienen directamente de la tabla origen, una consulta SQL puede incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos almacenados. Para solicitar una columna calculada, se especifica en la lista de selección una expresión en vez de un nombre de columna. La expresión puede contener sumas, restas, multiplicaciones y divisiones, concatenación & , paréntesis y también funciones predefinidas). Ejemplos: Lista la ciudad, región y el superavit de cada oficina. SELECT ciudad, región, (ventas-objetivo) AS superavit FROM oficinas De cada producto obtiene su fabricante, idproducto, su descripción y el valor del inventario SELECT idfab, idproducto, descripcion, (existencias * precio) AS valoracion FROM productos Lista el nombre, mes y año del contrato de cada vendedor. SELECT nombre, MONTH(contrato), YEAR(contrato) FROM repventas La función MONTH() devuelve el mes de una fecha La función YEAR() devuelve el año de una fecha Consultas complejas Los ejemplos que hemos visto hasta ahora, nos han mostrado la sintaxis básica de las operaciones que se pueden utilizar para obtener resultados con datos de múltiples relaciones. En la vida real nos encontraremos con casos muchos más complicados en los que tendremos que combinar todas estas operaciones junto con el resto de operadores y cláusulas SQL disponibles.
En casos complicados es importante pensar antes de empezar a escribir nuestra consulta SQL. A continuación, vamos a ver un ejemplo un poco más complicado para ver cómo podemos desglosar y resolver la consulta que necesitamos para obtener el resultado deseado. Utilizaremos unas tablas creadas únicamente para este ejemplo y no representativas de un sistema real. Tenemos una tabla principal llamada 'PC', con diferentes columnas conteniendo cadenas de identificación de los diferentes componentes usados para el ensamblado de diferentes modelos de PCs. Las columnas vacías de la tabla 'PC' significan componentes no presentes en dichos modelos. El resto de tablas contienen información adicional sobre los diferentes componentes usados para construir un PC. postgres=# SELECT * FROM pc; pcid | memoria | cpu | disco | tgrafica | precio ------+---------+---------+-----------+-----------+-------1 | mem0001 | cpu0001 | disco0001 | ati001 | 1000 2 | mem0001 | cpu0001 | disco0002 | ati001 | 1100 3 | mem0002 | cpu0002 | disco0003 | nvidia001 | 1400 4 | mem0004 | cpu0003 | disco0004 | nvidia001 | 1600 5|
| cpu0001 | disco0001 | ati001 | 900
6|
|
|
| ati001 | 400
(6 rows) postgres=# SELECT * FROM cpu ; cpu_id | cpu_fabricante | cpu_tipo ---------+----------------+-----------cpu0001 | intel
| Core2 duo
cpu0002 | intel
| Core2 Quad
cpu0003 | amd
| Athlon X2
(3 rows) postgres=# SELECT * FROM memoria ; mem_id | mem_capacidad | mem_tipo ---------+---------------+-----------mem0001 |
1024 | DDR SDRAM
mem0002 |
1024 | DDR2 SDRAM
mem0003 |
1024 | DDR3 SDRAM
mem0004 |
2048 | DDR3 SDRAM
(4 rows)
postgres=# SELECT * FROM disco ; disco_id | disco_fabricante | disco_capacidad -----------+------------------+----------------disco0001 | seagate
|
350
disco0002 | seagate
|
500
disco0003 | seagate
|
1024
disco0004 | samsung
|
500
(4 rows) postgres=# SELECT * FROM tgrafica ; tgraf_id | tgraf_fabricante -----------+-----------------ati001 | ati nvidia001 | nvidia Utilizando estas tablas vamos a realizar varias consultas: Consulta 1 Obtener una relación de solo los modelos de PC 'completos' a la venta. Queremos toda la información disponible sobre los componentes que lo forman. Ordenar el resultado de mayor a menor precio. Sabemos que al tener que coger datos de diferentes tablas, necesitaremos algún tipo de clausula JOIN. En esta consulta nos piden solamente, PCs completos, con todos sus componentes. Por ello descartamos todas las combinaciones de tipo OUTER JOIN y utilizamos INNER JOIN para obtener solamente las tuplas con atributos en todas las relaciones combinadas. Cada PC tiene 4 componentes y la información de cada componente se encuentra en una tabla separada. Con estos datos sabemos que tendremos que realizar 4 INNER JOIN entre todas las tablas involucradas en la consulta. Vamos a empezar a escribir la consulta SQL. Primero realizamos los INNER JOIN y declaramos las condiciones que acotarán el resultado. Tendremos que emparejar los atributos de componentes presentes en la tabla 'PC' con los correspondientes atributos en el resto de tablas de componentes. SELECT * FROM pc AS a INNER JOIN memoria AS b ON (a.memoria = b.mem_id) INNER JOIN cpu AS c ON (a.cpu = c.cpu_id) INNER JOIN disco AS d ON (a.disco = d.disco_id) INNER JOIN tgrafica AS e ON (a.tgrafica = e.tgraf_id);
Una vez que hemos combinado todas las tablas, vamos a definir los atributos que queremos presentar en nuestro resultado. Utilizaremos los prefijos de tablas definidos en la consulta anterior (a,b,c,d,e), para acceder a los atributos de cada tabla: SELECT a.pcid, b.mem_tipo, b.mem_capacidad AS mem_MB, c.cpu_fabricante AS cpu_fab, c.cpu_tipo, d.disco_fabricante AS disco_fab, d.disco_capacidad AS disco_GB, e.tgraf_fabricante AS tgraf_fab, a.precio FROM pc AS a INNER JOIN memoria AS b ON (a.memoria = b.mem_id) INNER JOIN cpu AS c ON (a.cpu = c.cpu_id) INNER JOIN disco AS d ON (a.disco = d.disco_id) INNER JOIN tgrafica AS e ON (a.tgrafica = e.tgraf_id); Y para terminar ordenamos el resultado: SELECT a.pcid, b.mem_tipo, b.mem_capacidad AS mem_MB, c.cpu_fabricante AS cpu_fab, c.cpu_tipo, d.disco_fabricante AS disco_fab, d.disco_capacidad AS disco_GB, e.tgraf_fabricante AS tgraf_fab, a.precio FROM pc AS a INNER JOIN memoria AS b ON (a.memoria = b.mem_id) INNER JOIN cpu AS c ON (a.cpu = c.cpu_id)
INNER JOIN disco AS d ON (a.disco = d.disco_id) INNER JOIN tgrafica AS e ON (a.tgrafica = e.tgraf_id) ORDER BY precio DESC; El resultado de nuestra consulta presentará las características de solo los PC completos: pcid | mem_tipo | mem_mb | cpu_fab | cpu_tipo | disco_fab | disco_gb | tgraf_fab | precio ------+------------+--------+---------+------------+-----------+----------+-----------+-------4 | DDR3 SDRAM | 2048 | amd
| Athlon X2 | samsung |
500 | nvidia | 1600
3 | DDR2 SDRAM | 1024 | intel | Core2 Quad | seagate |
1024 | nvidia | 1400
2 | DDR SDRAM | 1024 | intel | Core2 duo | seagate |
500 | ati
| 1100
1 | DDR SDRAM | 1024 | intel | Core2 duo | seagate |
350 | ati
| 1000
Consulta 2 Obtener una relación de todos los modelos de PC a la venta. Queremos toda la informacion disponible sobre los componentes que lo forman. Ordenar el resultado de mayor a menor precio. En esta consulta nos piden lo mismo que la consulta 1 pero de todos los modelos de PC, los completos y los que se venden sin algun componente. La tabla PC es la tabla principal de nuestra combinación, y la tabla a la que le faltan valores en ciertos atributos en algunas tuplas. Esta tabla es la primera que se define cuando definimos las cláusulas JOIN y por definición es la que se encuentra más a la izquierda. Por ello utilizaremos el tipo LEFT OUTER JOIN para conseguir el resultado de la consulta 1, mas todos los PC a los que le falta algún componente. Lo único que tenemos que hacer es cambiar INNER JOIN por LEFT OUTER JOIN. La consulta quedaria asi: SELECT a.pcid, b.mem_tipo, b.mem_capacidad AS mem_MB, c.cpu_fabricante AS cpu_fab, c.cpu_tipo, d.disco_fabricante AS disco_fab, d.disco_capacidad AS disco_GB, e.tgraf_fabricante AS tgraf_fab, a.precio FROM pc AS a LEFT OUTER JOIN memoria AS b ON (a.memoria = b.mem_id)
LEFT OUTER JOIN cpu AS c ON (a.cpu = c.cpu_id) LEFT OUTER JOIN disco AS d ON (a.disco = d.disco_id) LEFT OUTER JOIN tgrafica AS e ON (a.tgrafica = e.tgraf_id) ORDER BY precio DESC; Y el resultado de nuestra consulta presentará las características de todos los PC: pcid | mem_tipo | mem_mb | cpu_fab | cpu_tipo | disco_fab | disco_gb | tgraf_fab | precio ------+------------+--------+---------+------------+-----------+----------+-----------+-------4 | DDR3 SDRAM | 2048 | amd
| Athlon X2 | samsung |
500 | nvidia | 1600
3 | DDR2 SDRAM | 1024 | intel | Core2 Quad | seagate |
1024 | nvidia | 1400
2 | DDR SDRAM | 1024 | intel | Core2 duo | seagate |
500 | ati
| 1100
1 | DDR SDRAM | 1024 | intel | Core2 duo | seagate |
350 | ati
| 1000
4. OPERACIONES BÁSICAS CON BASE DE DATOS EN MYSQL En MySQL además de llevar a cabo las operaciones con bases de datos, podemos también llevar a cabo operaciones, no sólo con datos guardados en la base de datos, sino también con valores que no necesariamente formen parte de nuestra base de datos. Todos conocemos las operaciones básicas, es decir: la suma, la multiplicación, la resta y la división. Todas estas operaciones pueden llevarse a cabo sin problemas en MySQL sin necesidad de recurrir a datos que estén guardados en la base de datos. La forma en la que vamos a hacer dichas operaciones es a través de la sentencia SELECT (otras de las bondades de esta sentencia), de la siguiente forma: SELECT operación; Así, la sentencia SELECT 2+2; Nos daría como resultado 4 (a que no esperaban una respuesta de este tipo). Con todo, debemos tener cuidado de la precedencia de los operadores, ya que algunos operadores tienen mayor precedencia que otros y, por ejemplo, si hacemos la siguiente operación: SELECT 5 + 2 * 2; La respuesta no será 14 (teniendo que cuenta que las operaciones se realizan de izquierda a derecha), sino que será 9, ya que la multiplicación tiene prioridad sobre la suma (lo cual podría tomarse como una especie de racismo matemático, pero por fortuna eso, en las sabias e inteligentes matemáticas, no existe). Finalmente, y antes de ver a los operadores en acción, mencionemos un operador nuevo (al menos en cuanto a las operaciones matemáticas se refiere), este es, el operador Módulo (%). Para aquellos conocedores de C, C++ o PHP les será muy conocido nuestro viejo amigo Módulo. Este operador proporciona el residuo de un cociente, por ejemplo, la operación: SELECT 6 % 4;
Nos da como resultado 2, siendo que el residuo de la división entre 6 y 4 es 2. Si lo que se están preguntando es la utilidad de este operador, en realidad depende de las necesidades de cada aplicación o de cada operación que necesitemos efectuar con nuestra base de datos. Operadores de comparación Los operadores comparativos son útiles a nivel de programación y, por supuesto, a nivel de operaciones con bases de datos. En MySQL los operadores funcionan de manera extremadamente similar a los operadores a nivel de lenguajes de programación, es decir, si las comparaciones (les decir, las operaciones comparativas) resultan verdaderas, el valor retornado es 1; por el contrario, si la comparación resulta falsa, el valor retornado es 0. La forma de llevar a cabo las comparaciones es a través de la sentencia SELECT, de la siguiente forma: SELECT operación comparativa; Las operaciones comparativas que podemos llevar cabo son: La operación de igualdad: 8 = 8 La operación Mayor que: 7 > 3 La operación Menor que: 4 < 15 La operación Mayor o igual que: 3 >= 3 La operación Menor o igual que: 10 <= 5 La operación No es igual a: 10 ¡= 3 ó 3 <> 2 La operación Null: 7 <=> Null (La expresión null, recuerden, no es igual a 0, null es un valor que no ha sido “programado” aún, lo cual no significa necesariamente que esté vacío, sino que es un valor que no está definido aún) Una observación importante, es que si decimos que 7 = Null, el resultado no será cierto o falso (1 ó 0), sino que resultará en que la expresión entera se convierte en null, por tal razón, debemos utilizar el operador especial para la sentencia NULL < = >. Operaciones con Cadenas Los operadores de cadenas trabajan de manera muy similar a los operadores lógicos de la lección anterior, es decir, retornan un valor de cierto o falso (valor booleano). Una vez más, nuestra grande y vieja amiga SELECT hace el trabajo por nosotros, la forma de hacerlos es: SELECT ‘cadena’ operador ‘cadena’; Por favor presten atención a lo que encierra a ambos valores de cadena, es decir a las comillas simples. Lo que las comillas simples hacen, como seguramente ya habrán imaginado, es decirle a MySQL que el valor a evaluar es precisamente una cadena de caracteres. De tal manera, la sentencia:
SELECT ‘me llamo Juan’ = ‘me llamo Juan’; Retornaría un valor de 1, es decir verdadero. Por otro lado, si la expresión escrita fuese: SELECT me llamo Juan = me llamo Juan; Con las operaciones de cadenas, podemos igualmente utilizar el operador LIKE, de una manera similar a como la utilizamos al hacer consultas a una tabla, es decir: SELECT ‘bibidibabidibu’ LIKE ‘bibidibabidibu’; Retornaría un valor verdadero (afortunadamente la computadora no tartamudea al comparar esto, lo cual es supercalifragilisticoespialidoso, ¿no les parece?). Una de las ventajas de utilizar la sentencia LIKE, es que nos permite utilizar comodines. Lo que un comodín hace, como en un juego de póker (perdón si no son tahúres como nosotros), es reemplazar o bien un carácter o bien la cadena completa. Los caracteres que utilizamos como comodines pueden ser: El símbolo sustituto de un solo carácter, el cual es el guión bajo (‘_’) O el símbolo que sustituye la cadena completa, o el resto de la cadena a partir de donde ponemos el símbolo, el cual es el símbolo de porcentaje (‘%’) Ventajas y desventajas de Microsoft SQL Server, MySQL y PostgreSQL Diferencias Técnicas Postgresql Licencia BSD Es compatible con la mayoría de los S.O. (excepto Z/OS) Es totalmente independiente de que sean instalados nativamente Soporta nativamente los índices de árbol R-/R+, HASH, Expresión, Parcial Diferencias Técnicas Postgresql Licencia GPL o Propietario Es compatible con todos los S.O. Es totalmente independiente de que sean instalados nativamente MySQL no soporta dominio Diferencias Técnicas SqlServer Licencia Propietario Solo es soportado por Windows No soporta dominio en el aspecto nativo DESVENTAJAS DE SQL SERVER 1.
Utiliza mucho la memoria RAM para las instalaciones y utilización de software.
2. No se puede utilizar como practicas porque se prohíben muchas cosas, tiene restricciones en lo particular. 3.
La relación, calidad y el precio está muy debajo comparado con Oracle.
4. Tiene muchos bloqueos a nivel de página, un tamaño de página fijo y demasiado pequeño, una pésima implementación de los tipos de datos variables. VENTAJAS DE SQL SERVER 1.
Es un sistema de gestión de base de datos.
2.
Es útil para manejar y obtener datos de la red de redes.
3.
Nos permite olvidarnos de los ficheros que forman la base de datos.
4.
Si trabajamos en una red social nos permite agregar otros servidores de SQL Server. Por ejemplo, dos personas que trabajan con SQL Server, uno de ellos se puede conectar al servidor de su otro compañero y así se puede ver las bases de datos del otro compañero con SQL Server.
5.
SQL permite administrar permisos a todo. También permite que alguien conecte su SQLO al nuestro, pero sin embargo podemos decirle que no puede ver esta base de datos, pero otro sí.
MySQL Ventajas: 1.
MySQL software es Open Source
2.
Velocidad al realizar las operaciones, lo que le hace uno de los gestores con mejor rendimiento.
3.
Bajo costo en requerimientos para la elaboración de bases de datos, ya que debido a su bajo consumo puede ser ejecutado en una máquina con escasos recursos sin ningún problema.
4.
Facilidad de configuración e instalación. Soporta gran variedad de Sistemas Operativos
5.
Baja probabilidad de corromper datos, incluso si los errores no se producen en gestor, sino en el sistema en el que está.
6.
Su conectividad, velocidad, y seguridad hacen de MySQL Server altamente para acceder bases de datos en Internet
el propio apropiado
Desventajas. 1.
Un gran porcentaje de las utilidades de MySQL no están
2.
No es intuitivo, como otros programas (ACCESS).
documentadas.
PostgreSQL Ventajas: A pesar de que la velocidad de respuesta pueda parecer deficiente en bases de datos pequeñas, esa velocidad se mantiene al aumentar el tamaño de la base de datos, cosa que no sucede con otros programas, que se enlentecen brutalmente.
Instalación ilimitada: No se puede demandar a una empresa por instalarlo en más ordenadores de los que la licencia permite, ya que no hay costo asociado a la licencia de software. Esto permite un negocio más rentable con instalaciones a gran escala, no debemos preocuparnos por ser auditados para ver si cumplimos con la licencia, y hay flexibilidad y desarrollo sin costos adicionales de licenciamiento. Ahorros considerables de costos de operación: PostgreSQL ha sido diseñado para tener un mantenimiento y ajuste menor que los productos de proveedores comerciales, conservando todas las características, estabilidad y rendimiento. Estabilidad y confiabilidad: No se han presentado caídas de la base de datos. Extensible: El código fuente está disponible de forma gratuita, para que quien necesite extender o personalizar el programa pueda hacerlo sin costes. Multiplataforma: Está disponible en casi cualquier Unix, con 34 plataformas en la última versión estable, además de una versión nativa de Windows en estado de prueba. Diseñado para ambientes de alto volumen: Utilizando una estrategia de almacenamiento de filas llamada MVCC, consigue mejor respuesta en grandes volúmenes. Además, MVCC permite a los accesos de solo lectura continuar leyendo datos consistentes durante la actualización de registros, permitiendo copias de seguridad en caliente Herramientas gráficas de diseño y administración de bases de datos. Soporta los tipos de datos, cláusulas, funciones y comandos de tipo estándar SQL92/SQL99 y extendidos propios de PostgreSQL. Puede operar sobre distintas plataformas, incluyendo Linux, Windows, Unix, Solaris y MacOS X. Buen sistema de seguridad mediante la gestión de usuarios, grupos de usuarios y contraseñas. Gran capacidad de almacenamiento. Buena escalabilidad ya que es capaz de ajustarse al número de CPU y a la cantidad de memoria disponible de forma óptima, soportando una mayor cantidad de peticiones simultáneas a la base de datos de forma correcta. Desventajas: En comparación con MySQL es más lento en inserciones y actualizaciones, ya que cuenta con cabeceras de intersección que no tiene MySQL. Soporte en línea: Hay foros oficiales, pero no hay una ayuda obligatoria. Consume más recursos que MySQL. La sintaxis de algunos de sus comandos o sentencias no es nada intuitiva.
Referencias Bibliográficas La Biblia MySQL Ian Gilfillan Anaya 2008 MySQL Jacobo Puertas RA-MA editorial, Madrid España 2007 Tercera Edición http://www.campusmvp.es/recursos/post/Fundamentos-de-SQL-Como-realizar-consultassimples-con-SELECT.aspx http://www.postgresql.org.es/node/352