Un artículo de una serie sobre la creación de un proyecto Java (los enlaces a otros materiales se encuentran al final). Su objetivo es analizar tecnologías clave y el resultado es escribir un bot de Telegram. Artículos anteriores y análisis de deberes sobre bases de datos: 1 , 2 , 3 . A todos los que tuvieron paciencia y resistencia, a todos los que han estado leyendo este cuarto artículo conmigo, bien hecho. Como dicen, el que camina puede dominar el camino. Esta semana se publicará el artículo final sobre Bases de Datos, en el que hablaremos sobre tipos de relaciones y uniones . Pero antes de abordar la nueva información, revisemos nuestra tarea... Realmente me sentí como un maestro. No te enfades conmigo: no tengo formación pedagógica, eso seguro. Dado que la semana pasada una revisión detallada del control remoto ocupó la mayor parte del material, decidí dividir el análisis de los deberes y la revisión del material nuevo en dos partes.
Luego solo necesitamos ordenar nuestra consulta por población y tomar solo un registro. Para hacer esto, debe agregar un operador LÍMITE al final del script y especificar la cantidad requerida: $ SELECT * FROM country ORDER BY población DESC LIMIT 1;
Aquí todo es más interesante, porque la petición será más compleja, pero también más interesante. Como todavía no tenemos idea sobre las uniones, solo podemos obtener el ID del país: $ SELECT country_id, SUM(población) FROM city GROUP BY country_id ORDER BY SUM(población) DESC LIMIT 1; Aquí hicimos algo interesante: recopilamos la suma de la población de todas las ciudades conocidas de cada país, las clasificamos según esta suma y tomamos el primer elemento. Bueno, ¿es genial? Estoy encantado :D Después de esto inmediatamente te sientes como un gurú de las consultas... (no por mucho tiempo, por supuesto))
En este caso todo será exactamente igual. La única diferencia es que la clasificación se invertirá, eso es todo. Por lo tanto, simplemente escribo solicitudes:
$ SELECCIONAR id_país, SUMA(población) DESDE ciudad GRUPO POR id_país ORDENAR POR SUMA(población) LÍMITE 1;
$ SELECCIONAR * DEL país ORDENAR POR población LÍMITE 1; ¡Y comprueba el resultado por ti mismo!
Aquí también las especificaciones técnicas no son exactas, como si las hubiera escrito el director... ¿Por qué he decidido esto? Porque no está claro en qué mesa trabajar. Pero esto es normal: simplemente no hay tareas en las que todo sea inmediatamente claro y comprensible. Por lo tanto, debe leer atentamente las tareas y, si tiene preguntas, ¡pregúntelas de inmediato! Así es, un comentario. Teniendo en cuenta los datos que tenemos en la base de datos, buscaremos utilizando datos de ciudades. Para hacer esto, escriba la siguiente consulta: $ SELECT country_id, AVG(población) FROM city GROUP BY country_id; Aquí es simple: usamos la función AVG y agrupamos los registros de nuestras ciudades por país.
Habrá un ligero cambio aquí a pedido. Necesitamos agregar filtrado por nombres antes de realizar la agrupación. Hago mis deberes, como todos los estudiantes, antes de publicar este artículo y entiendo que este problema no se puede resolver sin uniones. ¿Por qué? Porque además del documento de identidad del país, también necesitamos su nombre. Y esto no se puede hacer sin unir dos tablas en un solo registro. Por lo tanto, haré esta tarea, por supuesto, pero esta es mi jamba...))) Quería idear una tarea usando LIKE en la solicitud...) $ SELECT ci.country_id, AVG(ci.population ) DESDE la ciudad ci INNER JOIN país co ON ci.country_id = co.id DONDE co.name LIKE "%a" GROUP BY country_id; ¿Que pasó aquí? Primero, unimos registros de las tablas de ciudades y países usando la clave externa country_id, filtramos por nombres de países para que terminaran en "a" y solo luego los agrupamos por country_id.
Aquí sólo necesitamos usar la función CONTAR y agregar filtrado por población: $ SELECT COUNT(*) del país DONDE población > 4000000; Como resultado, descubrimos que existen 3 de esos países. ¿Es correcto? Sí, sólo Moldavia no supera este hito.
Para hacer esto, necesitamos usar el operador ORDER BY que ya conocemos. Pero tenga en cuenta que, de forma predeterminada, la clasificación se realiza en orden natural. Para los números, esto significa que está ordenado en orden ascendente; para las cadenas, significa que está ordenado comenzando desde los primeros caracteres. Si necesitamos un orden descendente, necesitamos el inverso del natural: $ SELECT * FROM country ORDER BY población DESC;
Aquí es donde resultará útil el conocimiento de cuál es el orden natural. Dado que es el valor predeterminado, es muy fácil para nosotros: $ SELECCIONAR * DEL país ORDENAR POR nombre;
En realidad, análisis de tareas.
Definitivamente me alegro de que haya personas que hagan EP y hablen de ello. ¡Esto es genial! Estoy lo más seguro posible de que simplemente leer sin consolidar conocimientos es un camino a ninguna parte. Por lo tanto, todos los que hicieron o intentaron hacer - respeto. Déjame recordarte las condiciones de las tareas:- Comprenda el operador HAVING y escriba una consulta de ejemplo para las tablas de nuestro ejemplo. Si necesitas agregar algunos campos o más valores para que quede más claro, agrégalos. Si alguien quiere, escriba su solución de ejemplo en los comentarios, así también puedo comprobarla si tengo tiempo.
- Instale MySQL Workbench para trabajar con la base de datos a través de la interfaz de usuario. Creo que ya hemos practicado bastante trabajando desde la consola. Conéctese a la base de datos. Si utiliza otra cosa para trabajar con la base de datos, no dude en omitir esta tarea. Aquí y más usaré sólo MySQL Workbench.
- Redactar solicitudes de recibo utilizando nuestros datos:
- el país más pequeño/más poblado;
- número promedio de habitantes del país;
- número medio de habitantes en países cuyos nombres terminan en “a”;
- el número de países con una población de más de cuatro millones;
- ordenar los países por número decreciente de habitantes;
- ordenar los países por nombre en orden natural.
Hablemos de TENER
Conocer el operador Taking puede ayudarte a pasar más de una entrevista en la que habrá problemas de SQL. Por lo tanto, entenderlo es extremadamente importante. Da la casualidad de que no se pueden utilizar condiciones para agregar funciones (SUM, MIN, MAX, AVG). Además, HAVING se utiliza para campos que están agrupados. ¿Qué significa? Por ejemplo, si queremos conseguir países donde el número medio de habitantes en las ciudades sea superior a 50.000 habitantes, no podemos prescindir de HAVING. Según tengo entendido, esto se hace porque la agregación ocurre después de que se ha ejecutado la declaración WHERE y es imposible agregarle valores de agregación que se calcularán más adelante. Incluso si hasta ahora mis opiniones no aportan mucho a la comprensión, puedes simplemente aceptar esto como un hecho y seguir adelante. En la programación, a menudo sucede que si algo no está claro en un momento dado, puede significar que el cerebro simplemente aún no lo ha digerido. Duerme con este pensamiento y al día siguiente todo quedará más claro.Instalación del banco de trabajo MySQL
Aquí y más usaré Workbench para consultas. Te mostraré lo que necesitas para instalar y crear una conexión a la base de datos. Este es un producto de Oracle, por lo que sólo necesitas ir a su sitio web y seleccionar la versión y el sistema operativo que deseas. Para ello, sigue este enlace : Aquí podrás seleccionar exactamente el sistema operativo que necesitas. Haga clic en Descargar , pero en lugar de descargar veremos esta ventana: No se pierda, solo busque el botón llamado No, gracias, simplemente inicie mi descarga y comenzará la descarga. ¿Por qué hacen eso? Probablemente, para que más personas se registren con ellos, esto no nos importa. Después de la descarga exitosa, ejecute el archivo de instalación. En MacOS se ve así: Simplemente arrastre el ícono y listo, la instalación estará completa. No es tan difícil como instalar MySQL, ¿verdad? O simplemente nos hemos acostumbrado y tenemos más experiencia ;) La segunda parte de esta tarea es establecer una conexión con nuestra base de datos. ¿Qué se necesita para esto? Haga clic en el signo más al lado de Conexiones MySQL: En la ventana que aparece, ingrese los datos necesarios:- Nombre de la conexión : el nombre de nuestra conexión. Escribe nombres lo más claros posible para que no haya problemas de identificación más adelante. Le doy a esta conexión el nombre JRTB_DB ;
- Nombre de host : ya estará configurado como local 127.0.0.1 (también conocido como localhost). En nuestro caso, no es necesario cambiar nada, ya que la base de datos está instalada en la computadora, pero si la base de datos está en otro lugar, entonces el host (ip de la máquina en la que se ejecuta la base de datos) debe cambiarse en consecuencia;
- Nombre de usuario : también puede especificar su usuario si es necesario. Si no ha agregado nada en esta clave, déjela sin cambios;
- Contraseña : haga clic en Guardar en llavero y establezca exactamente la contraseña que usted mismo estableció. Dejé todo simple: root .
GO TO FULL VERSION