Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MariaDB PDF
MariaDB PDF
MariaDB - Inicio
MariaDB - Introducción
MariaDB - Instalación
MariaDB - Administración
MariaDB - Sintaxis PHP
MariaDB - Conexión
MariaDB - Crear base de datos
MariaDB - Drop Database
MariaDB - Seleccionar base de datos
MariaDB - Tipos de datos
MariaDB - Crear tablas
MariaDB - Tablas desplegables
MariaDB - Insertar consulta
MariaDB - Seleccionar consulta
MariaDB - Donde cláusula
MariaDB - Consulta de actualización
MariaDB - Eliminar consulta
MariaDB - Cláusula Like
MariaDB - Ordenar por cláusula
MariaDB - Únete
MariaDB - Valores nulos
MariaDB - Expresión regular
MariaDB - Transacciones
MariaDB - Alter Command
Tablas de índices y estadísticas
MariaDB - Tablas temporales
MariaDB - Clonación de tablas
MariaDB - Secuencias
MariaDB - Gestión de duplicados
MariaDB - Protección de inyección SQL
MariaDB - Métodos de respaldo
MariaDB - Métodos de carga de respaldo
MariaDB - Funciones útiles
MariaDB - Introducción
Existe una aplicación de base de datos separada de la aplicación principal y
almacena colecciones de datos. Cada base de datos emplea una o varias API
para la creación, acceso, administración, búsqueda y replicación de los datos
que contiene.
Las bases de datos también usan fuentes de datos no relacionales, como
objetos o archivos. Sin embargo, las bases de datos son la mejor opción para
grandes conjuntos de datos, que sufrirían una recuperación y escritura lentas
con otras fuentes de datos.
Los sistemas de gestión de bases de datos relacionales, o RDBMS,
almacenan datos en varias tablas. Las relaciones entre estas tablas se
establecen utilizando claves primarias y claves externas.
RDBMS ofrece las siguientes características:
Le permiten implementar una fuente de datos con tablas, columnas e índices.
Aseguran la integridad de las referencias a través de filas de varias tablas.
Actualizan automáticamente los índices.
Interpretan las consultas y operaciones de SQL al manipular u obtener datos de
tablas.
Terminología RDBMS
Antes de comenzar nuestra discusión sobre MariaDB, revisemos algunos
términos relacionados con las bases de datos.
Base de datos : una base de datos es una fuente de datos que consta de tablas
que contienen datos relacionados.
Tabla : una tabla, que significa una hoja de cálculo, es una matriz que contiene
datos.
Columna : una columna, que significa elemento de datos, es una estructura que
contiene datos de un tipo; por ejemplo, fechas de envío.
Fila : una fila es una estructura que agrupa datos relacionados; por ejemplo, datos
para un cliente. También se conoce como tupla, entrada o registro.
Redundancia : este término se refiere al almacenamiento de datos dos veces
para acelerar el sistema.
Clave primaria : se refiere a un valor de identificación único. Este valor no puede
aparecer dos veces dentro de una tabla, y solo hay una fila asociada.
Clave externa : una clave externa sirve como enlace entre dos tablas.
Clave compuesta : una clave compuesta, o clave compuesta, es una clave que
se refiere a varias columnas. Se refiere a múltiples columnas debido a una
columna que carece de una calidad única.
Índice : un índice es prácticamente idéntico al índice de un libro.
Integridad referencial : este término se refiere a garantizar que todos los valores
de clave externa apunten a filas existentes.
MariaDB Database
MariaDB es una bifurcación popular de MySQL creada por los desarrolladores
originales de MySQL. Surgió de preocupaciones relacionadas con la
adquisición de MySQL por parte de Oracle. Ofrece soporte para pequeñas
tareas de procesamiento de datos y necesidades empresariales. Su objetivo
es ser un reemplazo directo para MySQL que requiere solo una simple
desinstalación de MySQL y una instalación de MariaDB. MariaDB ofrece las
mismas características de MySQL y mucho más.
Empezando
openSUSE
Arch Linux
Mageia
menta
Slackware
Siga estos pasos para instalar en un entorno Ubuntu:
Paso 1 : inicie sesión como usuario root.
Paso 2 : navega hasta el directorio que contiene el paquete MariaDB.
Paso 3 : importe la clave de firma de GnuPG con el siguiente código:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
0xcbcb082a1bb943db
Paso 4 : agrega MariaDB al archivo sources.list . Abra el archivo y agregue el
siguiente código:
sudo add-apt-repository 'deb
http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise
main'
Paso 5 : actualice el sistema con lo siguiente:
sudo apt-get update
Paso 6 - Instala MariaDB con lo siguiente:
sudo apt-get install mariadb-server
Instalando en Windows
Después de localizar y descargar un archivo de instalación automatizada
(MSI), simplemente haga doble clic en el archivo para comenzar la
instalación. El asistente de instalación lo guiará a través de cada paso de la
instalación y cualquier configuración necesaria.
Pruebe la instalación iniciándola desde el símbolo del sistema. Navegue a la
ubicación de la instalación, generalmente en el directorio, y escriba lo
siguiente en el indicador:
mysqld.exe --console
Si la instalación se realiza correctamente, verá mensajes relacionados con el
inicio. Si esto no aparece, puede tener problemas de permisos. Asegúrese de
que su cuenta de usuario pueda acceder a la aplicación. Los clientes gráficos
están disponibles para la administración de MariaDB en el entorno de
Windows. Si la línea de comando le resulta incómoda o engorrosa, asegúrese
de experimentar con ella.
Probar la instalación
Realice algunas tareas simples para confirmar el funcionamiento y la
instalación de MariaDB.
Use la utilidad de administración para obtener el estado del servidor
Ver la versión del servidor con el binario mysqladmin.
[root@host]# mysqladmin --version
Debe mostrar la versión, distribución, sistema operativo y arquitectura. Si no
ve el resultado de ese tipo, examine su instalación en busca de problemas.
Ejecutar comandos simples con un cliente
Abra el símbolo del sistema para MariaDB. Esto debería conectarlo con
MariaDB y permitir la ejecución de comandos. Ingrese un comando simple de
la siguiente manera:
mysql> SHOW DATABASES;
Posterior a la instalación
Después de la instalación exitosa de MariaDB, establezca una contraseña de
root. Una nueva instalación tendrá una contraseña en blanco. Ingrese lo
siguiente para establecer la nueva contraseña:
mysqladmin -u root password "[enter your password here]";
Ingrese lo siguiente para conectarse al servidor con sus nuevas credenciales:
mysql -u root -p
Enter password:*******
Actualización en Windows
Si ya tiene instalado MySQL en su sistema Windows y desea actualizar a
MariaDB; no desinstale MySQL e instale MariaDB. Esto causará un conflicto
con la base de datos existente. En su lugar, debe instalar MariaDB y luego
usar el asistente de actualización en el archivo de instalación de Windows.
Las opciones de su archivo MySQL my.cnf deberían funcionar con
MariaDB. Sin embargo, MariaDB tiene muchas características, que no se
encuentran en MySQL.
Considere los siguientes conflictos en su archivo my.cnf:
MariaDB usa el motor de almacenamiento Aria por defecto para archivos
temporales. Si tiene muchos archivos temporales, modifique el tamaño del búfer
de claves si no utiliza las tablas MyISAM.
Si sus aplicaciones se conectan / desconectan con frecuencia, modifique el
tamaño del caché de subprocesos.
Si usa más de 100 conexiones, use el grupo de subprocesos.
Compatibilidad
MariaDB - Administración
Antes de intentar ejecutar MariaDB, primero determine su estado actual,
ejecución o apagado. Hay tres opciones para iniciar y detener MariaDB:
El archivo de configuración
Después de una compilación en Unix / Linux, el archivo de configuración
"/etc/mysql/my.cnf" debe editarse para que aparezca de la siguiente manera:
# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.
# One can use all long options that the program supports.
# Run the program with --help to get a list of available
options
loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb
[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash
[myisamchk]
set-variable = key_buffer = 128M
Edite las líneas "data =" e "language =" para que coincida con su entorno.
Después de la modificación del archivo, navegue al directorio de origen y
ejecute lo siguiente:
./scripts/mysql_install_db --srcdir = $PWD --datadir =
/path/to/data/dir --
user = $LOGNAME
Omita la variable "$ PWD" si agregó datadir al archivo de
configuración. Asegúrese de utilizar "$ LOGNAME" cuando ejecute la versión
10.0.1 de MariaDB.
Comandos Administrativos
Revise la siguiente lista de comandos importantes que usará regularmente
cuando trabaje con MariaDB:
USE [nombre de la base de datos] : establece la base de datos predeterminada
actual.
MOSTRAR BASES DE DATOS : enumera las bases de datos actualmente en el
servidor.
MOSTRAR TABLAS : enumera todas las tablas no temporales.
MOSTRAR COLUMNAS DESDE [nombre de tabla] : proporciona información de
columna relativa a la tabla especificada.
SHOW INDEX FROM TABLENAME [nombre de tabla] : proporciona información
de índice de tabla relacionada con la tabla especificada.
SHOW TABLE STATUS LIKE [nombre de tabla] \ G - - Proporciona a las tablas
información sobre tablas no temporales, y el patrón que aparece después de la
cláusula LIKE se usa para buscar nombres de tablas.
<body>
<?php
$retval = mysql_function(value, [value,...]);
if( !$retval ) {
die ( "Error: Error message here" );
}
// MariaDB or PHP Statements
?>
</body>
</html>
En la siguiente sección, examinaremos las tareas esenciales de MariaDB,
utilizando las funciones de PHP.
MariaDB - Conexión
Una forma de establecer una conexión con MariaDB consiste en utilizar el
binario mysql en el símbolo del sistema.
MYSQL Binary
Revise un ejemplo a continuación.
[root@host]# mysql -u root -p
Enter password:******
El código anterior se conecta a MariaDB y proporciona un símbolo del sistema
para ejecutar comandos SQL. Después de ingresar el código, debe aparecer
un mensaje de bienvenida que indica una conexión exitosa, con el número de
versión mostrado.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 122323232
Server version: 5.5.40-MariaDB-log
Type 'help;' or '\h' for help. Type '\c' to clear the current
input statement.
mysql>
El ejemplo usa acceso de root, pero cualquier usuario con privilegios puede,
por supuesto, acceder al indicador de MariaDB y realizar operaciones.
Desconéctese de MariaDB a través del comando de salida de la siguiente
manera:
mysql> exit
Sintaxis
No Descripción de parámetros
Señor
1
servidor
Este parámetro opcional especifica el nombre de host que ejecuta el servidor de
base de datos. Su valor predeterminado es "localhost: .3036".
2
usuario
Este parámetro opcional especifica el nombre de usuario que accede a la base de
datos. Su valor predeterminado es el propietario del servidor.
3
passwd
Este parámetro opcional especifica la contraseña del usuario. Su valor
predeterminado es en blanco.
44
nuevo_enlace
Este parámetro opcional especifica que en una segunda llamada a mysql_connect
() con argumentos idénticos, en lugar de una nueva conexión, se devolverá el
identificador de la conexión actual.
55
banderas de clientes
Este parámetro opcional utiliza una combinación de los siguientes valores
constantes:
MYSQL_CLIENT_SSL: utiliza cifrado SSL.
MYSQL_CLIENT_COMPRESS: utiliza el protocolo de compresión.
MYSQL_CLIENT_IGNORE_SPACE: permite espacio después de los
nombres de las funciones.
MYSQL_CLIENT_INTERACTIVE: permite un tiempo de espera interactivo
de segundos de inactividad antes de cerrar la conexión.
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'guest1';
$dbpass = 'guest1a';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
binario mysqladmin
El siguiente ejemplo demuestra el uso del binario mysqladmin en la creación
de una base de datos con el nombre Productos :
[root@host]# mysqladmin -u root -p create PRODUCTS
Enter password:******
Sintaxis
1
sql
Este parámetro requerido consiste en la consulta SQL necesaria para realizar la
operación.
2
conexión
Cuando no se especifica, este parámetro opcional utiliza la conexión más reciente
utilizada.
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! $retval ) {
die('Could not create database: ' .
mysql_error());
}
binario mysqladmin
El siguiente ejemplo muestra cómo usar el binario mysqladmin para eliminar
una base de datos existente:
[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database
doesn't exist
Sintaxis
No Descripción de parámetros
Señor
1
sql
Este parámetro requerido consiste en la consulta SQL necesaria para realizar la
operación.
2
conexión
Cuando no se especifica, este parámetro opcional utiliza la conexión más
reciente utilizada.
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = 'DROP DATABASE PRODUCTS';
$retval = mysql_query( $sql, $conn );
if(! $retval ){
die('Could not delete database: ' .
mysql_error());
}
Enter password:******
Database changed
Sintaxis
1
db_name
Este parámetro requerido especifica el nombre de la base de datos a utilizar.
2
conexión
Cuando no se especifica, este parámetro opcional utiliza la conexión más reciente
utilizada.
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'guest1';
$dbpass = 'guest1a';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db( 'PRODUCTS' );
mysql_close($conn);
?>
</body>
</html>
En una selección exitosa, verá el siguiente resultado:
mysql> Connected successfully
MariaDB - Tipos de datos
Las buenas definiciones de campo son esenciales para la optimización de su
base de datos. El enfoque ideal requiere que use exclusivamente un campo
del tipo y tamaño necesarios. Por ejemplo, si solo usará un campo de cinco
caracteres de ancho, no defina un campo de 20 caracteres de ancho. Los
tipos de campo (o columna) también se conocen como tipos de datos dados
los tipos de datos almacenados dentro del campo.
Los tipos de datos de MariaDB se pueden clasificar como numéricos, de fecha
y hora y valores de cadena.
String DataTypes
Los valores de tipo de cadena admitidos por MariaDB son los siguientes:
Literales de cadena : este tipo de datos representa secuencias de caracteres
entre comillas.
CHAR : este tipo de datos representa una cadena de longitud fija y rellena a la
derecha que contiene espacios de longitud especificada. M representa la longitud
de la columna de caracteres en un rango de 0 a 255, su valor predeterminado es
1.
VARCHAR : este tipo de datos representa una cadena de longitud variable, con un
rango M (longitud máxima de columna) de 0 a 65535.
BINARIO : este tipo de datos representa cadenas de bytes binarios, con M como
la longitud de la columna en bytes.
VARBINARIO : este tipo de datos representa cadenas de bytes binarios de
longitud variable, con M como longitud de columna.
TINYBLOB : este tipo de datos representa una columna de blob con una longitud
máxima de 255 (28 - 1) bytes. En el almacenamiento, cada uno usa un prefijo de
longitud de un byte que indica la cantidad de bytes en el valor.
BLOB : este tipo de datos representa una columna de blob con una longitud
máxima de 65.535 (216 - 1) bytes. En el almacenamiento, cada uno usa un prefijo
de longitud de dos bytes que indica la cantidad de bytes en el valor.
MEDIUMBLOB : este tipo de datos representa una columna de blob con una
longitud máxima de 16.777.215 (22 4 - 1) bytes. En el almacenamiento, cada uno
usa un prefijo de longitud de tres bytes que indica la cantidad de bytes en el valor.
LONGBLOB : este tipo de datos representa una columna de blob con una longitud
máxima de 4,294,967,295 (2 32 - 1) bytes. En el almacenamiento, cada uno usa un
prefijo de longitud de cuatro bytes que indica la cantidad de bytes en el valor.
TINYTEXT : este tipo de datos representa una columna de texto con una longitud
máxima de 255 (2 8 - 1) caracteres. En el almacenamiento, cada uno usa un
prefijo de longitud de un byte que indica la cantidad de bytes en el valor.
TEXTO : este tipo de datos representa una columna de texto con una longitud
máxima de 65.535 (2 16 - 1) caracteres. En el almacenamiento, cada uno usa un
prefijo de longitud de dos bytes que indica la cantidad de bytes en el valor.
MEDIO TEXTO : este tipo de datos representa una columna de texto con una
longitud máxima de 16.777.215 (2 24 - 1) caracteres. En el almacenamiento, cada
uno usa un prefijo de longitud de tres bytes que indica la cantidad de bytes en el
valor.
LONGTEXT : este tipo de datos representa una columna de texto con una longitud
máxima de 4,294,967,295 o 4 GB (2 32 - 1) caracteres. En el almacenamiento,
cada uno usa un prefijo de longitud de cuatro bytes que indica la cantidad de
bytes en el valor.
ENUM : este tipo de datos representa un objeto de cadena que tiene un solo valor
de una lista.
SET : este tipo de datos representa un objeto de cadena que tiene cero o más
valores de una lista, con un máximo de 64 miembros. Los valores SET se
presentan internamente como valores enteros.
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
if(! $retval ) {
die('Could not create table: ' . mysql_error());
}
echo "Table created successfully\n";
mysql_close($conn);
?>
</body>
</html>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
if(! $retval ) {
die('Could not delete table: ' . mysql_error());
}
echo "Table deleted successfully\n";
mysql_close($conn);
?>
</body>
</html>
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() ) {
$product_name = addslashes ($_POST['product_name']);
$product_manufacturer = addslashes
($_POST['product_name']);
} else {
$product_name = $_POST['product_name'];
$product_manufacturer =
$_POST['product_manufacturer'];
}
$ship_date = $_POST['ship_date'];
$sql = "INSERT INTO products_tbl ".
"(product_name,product_manufacturer, ship_date) ".
"VALUES"."('$product_name','$product_manufacturer','$ship_dat
e')";
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
mysql_free_result($retval);
echo "Fetched data successfully\n";
mysql_close($conn);
?>
Operador
=! =
><
> = <=
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
if(! $conn ) {
die(„Could not connect: „ . mysql_error());
}
mysql_select_db(„PRODUCTS‟);
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die(„Could not update data: „ . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! $retval ) {
die('Could not delete data: ' . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT product_id, product_name,
product_manufacturer, ship_date
FROM products_tbl WHERE product_manufacturer LIKE
"xyz%"';
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.product_id, a.product_manufacturer,
b.product_count
FROM products_tbl a, pcount_tbl b
WHERE a.product_manufacturer = b.product_manufacturer';
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
Operadores NULL
Los operadores de comparación estándar no se pueden usar con NULL (por
ejemplo, =,>,> =, <=, <o! =) Porque todas las comparaciones con un valor
NULL devuelven NULL, no verdadero o falso. Las comparaciones con NULL o
que posiblemente lo contengan deben usar el operador "<=>" (NULL-SAFE).
Otros operadores disponibles son -
IS NULL: prueba un valor NULL.
NO ES NULO: confirma la ausencia de un valor NULO.
ISNULL: devuelve un valor de 1 al descubrir un valor NULL y 0 en su ausencia.
COALESCE: devuelve el primer valor no NULL de una lista, o devuelve un valor
NULL en ausencia de uno.
Funciones NULL
Las funciones generalmente generan NULL cuando cualquier parámetro es
NULL. Sin embargo, hay funciones específicamente diseñadas para
administrar valores NULL. Ellos son
IFNULL () : si la primera expresión no es NULL, la devuelve. Cuando se evalúa
como NULL, devuelve la segunda expresión.
NULLIF () : devuelve NULL cuando las expresiones comparadas son iguales; de lo
contrario, devuelve la primera expresión.
Funciones como SUM y AVG ignoran los valores NULL.
1
^
Coincide con el inicio de la cadena.
2
PS
Coincide con el final de la cuerda.
3
.
Coincide con un solo personaje.
44
[...]
Coincide con cualquier personaje entre paréntesis.
55
[^ ...]
Coincide con cualquier personaje que no esté entre paréntesis.
66
p1 | p2 | p3
Coincide con cualquiera de los patrones.
77
**
Coincide con 0 o más instancias del elemento anterior.
8
+
Coincide con 1 o más instancias del elemento anterior.
99
{norte}
Coincide con n instancias del elemento anterior.
10
{Minnesota}
Coincide con instancias mn del elemento anterior.
Crear un índice
Puede crear un índice a través de una instrucción CREATE TABLE ... INDEX
o una instrucción CREATE INDEX. La mejor opción que admite legibilidad,
mantenimiento y mejores prácticas es CREATE INDEX.
Revise la sintaxis general del índice que figura a continuación:
CREATE [UNIQUE or FULLTEXT or...] INDEX index_name ON
table_name column;
Revise un ejemplo de su uso:
CREATE UNIQUE INDEX top_sellers ON products_tbl product;
Soltar un índice
Puede soltar un índice con DROP INDEX o ALTER TABLE ... DROP. La mejor
opción que admite legibilidad, mantenimiento y mejores prácticas es DROP
INDEX.
Revise la sintaxis general del índice de caída que figura a continuación:
DROP INDEX index_name ON table_name;
Revise un ejemplo de su uso:
DROP INDEX top_sellers ON product_tbl;
Renombrar un índice
Cambie el nombre de un índice con la instrucción ALTER TABLE. Revise su
sintaxis general dada a continuación:
ALTER TABLE table_name DROP INDEX index_name, ADD INDEX
new_index_name;
Revise un ejemplo de su uso:
ALTER TABLE products_tbl DROP INDEX top_sellers, ADD INDEX
top_2016sellers;
Gestionar índices
Deberá examinar y rastrear todos los índices. Use SHOW INDEX para
enumerar todos los índices existentes asociados con una tabla dada. Puede
establecer el formato del contenido que se muestra mediante el uso de una
opción como "\ G", que especifica un formato vertical.
Revise el siguiente ejemplo:
mysql > SHOW INDEX FROM products_tbl\G
Estadísticas de tabla
Los índices se utilizan en gran medida para optimizar las consultas dado el
acceso más rápido a los registros y las estadísticas proporcionadas. Sin
embargo, muchos usuarios encuentran engorroso el mantenimiento del
índice. MariaDB 10.0 puso a disposición tablas de estadísticas independientes
del motor de almacenamiento, que calculan estadísticas de datos para cada
tabla en cada motor de almacenamiento, e incluso estadísticas para columnas
que no están indexadas.
Administración
MariaDB requiere otorgar privilegios a los usuarios para crear tablas
temporales. Utilice una declaración GRANT para otorgar este privilegio a
usuarios que no sean administradores.
GRANT CREATE TEMPORARY TABLES ON orders TO
'machine122'@'localhost';
SELECT
product_id,product_name,product_manufacturer,ship_date,
FROM inventory_tbl;
Otro método para crear un duplicado utiliza una instrucción CREATE TABLE
AS. La declaración copia todas las columnas, definiciones de columna y
completa la copia con los datos de la tabla de origen.
Revise su sintaxis a continuación:
CREATE TABLE clone_tbl AS
SELECT columns
FROM original_tbl
WHERE conditions];
Revise un ejemplo de su uso a continuación:
CREATE TABLE products_copy_tbl AS
SELECT *
FROM products_tbl;
MariaDB - Secuencias
En la versión 10.0.3, MariaDB introdujo un motor de almacenamiento conocido
como secuencia. Su ad hoc genera una secuencia de números enteros para
las operaciones, y luego termina. La secuencia contiene enteros positivos en
orden descendente o ascendente, y utiliza un valor inicial, final e incremental.
No permite su uso en múltiples consultas, solo en su consulta original debido a
su naturaleza virtual (no escrita en el disco). Sin embargo, las tablas de
secuencia se pueden convertir en tablas estándar mediante un comando
ALTER. Si se elimina una tabla convertida, la tabla de secuencia aún
existe. Las secuencias tampoco pueden producir números negativos o rotar al
mínimo / máximo.
Creando secuencia
Hay dos métodos de creación de secuencias:
Cree una tabla y use el atributo AUTO_INCREMENT para definir una columna
como incremento automático.
Use una base de datos existente y use una consulta SELECT de secuencia para
producir una secuencia. La consulta utiliza seq_ [FROM] _to_ [TO] o seq_ [FROM]
_to_ [TO] _step_STEP sintaxis.
Las mejores prácticas prefieren el uso del segundo método. Revise un ejemplo
de una creación de secuencia a continuación:
SELECT * FROM seq_77_to_99;
Las secuencias tienen muchos usos:
Localice los valores faltantes dentro de una columna para protegerse contra
problemas relacionados en las operaciones:
SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t
ON myseq.seq
= x.y WHERE x.y IS NULL;
Construir una combinación de valores:
SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2
ORDER BY 5, 6;
Encuentra múltiplos de un número:
SELECT seq FROM seq_3_to_100_step_4;
Construya una secuencia de fechas para usar en aplicaciones como los sistemas
de reserva.
Construir una secuencia de tiempo.
Simplemente realice una semiunión como una unión interna y luego elimine
los duplicados encontrados con una tabla temporal.
Usando INSERT
Cuando INSERT ... ON DUPLICATE KEY UPDATE descubre una clave única
o primaria duplicada, realiza una actualización. Al descubrir varias claves
únicas, actualiza solo la primera. Por lo tanto, no lo use en tablas con múltiples
índices únicos.
Revise el siguiente ejemplo, que revela lo que sucede en una tabla que
contiene valores indexados en la inserción en un campo poblado:
INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
Nota : si no encuentra ninguna clave, una instrucción INSERT ... ON
DUPLICATE KEY UPDATE se ejecuta como una instrucción de inserción
normal.
Usando DISTINCT
Las cláusulas DISTINCT eliminan duplicados de los resultados. La sintaxis
general para una cláusula DISTINCT es la siguiente:
SELECT DISTINCT fields
FROM table
[WHERE conditions];
Nota - Los resultados de una declaración con una cláusula DISTINCT -
Cuando se usa una expresión, devuelve valores únicos para ella.
Cuando se usan múltiples expresiones, devuelve combinaciones únicas.
No ignora los valores NULL; por lo tanto, los resultados también contienen NULL
como valores únicos.
Revise la siguiente declaración utilizando una cláusula DISTINCT para una
sola expresión:
SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';
Revise el siguiente ejemplo usando múltiples expresiones:
SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30
OPCIONES
Herramientas de respaldo
La herramienta principal utilizada para las copias de seguridad de MariaDB
es mysqldump . Ofrece copias de seguridad lógicas y flexibilidad. También es
una excelente opción para bases de datos pequeñas. Mysqldump
volca datos en SQL, CSV, XML y muchos otros formatos. Su salida no retiene
procedimientos almacenados, vistas y eventos sin instrucciones explícitas.
Hay tres opciones para las copias de seguridad de mysqldump :
Datos sin procesar : volcar una tabla como un archivo de datos sin procesar a
través de la opción --tab, que también especifica el destino del archivo -
$ mysqldump -u root -p --no-create-info \
--tab=/tmp PRODUCTS products_tbl
Exportación de datos / definiciones : esta opción permite exportar una o varias
tablas a un archivo y admite la copia de seguridad de todas las bases de datos
existentes en la máquina host. Examine un ejemplo de exportación de contenidos
o definiciones a un archivo
$ mysqldump -u root -p PRODUCTS products_tbl >
export_file.txt
Transferencia : también puede enviar bases de datos y tablas a otro host
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
Otras herramientas
Otras opciones para copias de seguridad son las siguientes:
XtraBackup : esta opción se dirige a las bases de datos XtraDB / InnoDB y
funciona con cualquier motor de almacenamiento. Obtenga más información
sobre esta herramienta en el sitio oficial de Percona.
Instantáneas : algunos sistemas de archivos permiten instantáneas. El proceso
consiste en enjuagar las tablas con bloqueo de lectura, montar la instantánea,
desbloquear las tablas, copiar la instantánea y luego desmontar la instantánea.
LVM : este método popular emplea un script Perl. Obtiene un bloqueo de lectura
en cada tabla y vacía las cachés en el disco. Luego obtiene una instantánea y
desbloquea las tablas. Consulte el sitio web oficial mylvmbackup para obtener
más información.
TokuBackup : esta solución proporcionada por Percona proporciona copias de
seguridad en caliente teniendo en cuenta los problemas y limitaciones de las
opciones de copia de seguridad de InnoDB. Produce una copia de sonido
transaccional de los archivos mientras las aplicaciones continúan manipulándolos.
Consulte el sitio web de Percona para obtener más información.
Consideraciones INNODB
Usando MYSQLIMPORT
La herramienta mysqlimport actúa como un contenedor LOAD DATA que
permite las mismas operaciones desde la línea de comandos.
Cargue los datos de la siguiente manera:
$ mysqlimport -u root -p --local database_name
source_file.txt
Especifique el formato de la siguiente manera:
$ mysqlimport -u root -p --local --fields-terminated-by="|" \
--lines-terminated-by="\n" database_name source_file.txt
Use la opción - columnas para especificar el orden de las columnas -
$ mysqlimport -u root -p --local --columns=c,b,a \
database_name source_file.txt
Usando MYSQLDUMP
Restaurar con mysqldump requiere esta simple declaración para volver a
cargar el archivo de volcado en el host:
shell> mysql database_name < source_file.sql
No Nombre y descripción
Señor
1
CONTAR
Cuenta el número de registros.
Ejemplo : SELECT COUNT (*) FROM customer_table;
2
MIN
Revela el valor mínimo de un conjunto de registros.
Ejemplo : SELECCIONAR organización, MIN (cuenta) DESDE contratos GRUPO
POR organización;
3
MAX
Revela el valor máximo de un conjunto de registros.
Ejemplo : SELECCIONAR organización, MAX (cuenta_tamaño) DESDE
contratos GRUPO POR organización;
44
AVG
Calcula el valor promedio de un conjunto de registros.
Ejemplo : SELECCIONE AVG (account_size) FROM contratos;
55
SUMA
Calcula la suma de un conjunto de registros.
Ejemplo : SELECCIONAR SUMA (cuenta_tamaño) DE contratos;
No Nombre y descripción
Señor
1
CURDATE ()
Devuelve la fecha en formato aaaa-mm-dd o aaaammdd.
Ejemplo : SELECCIONAR CURDATE ();
2
FECHA()
Devuelve la fecha en múltiples formatos.
Ejemplo −CREATE TABLE product_release_tbl (x DATE);
3
CURTIME ()
Devuelve la hora en formato HH: MM: SS o HHMMSS.uuuuuu.
Ejemplo : SELECCIONAR CURTIME ();
44
DATE_SUB ()
Agrega o resta un número de días desde la fecha especificada.
Ejemplo : SELECT DATE_SUB ('2016-02-08', INTERVAL 60 DAY);
55
DATEDIFF ()
Determina los días entre dos fechas.
Ejemplo : SELECT DATEDIFF ('2016-01-01 23:59:59', '2016-01-03');
66
FECHA AGREGAR ()
Agrega o resta cualquier unidad de tiempo a / desde la fecha y la hora.
Ejemplo : SELECT DATE_ADD ('2016-01-04 23:59:59', INTERVAL 22
SECOND);
77
EXTRAER()
Extrae una unidad de la fecha.
Ejemplo : SELECCIONE EXTRACTO (AÑO DE '2016-01-08');
8
AHORA()
Devuelve la fecha y hora actuales en formato aaaa-mm-dd hh: mm: ss o
aaaammddhhmmss.uuuuuu.
Ejemplo : SELECCIONAR AHORA ();
99
FORMATO DE FECHA()
Formatea la fecha de acuerdo con la cadena de formato especificada.
Ejemplo : SELECT DATE_FORMAT ('2016-01-09 20:20:00', '% W% M% Y');
No Nombre y descripción
Señor
1
HORA()
Devuelve la hora del tiempo o las horas transcurridas.
Ejemplo : SELECCIONAR HORA ('19: 17: 09 ');
2
HORA LOCAL()
Funciona exactamente como NOW ().
3
MICROSEGUNDO()
Devuelve los microsegundos de la época.
Ejemplo : SELECCIONAR MICROSECOND ('16: 30: 00.543876 ');
44
MINUTO()
Devuelve los minutos del tiempo.
Ejemplo : SELECCIONAR MINUTO ('2016-05-22 17:22:01');
55
SEGUNDO()
Devuelve los segundos de la fecha.
Ejemplo : SELECCIONAR SEGUNDO ('2016-03-12 16: 30: 04.000001');
66
FORMATO DE TIEMPO()
Formatea el tiempo de acuerdo con la cadena de formato especificada.
Ejemplo : SELECT TIME_FORMAT ('22: 02: 20 ','% H% k% h% I% l ');
77
TIMESTAMP ()
Proporciona una marca de tiempo para una actividad en el formato aaaa-mm-dd
hh: mm: dd.
Ejemplo : CREATE TABLE orders_ (ID INT, tmst TIMESTAMP);
1
TRUNCAR()
Devuelve un número truncado a la especificación de lugar decimal.
Ejemplo : SELECCIONE TRUNCADO (101.222, 1);
2
COS ()
Devuelve el coseno de x radianes.
Ejemplo : SELECT COS (PI ());
3
TECHO()
Devuelve el entero más pequeño que no está debajo de x.
Ejemplo : SELECCIÓN DE TECHO (2.11);
44
GRADOS ()
Convierte radianes a grados.
Ejemplo : SELECCIONAR GRADOS (PI ());
55
DIV ()
Realiza división entera.
Ejemplo : SELECCIONE 100 DIV 4;
66
EXP()
Devuelve e al poder de x.
Ejemplo : SELECT EXP (2);
77
PISO()
Devuelve el entero más grande que no está por encima de x.
Ejemplo : SELECCIONAR PISO (2.01);
8
LN ()
Devuelve el logaritmo natural de x.
Ejemplo : SELECT LN (3);
99
INICIAR SESIÓN()
Devuelve el logaritmo natural o el logaritmo a una base dada.
Ejemplo : SELECCIONAR REGISTRO (3);
10
SQRT ()
Devuelve la raíz cuadrada.
Ejemplo : SELECT SQRT (16);
Funciones de cadena MariaDB
Las funciones de cadena importantes se dan a continuación:
No Nombre y descripción
Señor
1
INSTR ()
Devuelve la posición de la primera instancia de una subcadena.
Ejemplo : SELECT INSTR ('rambutan', 'tan');
2
DERECHA()
Devuelve los caracteres de cadena más a la derecha.
Ejemplo : SELECCIONAR A LA DERECHA ('rambután', 3);
3
LONGITUD()
Devuelve la longitud de bytes de una cadena.
Ejemplo : SELECCIONAR LONGITUD ('rambután');
44
LOCALIZAR()
Devuelve la posición de la primera instancia de una subcadena.
Ejemplo : SELECT LOCATE ('tan', 'rambutan');
55
INSERTAR()
Devuelve una cadena, con una subcadena especificada en una posición
determinada, que se modificó.
Ejemplo : SELECT INSERT ('ramputan', 4, 1, 'b');
66
IZQUIERDA()
Devuelve los caracteres más a la izquierda.
Ejemplo : SELECCIONAR A LA IZQUIERDA ('rambután', 3);
77
SUPERIOR()
Cambia los caracteres a mayúsculas.
Ejemplo : SELECCIONAR SUPERIOR (apellido);
8
INFERIOR()
Cambia los caracteres a minúsculas.
Ejemplo : SELECCIONAR INFERIOR (apellido);
99
STRCMP ()
Compara cadenas y devuelve 0 cuando son iguales.
Ejemplo : SELECT STRCMP ('huevo', 'queso');
10
REEMPLAZAR()
Devuelve una cadena después de reemplazar los caracteres.
Ejemplo : SELECCIONAR REEMPLAZAR ('sully', 'l', 'n');
11
MARCHA ATRÁS()
Invierte los caracteres en una cadena.
Ejemplo : SELECCIONAR REVERSA ('auto de carrera');
12
REPETIR()
Devuelve una cadena que repite caracteres dados x veces.
Ejemplo : SELECT REPEAT ('ha', 10);
13
SUBSTRING ()
Devuelve una subcadena de una cadena, comenzando en la posición x.
Ejemplo : SELECCIONAR SUBSTRING ('rambutan', 3);
14
PODAR()
Elimina los caracteres finales / iniciales de una cadena.
Ejemplo : SELECCIONAR RECORTAR (LEADING '_' FROM '_rambutan');