BD UD7 Guiones

De MediaWiki
Ir a la navegación Ir a la búsqueda

Guiones

Nota: Todos los ejemplos están basados en esta base de datos.


Los guiones son un conjunto de instrucciones empleando el lenguaje de programación que incorpora el gestor relacional y que tiene como principal diferencia con respecto a otros lenguajes, que vamos a poder emplear órdenes SQL como parte de su código.

Normalmente estas instrucciones estarán dentro de un archivo que tendrá una extensión . sql siendo un archivo de texto que se podría editar con cualquiera editor, y que contiene el conjunto de instrucciones que queremos ejecutar.

Todas las instrucciones serán ejecutadas en un gestor de bases de datos relacional y afectarán a la base de datos ‘activa’, o estará indicada de forma explícita a que base de datos afecta (por ejemplo, haciendo uso de USE o vimos que en el FROM podemos indicar el nombre de la base de datos de la forma: NOMBRE_ BD.nombre_tabla)

En un guion, entre otras instrucciones, puede llevar:

  • Consultas
  • Procedimientos
  • Funciones
  • Operaciones de manipulación de datos
  • Órdenes SQL asociadas a los permisos y seguridad.


Es decir, cualquier instrucción DML, DCL o DDL junto con otras instrucciones que son extensiones y dependen del propio gestor.

Normalmente:

  • Emplearemos los guiones para IMPORTAR y EXPORTAR bases de datos, tanto su estructura como sus datos (como ya vimos anteriormente) y demás componentes (procedimientos,….)
  • Dentro de procedimientos, funciones o triggers haremos uso de programación procedimental (declaración de variables, if, while,control de errores....)


Todos los gestores suelen incorporar una extensión del lenguaje SQL para añadir la opción de realizar programación procedimental (definición de variables, bucles, control de excepciones,...)

Así:

  • ORACLE => PL-SQL: Procedural Language – Structured Query Language
  • SQL SERVER => T-SQL: Transact-SQL
  • MYSQL

Veamos un ejemplo de guion en el que se crea una base de datos, una tabla y se añaden datos a la misma.

-- -----------------------------------------------------
-- Schema CIRCO
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `CIRCO` ;

-- -----------------------------------------------------
-- Schema CIRCO
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `CIRCO` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_spanish2_ci ;
USE `CIRCO` ;

-- -----------------------------------------------------
-- Table `CIRCO`.`ATRACCIONES`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `CIRCO`.`ATRACCIONES` ;

CREATE TABLE IF NOT EXISTS `CIRCO`.`ATRACCIONES` (
  `nombre` VARCHAR(50) NOT NULL,
  `fecha_inicio` DATE NULL,
  `ganancias` DECIMAL(8,2) NULL,
  PRIMARY KEY (`nombre`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Data for table `CIRCO`.`ATRACCIONES`
-- -----------------------------------------------------
START TRANSACTION;
USE `CIRCO`;
INSERT INTO `CIRCO`.`ATRACCIONES` (`nombre`, `fecha_inicio`, `ganancias`) VALUES ('El gran felino', '1999/11/01', 61121);
INSERT INTO `CIRCO`.`ATRACCIONES` (`nombre`, `fecha_inicio`, `ganancias`) VALUES ('Las jirafas', '2000/04/01', 44030);
INSERT INTO `CIRCO`.`ATRACCIONES` (`nombre`, `fecha_inicio`, `ganancias`) VALUES ('El devorador', '2001/04/01', 43012);
INSERT INTO `CIRCO`.`ATRACCIONES` (`nombre`, `fecha_inicio`, `ganancias`) VALUES ('El orangután', NULL, NULL);

COMMIT;


NOTA: Indicar que en Mysql a diferencia de otros gestores, no deja crear bloques anónimos de código, es decir, un conjunto de instrucciones que forman un ‘bloque’ (normalmente se indica con las órdenes BEGIN …… END) dentro de las cuales es posible hacer uso de instrucciones IF, WHILE, definición de variables locales,….) Por eso en los guiones anteriores no se puede emplear instrucciones para la programación procedimental, como if, while,...







Enlace a la página principal de la UD7

Enlace a la página principal del curso




-- Ángel D. Fernández González -- (2020).