¿Que es Mysql?
MySQL es un sistema de gestión de base de datos relacional (RDBMS) de código abierto, basado en lenguaje de consulta estructurado (SQL).
MySQL se ejecuta en prácticamente todas las plataformas, incluyendo Linux, UNIX y Windows. A pesar de que se puede utilizar en una amplia gama de aplicaciones, MySQL se asocia más con las aplicaciones basadas en la web y la publicación en línea y es un componente importante de una pila empresarial de código abierto llamado LAMP. LAMP es una plataforma de desarrollo web que utiliza Linux como sistema operativo, Apache como servidor web, MySQL como sistema de gestión de base de datos relacional y PHP como lenguaje de programación orientado a objetos (a veces, Perl o Python se utiliza en lugar de PHP).
MySQL, que fue concebido originalmente por la compañía sueca MySQL AB, fue adquirida por Oracle en 2008. Los desarrolladores todavía pueden usar MySQL bajo la Licencia Pública General de GNU (GPL), pero las empresas deben obtener una licencia comercial de Oracle.
Los vástagos de MySQL se llaman derivados (forks). Ellos incluyen:
Drizzle – un sistema de gestión de base de datos ligero de código abierto en el desarrollo basado en MySQL 6.0.
MariaDB – un reemplazo popular «drop-in» desarrollado en la comunidad para MySQL que utiliza las API y los comandos de MySQL.
Percona Server con XtraDB – una versión mejorada de MySQL conocido por su escalabilidad horizontal.
Caracteristicas de Mysql
La siguiente lista describe algunas de las características más 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 fácilmente multiple CPUs si están disponibles.
- Proporciona sistemas de almacenamiento transaccionales y no transaccionales.
- Usa tablas en disco B-tree (
MyISAM
) muy rápidas con compresión de índice. - Relativamente sencillo de añadir otro sistema de almacenamiento. Esto es útil si desea añadir una interfaz SQL para una base de datos propia.
- Un sistema de reserva de memoria muy rápido basado en threads.
- Joins muy rápidos usando un multi-join de un paso optimizado.
- Tablas hash en memoria, que son usadas como tablas temporales.
- Las funciones SQL están implementadas usando una librería altamente optimizada y deben ser tan rápidas como sea posible. Normalmente no hay reserva de memoria tras toda la inicialización para consultas.
- El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como con Valgrind, una herramienta GPL (http://developer.kde.org/~sewardj/).
- El servidor está disponible como un programa separado para usar en un entorno de red cliente/servidor. También está disponible como biblioteca y puede ser incrustado (linkado) en aplicaciones autónomas. 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.
- Diversos tipos de columnas: enteros con/sin signo de 1, 2, 3, 4, y 8 bytes de longitud,
- Sentencias y funciones
- Soporte completo para operadores y funciones en las cláusulas de consultas
SELECT
yWHERE
. Por ejemplo:mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30;
- Soporte completo para las cláusulas SQL
GROUP BY
yORDER BY
. Soporte de funciones de agrupación (COUNT()
,COUNT(DISTINCT ...)
,AVG()
,STD()
,SUM()
,MAX()
,MIN()
, yGROUP_CONCAT()
). - Soporte para
LEFT OUTER JOIN
yRIGHT OUTER JOIN
cumpliendo estándares de sintaxis SQL y ODBC. - Soporte para alias en tablas y columnas como lo requiere el estándar SQL.
DELETE
,INSERT
,REPLACE
, yUPDATE
devuelven el número de filas que han cambiado (han sido afectadas). Es posible devolver el número de filas que serían afectadas usando un flag al conectar con el servidor.- El comando específico de MySQL
SHOW
puede usarse para obtener información acerca de la base de datos, el motor de base de datos, tablas e índices. El comandoEXPLAIN
puede usarse para determinar cómo el optimizador resuelve una consulta. - Los nombres de funciones no colisionan con los nombres de tabla o columna. Por ejemplo,
ABS
es un nombre válido de columna. La única restricción es que para una llamada a una función, no se permiten espacios entre el nombre de función y el ‘(
‘ a continuación. - Puede mezclar tablas de distintas bases de datos en la misma consulta (como en MySQL 3.22).
- Soporte completo para operadores y funciones en las cláusulas de consultas
-
Seguridad
- Un sistema de privilegios y contraseñas que es muy flexible y seguro, y que permite verficación basada en el host. Las contraseñas son seguras porque todo el tráfico de contraseñas está encriptado cuando se conecta con un servidor.
-
Escalabilidad y límites
- Soporte a grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. También conocemos a usuarios que usan MySQL Server con 60.000 tablas y cerca de 5.000.000.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 máximo ancho de límite son 1000 bytes (500 antes de MySQL 4.1.2).Un índice puede usar prefijos de una columna para los tipos de columna
CHAR
,VARCHAR
,BLOB
, oTEXT
.
-
Conectividad
- Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. En Windows de la familia NT (NT,2000,XP, o 2003), los clientes pueden usar named pipes para la conexión. Por otro lado en 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 opción
--shared-memory
. Los clientes pueden conectar a través de memoria compartida usando la opción--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 código fuente de MyODBC está disponible. Todas las funciones para ODBC 2.5 están 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 código fuente para el conector J está disponible.
-
Localización
- El servidor puede proporcionar mensajes de error a los clientes en muchos idomas.
- Soporte completo para distintos conjuntos de caracteres, incluyendo
latin1
(ISO-8859-1),german
,big5
,ujis
, y más. Por ejemplo, los caracteres escandinavos ‘â
‘, ‘ä
‘ y ‘ö
‘ están permitidos en nombres de tablas y columnas. El soporte para Unicode está disponible - Todos los datos se guardan en el conjunto de caracteres elegido. Todas las comparaciones para columnas normales de cadenas de caracteres son case-insensitive.
- La ordenación se realiza acorde al conjunto de caracteres elegido (usando colación Sueca por defecto). Es posible cambiarla cuando arranca el servidor MySQL. Para ver un ejemplo de ordenación muy avanzada, consulte el código Checo de ordenación. MySQL Server soporta diferentes conjuntos de caracteres que deben ser especificados en tiempo de compilación y de ejecución.
-
Clientes y herramientas
- MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Estos comandos están disponibles a través de la línea de comandos y el cliente mysqlcheck. MySQL también incluye myisamchk, una utilidad de línea de comandos muy rápida para efectuar estas operaciones en tablas
MyISAM
. - Todos los programas MySQL pueden invocarse con las opciones
--help
o-?
para obtener asistencia en línea.
- MySQL server tiene soporte para comandos SQL para chequear, optimizar, y reparar tablas. Estos comandos están disponibles a través de la línea de comandos y el cliente mysqlcheck. MySQL también incluye myisamchk, una utilidad de línea de comandos muy rápida para efectuar estas operaciones en tablas
Asignar select a variable en mysql
Cuando se trabaja con procedimientos almacenados, a veces es sumamente necesario, trabajar con variables, y asignar a este, el resultado de una consulta. Esta seria un de las formas de…
Forzar Vaciar tabla (truncate table) que tiene claves externas
En ocaciones necesitamos vaciar tablas en Mysql que están relacionadas con otras, pero el gestor no te permite. Para solucionarlo, podemos desactivar momentáneamente la comprobación de las claves externas, vaciar…