====== Comandos Básicos - Listas y Parámetros ====== ==== Arranque de los servidores. ==== **Servidor Linux:**\\ * safe_mysqld –user=mysqladm & -root & **Servidor Windows:**\\ * Mysqld **Arranque como usuario:**\\ * mysql –u usuario –p clave **En el caso en el que el servidor no se encuentre en el ordenador que estamos trabajando la orden de uso será:**\\ * mysql –h nombre_host –u usuario –p clave \\ ---- ==== Consultas generales sobre las bases de datos ==== **Mostrar las bases de datos:**\\ * show databases; **Mostrar las bases de datos seleccionadas:**\\ * select databases(); **Mostrar las tablas que contiene una base de datos:**\\ * show tables; **Seleccionar una base de datos:**\\ * use nombre_base; **Describir la estructura de campos de una tabla:**\\ * describe nombre_tabla; \\ ---- ==== Creación de bases de datos, tablas y registros ==== **Crear una base de datos:**\\ * create database nombre_base; **Creación de una tabla:**\\ create [temporary] table [if no exists] nombre_tabla (nombre_campo tipo1 opciones2 cláusulas3,“,“,“,[último campo]); [temporary] --> la tabla existirá mientras exista la conexión con el cliente actual o hasta que se emita la instrucción **drop table**. [if no exist] --> si existe la tabla no se crea una nueva. \\ ---- == Las posibles opciones de tipo de campo son: == **tinyint** --> 1 byte\\ **smallint** --> 2 byte\\ **mediumint** --> 3 byte\\ **int** --> 4 byte\\ **bigint** --> 8 byte\\ **float** --> 4 byte\\ **double** --> 8 byte\\ **decimal** --> variable\\ **char(n)** --> cadena de caracteres de longitud fija\\ **varchar(n)** --> cadena de caracteres de longitud variables\\ **tinyblob** --> objeto binario largo (muy pequeño)\\ **blob** --> objeto binario largo (pequeño)\\ **mediumblob** --> objeto binario largo (medio)\\ **longblob** --> objeto binario largo (grande)\\ **tinytext** --> cadena de texto muy pequeña\\ **text** --> cadena de texto pequeña\\ **mediumtext** --> cadena de texto media\\ **longtext** --> cadena de texto larga\\ **enum** --> una enumeración\\ **set** --> un conjunto\\ **date** --> valor fecha (aaaa-mm-dd)\\ **time** --> valor de hora (hh-mm-ss)\\ **datetime** --> valor de fecha y hora\\ **timestamp** --> valor de lapso de tiempo (aaaammddhhmmss)\\ **year** --> valor de año\\ \\ ---- == Las posibilidades del apartado opciones son: == __//Generales://__ **null** --> admite valores nulos\\ **no null** --> rechaza dejar el campo en blanco\\ **default** --> permite establecer un valor por defecto\\ __//Columnas numéricas://__ **auto_increment** --> para generar identificadores únicos o valores en serie.\\ **unisgned** --> rechazo de valores negativos\\ __//Cadena://__ **binary** --> trata los valores como cadenas binarias (campos char y varchar)\\ \\ ---- == Cláusulas: == **primary key** --> columna indexada para búsqueda rápida. Clave principal, solo puede haber una. **unique** --> crea un índice con valores únicos\\ **index, key** --> son sinónimos y crean índices que pueden contener valores repetidos.\\ \\ ---- ==== Inserción de registros en una base de datos: ==== insert [low_priority | delayed][ignore][into] nombre_tabla forma_introducción1 I. **LOW_PRIORYTY | DELAYED**: la primera de las opciones hace que la inserción sea postergada hasta que ningún cliente utilice la tabla.\\La segunda genera una cola de introducción de registros, que se añadirán a la tabla cuando esta quede libre de usuarios.\\ II. **IGNORE**: se desechan las filas que duplican valores para claves únicas.\\ III. **INTO**: se requiere en versiones 3.22.5.\\ \\ ---- == Las formas de introducción son: == **(lista_columnas) VALUE (lista_valores_o_expresión)**\\ **(lista_columnas) SELECT (opción_de_recuperación)**\\ **SET (nombre_columna=expresion, ....)**\\ \\ ---- ==== Uso de una base de datos ==== Use database; \\ ---- == Consulta de una base de datos: == __//La forma general del comando de consulta es://__\\ select opciones1 lista2 cláusulas3;** \\ ---- == Tipos de opciones permitidas: == **all** --> provoca el regreso de todas las filas\\ **distinct, distinctrow** --> especifican que las líneas duplicadas deben ser eliminadas\\ **high_priority** --> da mayor prioridad a la instrucción en el caso de espera.\\ **sql_byg_result, sql_small_result** --> especifican que el conjunto de resultados será mas largo o más corto.\\ **straignt_join** --> fuerza a las tablas a unirse en el orden citado en la cláusula from\\ __//Lista//__--> especifica las columnas que deben devolverse, el símbolo “*” especifica que deben extraerse todas las columnas. La separación entre los diferentes nombres de columnas se hacen con el símbolo “,”.\\ __//Cláusulas//__ (en caso de haber varias cláusulas deben seguir el orden expuesto en la lista):\\ **Intro outfile ‘nombre_fichero’ opciones** --> el resultado de la consulta es transferido a un fichero, para lo cual debemos tener privilegio de crear el fichero y además este no debe existir. **Las opciones de importación son las siguientes:**\\ [fields [terminate by ‘cadena’]a [opcionally] [enclosed by ‘carácter’]b [escape by ‘carácter’]c] [lines terminated by ‘carácter’] d \\ * a)especifica el carácter o caracteres que delimitan valores dentro de la línea * b)especifica un carácter entrecomillado que se quita del final del campo de valores. * OPTIONALLY establece que los valores solamente se entrecomillan para las columnas char y varchar * c)Se utiliza para especificar el carácter de escape especial * d)Especifica un carácter o caracteres que determinan el final de la línea. \\ ---- == Los caracteres especiales son los siguientes: == **-\0** ascii 0\\ **-\b** retroceso\\ **-\n** línea nueva\\ **-\r** retorno de carro\\ **-\s** espacio\\ **-\t** tabulación\\ **-\’** comilla simple\\ **-\”** comilla doble\\ **-\\** barra inversa\\ **from tabla-tablas** --> especifica una o varias tablas desde las que se obtendrán las filas.\\ \\ ---- == Existen varias posibilidades de unión de tablas (mirar el capítulo anterior). == **where expresión** --> establece una expresión que se aplica a las filas seleccionadas.\\ **group by lista_columnas** --> agrupa filas del conjunto de resultados de acuerdo con las columnas citadas.\\ **having expresión** --> especifica una expresión secundaria para limitar filas después de satisfechas las condiciones expuestas en la cláusula where.\\ **order by entero_unsigne|nombrecoluma|fórmula** --> indica como se va a clasificar el conjunto de resultados.\\ Las posibilidades son:\\ \\ * **asc** – ascendente * **desc** – descendente * **rand()** – orden aleatorio **procedure nombre_procedimiento** --> indica un nombre de procedimiento al que serán enviados los datos antes de su salida. \\ ---- ==== Alteración de una tabla de datos y registros: ==== == Modificación de la estructura de las tablas:== Permite renombrar la tabla o variar la estructura de la tabla de datos. La sintaxis base es:\\ alter [ignore] table nombre1 lista_de_acción2 La cláusula **[ignore]** se utiliza si existen datos duplicados en los valores de las claves de los índices, de esta forma no se eliminaran una vez introducido el primero.\\ **(1) Nombre**: establece el nombre de la tabla sobre la que deseamos actuar.\\ **(2)Lista_de_acción**: establece una o varias acciones a realizar, las posibilidades son:\\ ADD INDEX [nombre _ índice][columna _ índice] Añade un índice a la tabla basado en la columna especificada. Si se especifican varias columnas deben ir separadas por comas.\\ ADD PRIMARY KEY [columna _ índice] Añade una clave principal siguiendo la columna establecida.\\ ADD UNIQUE [nombre _ índice][columna _ índice] Añade un índice de valor único a la tabla en función de la columna especificada.\\ ALTER [column] nombre _ columna (set default valor | drop default) Modifica el valor dado de una columna o reduce su valor predeterminado actual.\\ CHANGE [column] nombre _ columna declaración _ columna Cambia el nombre y la definición de una columna;\\ **nombre _ columna** -> nombre de la columna a modificar,\\ **declaración _ columna** -> es el valor de definición por el cual se debe regir la columna, sus opciones son las mismas que las señaladas para la creación de los campos de las tablas.\\ DROP [column] nombre _ columna Elimina la columna especificada.\\ DROP INDEX nombre_index Elimina el índice de la tabla.\\ DROP PRIMARY KEY Elimina la clave principal de la tabla. Si no existe clave principal y si índices con especificación **UNIQUE** se elimina el primero existente.\\ MODIFY [column] declaración _ columna Cambia la declaración de una columna.\\ RENAME [AS] nombre_tabla_nueva Cambia el nombre de la tabla.\\ \\ ---- == Borrado de registros: para borrar filas de una tabla se utiliza la expresión == delete [low_priory] from nombre_tabla [where expresión][limit n] **LOW_PRIORY**\\ Posterga la petición hasta que ningún usuario este utilizando la tabla.\\ **WHERE expresión**\\ Especifica una condición que deben cumplir los registros a borrar, si se omite en la petición se eliminan todos los registros de la tabla.\\ **LIMIT n**\\ Estable un número máximo de registros a borrar.\\ \\ ---- == Sustitución de registro: permite modificar registros existentes. == remplace (sigue la misma sintaxis que INSERT). La salvedad se refiere a los valores correspondientes a índices **unique**, si el valor existe en la tabla previamente a la inserción de la modificación se eliminara.\\ \\ ---- ==== Borrado de Bases, Tablas y Mitificación de Registros, Optimización ==== == Mitificación de registros en bloque: == Updates [low_priority] nombre_tabla set nombre_col=expresion, ....[whereexpresión_where][limit n] \\ ---- == Borrado de tablas: elimina una o varias tablas: == DROP TABLE [if exists] (lista_tablas_separadas_por_comas) \\ ---- == Borrado de una base de datos. Elimina la base de datos y todas las tablas que contiene. == DROP DATABASE [if exist] nombre_database \\ ---- == Optimización de Tablas, permite administrar el espacio asignado a cada tabla == OPTIMIZE TABLE nombre_tabla \\ ---- ==== Índices, creación, modificación y eliminación ==== Un índice corresponde a un método de ordenación de una o varias columnas que permite a los motores de búsqueda de bases de datos trabajar de forma eficiente y rápida.\\ Los índices se pueden crear al crear las tablas con la instrucción **create table** o bien con posterioridad a través del comando **alter table** o el comando: create [UNIQUE] index nombre _ índice ON nombre_tabla (columna _ índice) La eliminación de un índice se realiza por el comando: drop index nombre_index on nombre_tabla \\ ---- ==== Instrucciones para mostrar información ==== == Para mostrar las bases de datos disponibles: == show databases [like patrón _ búsqueda] \\ ---- == Para mostrar las tablas de una base de datos: == show tables [from nombre_base_datos][like patrón _ búsqueda] \\ ---- == Para mostrar información descriptiva de una tabla: == show table status [from nombre_base-datos][like patrón _ búsqueda] El resultado obtenido muestra:\\ * **Name**: nombre de la tabla. * **Tipe**: tipo de tablas * **Row format**: formato de almacenamiento de la fila * **Rows**: número de filas * **Avg_row_length**: promedio de bytes usados por las filas de la tabla * **Data_length**: tamaño actual en bytes de fichero de tabla * **Max_data_length**: tamaño máximo en bytes que puede alcanzar el archivo. * **Index_length**: tamaño actual en bytes del archivo de índice. * **Data_free**: número de bytes en el archivo de datos que no se utilizan. * **Auto_increment**: el siguiente valor generado por una columna con la propiedad. * **Create_time**: hora que se creo la tabla. * **Update_time**: hora de la última modificación. * **Check_time**: última vez que la tabla fue reparada o revisada. * **Create_options**: opciones adicionales especificadas. * **Comment**: comentarios aparecidos en la creación de la tabla. \\ ---- == Para mostrar las diferentes columnas de una tabla:== show columns from nombre_tabla [from nombre_base-datos][like patrón-búsqueda] El resultado de la petición muestra:\\ * **Field**: nombre de la columna. * **Type**: el tipo de columna. * **Null**: si la columna puede contener valores nulos. * **Key**: si la columna está indexada. * **Default**: el valor por defecto. * **Extra**: información extra de la columna. * **Privileges**: los privilegios de la columna. \\ ---- == Para mostrar los índices que contiene una tabla se utiliza las instrucciones: == show index from nombre_tabla show keys from nombre_tabla El resultado de la petición se muestra en: * **Table**: el nombre de la tabla que contiene el índice. * **Nom_unique**: 1 si puede contener valores duplicados. * **Key_name**: El nombre del índice. * **Seq_in_index**: el número de columnas en el índice. * **Column_name**: el nombre de la columna. * **Collation**: Orden de clasificación de la columna dentro del índice. * **Cardinality**: El número de valores únicos en el índice. * **Sub_part**: La longitud del prefijo. * **Packed**: si toda la clave está empaquetada. * **Comment**: Reservado para comentarios internos sobre los índices. \\ ---- == Las siguientes variantes de la orden show están relacionadas con la administración del entorno: == __//Información sobre usuarios://__\\ show grants for nombre_usuario __//Información sobre los procesos del servidor://__\\ show processlist __//La salida de la información se estructura en los campos://__\\ **Id**: el no id del hilo para el cliente: **User**: el nombre del cliente asociado al hilo. **Host**: el host desde el que se conecta. **Db**: la base de datos predeterminada para el hilo. **Command**: el comando que se ejecuta en el hilo. **Time**: el tiempo en segundos que utiliza el comando. **State**: Información de lo que hace Mysql mientras se ejecuta una instrucción SQL. **Info**: ejecuta la consulta. __//Información sobre las variables de estado del servidor://__\\ show status __//La información dada por el servidor es muy alta://__\\ **Aborted_clients**: número de conexiones de un cliente canceladas. **Aborted_connects**: número de intentos fallidos de conexión al servidores. **Connectios**: número de intentos realizados para conectarse al servidor. **Created_tmp_tables**: número de tablas temporales creadas mientras se procesan las consultas. **Delayed_errors**: no de errores ocurridos mientras se procesan filas insert delayed. **Delayed_insert_threads**: no de errores actuales del mensaje insert delayed. **Delayed_writes**: no de filas insert delayed introducidas. **Flush_commands**: no de columnas flush que se han ejecutado. **Hendler_delete**: no de solicitudes necesarias para suprimir una fila de una tabla. **Hendler_read_first**: no de solicitudes para leer la primera fila de la tabla. **Handler_read_key**: no de solicitudes para leer una fila basada en un valor de índice. **Handler_read_next**: no de solicitudes para leer la siguiente fila basada en un valor de índice. **Handler_read_md**: no de solicitudes para leer una fila basada en su posición. **Handler_update**: no de solicitudes para actualizar una fila. **Handler_write**: no de solicitudes para insertar una fila. **Key_blocks_use**: no de bloques en uso en la cache de índice. **Key_read_request**: no de solicitudes para leer un bloque desde la cache. **Key_reads**: no de lecturas físicas de los bloques de índice desde el disco. **Key_write_requests**: no de requisitos para escribir un bloque en la cache de índice. **Key_writes**: no de escrituras físicas de los bloques de índices de disco. **Max_used_connections**: no máximo de conexiones que se han abierto simultáneamente. **Not_flushed_delayed_rows**: no de filas a la espera de ser escritas por las consultas insert delayed. **Not_flushed_key_blocks**: no de bloques en la cache de clave que han sido modificados pero aun no han sido vaciados del disco. **Open_files**: no de archivos abiertos. **Open_streams**: no de flujos abiertos. **Open_tables**: no de tablas abiertas. **Opened_tables**: total de tablas que han sido abiertas. **Questions**: no de consultas que ha recibido el servidor. **Slow_queries**: no de consultas que tardan más segundos en ejecutarse que long_query_time. **Threads_connected**: no de conexiones abiertas en ese momento. **Threads_running**: no de hilos que están latentes. **Uptime**: Segundos desde que el servidor comenzó a ejecutarse. __//Para ver las variables en el servidor se utiliza la forma://__\\ show variables \\ ---- \\ [[:indice|Retorno a página principal]]\\ [[acemu:articulos:articulos_tecnicos:software:introduccion_a_las_bases_de_datos_con_mysql:comandos|Retorno a Página Anterior]]