# data[].attributes.body
Atal honetan internetan ditugun hainbat praktika edo ariketetara estekak aurki ditzazkegu

# data[].attributes.body
Atal honetan adibide ezberdinak ikusi ahalko ditugu youtubeko bideoen bidez, non datu baseak eta taulak nola sortu , kontsulta ezberdinak egin eta MySQlLmartxan ikusteko aukera izango dugun

# data[].attributes.body
Teoriaren atal honetan hainbat esteka aurkitu ditzazkegu Datu baseei sarrera bat emateko eta oinarrizko kontzeptuak ulertu ahal izateko

# data[].attributes.body
Atal honetan 2 bideo aurkituko dituzu MySQL instalatu ahal izateko. Lehenengoa Windows10ean instalatzeko da eta bigarrena ubuntun instalatzeko

# data[].attributes.attachment_link.title
How To Install MySQL (Server and Workbench)

# data[].attributes.attachment_link.readable_text
MySQL es un sistema de administración de bases de datos de código abierto, que comúnmente se instala como parte de la popular pila LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Implementa el modelo relacional y utiliza el Structured Query Language (más conocido como SQL) para administrar los datos.

Este tutorial explicará cómo instalar MySQL versión 8 en un servidor Ubuntu 20.04. Al completarlo, tendrá una base de datos relacional funcional que puede usar para crear su próximo sitio web o aplicación.

Para este tutorial, necesitará lo siguiente:

En Ubuntu 20.04, puede instalar MySQL usando el repositorio de paquetes APT. En el momento de escribir este artículo, la versión de MySQL disponible en el repositorio de Ubuntu es la versión 8.0.19.

Para instalarla, actualice el índice de paquetes en su servidor si no lo ha hecho recientemente.

A continuación, instale el paquete mysql-server:

Estos comandos instalarán MySQL, pero no le solicitará establecer una contraseña ni realizar otros cambios de configuración. Debido a que esto deja su instalación de MySQL sin proteger, abordaremos esto a continuación.

Para nuevas instalaciones de MySQL, querrá ejecutar la secuencia de comandos incluida en DBMS. Esta secuencia de comandos cambia algunas de las opciones predeterminadas menos seguras para cosas como inicios de sesión root remotos y usuarios de ejemplo.

Ejecute la secuencia de comandos de seguridad con sudo:

Esto lo guiará a través de una serie de instrucciones mediante las cuales podrá realizar cambios en las opciones de seguridad de su instalación de MySQL. En la primera solicitud se le preguntará si desea configurar el complemento de validación de contraseña, que puede usar para probar la seguridad de la contraseña de MySQL.

Si decide configurar el complemento para validar la contraseña, la secuencia de comandos le solicitará elegir un nivel de validación de contraseña. Para el nivel más alto, que se selecciona ingresando 2, se solicitará que la contraseña tenga al menos ocho caracteres e incluya una combinación de mayúsculas, minúsculas y números y caracteres especiales:

Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:2

Independientemente de que opte por configurar el complemento para validar la contraseña, la siguiente solicitud tendrá que ver con establecer una contraseña para el usuario root de MySQL. Introduzca y luego confirme una contraseña segura que elija:

Please set the password for root here. New password: Re-enter new password:

Si utilizó el complemento para validar la contraseña, recibirá un comentario acerca de la seguridad de su contraseña nueva. A continuación, la secuencia de comandos le consultará si desea continuar con la contraseña que introdujo o si desea introducir una nueva. Suponiendo que esté conforme con la seguridad de la contraseña que acaba de introducir, ingrese Y para continuar con la secuencia de comandos:

Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Desde allí, puede pulsar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas siguientes. Con esto, se eliminarán algunos usuarios anónimos y la base de datos de prueba, se deshabilitarán las credenciales de inicio de sesión remoto de root y se cargarán estas nuevas reglas para que MySQL aplique de inmediato los cambios que realizó.

Tenga en cuenta que aunque ha configurado una contraseña para el root user de MySQL, este usuario no está configurado para autenticar con una contraseña cuando se conecte al shell de MySQL. Si lo desea, puede ajustar este ajuste siguiendo el Paso 3.

En los sistemas Ubuntu con MySQL 5.7 (y versiones posteriores), el usuario root de MySQL se configura para la autenticación usando el complemento auth_socket de manera predeterminada en lugar de una contraseña. Esto en muchos casos proporciona mayor seguridad y utilidad, pero también puede generar complicaciones cuando deba permitir que un programa externo (como phpMyAdmin) acceda al usuario.

Para usar una contraseña para conectar con MySQL como root, deberá cambiar su método de autenticación de auth_socket a otro complemento, como caching_sha2_password o mysql_native_password. Para hacer esto, abra la consola de MySQL desde su terminal:

A continuación, compruebe con el siguiente comando el método de autenticación utilizado por una de sus cuentas de usuario de MySQL:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

En este ejemplo, puede ver que, en efecto, el usuario root se autentica utilizando el complemento de auth_socket. Para configurar la cuenta root para autenticar con una contraseña, ejecute una instrucción ALTER USER para cambiar qué complemento de autenticación utiliza y establecer una nueva contraseña.

Asegúrese de cambiar por una contraseña segura de su elección, y tenga en cuenta que este comando cambiará la contraseña root que estableció en el Paso 2:

