Herramientas de usuario

Herramientas del sitio


bloque1:sql

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque1:sql [2021/10/21 22:35] – [Base de Datos de prueba] fernandobloque1:sql [2024/09/16 15:37] (actual) – editor externo 127.0.0.1
Línea 10: Línea 10:
  
 Es la sentencia utilizada para la creación de un objeto (base de datos, tabla, usuario, vista, procedimiento, . . .) en una Base de Datos. Es la sentencia utilizada para la creación de un objeto (base de datos, tabla, usuario, vista, procedimiento, . . .) en una Base de Datos.
 +           
 +Para crear una Base de Datos:
 +<code sql>          
 +CREATE DATABASE [IF NOT EXISTS] <nombre_base_de_datos>
 +</code>
                        
 La sintaxis para la creación de una tabla es la siguiente: La sintaxis para la creación de una tabla es la siguiente:
Línea 18: Línea 23:
    <nombre_columna2>  <tipo_dato>  <restricciones>,    <nombre_columna2>  <tipo_dato>  <restricciones>,
    ................................    ................................
 +)
 +
 +-- Ejemplo
 +CREATE TABLE asignaturas(
 +   id INT PRIMARY KEY,
 +   nombre VARCHAR(20),
 +   departamento VARCHAR(20),
 +   id_curso INT,
 +   FOREIGN KEY (id_curso) REFERENCES cursos(id)
 ); );
-</code> 
-Y para crear una Base de Datos: 
-<code sql>           
-CREATE DATABASE [IF NOT EXISTS] <nombre_base_de_datos>; 
-</code> 
  
 +
 +</code>
 ==== Eliminar un objeto: DROP ==== ==== Eliminar un objeto: DROP ====
  
Línea 49: Línea 60:
         [ DROP COLUMN <nombre_columna> ]         [ DROP COLUMN <nombre_columna> ]
         [ ADD CONSTRAINT <restriccion> ]         [ ADD CONSTRAINT <restriccion> ]
 +</code>
 +
 +
 +Ejemplos:
 +<code sql>
 +ALTER TABLE alumnos ADD PRIMARY KEY(id);
 +ALTER TABLE alumnos DROP PRIMARY KEY;
 +ALTER TABLE alumnos ADD FOREIGN KEY (id_curso) REFERENCES cursos(id);
 +ALTER TABLE alumnos DROP COLUMN nombre;
 +ALTER TABLE alumnos MODIFY nombre VARCHAR(30) NOT NULL;
 </code> </code>
  
Línea 93: Línea 114:
 === Tipos numéricos === === Tipos numéricos ===
  
-Para la representación de tipos de datos numéricos. Los tipos más utilizados son ''BIT'', ''TINYINT'', ''INT'', ''BIGINT'', ''FLOAT'' y ''REAL'', para la representación de números enteros de menor o mayor tamaño, y para números en coma flotante de menor o mayor precisión, respectivamente.+Para la representación de tipos de datos numéricos. Los tipos más utilizados son ''BIT'', ''TINYINT'', ''INT'', ''BIGINT'', ''FLOAT'' y ''DOUBLE'', para la representación de números enteros de menor o mayor tamaño, y para números en coma flotante de menor o mayor precisión, respectivamente.
                          
 En ocasiones el rango de los valores negativos resultará prescindible (claves numéricas, valores de dinero, cantidades, . . .) por lo que será posible ampliar el rango positivo de un tipo numérico añadiendo la restricción ''UNSIGNED'' tras definir el tipo de éste. En ocasiones el rango de los valores negativos resultará prescindible (claves numéricas, valores de dinero, cantidades, . . .) por lo que será posible ampliar el rango positivo de un tipo numérico añadiendo la restricción ''UNSIGNED'' tras definir el tipo de éste.
