Transcript MySQL.

MySQL
MySQL es un sistema de gestión de base de datos relacional, multihilo y
multiusuario con más de seis millones de instalaciones. MySQL AB —desde
enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle
Corporation desde abril de 2009— desarrolla MySQL como software libre en un
esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta
licencia, pero para aquellas empresas que quieran incorporarlo en productos
privativos deben comprar a la empresa una licencia específica que les permita
este uso. Está desarrollado en su mayor parte en ANSI C.
Al contrario de proyectos como Apache, donde el software es desarrollado por
una comunidad pública y el copyright del código está en poder del autor
individual, MySQL es propietario y está patrocinado por una empresa privada,
que posee el copyright de la mayor parte del código.
Esto es lo que posibilita el esquema de licenciamiento anteriormente
mencionado. Además de la venta de licencias privativas, la compañía ofrece
soporte y servicios. Para sus operaciones contratan trabajadores alrededor del
mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark,
Allan Larsson y Michael Widenius.
Historia del Proyecto
SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, el
cual fue presentado a ANSI y desde entonces ha sido considerado como un estándar para las
bases de datos relacionales. Desde 1986, el estándar SQL ha aparecido en diferentes versiones
como por ejemplo: SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa
opensource MySQL AB establecida inicialmente en Suecia en 1995 y cuyos fundadores son David
Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue esta empresa
consiste en que MySQL cumpla el estándar SQL, pero sin sacrificar velocidad, fiabilidad o
usabilidad.
Michael Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando
rutinas de bajo nivel ISAM, sin embargo, mSQL no era rápido y flexible para sus necesidades. Esto
lo llevó a crear una API SQL denominada MySQL para bases de datos muy similar a la de mSQL
pero más portable.
La procedencia del nombre de MySQL no es clara. Desde hace más de 10 años, las herramientas
han mantenido el prefijo My. También, se cree que tiene relación con el nombre de la hija del
cofundador Monty Widenius quien se llama My.
Por otro lado, el nombre del delfín de MySQL es Sakila y fue seleccionado por los fundadores de
MySQL AB en el concurso “Name the Dolphin”. Este nombre fue enviado por Ambrose Twebaze,
un desarrollador de Open source Africano, derivado del idioma SiSwate, el idioma local de
Swazilandia y corresponde al nombre de una ciudad en Arusha, Tanzania, cerca de Uganda la
ciudad origen de Ambrose.
Aplicaciones
MySQL es muy utilizado en aplicaciones web, como Drupal
o phpBB, en plataformas (Linux/Windows-Apache-MySQLPHP/Perl/Python), y por herramientas de seguimiento de
errores como Bugzilla. Su popularidad como aplicación web
está muy ligada a PHP, que a menudo aparece en
combinación con MySQL.
MySQL es una base de datos muy rápida en la lectura
cuando utiliza el motor no transaccional MyISAM, pero
puede provocar problemas de integridad en entornos de
alta concurrencia en la modificación. En aplicaciones web
hay baja concurrencia en la modificación de datos y en
cambio el entorno es intensivo en lectura de datos, lo que
hace a MySQL ideal para este tipo de aplicaciones.
Tipos de datos que se manejan en
MySQL
Datos Numéricos :
Los tipos de datos numéricos son como sigue:
BIT
TINYINT
BOOLEAN
SMALLINT
MEDIUMINT
INT
INTEGER
BIGINT
FLOAT
DOUBLE
DECIMAL
BIT : BIT es un sinónimo de TINYINT(1).
TINYINT[(M)] : Un número entero muy pequeño. El rango suscrito va de -128 a 127. El rango no suscrito va de 0
a 255.
BOOL, BOOLEAN : Estos tipos son sinónimos de TINYINT(1). Un valor para cero es
considerado falso. Valores que no sean cero son considerados verdad.
MEDIUMINT : Un número entero de tamaño medio. El rango suscrito va de 8388608 a 8388607. El rango no suscrito va de 0 a 16777215.
INT : Un número entero de tamaño normal. El rango suscrito va de -2147483648
to 2147483647. El rango no suscrito va de 0 a 4294967295.
INTEGER : Este tipo es sinónimo de INT.
FLOAT :Un número punto flotante pequeño (simple precisión). Los valores van de
3.402823466E+38 a -1.175494351E-38, 0, y 1.175494351E-38 a
3.402823466E+38.
DOUBLE : Un número punto flotante normal (doble precisión). Los valores van de
1.7976931348623157E+308 a -2.2250738585072014E-308, 0, y
2.2250738585072014E-308 a 1.7976931348623157E+308.
DECIMAL : El número máximo de dígitos (M) para DECIMAL es 64.
Tipos de Datos Fecha y Hora :
DATE
TIME
DATETIME
TIMESTAMP
YEAR
DATE : Una Fecha. El rango es 1000-01-01 a 9999-12-31. Los valores de fecha se
muestran con el formato YYYY-MM-DD (Año-Mes-Día).
TIME : Una Hora. El rango es -838:59:59 a 838:59:59. Los valores de hora se
muestran con el formato HH:MM:SS.
DATETIME :Una combinación de Fecha y Hora. El rango es 1000-01-01
00:00:00 a 9999-12-31 23:59:59. Los valores fecha hora son mostrados en
formato YYYY-MM-DD HH:MM:SS.
TIMESTAMP :Una Marca de Tiempo. El rango es 1970-01-01 00:00:01 UTC
hasta parcialmente el año 2037. Una columna TIMESTAMP es útil para grabar
la fecha y hora de una operación INSERT o UPDATE.
YEAR : Un Año. Los valores de año son mostrados en formato de dos dígitos o
de cuatro. El rango de valores para un dígito de cuatro es 1901 a 2155. Para
los dos dígito, el rango es 70 a 69, representando años desde 1970 a 2069.
Para todas la columnas de fecha y hora, podemos asignar también los valores
usando strings o números.
CHAR() : Es un string de longitud fija que es principalmente usado cuando los
datos no van a variar mucho en su longitud. Toma valores de 0 a 255 de
longitud de caracteres. Cuando almacenamos valores CHAR ellos están
rellenos correctamente con espacios de la longitud específica. Cuando
obtenemos valores CHAR, los espacios finales son eliminados.
VARCHAR() : Es una variable string de longitud y es usada principalmente
cuando los datos pueden variar en longitud. Toma valores de 0 a 255 de
longitud de caracteres. Los valores VARCHAR no son rellenados cuando son
más cortos.
TINYTEXT, TINYBLOB : Un string con una longitud máxima de 255 caracteres.
TEXT :Las columnas TEXT son tratadas como caracteres string (strings no
binarios). Contiene una longitud máxima de 65535 caracteres.
BLOB : BLOB es el acrónimo de Binary Large OBject (Objeto Binario Grande).
Puede tener un montón de datos variables. Las columnas BLOB son tratadas
como string de bytes (string binarios). Contiene una longitud máxima de
65535.
VARBINARY :Es similar al tipo VARCHAR. Almacena el valor como un string de
bytes binario en vez de como un caracter string no binario.
ENUM() : Una enumeracion. Cada columna puede tener uno de los posibles
valores especificados. Puede almacenar solo uno de los valores que están
declarados en la lista específica contenida en los paréntesis ( ). La lista ENUM
tiene un alcance de más de 65535 valores.
SET() : Un set. Cada columna puede tener más de uno de los posibles valores
especificados. Contiene más de 64 objetos de lista y puede almacenar más de
una opción. Los valores SET son representados internamente como números
enteros.
Si CHAR y VARCHAR son usados en la misma tabla, entonces MySQL cambiará
automáticamente CHAR a VARCHAR por razones de compatibilidad. Los
paréntesis ( ) permiten introducir un máximo número de caractereces que
serán usados en la columna.
MEDIUMTEXT, MEDIUMBLOB : Tiene una longitud máxima de 16777215
caracteres.
BIGINT : Un número entero grande. El rango suscrito va de 9223372036854775808 a 9223372036854775807. El rango no suscrito va de
0 a 18446744073709551615.
LONGTEXT, LONGBLOB : Tiene una longitud máxima de 4294967295
caracteres.
BINARY : Es similar al tipo CHAR. Almacena el valor como string de byte
binario en vez de como un caracter string no binario
Instalando Apache, MySQL y PHP de forma fácil
Gracias a aplicaciones como WAMP, EasyPHP, MAMP o XAMP, podemos
instalar y configurar Apache, Mysql y PHP de forma fácil en nuestras
computadoras.
Conozco a muchos desarrolladores que aún programan o configura
aplicaciones prefabricadas realizando los cambios en su computadora
para luego subir los archivos vía FTP y refrescar. Sin duda no es un
método eficiente por el tiempo que se pierde. Todo desarrollador web
debería contar con un servidor web instalado de forma local.
Si la fórmula a trabajar es Apache, Mysql y PHP, existe forma de
configurarlo en nuestro sistema operativo, aunque el proceso puede ser
un
poco
artesanal.
Para los que buscamos una forma más rápida de arrancar con nuestro
servidor, existen aplicaciones que ya incluyen estos paquetes y con un
sencillo instalador nos dejan todo listo para trabajar en un par de
minutos:
Crear Base de datos
mysql> USE zoologico
ERROR 1049: Unknown database 'zoologico'
mysql>
El mensaje anterior indica que la base de datos no ha sido creada, por lo
tanto necesitamos crearla.
mysql> CREATE DATABASE zoologico;
Query OK, 1 row affected (0.00 sec)
mysql> USE zoologico
Database changed
mysql>
Crear tabla
Mostrar tabla
Ahora que hemos creado la tabla, la sentencia SHOW TABLES debe
producir algo como:
Para verificar que la tabla fue creada como nosotros esperábamos, usaremos
la sentencia DESCRIBE:
Cargar e Insertar datos
Seleccionando todos los datos
Borrar, cargar y actualizar
Consultas particulares
Ahora vamos a la práctica