Nota: La instrucción ALTER USER previa establecer el root user de MySQL para autenticar con el complemento caching_sha2_password. Según la documentación oficial de MySQL, caching_sha2_password es el complemento de autenticación preferido por MySQL, ya que proporciona un cifrado de contraseña más seguro que el anterior, aunque aún usado ampliamente, mysql_native_password.

Sin embargo, muchas aplicaciones PHP, como por ejemplo phpMyAdmin, no funcionan de forma fiable con caching_sha2_password. Si planea usar esta base de datos con una aplicación PHP, es posible que desee establecer root para que autentique con mysql_native_password:

A continuación, ejecute FLUSH PRIVILEGES para indicar al servidor que vuelva a cargar la tabla de permisos y aplique sus nuevos cambios:

Compruebe de nuevo los métodos de autenticación empleados por cada uno de sus usuarios para confirmar que root deje de realizarla usando el complemento de auth_socket:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost | | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

Puede ver en este resultado de ejemplo que el root user de MySQL ahora autentica usando caching_sha2_password. Una vez que confirme esto en su propio servidor, podrá cerrar el shell de MySQL:

Por otra parte, para el flujo de trabajo de algunos puede resultar más conveniente la conexión a MySQL con un usuario dedicado. Para crear dicho usuario, abra el shell de MySQL de nuevo:

Nota: Si tiene la autenticación por contraseña habilitada para root, como se ha descrito anteriormente, deberá usar un comando diferente para acceder al shell de MySQL. A través de lo siguiente, se ejecutará su cliente de MySQL con privilegios de usuario regulares y solo obtendrá privilegios de administrador dentro de la base de datos mediante la autenticación:

A partir de ahí, cree un usuario nuevo y asigne una contraseña segura:

Luego, conceda a su nuevo usuario los privilegios apropiados. Por ejemplo, con el siguiente comando podría conceder privilegios de usuario a todas las tablas dentro de la base de datos, así como la facultad de añadir, cambiar y eliminar privilegios de usuario:

Tenga en cuenta que en este momento no necesita ejecutar el comando FLUSH PRIVILEGES de nuevo. Este comando solo es necesario cuando modifica las tablas de concesión usando instrucciones como INSERT, UPDATE o DELETE. Debido a que creó un nuevo usuario, en vez de modificar uno existente, FLUSH PRIVILEGES no es necesario aquí.

Después de esto, cierre el shell de MySQL:

Finalmente, vamos a probar la instalación de MySQL.

Independientemente de cómo lo haya instalado, MySQL debería comenzar a ejecutarse automáticamente. Para probar esto, compruebe su estado.

Visualizará un resultado similar al siguiente:

● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago Main PID: 10382 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 1137) Memory: 370.0M CGroup: /system.slice/mysql.service └─10382 /usr/sbin/mysqld

Si MySQL no está ejecutándose, puede iniciarlo con sudo systemctl start mysql.

Como comprobación adicional, puede intentar establecer conexión con la base de datos usando la herramienta mysqladmin, que es un cliente que le permite ejecutar comandos administrativos. Por ejemplo, este comando dice conectar a MySQL como root (-u root), solicitud de contraseña (-p), y devolver la versión.

El resultado debería ser similar a este:

mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu)) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.19-0ubuntu5 Protocol version	10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 10 min 44 sec Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

Esto significa que MySQL está funcionando.

Ahora tiene una configuración básica de MySQL instalada en su servidor. Aquí tiene algunos ejemplos de pasos posteriores que puede seguir:

# data[].attributes.attachment_link.title
Cómo instalar MySQL en Ubuntu 20.04 | DigitalOcean

# data[].attributes.attachment_link.description
Hazel Virdó escribió una versión anterior de este tutorial. MySQL es un sistema de administración de bases de datos de código abierto, que comúnmente se inst...

# data[].attributes.attachment_link.readable_text
SQL is a standard language for storing, manipulating and retrieving data in databases.

Our SQL tutorial will teach you how to use SQL in: MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, and other database systems.

Start learning SQL now "

Examples in Each Chapter

With our online SQL editor, you can edit the SQL statements, and click on a button to view the result.

Click on the "Try it Yourself" button to see how it works.

SQL Exercises

SQL Examples

Learn by examples! This tutorial supplements all explanations with clarifying examples.
See All SQL Examples
SQL Quiz Test

Test your SQL skills at W3Schools!
Start SQL Quiz!
My Learning

Track your progress with the free "My Learning" program here at W3Schools.

Log in to your account, and start earning points!

This is an optional feature. You can study W3Schools without using My Learning.

SQL References

At W3Schools you will find a complete reference for keywords and function:
SQL Keyword Reference MYSQL Functions SQLServer Functions MS Access Functions SQL Quick Reference
SQL Data Types

Data types and ranges for Microsoft Access, MySQL and SQL Server.
SQL Data Types
Kickstart your career

Get certified by completing the course

# data[].attributes.attachment_link.description
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

# data[].attributes.attachment_link.readable_text
En el entorno del mercado actual, la competitividad y la rapidez de maniobra de una empresa son imprescindibles para su éxito. Para conseguirlo existe cada vez una mayor demanda de datos y, por tanto, más necesidad de gestionarlos. Esta demanda siempre ha estado patente en empresas y sociedades, pero en estos años se ha disparado debido al acceso multitudinario a las redes integradas en Internet y a la aparición de los dispositivos móviles que también requieren esa información.