Línea 113: Línea 134:
 Permite almacenar valores lógicos Verdadero/Falso o Sí/No. ''boolean'' realmente se define la columna como del tipo ''TINYINT(1)'', que simplemente almacena los valores 0 y 1 para indicar los valores lógicos Verdadero y Falso, respectivamente. Así, podremos utilizar los valores ''TRUE'' ó ''FALSE'' o directamente asignar 1 ó 0 para asignar valor. Permite almacenar valores lógicos Verdadero/Falso o Sí/No. ''boolean'' realmente se define la columna como del tipo ''TINYINT(1)'', que simplemente almacena los valores 0 y 1 para indicar los valores lógicos Verdadero y Falso, respectivamente. Así, podremos utilizar los valores ''TRUE'' ó ''FALSE'' o directamente asignar 1 ó 0 para asignar valor.
  
-=== Restricciones ===+==== Restricciones ====
  
 Las restricciones se pueden establecer, o no, a las columnas de cada tabla para forzar a que los datos almacenados Las restricciones se pueden establecer, o no, a las columnas de cada tabla para forzar a que los datos almacenados
-en ellas cumplan una serie de condiciones, con la finalidad de que la información sea más correcta. Por ejemplo, podemos obligar a que un campo donde almacenamos el DNI de una persona tenga una longitud mínima, o bien un campo donde almacenamos la categoría de un equipo de fútbol, sólo pueda tomar unos determinados valores predefinidos (benjamín, juvenil, cadete, . . .) o bien podemos hacer que un campo no pueda repetirse, por tratarse de un valor único (DNI, NSS, teléfono, email, . . .).+en ellas cumplan una serie de condiciones, con la finalidad de que la información sea más correcta. Por ejemplo,        podemos obligar a que un campo donde almacenamos el DNI de una persona tenga una longitud mínima, o bien un        campo donde almacenamos la categoría de un equipo de fútbol, sólo pueda tomar unos determinados valores        predefinidos (benjamín, juvenil, cadete, . . .) o bien podemos hacer que un campo no pueda repetirse, por        tratarse de un valor único (DNI, NSS, teléfono, email, . . .).
  
