Este documento proporciona una introducción a MySQL, un sistema de gestión de bases de datos relacionales. Explica que MySQL es un software de código abierto creado originalmente por la empresa MySQL AB y que utiliza el lenguaje SQL. Resume los objetivos generales y específicos del documento, que son conocer las características y funcionalidades principales de MySQL.
2. INTRODUCCION
Es un sistema de gestión de bases de datos
relacional, fue creada por la empresa sueca
MySQL AB, la cual tiene el copyright del
código fuente del servidor SQL, así como
también de la marca.
3. MySQL es un software de código abierto,
licenciado bajo la GPL de la GNU, aunque
MySQL AB distribuye una versión comercial, en
lo único que se diferencian, es en el soporte
técnico que se ofrece, y la posibilidad de
integrar este gestor en un software propietario,
ya que de otra manera, se vulneraría la licencia
GPL.
El lenguaje de programación que utiliza MySQL
es Structured Query Language (SQL) que fue
desarrollado por IBM en 1981.
4. OBJETIVO GENERAL
• Conocer e identificar las características
principales del motor de la base de datos
MySQL
5. Objetivos específicos
• Conocer la historia y el mejoramiento que ha
tenido el motor.
• Conocer las principales sintaxis utilizadas por
el motor.
• Diferenciar las ventajas competitivas con
respecto a los demás motores.
6. HISTORIA DEL PROYECTO
• SQL fue comercializado por primera vez en
1981 por IBM.
• Primeras versiones: SQL:92, SQL:99, SQL:2003.
no eran flexibles, ni rápidos.
• El prefijo My apareció aproximadamente hace
10 años.
• Sakila.
• MySQL es una marca registrada de MySQL AB.
7. CARACTERÍSTICAS
• Inicialmente, MySQL carecía de algunos
elementos esenciales en las bases de datos
relacionales, tales como integridad referencial y
transacciones.
• Las principales características son:
• El principal objetivo de MySQL es velocidad y
robustez.
• Soporta gran cantidad de tipos de datos para las
columnas.
• Gran portabilidad entre sistemas, puede trabajar
en distintas plataformas y sistemas operativos.
8. • Cada base de datos cuenta con 3 archivos:
Uno de estructura, uno de datos y uno de
índice y soporta hasta 32 índices por tabla.
• Aprovecha la potencia de sistemas
multiproceso, gracias a su implementación
multihilo.
• Flexible sistema de contraseñas (password) y
gestión de usuarios, con un muy buen nivel de
seguridad en los datos.
• El servidor soporta mensajes de error en
distintas lenguas
9. VENTAJAS
• Velocidad al realizar las operaciones.
• Bajo costo en requerimientos para la
elaboración de bases de datos.
• Facilidad de configuración e instalación.
• Soporta gran variedad de Sistemas Operativos
• Baja probabilidad de corromper datos, incluso
si los errores no se producen en el propio
gestor, sino en el sistema en el que está.
• Conectividad y seguridad
10. DESVENTAJAS
• Un gran porcentaje de las utilidades de MySQL
no están documentadas.
• No es intuitivo, como otros programas
(ACCESS).
13. TIPOS DE DATOS ACEPTADOS POR EL MOTOR
Tipo de
Grupo Intervalo Almacenamiento
dato
De -263 (-9.223.372.036.854.775.808) a 263 - 1
bigint 8 bytes
(9.223.372.036.854.775.807)
int De -231 (-2.147.483.648) a 231 - 1 (2.147.483.647) 4 bytes
Numéricos
exactos smallint De -215 (-32.768) a 215 - 1 (32.767) 2 bytes
tinyint De 0 a 255 1 byte
Tipo de datos entero que puede aceptar los valores 1,
bit 2 bytes
0 ó NULL
14. Grupo Tipo de dato Intervalo Almacenamiento
p (precisión): el número total máximo de dígitos
decimales que se puede almacenar, tanto a la
izquierda como a la derecha del separador decimal.
La precisión debe ser un valor comprendido entre 1 y
la precisión máxima de 38. La precisión
decimal, predeterminada es 18.
Precisión 1 - 9: 5
numeric, s (escala): el número máximo de dígitos decimales
bytes
decimal (p, s) que se puede almacenar a la derecha del separador
Numéricos decimal. La escala debe ser un valor comprendido
exactos entre 0 y p. Sólo es posible especificar la escala si se
ha especificado la precisión. La escala
predeterminada es 0.
Con precisión máxima 1038 +1 y 1038 - 1
Tipos de datos que representan valores monetarios o de
money moneda: de -922.337.203.685,4775808 a 8 bytes
922.337.203.685,4775807
smallmoney De - 214,7483648 a 214,7483647 4 bytes
15. Grupo Tipo de dato Intervalo Almacenamiento
De - 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a Depende del valor
float
Numéricos 1,79E+308 de n
aproximados
De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E - 38 a 3,40E +
real 4 Bytes
38
datetime Del 1 de enero de 1753 hasta el 31 de diciembre de 9999
Fecha y hora
smalldatetime Del 1 de enero de 1900 hasta el 6 de junio de 2079
Caracteres no Unicode de longitud fija, con una longitud
char (n) n bytes
de n bytes. n debe ser un valor entre 1 y 8.000
Caracteres no Unicode de longitud variable. n indica que el
Cadenas de varchar (n) n bytes (aprox.)
tamaño de almacenamiento máximo es de 231 - 1 bytes
caracteres
En desuso, sustituido por varchar.
text Datos no Unicode de longitud variable con una longitud máx. bytes (aprox.)
máxima de 231 - 1 (2.147.483.647) caracteres
16. Tipo de
Grupo Intervalo Almacenamiento
dato
Datos de carácter Unicode de longitud fija, con n caracteres. n
nchar (n) 2 * n bytes
debe estar comprendido entre 1 y 4.000
Cadenas de nvarchar Datos de carácter Unicode de longitud variable. n indica que el 2 * n bytes + 2
caracteres (n) tamaño máximo de almacenamiento es 231 - 1 bytes bytes
único de
En desuso, sustituido por nvarchar.
ntext (n) Datos Unicode de longitud variable con una longitud máxima 2 * n bytes
de 230 - 1 (1.073.741.823) caracteres
Datos binarios de longitud fija con una longitud de n bytes,
binary (n) n bytes
donde n es un valor que oscila entre 1 y 8.000
Cadenas varbinary Datos binarios de longitud variable. n indica que el tamaño de
n bytes
binarias (n) almacenamiento máximo es de 231 - 1 bytes
En desuso, sustituido por varbinary.
image Datos binarios de longitud variable desde 0 hasta 231 - 1
(2.147.483.647) bytes
17. Tipo de
Grupo Intervalo Almacenamiento
dato
Tipo de datos para las variables o para los
parámetros de resultado de los procedimientos
cursor almacenados que contiene una referencia a un
cursor. Las variables creadas con el tipo de datos
cursor aceptan NULL
Otros tipos
de datos
Tipo de datos que expone números binarios únicos
generados automáticamente en una base de datos.
timestamp El tipo de datos timestamp es simplemente un 8 bytes
número que se incrementa y no conserva una fecha
o una hora
18. Grupo Tipo de dato Intervalo Almacenamiento
Tipo de datos que almacena valores de varios tipos de datos
sql_variant aceptados en SQL Server, excepto text, ntext, image,
timestamp y sql_variant
Es un GUID (Globally Unique Identifier, Identificador Único
uniqueidentifier 16 bytes
Global)
Otros
tipos de Es un tipo de datos especial que se puede utilizar para
datos almacenar un conjunto de resultados para su procesamiento
posterior. table se utiliza principalmente para el
table
almacenamiento temporal de un conjunto de filas devuelto
como el conjunto de resultados de una función con valores
de tabla
Almacena datos de XML. Puede almacenar instancias de xml
xml
en una columna o una variable de tipo xml
19. AUTENTICACIONES
Las cuentas de usuario de MySQL se listan en la
tabla user de la base de datos MySQL . Cada
cuenta MySQL tiene una contraseña. MySQL usa
contraseñas en dos fases de la comunicación
cliente/servidor:
• Cuando un cliente trata de conectar al
servidor, hay un paso inicial de autenticación.
20. • Una vez que el cliente conecta, puede cambiar
o inicializar los hashes de las contraseñas para
las cuentas listadas en la tabla user. Puede
hacerlo mediante la función PASSWORD(), o
mediante los comandos GRANT o SET
PASSWORD.
El servidor usa los valores hash durante la
autenticación cuando un cliente trata de
conectar por primera vez.
21. ADMINISTRACIÓN DEL MOTOR
• Sintaxis de CREATE USER
• Sintaxis de DROP USER
• Sintaxis de GRANT y REVOKE Los comandos
GRANT y REVOKE permiten a los
administradores de sistemas crear cuentas de
usuario MySQL y darles permisos y quitarlos
de las cuentas.
• Sintaxis de RENAME USER
• Sintaxis de SET PASSWORD
22. • Sintaxis de CACHE INDEX El comando CACHE
INDEX asigna índices de tabla a una caché de
clave específica.
• Sintaxis de FLUSH Debe usar el comando FLUSH
si quiere limpiar algunas de las cachés internas
que usa MySQL . Para ejecutar FLUSH, debe
tener el permiso RELOAD .
• Sintaxis de RESET El comando RESET se usa para
limpiar el estado de varias operaciones de
servidor.
23. • Sintaxis de KILL En MySQL 5.0.0, KILL permite
los modificadores opcionales CONNECTION o
QUERY:
• KILL CONNECTION es lo mismo que KILL sin
modificadores: termina la conexión asociada
con el thread_id dado.
• KILL QUERY termina el comando que la
conexión está ejecutando actualmente, pero
deja a la conexión intacta.
24. GESTIÓN DE USUARIOS
Una cuenta MySQL se define en términos de un
nombre de usuario y el equipo o equipos desde
los que el usuario puede conectar al servidor. La
cuenta también tiene una contraseña.
Los nombres de usuario, tal como los usa MySQL
para autentificación, no tienen nada que ver con
los nombres de usuario (nombres de logueo) tal
y como los usa Windows o Unix.
25. • La base de datos no es segura, a no ser
que todas las cuentas MySQL tengan
contraseña. Cualquiera que especifique
un nombre de usuario para una cuenta
que no tenga contraseña puede conectar
al servidor.
26. • Nombre de usuarios en MySQL pueden
tener como máximo 16 caracteres de
longitud. Este límite está hard-codeado
en los servidores y clientes MySQL, y
tratar de evitarlo mediante la
modificación de las tablas en la base de
datos mysql no funciona.
27. Añadir Nuevas Cuentas De Usuario
Puede crear cuentas MySQL de dos formas:
• Usando comandos GRANT: Es el método mas
preferido, ya que son más concisos y menos
propenso a errores; está disponible desde
MySQL 3.22.11.
• Manipulando las tablas de permisos MySQL
directamente.
28. Eliminar Usuario
El comando DROP USER borra una o
más cuentas MySQL . Para usarlo,
debe tener el permiso global CREATE
USER o el permiso DELETE para la base
de datos mysql .
29. Limitar Recursos De Cuentas
Una forma de limitar los recursos de los
servidores MySQL es asignar a la variable de
sistema max_user_connections un valor
distinto de cero. Este método es estrictamente
global. Además, limita sólo el número de
conexiones simultáneas hechas usando una
sola cuenta, y no lo que un cliente puede hacer
una vez conectado.
30. En MySQL 5.0, puede limitar los siguientes recursos
de servidor para cuentas individuales:
•El número de consultas que una cuenta puede
realizar por hora
•El número de actualizaciones que una cuenta
puede hacer por hora
•El número de veces que una cuenta puede
conectar con el servidor por hora
Desde MySQL 5.0.3, es posible limitar el número de
conexiones simultáneas al servidor por cuenta.
31. Asignar Contraseñas A Cuentas
Se pueden asignar contraseñas desde la línea de
comandos usando el comando mysqladmin:
• Shell> mysqladmin -u nombres_usuario -h equipo
password quot;nuevacontr”
Otra forma de asignar una contraseña en una cuenta es
con el comando SET PASSWORD :
• mysql> SET PASSWORD FOR 'jeffrey'@'%' =
PASSWORD('biscuit');
32. Guardar Una Contraseña De Forma Segura
MySQL encripta contraseñas usando su propio
algoritmo. La encriptación de contraseña es la
misma que la implementada en la función
PASSWORD() . Desde la versión 4.1, MySQL usa
un método más fuerte de autenticación que tiene
una mejor protección de contraseña durante el
proceso de conexión que en versiones anteriores.
33. EXPLORADOR DE OBJETOS
TABLA
CREATE TABLE crea una tabla con el nombre
dado. Se debe poseer el privilegio CREATE para
la tabla.
• CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(definición_create,...)] [opciones_tabla] [sentencia_select]
34. ALTER TABLE permite modificar la estructura de
una tabla existente. Por ejemplo, se pueden
añadir o eliminar columnas, crear y destruir
índices, cambiar el tipo de una columna
existente o renombrar columnas o la propia
tabla. También es posible modificar el
comentario y el tipo de la tabla.
• ALTER [IGNORE] TABLE tbl_name alter_specification [,
alter_specification ...]
35. ANALYZE TABLE Analiza y almacena la
distribución de claves de una tabla. Durante el
análisis, la tabla se bloquea para lectura.
Funciona con tablas MyISAM y BDB.
• ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE
tbl_name[,tbl_name...]
BACKUP TABLE copia al directorio de copia de
seguridad el número mínimo de ficheros de
tablas necesarios para restaurar la tabla,
después de escribir cualquier cambio al disco.
• BACKUP TABLE tbl_name [, tbl_name] ... TO
'/path/to/backup/directory'
36. DELETE elimina columnas desde quot;table_namequot;
que satisfagan la condición dada por la
quot;where_definitionquot;, y devuelve el número de
registros borrados.
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM table_name[.*] [, table_name[.*] ...]
USING table-references
[WHERE where_definition]
37. DROP DATABASE elimina todas las tablas de la
base de datos y borra la base de datos.
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
UPDATE actualiza columnas de filas existentes
de una tabla con nuevos valores.
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
38. VISTAS (VIEWS)
Las vistas (incluyendo vistas actualizables)
fueron introducidas en la versión 5.0 del
servidor de base de datos MySQL
• Creación o modificación de vistas con CREATE
VIEW o ALTER VIEW
• Eliminación de vistas con DROP VIEW
• Obtención de información de definición de
una vista (metadatos) con SHOW CREATE
VIEW
39. OTRAS SENTENCIAS
Para los comandos GRANT y REVOKE , priv_type pueden
especificarse como cualquiera de los siguientes:
40.
41. SQL CONSULTAS
En las consultas se pueden hacer con filtros
usando Where:
• Select * from clientes Where poblacion Like ‘Madrid’.
Se pueden ordenar los resultados con Order:
• Select * from clientes clientes Where poblacion Like
‘Madrid’ Order By nombre.
42. También se puede clasificar en orden
descendente con Desc:
• Select * from clientes Order By pedidos Desc.
Se pueden hacer selecciones sin coincidencia
usando Distinct:
• Select Distinct poblacion From clientes Order By
poblacion.
43. Calcular la suma de los valores comprendidos y
almacenar el valor en un campo virtual:
• Select Sum(total) As suma_pedidos From pedidos.
Con la clausula Count podemos realizar un
conteo de la cantidad de datos incluidos en un
rango de la tabla:
• Select id_client, Count(*) as numero_pedidos From
pedidos Group By id_cliente.
44. LICENCIAMIENTO
El software MySQL tiene una doble
licencia. Los usuarios pueden elegir entre
usar el software MySQL como un producto
Open Source bajo los términos de la
licencia GNU General Public License o
pueden adquirir una licencia comercial
estándar de MySQL AB.
45. COSTOS
Mientras InterBase y SQL Server tienen una licencia
propietaria y con un costo por el uso del software,
MySQL y Firebird cuentan con licencias de uso libre.
El doble licenciamiento de MySQL, y la licencia IPL
(tipo MPL) bajo la cual se libera Firebird. MySQL
garantiza una licencia libre solamente si la aplicación
que la usa es liberada bajo la licencia GPL.
Si quiero crear un software propietario, usando una
base de datos libre, no podré utilizar MySQL de
manera libre, sino pagando una licencia cuyo costo
anual inicia en los 595 US dólares por servidor.
46. INSTALAR MYSQL
1. Debe determinarse si la plataforma donde
se desea hacer la instalación está soportada.
Nótese que no todos los sistemas soportados
son igualmente adecuados para ejecutar
MySQL. En algunas plataformas el
funcionamiento será mucho más robusto y
eficiente que en otras.
47. 2. Debe elegirse la distribución que se instalará.
Hay varias versiones de MySQL disponibles, y la
mayoría lo están en varios formatos de
distribución. Se puede elegir entre
distribuciones pre armadas que contienen
programas binarios (pre compilados) o bien
código fuente. En caso de duda, debe elegirse
una distribución binaria. También se provee
acceso público al código fuente para quienes
deseen ver los desarrollos más recientes y
colaborar en el testeo de código nuevo.
48. 3. Descargar la distribución que se desea
instalar.
4. Instalar la distribución.
5. Realizar cualquier ajuste que sea necesario
con posterioridad a la instalación.
6. Si se desea ejecutar los scripts para medir el
rendimiento de MySQL, debe estar
disponible el soporte de Perl para MySQL.
49. COMPARACIONES
SQL
MySQL
Característica Server Notas
4.1
2000
OPINIONES SQL permiten a los administradores de
SQL VER apoyo bases de datos abstractos diseños fuera de los
desarrolladores.
Provoca la falta de desarrolladores de MySQL hace
Triggers
agregar lógica a su extremo delantero y el nivel medio,
Disparadores
cuando la lógica debería ir en la base de datos.
Procedimientos Los procedimientos almacenados son los mecanismos
almacenados de abstracción y la seguridad
Funciones Funciones definidas por el usuario (UDF) permiten la
definidas por el encapsulación de código complejo en simples interfaces
usuario exigible.
50. SQL
MySQL
Característica Server Notas
4.1
2000
La falta de apoyo en MySQL CURSOR aumenta el
Apoyo CURSOR tráfico de la red y reduce el tiempo de respuesta de
aplicaciones.
MySQL soporta utilizando una expresión regular como
SQL SELECCIONE
una cláusula de filtro en una consulta.
XML es un formato basado en estándares para los
Soporte XML
datos. MySQL no tiene soporte nativo para XML.
COMPLETA
MySQL no soporta COMPLETA INSCRIBETE
INSCRIBETE
MySQL 4.0 soporta integridad referencial (RI), siempre
Integridad referencial
y cuando el tipo de tabla InnoDB es elegido.
La instalación por defecto de MySQL no soporta
Soporta transacciones transacciones. Transacción requiere el apoyo de
InnoDB.
51. COMPARACIÓN CON POSTGRESQL
Las características positivas con respecto a
MySQL son:
• Posee una gran escalabilidad. Es capaz de
ajustarse al número de CPUs y a la cantidad de
memoria que posee el sistema de forma
óptima, haciéndole capaz de soportar una
mayor cantidad de peticiones simultáneas de
manera correcta.
52. • Implementa el uso de sub-consultas y
transacciones, haciendo su funcionamiento
mucho más eficaz, y ofreciendo soluciones en
campos en las que MySQL no podría.
• Tiene la capacidad de comprobar la integridad
referencial, así como también la de almacenar
procedimientos en la propia base de datos,
equiparándolo con los gestores de bases de
datos de alto nivel, como puede ser Oracle.
53. Por contra, los mayores inconvenientes que se
pueden encontrar a este gestor son:
• Consume gran cantidad de recursos.
• Tiene un límite de 8K por fila, aunque se
puede aumentar a 32K, con una disminución
considerable del rendimiento.
• Es de 2 a 3 veces más lento que MySQL.
54. COMPARACIÓN CON ORACLE
• Atomicidad: es posible construir bloques
de sentencias que se ejecutan todo o
nada Si y solo si, si usas tablas InnoDB (lo
cual haría a MySQL lento) MySQL solo
cumple esto si usa InnoDB.
55. • Consistencia: dentro de una transacción
se hace todo o nada, es decir no queda
en estado intermedio una transacción.
MySQL no deshace instrucciones DDL así
que si dentro de la transacción creas,
alteras o borras una tabla no se deshará.
56. • Aislamiento: básicamente que lo se
haces dentro de una transacción es
invisible a los demás usuarios antes de
terminar la transacción; con tablas
MyIsam eso no va a pasar. MySQL solo
cumple con esta condición si usa InnoDB.
57. • Durabilidad: garantiza que el servidor de
datos guarda las actualizaciones
pendientes de forma tal que pueda
recuperarse de una terminación brusca
tal como desenchufar la máquina.