En informática se conoce como dato a cualquier elemento informativo que tenga relevancia para un usuario. Desde su nacimiento, la informática se ha encargado de proporcionar herramientas que faciliten la manipulación de los datos. Antes de la aparición de las aplicaciones informáticas, las empresas tenían como únicas herramientas de gestión de datos los ficheros con cajones, carpetas y fichas de cartón. En este proceso manual, el tiempo requerido para manipular estos datos era enorme. Pero la propia informática ha adaptado sus herramientas para que los elementos que el usuario utiliza en cuanto a manejo de datos se parezcan a los manuales. Por eso se sigue hablado de ficheros, formularios, carpetas, directorios,....

La clientela fundamental del profesional informático es la empresa. La empresa se puede entender como un sistema de información formado por diversos objetos: el capital, los recursos humanos, los inmuebles, los servicios que presta, etc.

Los sistemas de información actuales se basan en bases de datos (BD) y sistemas de bases de datos (SGBD) que se han convertido en elementos imprescindibles de la vida cotidiana de la sociedad moderna.

1.2.1. Definición de Base de Datos

Cada día, la mayoría de nosotros nos encontramos con actividades que requieren algún tipo de interacción con una base de datos (ingreso en un banco, reserva de una entrada para el teatro, solicitud de una suscripción a una revista, compra de productos, ...). Estas interacciones son ejemplos de lo que se llama aplicaciones tradicionales de bases de datos (básicamente información numérica o de texto), aunque los avances tecnológicos han permitido que también existan: bases de datos multimedia, sistemas de información geográfica (GIS), almacenes de datos, sistemas de proceso analítico on-line, ...

Una base de datos se entenderá como una colección de datos relacionados entre sí y que tienen un significado implícito.

Por datos queremos decir hechos conocidos que pueden registrarse y que tienen un significado implícito.

Ejemplo

La definición presentada anteriormente hace referencia a dos elementos para que un conjunto de datos constituya una Base de Datos:

1. Relaciones entre datos, tema que se tratará en las secciones siguientes.

2. Significado implícito de los datos que se atribuye dependiendo del contexto en que se utilizan los mismos. Por ejemplo, el dato fecha en una base de datos de VENTAS puede referirse a la fecha de emisión de las facturas, mientras que si la base de datos es de MÚSICA quizás corresponda a la fecha en que se grabó un tema musical. Es decir, el significado de un dato, depende de la BD que lo contenga.

Para manipular y gestionar las bases de datos surgieron herramientas software denominadas: sistemas gestores de bases de datos (SGBD en lo sucesivo) sobre los que se profundizará en las siguientes secciones.

1.3.1. Introducción

Los predecesores de los sistemas gestores de bases de datos fueron los sistemas gestores de ficheros o sistemas de archivos tradicionales.

1. Archivos tradicionales. Consiste en almacenar los datos en archivos individuales, exclusivos para cada aplicación particular. En este sistema los datos pueden ser redundantes (repetidos innecesariamente) y la actualización de los archivos es más lenta que en una base de datos.

2. Base de datos. Es un almacenamiento de datos formalmente definido, controlado centralmente para intentar servir a múltiples y diferentes aplicaciones. La base de datos es una fuente de datos que son compartidos por numerosos usuarios para diversas aplicaciones.

Así, en un Sistema de archivos tradicional la información está dispersa en varios ficheros de datos y existe un cierto número de programas que los recuperan y agrupan. Aunque los sistemas de ficheros o archivos supusieron un gran avance sobre los sistemas manuales, tienen inconvenientes bastante importantes que se solventaron, en gran medida, con la aparición de los sistemas de bases de datos.

1.3.2. Evolución y tipos de base de datos

Coincidiendo con la evolución histórica de las bases de datos éstas han utilizado distintos modelos:

1.3.3. Sistemas de ficheros tradicionales

En estos sistemas, cada programa almacenaba y utilizaba sus propios datos de forma un tanto caótica. La única ventaja que conlleva esto es que los procesos son independientes, por lo que la modificación de uno no afecta al resto.

Pero tiene grandes inconvenientes:

Datos redundantes. Ya que se repiten continuamente.

Coste de almacenamiento elevado. Al almacenarse varias veces el mismo dato en distintas aplicaciones, se requiere más espacio en los discos.

Tiempos de procesamiento elevados. Al no poder optimizar el espacio de almacenamiento.

Probabilidad alta de inconsistencia en los datos. Ya que un proceso cambia sus datos y no el resto. Por lo que el mismo dato puede tener valores distintos según qué aplicación acceda a él.

Difícil modificación en los datos. Debido a la probabilidad de inconsistencia, cada modificación se debe repetir en todas las copias del dato (algo que normalmente es imposible).

En la siguiente figura se muestra un sistema de información basado en ficheros. En ella se ve que la información aparece inconexa y redundante.

1.3.4. Sistemas de base de datos relacional

En este tipo de sistemas los datos se centralizan en una base de datos común a todas las aplicaciones. Estos serán los sistemas que estudiaremos en este curso.

Sus ventajas son las siguientes:

Menor redundancia. No hace falta tanta repetición de datos. Aunque, sólo los buenos diseños de datos tienen poca redundancia.