-Hay que tener en cuenta que, por lo general, las restricciones se definen en línea con la definición del campo (tal y como se muestra en la sintaxis de la sentencia de ''CREATE TABLE'', pero de forma opcional también pueden ser definidas por separado justo debajo de la definición de todos los campos de la tabla.+Hay que tener en cuenta que, por lo general, las restricciones se definen en línea con la definición del campo        (tal y como se muestra en la sintaxis de la sentencia de ''CREATE TABLE'', pero de forma opcional también        pueden ser definidas por separado justo debajo de la definición de todos los campos de la tabla.
  
-== Clave primaria ==+=== Clave primaria ===
  
 Una clave primaria dentro de una tabla, es una columna o conjunto de columnas cuyo valor identifica            unívocamente a cada fila. Debe ser única, no nula y es obligatoria. Como máximo podremos definir una clave            primaria por tabla y es muy recomendable definirla. Una clave primaria dentro de una tabla, es una columna o conjunto de columnas cuyo valor identifica            unívocamente a cada fila. Debe ser única, no nula y es obligatoria. Como máximo podremos definir una clave            primaria por tabla y es muy recomendable definirla.
Línea 126: Línea 147:
 Para definir una clave primaria utilizamos la restricción ''PRIMARY KEY''. Para definir una clave primaria utilizamos la restricción ''PRIMARY KEY''.
 <code sql> <code sql>
-dni VARCHAR(9) PRIMARY KEY+CREATE TABLE personas( 
 +   dni VARCHAR(9) PRIMARY KEY
 +   ... 
 +);
 </code> </code>
 Y si lo hacemos al final de la definición de las columnas, quedaría así: Y si lo hacemos al final de la definición de las columnas, quedaría así:
 <code sql> <code sql>
-PRIMARY KEY (dni)+CREATE TABLE personas( 
 +   dni VARCHAR(9), 
 +   nombre VARCHAR(10), 
 +   PRIMARY KEY (dni) 
 +); 
 + 
 </code> </code>
  
 Hay que tener en cuenta que a la hora de definir claves primarias compuestas (la componen 2 ó más campos de            la tabla), ésta deberá ser definida forzosamente tras la definición de los campos involucrados, siguiendo            esta sintaxis Hay que tener en cuenta que a la hora de definir claves primarias compuestas (la componen 2 ó más campos de            la tabla), ésta deberá ser definida forzosamente tras la definición de los campos involucrados, siguiendo            esta sintaxis
 <code sql> <code sql>
-PRIMARY KEY (nombre, apellidos)+CREATE TABLE personas( 
 +   dni VARCHAR(9), 
 +   nombre VARCHAR(10), 
 +   apellidos VARCHAR(20), 
 +   PRIMARY KEY (nombre, apellidos) 
 +);
 </code> </code>
  
-== Autonumérico ==+=== Autonumérico ===
  
 Especialmente útil en el caso de aquellas columnas que se definan como claves primarias de cada tabla, resulta añadir la restricción de campo autonumérico, siempre y cuando ésta sea una columna de tipo entero. De esa manera será el SGBD el encargado de asignarle valor de forma automática, siempre asignando un valor entero de forma secuencial a medida que se van insertando las filas en dicha tabla. Especialmente útil en el caso de aquellas columnas que se definan como claves primarias de cada tabla, resulta añadir la restricción de campo autonumérico, siempre y cuando ésta sea una columna de tipo entero. De esa manera será el SGBD el encargado de asignarle valor de forma automática, siempre asignando un valor entero de forma secuencial a medida que se van insertando las filas en dicha tabla.
Línea 144: Línea 179:
 La forma de definirlo es añadiendo la restricción ''AUTO_INCREMENT'' en la definición de la columna que se ha definido como clave primaria: La forma de definirlo es añadiendo la restricción ''AUTO_INCREMENT'' en la definición de la columna que se ha definido como clave primaria:
 <code sql> <code sql>
-id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT+id INT PRIMARY KEY AUTO_INCREMENT
 </code> </code>
  
-== Clave ajena ==+=== Clave ajena ===
  
-Una clave ajena está formada por una o varias columnas que hacen referencia a una clave primaria de otra o de la misma tabla. Se pueden definir tantas claves ajenas como sea necesario (no hay límite). El valor de la columna o columnas que son clave ajena será NULL, o bien el valor de la clave primaria de la tabla a la que hacen referencia (integridad referencial). Así, a la hora de definir una clave ajena, deberemos indicar con la cláusula ''REFERENCES'' la tabla a que ésta hace referencia (se tomará automáticamente la clave            primaria de ésta como campo con el que mantener la integridad referencial).+Una clave ajena está formada por una o varias columnas que hacen referencia a una clave primaria de otra o de            la misma tabla. Se pueden definir tantas claves ajenas como sea necesario (no hay límite) en cada tabla. El valor de la            columna o columnas que son clave ajena será el valor de la clave primaria de la tabla a la que hacen referencia (integridad referencial). Así, a la hora de definir una clave ajena, deberemos indicar con la cláusula ''REFERENCES'' la tabla y el campo clave primaria la que ésta hace referencia .
  
-Habrá que tener en cuenta que mientras que un campo definido como clave ajena haga referencia a un campo            definido como clave primaria, la columna de la segunda tabla no podrá ser eliminada hasta que no lo haga la            columna que le hace referencia (integridad referencial). Para evitar estos problemas (aunque no siempre es            un problema) es posible definir la restricción de clave ajena añadiendo la cláusula ''ON DELETE'' o bien ''ON UPDATE'' para el caso de una actualización. De esa manera, cuando se vaya a eliminar o actualizar una fila a cuya clave primaria se haga referencia, podremos indicar a MySQL que operación queremos realizar con las filas que le hacen referencia: +Las claves ajenas se deben definir después de la definición de los campos de la tabla:
-  * **RESTRICT**: Se rechaza la operación de eliminación/actualización +
-  * **CASCADE**: Realiza la operación y se elimina o actualiza en cascada en las filas que hacen referencia +
-  * **SET NULL**Realiza la operación y fija a ''NULL'' el valor en las filas que hacen referencia +
-  * **NO ACTION**: Se rechaza la operación de eliminación/actualización, como ocurre con la opción ''RESTRICT''+
  
-A continuación, un par de ejemplos que definen claves ajenas con diferentes cláusulas: 
 <code sql> <code sql>
-FOREIGN KEY (id_cursoREFERENCES cursos (id+CREATE TABLE asignaturas( 
-FOREIGN KEY (id_curso) REFERENCES cursos (id) ON DELETE CASCADE+   id INT PRIMARY KEY AUTO_INCREMENT, 
 +   nombre VARCHAR(20)
 +   departamento VARCHAR(20), 
 +   id_curso INT, 
 +    
 +   FOREIGN KEY (id_curso) REFERENCES cursos (id) 
 +);
 </code> </code>
-Como ocurre con las claves primarias, si las claves ajenas son compuestas, se definen forzosamente al final de las definiciones de las columnas de la tabla, de la siguiente forma:+ 
 +El ejemplo anterior haría referencia a una definición de tabla como la siguiente:
 <code sql> <code sql>
-FOREIGN KEY (id_curso, id_aula) REFERENCES cursos +CREATE TABLE cursos( 
-FOREIGN KEY (id_cursoid_aulaREFERENCES cursos ON DELETE CASCADE+   id INT PRIMARY KEY AUTO_INCREMENT, 
 +   horario VARCHAR(20), 
 +   . . . 
 +)
 </code> </code>
  
-En cualquiera de los casos hay que tener en cuenta que habrá que definir primero el campo con el tipo de dato correcto (el mismo que dicho campo en la tabla donde aparece como clave principal) y luego la propia definición de dicho campo como clave ajena.+Si una tabla tiene diferentes claves ajenas, se definen del mismo modo: 
 +<code sql>
  
-== Definir claves ajenas en MySQL == +   id_curso INT, 
- +   id_profesor INT, 
-Para definir claves ajenas en MySQL habrá que tener en cuenta algunas consideraciones:+    
 +   FOREIGN KEY (id_curso) REFERENCES cursos (id), 
 +   FOREIGN KEY (id_curso) REFERENCES cursos (id) 
 +</code>
  
-  * La columna deberá ser del mismo tipo (y atributos) que la columna de la que es clave ajena +En caso que la clave ajena haga referencia a una clave primaria compuesta:
-  * La columna deberá ser un índice +
-  * Si la columna se define como obligatoria (''NOT NULL'') no podrá contener la claúsula (''SET NULL'') para los casos de borrado (''ON DELETE'') o actualización (''ON UPDATE''+
-  * Ambas tablas (la referenciada y la que hace referencia) deberán ser de tipo InnoDB. A partir de la versión 5.5 de MySQL es el motor de almacenamiento por defecto para cualquier tabla. En caso contrario es necesario indicar lo siguiente al final de la creación de la tabla:+
  
 <code sql> <code sql>
-CREATE TABLE tabla ( +FOREIGN KEY (id_curso, id_aula) REFERENCES cursos(id_curso, id_aula)
-  . . . +
-  . . . +
-ENGINE = Innodb;+
 </code> </code>
  
-Así, normalmente, en MySQL definiremos una clave ajena de la siguiente forma:+En cualquiera de los casos hay que tener en cuenta que habrá que definir primero el campo con el tipo de dato correcto (el mismo que dicho campo en la tabla donde aparece como clave principal) y luego la propia definición de dicho campo como clave ajena.
  
-<code sql> +Habrá que tener en cuenta que mientras que un campo definido como clave ajena haga referencia a un campo            definido como clave primariala columna de la segunda tabla no podrá ser eliminada hasta que no lo haga la            columna que le hace referencia (integridad referencial). Para evitar estos problemas (aunque no siempre es            un problemaes posible definir la restricción de clave ajena añadiendo la cláusula ''ON DELETE'' o bien ''ON UPDATE'' para el caso de una actualización. De esa manera, cuando se vaya a eliminar o actualizar una fila a cuya clave primaria se haga referencia, podremos indicar a MySQL que operación queremos realizar con las filas que le hacen referencia: 
-id_cliente INT UNSIGNED, + 
-INDEX (id_cliente)+  * **RESTRICT**: Se rechaza la operación de eliminación/actualización 
-FOREIGN KEY (id_cliente)  +  * **CASCADE**: Realiza la operación y se elimina o actualiza en cascada en las filas que hacen referencia 
-  REFERENCES Clientes (id)  +  * **SET NULL**: Realiza la operación y fija a ''NULL'' el valor en las filas que hacen referencia 
-  ON DELETE SET NULL ON UPDATE SET NULL, +  * **NO ACTION**: Se rechaza la operación de eliminación/actualización, como ocurre con la opción ''RESTRICT''
-</code>+
  
-En el caso anterior suponemos que la clave primaria a la cual se hace referencia está definida como sigue:+Si no especifico ningun tipo de acción, se tomará ''CASCADE'' por defecto para ambas operaciones (''UPDATE'' y ''DELETE'').
  
 <code sql> <code sql>
-    CREATE TABLE Clientes ( +-- No podré eliminar cursos si hay asignaturas referenciandolos: 
-        id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT+FOREIGN KEY (id_curso) REFERENCES cursos (id) ON DELETE RESTRICT 
-        . . . + 
-    );+-- Si modifico el valor de la clave primaria de un cursose actualiza la clave ajena 
 +-- Si elimino un curso, se pondrá a NULL el valor de la clave ajena de las asignaturas 
 +FOREIGN KEY (id_curso) REFERENCES cursos (idON UPDATE CASCADE ON DELETE SET NULL
 </code> </code>
  
-Actualmente, a partir de MySQL 8.0 (y versiones equivalentes de MariaDB) es suficiente definir el campo y la restricción de clave ajena para que el gestor haga el resto (definir dicho campo como índice). El caso anterior se podría reducir a:+== Consideraciones ==
  
-<code sql> +Para definir claves ajenas en MySQL habrá que tener en cuenta algunas consideraciones: 
-id_cliente INT UNSIGNED+ 
-FOREIGN KEY (id_cliente)  +  * Una columna clave ajena nunca podrá ser ''AUTO_INCREMENT''ya que rompería el propósito de la relación. 
-  REFERENCES Clientes (id)  +  * La columna deberá ser del mismo tipo (y atributosque la columna a la que se referencia. 
-  ON DELETE SET NULL ON UPDATE SET NULL, +  * La columna deberá ser un índice. A partir de Mysql 8 y versiones compatibles de MAriaDB, se hace automáticamente. 
-</code>+  * Si la columna se define como obligatoria (''NOT NULL'') no podrá contener la claúsula (''SET NULL'') para los casos de borrado (''ON DELETE'') o actualización (''ON UPDATE'').
  
-== Campos obligatorios ==+=== Campos obligatorios ===
  
 Esta restricción obliga a que se le tenga que dar valor obligatoriamente a una columna. Por tanto, no podrá            tener el valor NULL. Se utiliza la palabra reservada ''NOT NULL''. Esta restricción obliga a que se le tenga que dar valor obligatoriamente a una columna. Por tanto, no podrá            tener el valor NULL. Se utiliza la palabra reservada ''NOT NULL''.
Línea 221: Línea 261:
 </code> </code>
  
-== Valores por defecto ==+=== Valores por defecto ===
  
 Se puede definir el valor que una columna tomará por defecto, es decir, si al introducir una fila no se            especifica valor para dicha columna. Se utiliza la palabra reservada ''DEFAULT'' Se puede definir el valor que una columna tomará por defecto, es decir, si al introducir una fila no se            especifica valor para dicha columna. Se utiliza la palabra reservada ''DEFAULT''
Línea 230: Línea 270:
 </code> </code>
  
-== Condiciones ==+=== Condiciones ===
  
 De forma más genérica, podemos forzar a que los valores de determinados campos de la tabla cumplan una            ciertas condiciones. En caso contrario no se permitirá la inserción de esa fila en dicha tabla. De forma más genérica, podemos forzar a que los valores de determinados campos de la tabla cumplan una            ciertas condiciones. En caso contrario no se permitirá la inserción de esa fila en dicha tabla.
  
-<code sql> +Lo habitual es definir una columna como de tipo enumeración (''ENUM'' en MySQL) si queremos indicar que solamente una serie de valores (definidos) son válidos:
-nombre VARCHAR(250) CHECK (nombre = UPPER(nombre)) +
-edad   INT CHECK (edad > 0) +
-curso  INT CHECK (curso BETWEEN 1 AND 2) +
-</code> +
- +
-Hay que tener en cuenta que en MySQL está restricción no tiene ningún efecto y lo habitual es definir una columna como de tipo enumeración (''ENUM'' en MySQL) si queremos indicar que solamente una serie de valores (definidos) son válidos:+
  
 <code sql> <code sql>
Línea 247: Línea 281:
 </code> </code>
  
-== Valores únicos ==+=== Valores únicos ===
  
-La restricción ''UNIQUE'' evita valores repetidos en una misma columna. Al contrario que ocurre con la            restricción ''PRIMARY KEY'', la restricción de valor único se puede aplicar a varias columnas de una            misma tabla y admite el valor ''NULL''. Con respecto a esta última consideración, conviene saber que si una columna se define como ''UNIQUE'', sólo una de sus filas podrá contener el valor ''NULL''+La restricción ''UNIQUE'' evita valores repetidos en una misma columna. Al contrario que ocurre con la restricción ''PRIMARY KEY'', la restricción de valor único se puede aplicar a varias columnas de una misma tabla y admite el valor ''NULL''. Con respecto a esta última consideración, conviene saber que si una columna se define como ''UNIQUE'', sólo una de sus filas podrá contener el valor ''NULL''
  
 <code sql> <code sql>
 email VARCHAR(100) UNIQUE email VARCHAR(100) UNIQUE
 </code> </code>
 +
  
 ==== Creación de scripts en MySQL ==== ==== Creación de scripts en MySQL ====
Línea 338: Línea 373:
 pistas_cerradas (#-id_pista, fecha_clausura, motivo) pistas_cerradas (#-id_pista, fecha_clausura, motivo)
 polideportivos (#id, nombre, direccion, ciudad, extension) polideportivos (#id, nombre, direccion, ciudad, extension)
 +servicios_polideportivo(#id, servicio, -id_polideportivo)
 reservas (#id, fecha_reserva, fecha_uso, precio, -id_pista) reservas (#id, fecha_reserva, fecha_uso, precio, -id_pista)
 usuarios (#id, dni, nombre, apellidos, email, ciudad, fecha_nacimiento, descuento, fecha_alta) usuarios (#id, dni, nombre, apellidos, email, ciudad, fecha_nacimiento, descuento, fecha_alta)
Línea 344: Línea 380:
 </code> </code>
  
-La base de datos puede descargarse desde {{ {{ :extra:bd-reservas.zip |}}| este enlace.}}+La base de datos puede descargarse desde {{ :extra:bd-reservas.zip| este enlace.}}
 ===== Modificar Información ===== ===== Modificar Información =====
  
Línea 478: Línea 514:
  
  
 +==== Generar Datos de Prueba ====
 +Para poder trabajar con una base de datos es necesario que esta contenga datos, cuanta más cantidad mejor. Para ello necesitamos hacer muchas inserciones (INSERT INTO) en cada una de las tablas de la base de datos. 
  
 +Existen programas que tienen sus propias bases de datos con datos de ejemplo y nos permiten generar datos adaptados a los campos de nuestras tablas. En la sección [[extra:software#Generadores de datos |Software Necesario]] de esta wiki tenemos distintos generadores, de los que tratamos en el siguiente video:
 +
 +
 +{{ vimeo>663374033?medium }}
 +> Generadores de datos
 ===== Consulta de registros ===== ===== Consulta de registros =====
  
Línea 732: Línea 775:
 {{ youtube>V_h6u6cLpHg }} {{ youtube>V_h6u6cLpHg }}
 \\ \\
 +
 +=== Operadores Aritméticos ===
 +Por otra parte, también tenemos los operadores aritméticos habituales de los lenguajes de programación:
 +
 +^Operador^Operación^
 +|+|Suma|
 +|-|Resta|
 +|*|Producto|
 +|/|División decimal|
 +|div|División entera|
 +|mod ó %| Módulo: resto entero de división.|
 +
 +<code sql>
 +-- Calcula el 10% de las ganancias por reservas del año pasado
 +SELECT (SUM(precio) * 0.1) AS 'impuestos'
 +FROM reservas
 +WHERE YEAR(fecha_reserva) = YEAR(CURDATE()) - 1;
 +</code>
 ==== Funciones agregadas ==== ==== Funciones agregadas ====
  
Línea 789: Línea 850:
 -- Código y tipo de la pista más barata -- Código y tipo de la pista más barata
 SELECT codigo, tipo SELECT codigo, tipo
-FROM tipo+FROM pistas
 WHERE precio = (SELECT MIN(precio) FROM pistas); WHERE precio = (SELECT MIN(precio) FROM pistas);
  
Línea 1192: Línea 1253:
 -> 1998 -> 1998
 </code> </code>
- 
-===== Cliente MySQL WorkBench ===== 
- 
-==== Mostrar Diagrama Relacional ==== 
-Si queremos mostrar el diagrama relacional de una base de datos una vez que ya tenemos la estructura física de la misma creada (tablas), necesitamos realizar un proceso llamado "ingeniería inversa" (lo habitual es realizar primero el modelo para después crear la estructura física). Para ello haremos lo siguiente: 
- 
-  - Pestaña //Database// -> //Reverse Engineer...// 
-  - Aceptar los parémetros de conextion 
-  - Seleccionar la bbdd de la que deseamos realizar la ingeniería inversa 
-  - Aceptar los siguiente pasos 
- 
-==== Exportar script de bbdd ==== 
-Para exportar scripts con bases de datos //Mysql// o //Mariadb// incluyen la herramienta //mysqldump//. Workbench la usa del mismo modo. 
- 
-Desde la sección de sección //Administration// del panel //Navigation// que está a la izquierda de la interfaz, haremos click sobre //Data Export//. 
- 
-En la siguiente ventana debemos indicar varias cosas: 
- 
-{{ :bloque1:data-export-workbench.png?600 |}} 
- 
-  * //Dump Structura and Data//: exportar la estructura y los datos contenidos. 
-  * //Dump Stores Procedures...//,  //Dump Triggers//, etc: exportar procedimientos, funciones o triggers. 
-  * //Export to Self-Contained File//: Para exportar toda la base de datos en un solo fichero (podemos dar nombre al fichero). En caso contratio creará un fichero por cada tabla. 
-  * //Include Create Schema//: incluye las instrucciones ''CREATE DATABASE'' [nombre] y ''USE'' [nombre] 
- 
- 
-*Si utilizamos la versión **MySql WorkBench 8 o posterior**, debemos configurar un aspecto en la sección //Preferences// de la aplicación: 
- 
-  - Pestaña ''Edit'' de MySql Workbench -> ''Preferences'' 
-  - Sección ''Administration'' 
-  - Campo ''Path to mysqldump Tool'' -> indicar la ruta de la herramienta mysqldump. En caso de usar el servidor incluido en //xampp// será : c:/xampp/mysql/bin/mysqldump.exe 
- 
-{{ :bloque1:preferences-workbench.png?600 |}} 
  
 ---- ----
  
 (c) {{date> %Y}} Santiago Faci y Fernando Valdeón (c) {{date> %Y}} Santiago Faci y Fernando Valdeón
bloque1/sql.1634855719.txt.gz · Última modificación: 2024/09/16 15:38 (editor externo)