Menor espacio de almacenamiento. Gracias a una mejor estructuración de los datos.

Acceso a los datos más eficiente. La organización de los datos produce un resultado más óptimo en rendimiento.

Datos más documentados. Gracias a los metadatos que permiten describir la información de la base de datos.

Independencia de los datos y los programas y procesos. Esto permite modificar los datos sin modificar el código de las aplicaciones.

Integridad de los datos. Mayor dificultad de perder los datos o de realizar incoherencias con ellos.

Mayor seguridad en los datos. Al limitar el acceso a ciertos usuarios.

Como contrapartida encontramos los siguientes inconvenientes:

Instalación costosa. El control y administración de bases de datos requiere de un software y hardware potente.

Requiere personal cualificado. Debido a la dificultad de manejo de este tipo de sistemas.

Implantación larga y difícil. Debido a los puntos anteriores. La adaptación del personal es mucho más complicada y lleva bastante tiempo.

En la siguiente figura se muestra un sistema de información basado en bases de datos. La información está relacionada y no es redundante.

1.3.5. Ejemplo de archivos tradicionales

Se cuenta con dos archivos: CLIENTES y FACTURAS.

El primer archivo tiene los datos básicos de los clientes, mientras que en el segundo se almacenan las ventas realizadas. Al emitir cada factura se ingresan nuevamente los datos num, nombre, domicilio.

Desventajas:

Se presentan redundancias de datos (datos repetidos innecesariamente: nombre, dirección). Se duplican esfuerzos.

Se pueden producir contradicciones entre los datos, si por ejemplo se ingresan nombres diferentes para un mismo cliente (Juan por Joaquín).

Resulta fundamental para un Técnico Superior en Informática que conozca los siguientes conceptos básicos:

1.4.1. Datos

Datos son hechos conocidos que pueden registrarse y que tienen un significado implícito.

- Ramez Elmasri y Shamkant B. Navathe

Ejemplo

1.4.2. Entidades

Una entidad es todo aquello de lo cual interesa guardar datos, por ejemplo:

1.4.3. Claves primarias y claves foráneas. Relaciones

Cada entidad tiene una clave primaria o campo clave o llave que identifica unívocamente al conjunto de datos. Cuando en una entidad figura la clave primaria de otra entidad, ésta se denomina clave foránea o clave ajena. Las entidades se relacionan entre sí a través de las claves foráneas.
CLAVES PRIMARIAS

Código Cliente es la clave primaria de CLIENTES. A cada cliente se le asocia un código y a cada código le corresponde un cliente.

Número Factura es clave primaria de FACTURAS.

Código Producto es clave primaria de PRODUCTOS.

CLAVES FORÁNEAS

En FACTURAS, son claves foráneas Código Cliente y Código Producto. CLIENTES se relaciona con FACTURAS a través del Código Cliente que figura en ambas tablas y con PRODUCTOS mediante el Código Producto.

1.4.4. Restricciones de integridad referencial

Código Cliente en Facturas debe cumplir que exista en Clientes y que sea clave primaria

Código Producto en Facturas debe cumplir que exista en Productos y que sea clave primaria

Retomando la Definición de Base de Datos, la cual señala que ésta " ...es un conjunto de datos relacionados entre sí y que tienen un significado implícito ", se observa en la imagen que los datos de las tablas se relacionan a través de las claves y que éstos tienen el significado implícito que se les atribuye en dicho contexto. Así, por ejemplo, el significado del dato Nombre se refiere al del CLIENTE, el de Fecha emisión a la de la FACTURAS y el de Descripción a la del PRODUCTO.

1.4.6. Otros conceptos sobre Bases de Datos

Además de los conceptos básicos anteriores, a modo de aclarar algunos de los componentes que se pueden encontrar en una base de datos, y que se verán en las próximas unidades, se definen los siguientes conceptos:

Tabla: Es un conjunto de filas y columnas bajo un mismo nombre que representa el conjunto de valores almacenados para una serie de datos. Por ejemplo,la información de todos los clientes de una BD se almacenarán en una tabla llamada CLIENTES.

Campo: Cada una de las columnas de una tabla. Identifica una familia de datos. Por ejemplo, el campo fechaNacimiento representa las fechas de nacimiento de todos los clientes que contiene una tabla CLIENTES.

Registro: Corresponde a cada una de las filas de la tabla. También se llaman tuplas. Por ejemplo en la siguiente tabla CLIENTES, observamos dos registros, que corresponden a la información sobre los clientes Juan García y Fernándo Martínez:

Tipo de Dato: El tipo de dato indica la naturaleza del campo. Así, se puede tener datos numéricos, que son aquellos con los que se pueden realizar cálculos aritméticos (sumas, restas, multiplicaciones...), los datos alfanuméricos, que son los que contienen caracteres alfabéticos y números...

Consulta: Es una instrucción para hacer peticiones a una BD.

Índice: Es una estructura que almacena los campos clave de una tabla, organizándolos para hacer más fácil encontrar y ordenar los registros.

Vista: Se obtienen al guardar una consulta de una o varias tablas. De esta forma se obtiene una tabla virtual, es decir, no está almacenada en los dispositivos de almacenamiento del ordenador, aunque sí se almacena su definición.

Informe: Es un listado ordenado de los campos y registros seleccionados en un formato fácil de leer. Por ejemplo, un informe de las facturas impagadas del mes de enero ordenadas por nombre de cliente.

Guiones o scripts: Son un conjunto de instrucciones, que ejecutadas de forma ordenada, realizan operaciones avanzadas o mantenimiento de los datos almacenados en la BD.

Procedimientos: Son un tipo especial de script que están almacenados en la BD y forman parte de su esquema.

1.5.1. Sistema Gestor de Bases de Datos

Un sistema gestor de bases de datos (SGBD) es una aplicación que permite a los usuarios definir, crear y mantener una base de datos, y proporciona acceso controlado a la misma.

En general, un SGBD proporciona los siguientes servicios:

Permite la definición de la base de datos mediante el lenguaje de definición de datos (DDL - Data Description Language). Este lenguaje permite especificar la estructura y el tipo de los datos, así como las restricciones sobre los datos. Todo esto se almacenará en la base de datos.

Permite la inserción, actualización, eliminación y consulta de datos mediante el lenguaje de manejo o manipulación de datos (DML - Data Manipulation Language).

Proporciona un acceso controlado a la base de datos mediante:

Un sistema de seguridad, de modo que los usuarios no autorizados no puedan acceder a la base de datos, mediante el lenguaje de control de datos (DCL - Data Control Language);

Un sistema de integridad que mantiene la integridad y la consistencia de los datos;

Un sistema de control de concurrencia que permite el acceso compartido a la base de datos;

Un sistema de control de recuperación que restablece la base de datos después de que se produzca un fallo del hardware o del software;

Un diccionario de datos o catálogo accesible por el usuario que contiene la descripción de los datos de la base de datos.

La principal herramienta de un SGBD es la interfaz de programación con el usuario. Esta interfaz consiste en un lenguaje muy sencillo mediante el cual el usuario interactua con el servidor. Este lenguaje comúnmente se denomina SQL, Structure Query Language, está estandarizado por la ISO 1, es decir, todas las BD que soporten SQL deben tener la misma sintaxis a la hora de aplicar el lenguaje.

1.5.2. Tipos de SGBD

Los SGBD se pueden clasificar según las BD que gestionan (jerárquicas, relacionales, orientadas a objetos,...), pero como actualmente la mayoría de los SGBD integran múltiples filosofías, los clasificaremos según su capacidad y potencia del propio gestor, resultado los siguientes SGBD:

SGBD ofimáticos: manipulas BD pequeñas orientadas a almacenar datos domésticos o de pequeñas empresas. Ejemplos típicos son Microsoft ACCESS y LibreOffice Base.

SGBD corporativos: tienen la capacidad de gestionar BD enormes, de medianas o grandes empresas con una carga de datos y transacciones que requieren de un servidor de gran capacidad. Un ejemplo típico de BD corporativas es ORACLE, actualmente junto de DB2 el servidor de BD más potente del mercado (también el más caro). Nosotros para nuestro aprendizaje utilizamos una versión gratuita con fines educativos, que aunque bastante limitada, nos sirve para introducirnos en la filosofía de ORACLE.

# data[].attributes.attachment_link.description
En el entorno del mercado actual, la competitividad y la rapidez de maniobra de una empresa son imprescindibles para su éxito. Para conseguirlo existe cada vez una mayor demanda de datos y, por tanto, más necesidad de gestionarlos.

# data[].attributes.attachment_link.title
Ejercicios de consultas SELECT en MySQL para base de datos de Torneo Fútbol 🔥④BD04 - parte1

# data[].attributes.attachment_link.title
Ejemplo 1 SQL Crear una  Base de Datos y Tablas, con MySQL Parte1

# data[].attributes.attachment_link.description
Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, PHP, and XML.

# data[].attributes.attachment_link.description
Join over 7 million developers in solving code challenges on HackerRank, one of the best ways to prepare for programming interviews.

# data[].attributes.attachment_link.readable_text
Apuntes de BD para DAW, DAM y ASIR

José Juan Sánchez Hernández

Tienda de informática

Modelo entidad/relación

Base de datos para MySQL

Consultas sobre una tabla

Consultas multitabla (Composición interna)

Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2.

Consultas multitabla (Composición externa)

Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.

1. Devuelve un listado de todos los fabricantes que existen en la base de datos, junto con los productos que tiene cada uno de ellos. El listado deberá mostrar también aquellos fabricantes que no tienen productos asociados.

2. Devuelve un listado donde sólo aparezcan aquellos fabricantes que no tienen ningún producto asociado.

3. ¿Pueden existir productos que no estén relacionados con un fabricante? Justifique su respuesta.

Consultas resumen

Ejemplo del resultado esperado:

Devuelve un listado con los nombres de los fabricantes y el número de productos que tiene cada uno con un precio superior o igual a 220 €. El listado debe mostrar el nombre de todos los fabricantes, es decir, si hay algún fabricante que no tiene productos con un precio superior o igual a 220€ deberá aparecer en el listado con un valor igual a 0 en el número de productos.

Ejemplo del resultado esperado:

1. Devuelve un listado con los nombres de los fabricantes donde la suma del precio de todos sus productos es superior a 1000 €.

2. Devuelve un listado con el nombre del producto más caro que tiene cada fabricante. El resultado debe tener tres columnas: nombre del producto, precio y nombre del fabricante. El resultado tiene que estar ordenado alfabéticamente de menor a mayor por el nombre del fabricante.

Subconsultas (En la cláusula WHERE)

Con operadores básicos de comparación

1. Lista el nombre del producto más caro del fabricante Lenovo.

2. Lista el nombre del producto más barato del fabricante Hewlett-Packard.

3. Devuelve todos los productos de la base de datos que tienen un precio mayor o igual al producto más caro del fabricante Lenovo.

4. Lista todos los productos del fabricante Asus que tienen un precio superior al precio medio de todos sus productos.

Subconsultas correlacionadas

1. Lista el nombre de cada fabricante con el nombre y el precio de su producto más caro.

2. Devuelve un listado de todos los productos que tienen un precio mayor o igual a la media de todos los productos de su mismo fabricante.

3. Lista el nombre del producto más caro del fabricante Lenovo.

Subconsultas (En la cláusula HAVING)

Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo número de productos que el fabricante Lenovo.

Gestión de empleados

Modelo entidad/relación

Base de datos para MySQL

Consultas sobre una tabla

Consultas multitabla (Composición interna)

Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2.

1. Devuelve un listado con los empleados y los datos de los departamentos donde trabaja cada uno.

2. Devuelve un listado con los empleados y los datos de los departamentos donde trabaja cada uno. Ordena el resultado, en primer lugar por el nombre del departamento (en orden alfabético) y en segundo lugar por los apellidos y el nombre de los empleados.

3. Devuelve un listado con el identificador y el nombre del departamento, solamente de aquellos departamentos que tienen empleados.

4. Devuelve el nombre del departamento donde trabaja el empleado que tiene el nif 38382980M.

5. Devuelve el nombre del departamento donde trabaja el empleado Pepe Ruiz Santana.

6. Devuelve un listado con los datos de los empleados que trabajan en el departamento de I+D. Ordena el resultado alfabéticamente.

7. Devuelve una lista con el nombre de los empleados que tienen los departamentos que no tienen un presupuesto entre 100000 y 200000 euros.

8. Devuelve un listado con el nombre de los departamentos donde existe algún empleado cuyo segundo apellido sea NULL. Tenga en cuenta que no debe mostrar nombres de departamentos que estén repetidos.

Consultas multitabla (Composición externa)

Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.

1. Devuelve un listado con todos los empleados junto con los datos de los departamentos donde trabajan. Este listado también debe incluir los empleados que no tienen ningún departamento asociado.

2. Devuelve un listado donde sólo aparezcan aquellos empleados que no tienen ningún departamento asociado.

3. Devuelve un listado donde sólo aparezcan aquellos departamentos que no tienen ningún empleado asociado.

4. Devuelve un listado con todos los empleados junto con los datos de los departamentos donde trabajan. El listado debe incluir los empleados que no tienen ningún departamento asociado y los departamentos que no tienen ningún empleado asociado. Ordene el listado alfabéticamente por el nombre del departamento.

5. Devuelve un listado con los empleados que no tienen ningún departamento asociado y los departamentos que no tienen ningún empleado asociado. Ordene el listado alfabéticamente por el nombre del departamento.

Consultas resumen

Subconsultas

Con operadores básicos de comparación

1. Devuelve el nombre del departamento con mayor presupuesto y la cantidad que tiene asignada.

2. Devuelve el nombre del departamento con menor presupuesto y la cantidad que tiene asignada.

Gestión de ventas

Modelo entidad/relación

Base de datos para MySQL

Consultas sobre una tabla

1. Devuelve un listado con todos los pedidos que se han realizado. Los pedidos deben estar ordenados por la fecha de realización, mostrando en primer lugar los pedidos más recientes.

2. Devuelve todos los datos de los dos pedidos de mayor valor.

3. Devuelve un listado con los identificadores de los clientes que han realizado algún pedido. Tenga en cuenta que no debe mostrar identificadores que estén repetidos.

4. Devuelve un listado de todos los pedidos que se realizaron durante el año 2017, cuya cantidad total sea superior a 500€.

5. Devuelve un listado con el nombre y los apellidos de los comerciales que tienen una comisión entre 0.05 y 0.11.

6. Devuelve el valor de la comisión de mayor valor que existe en la tabla comercial.

Consultas multitabla (Composición interna)

Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2.

1. Devuelve un listado con el identificador, nombre y los apellidos de todos los clientes que han realizado algún pedido. El listado debe estar ordenado alfabéticamente y se deben eliminar los elementos repetidos.

2. Devuelve un listado que muestre todos los pedidos que ha realizado cada cliente. El resultado debe mostrar todos los datos de los pedidos y del cliente. El listado debe mostrar los datos de los clientes ordenados alfabéticamente.

3. Devuelve un listado que muestre todos los pedidos en los que ha participado un comercial. El resultado debe mostrar todos los datos de los pedidos y de los comerciales. El listado debe mostrar los datos de los comerciales ordenados alfabéticamente.

4. Devuelve un listado que muestre todos los clientes, con todos los pedidos que han realizado y con los datos de los comerciales asociados a cada pedido.

5. Devuelve el nombre y los apellidos de todos los comerciales que ha participado en algún pedido realizado por María Santana Moreno.

6. Devuelve el nombre de todos los clientes que han realizado algún pedido con el comercial Daniel Sáez Vega.

Consultas multitabla (Composición externa)

Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.

1. Devuelve un listado con todos los clientes junto con los datos de los pedidos que han realizado. Este listado también debe incluir los clientes que no han realizado ningún pedido. El listado debe estar ordenado alfabéticamente por el primer apellido, segundo apellido y nombre de los clientes.

2. Devuelve un listado con todos los comerciales junto con los datos de los pedidos que han realizado. Este listado también debe incluir los comerciales que no han realizado ningún pedido. El listado debe estar ordenado alfabéticamente por el primer apellido, segundo apellido y nombre de los comerciales.

3. Devuelve un listado que solamente muestre los clientes que no han realizado ningún pedido.

4. Devuelve un listado que solamente muestre los comerciales que no han realizado ningún pedido.

5. Devuelve un listado con los clientes que no han realizado ningún pedido y de los comerciales que no han participado en ningún pedido. Ordene el listado alfabéticamente por los apellidos y el nombre. En en listado deberá diferenciar de algún modo los clientes y los comerciales.

Consultas resumen

Subconsultas

Con operadores básicos de comparación

1. Devuelve la fecha y la cantidad del pedido de menor valor realizado por el cliente Pepe Ruiz Santana.

2. Devuelve un listado con los datos de los clientes y los pedidos, de todos los clientes que han realizado un pedido durante el año 2017 con un valor mayor o igual al valor medio de los pedidos realizados durante ese mismo año.

Jardinería

Modelo entidad/relación

Base de datos para MySQL

Datos

Acceder al script SQL para la creación de la base de datos y la inserción de datos:jardineria.sql.

Consultas sobre una tabla

1. Devuelve un listado con el código de pedido, código de cliente, fecha esperada y fecha de entrega de los pedidos que no han sido entregados a tiempo.

2. Devuelve un listado con el código de pedido, código de cliente, fecha esperada y fecha de entrega de los pedidos cuya fecha de entrega ha sido al menos dos días antes de la fecha esperada.

1. Devuelve un listado de todos los pedidos que han sido entregados en el mes de enero de cualquier año.

2. Devuelve un listado con todas las formas de pago que aparecen en la tabla pago. Tenga en cuenta que no deben aparecer formas de pago repetidas.

Consultas multitabla (Composición interna)

Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2. Las consultas con sintaxis de SQL2 se deben resolver con INNER JOIN y NATURAL JOIN.

Consultas multitabla (Composición externa)

Resuelva todas las consultas utilizando las cláusulas LEFT JOIN, RIGHT JOIN, NATURAL LEFT JOIN y NATURAL RIGHT JOIN.

Consultas resumen

Subconsultas

Con operadores básicos de comparación

1. Devuelve el nombre del cliente con mayor límite de crédito.

2. Devuelve el nombre del producto que tenga el precio de venta más caro.

3. Devuelve el nombre del producto del que se han vendido más unidades. (Tenga en cuenta que tendrá que calcular cuál es el número total de unidades que se han vendido de cada producto a partir de los datos de la tabla detalle_pedido)

4. Los clientes cuyo límite de crédito sea mayor que los pagos que haya realizado. (Sin utilizar INNER JOIN).

5. Devuelve el producto que más unidades tiene en stock.

6. Devuelve el producto que menos unidades tiene en stock.

7. Devuelve el nombre, los apellidos y el email de los empleados que están a cargo de Alberto Soria.

Subconsultas con ALL y ANY

1. Devuelve el nombre del cliente con mayor límite de crédito.

2. Devuelve el nombre del producto que tenga el precio de venta más caro.

3. Devuelve el producto que menos unidades tiene en stock.

Subconsultas con IN y NOT IN

1. Devuelve el nombre, apellido1 y cargo de los empleados que no representen a ningún cliente.

2. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pago.

3. Devuelve un listado que muestre solamente los clientes que sí han realizado algún pago.

4. Devuelve un listado de los productos que nunca han aparecido en un pedido.

5. Devuelve el nombre, apellidos, puesto y teléfono de la oficina de aquellos empleados que no sean representante de ventas de ningún cliente.

6. Devuelve un listado con los clientes que han realizado algún pedido pero no han realizado ningún pago.

Subconsultas con EXISTS y NOT EXISTS

1. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pago.

2. Devuelve un listado que muestre solamente los clientes que sí han realizado algún pago.

3. Devuelve un listado de los productos que nunca han aparecido en un pedido.

4. Devuelve un listado de los productos que han aparecido en un pedido alguna vez.

Subconsultas correlacionadas

Consultas variadas

Universidad (Tipo A)

Modelo entidad/relación

Base de datos para MySQL

Datos

Acceder al script SQL para la creación de la base de datos y la inserción de datos:universidad_a.sql.

Consultas sobre una tabla

1. Devuelve un listado con el primer apellido, segundo apellido y el nombre de todos los alumnos. El listado deberá estar ordenado alfabéticamente de menor a mayor por el primer apellido, segundo apellido y nombre.

2. Averigua el nombre y los dos apellidos de los alumnos que no han dado de alta su número de teléfono en la base de datos.

3. Devuelve el listado de los alumnos que nacieron en 1999.

4. Devuelve el listado de las asignaturas que se imparten en el primer cuatrimestre, en el tercer curso del grado que tiene el identificador 7.

Consultas multitabla (Composición interna)

1. Devuelve un listado con todas las asignaturas ofertadas en el Grado en Ingeniería Informática (Plan 2015).

2. Devuelve un listado de los profesores junto con el nombre del departamento al que están vinculados. El listado debe devolver cuatro columnas, primer apellido, segundo apellido, nombre y nombre del departamento. El resultado estará ordenado alfabéticamente de menor a mayor por los apellidos y el nombre.

3. Devuelve un listado con el nombre de las asignaturas, año de inicio y año de fin del curso escolar del alumno con nif 26902806M.

4. Devuelve un listado con el nombre de todos los departamentos que tienen profesores que imparten alguna asignatura en el Grado en Ingeniería Informática (Plan 2015).

5. Devuelve un listado con todos los alumnos que se han matriculado en alguna asignatura durante el curso escolar 2018/2019.

Consultas multitabla (Composición externa)

Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.

1. Devuelve un listado con los nombres de todos los profesores y los departamentos que tienen vinculados. El listado también debe mostrar aquellos profesores que no tienen ningún departamento asociado. El listado debe devolver cuatro columnas, nombre del departamento, primer apellido, segundo apellido y nombre del profesor. El resultado estará ordenado alfabéticamente de menor a mayor por el nombre del departamento, apellidos y el nombre.

2. Devuelve un listado con los profesores que no están asociados a un departamento.

3. Devuelve un listado con los departamentos que no tienen profesores asociados.

4. Devuelve un listado con los profesores que no imparten ninguna asignatura.

5. Devuelve un listado con las asignaturas que no tienen un profesor asignado.

6. Devuelve un listado con todos los departamentos que tienen alguna asignatura que no se haya impartido en ningún curso escolar. El resultado debe mostrar el nombre del departamento y el nombre de la asignatura que no se haya impartido nunca.

Consultas resumen

1. Devuelve el número total de alumnas que hay.

2. Calcula cuántos alumnos nacieron en 1999.

3. Calcula cuántos profesores hay en cada departamento. El resultado sólo debe mostrar dos columnas, una con el nombre del departamento y otra con el número de profesores que hay en ese departamento. El resultado sólo debe incluir los departamentos que tienen profesores asociados y deberá estar ordenado de mayor a menor por el número de profesores.

4. Devuelve un listado con todos los departamentos y el número de profesores que hay en cada uno de ellos. Tenga en cuenta que pueden existir departamentos que no tienen profesores asociados. Estos departamentos también tienen que aparecer en el listado.

5. Devuelve un listado con el nombre de todos los grados existentes en la base de datos y el número de asignaturas que tiene cada uno. Tenga en cuenta que pueden existir grados que no tienen asignaturas asociadas. Estos grados también tienen que aparecer en el listado. El resultado deberá estar ordenado de mayor a menor por el número de asignaturas.

6. Devuelve un listado con el nombre de todos los grados existentes en la base de datos y el número de asignaturas que tiene cada uno, de los grados que tengan más de 40 asignaturas asociadas.

7. Devuelve un listado que muestre el nombre de los grados y la suma del número total de créditos que hay para cada tipo de asignatura. El resultado debe tener tres columnas: nombre del grado, tipo de asignatura y la suma de los créditos de todas las asignaturas que hay de ese tipo. Ordene el resultado de mayor a menor por el número total de crédidos.

8. Devuelve un listado que muestre cuántos alumnos se han matriculado de alguna asignatura en cada uno de los cursos escolares. El resultado deberá mostrar dos columnas, una columna con el año de inicio del curso escolar y otra con el número de alumnos matriculados.

9. Devuelve un listado con el número de asignaturas que imparte cada profesor. El listado debe tener en cuenta aquellos profesores que no imparten ninguna asignatura. El resultado mostrará cinco columnas: id, nombre, primer apellido, segundo apellido y número de asignaturas. El resultado estará ordenado de mayor a menor por el número de asignaturas.

Subconsultas

1. Devuelve todos los datos del alumno más joven.

2. Devuelve un listado con los profesores que no están asociados a un departamento.

3. Devuelve un listado con los departamentos que no tienen profesores asociados.

4. Devuelve un listado con los profesores que tienen un departamento asociado y que no imparten ninguna asignatura.

5. Devuelve un listado con las asignaturas que no tienen un profesor asignado.

6. Devuelve un listado con todos los departamentos que no han impartido asignaturas en ningún curso escolar.

Universidad (Tipo B)

Modelo entidad/relación

Base de datos para MySQL

Datos

Acceder al script SQL para la creación de la base de datos y la inserción de datos:universidad_b.sql.

Employees

La base de datos Employees está disponible en la página web oficial de MySQL. Se trata de una base de datos creada por Patrick Crews y Giuseppe Maxia.

Modelo entidad/relación

Base de datos para MySQL

La base de datos está disponible en GitHub.

Importar la base datos en MySQL

Cómo importar la base de datos en MySQL.

Sakila

La base de datos Sakila está disponible en la página web oficial de MySQL. Se trata de una base de datos creada por Mike Hillyers.

Modelo entidad/relación

# data[].attributes.attachment_link.title
Ejercicios. Realización de consultas SQL

# data[].attributes.attachment_link.description
Apuntes de BD para DAW, DAM y ASIR José Juan Sánchez Hernández Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2. Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN. Devuelve un listado de todos los fabricantes que existen en la base de datos, junto con los productos que tiene cada uno de ellos.