{"id":21974044,"url":"https://github.com/eliashdzr/java-sql-developer","last_synced_at":"2026-05-13T07:04:47.276Z","repository":{"id":247511869,"uuid":"823386050","full_name":"EliasHdzR/java-sql-developer","owner":"EliasHdzR","description":"A Command Line Interface for a MariaDB based SQL made from scratch in Java.","archived":false,"fork":false,"pushed_at":"2024-08-13T17:35:09.000Z","size":256,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"practice-2","last_synced_at":"2025-01-28T03:17:06.340Z","etag":null,"topics":["java-17","sql"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EliasHdzR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-03T00:10:27.000Z","updated_at":"2024-08-13T14:51:31.000Z","dependencies_parsed_at":"2024-08-13T17:39:08.501Z","dependency_job_id":null,"html_url":"https://github.com/EliasHdzR/java-sql-developer","commit_stats":null,"previous_names":["eliashdzr/java-sql-developer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EliasHdzR%2Fjava-sql-developer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EliasHdzR%2Fjava-sql-developer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EliasHdzR%2Fjava-sql-developer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EliasHdzR%2Fjava-sql-developer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EliasHdzR","download_url":"https://codeload.github.com/EliasHdzR/java-sql-developer/tar.gz/refs/heads/practice-2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245033580,"owners_count":20550298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-17","sql"],"created_at":"2024-11-29T15:37:12.931Z","updated_at":"2026-05-13T07:04:47.242Z","avatar_url":"https://github.com/EliasHdzR.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Misión Principal - Actividad Práctica 1\n\n## Librería para la manejo de sentencias SQL en archivos SCV.\n\nSe necesita un sistema en Java que sea capaz de interpretar las sentencias `CREATE TABLE`, `INSERT`, `UPDATE`, `SELECT`, `DELETE`, así como otros comandos SQL utilizando archivos CSV para las consultas de datos. Se entenderá que cada *Tabla* corresponderá a un archivo CSV en la ruta de trabajo (**Base de Datos**), en donde cada campo/atributo de la tabla corresponderá a una columna del archivo CSV.\n\n\nA continuación se describirán cada una de las sentencias.\n\n\n1. Se deberá establecer una ruta de trabajo, el cual será el directorio desde donde se leerán y/o crearán los archivos. El nombre de la carpeta corresponderá al nombre de la base de datos. Lo anterior mediante el comando `USE $PATH$` donde *$PATH$* será la ruta relativa o obsoluta de la carpeta de trabajo.\n2. Una vez establecida la ruta de trabajo, se deberá poder mostrar el listado de las *Tablas* (archivos CSV en la ruta de trabajo) mediante el comando `SHOW TABLES`.\n3. El comando `CREATE TABLE` deberá ser capáz de crear un nuevo archivo, respetando la sintaxis de SQL para la creación de los campos. Por ejemplo:\n\u003e```sql\n  \u003e CREATE TABLE Alumnos (\n  \u003e   id INT NOT NULL PRIMARY KEY,\n  \u003e    nombre VARCHAR(20) NOT NULL,\n  \u003e    app VARCHAR(20) NOT NULL,\n  \u003e    apm VARCHAR(20) NOT NULL,\n  \u003e    edad INT NULL\n  \u003e);\n  \u003e```\ndará como resultado el archivo `$PATH$/Alumnos.csv` con las columnas:\n\u003e `id,nombre,app,apm,edad`.\n\n4. El comando `DROP TABLE` deberá ser capáz de eliminar el archivo de la carpeta. **Se deberá preguntar si realmente quiere borrar el archivo**.\n5. El comando `INSERT` deberá ser capáz de insertar una nueva línea en el archivo/tabla. Se deberá respetar la sintaxis de SQL. Por ejemplo: `INSERT INTO table_name (column1, column2,column3, ...) VALUES (value1, value2, value3, ...);`.\n6. El comando `DELETE` deberá ser capáz de borrar una fila o un conjunto de filas respetando la sección `WHERE` de la sintaxis de SQL (`DELETE FROM table_name WHERE condition;`).\n\u003e **NOTA:**\n\u003e Se deberá respetar las búsquedas complejas utilizando los comandos `AND` Y `OR`. Por ejemplo: `DELETE FROM Alumnos WHERE (app='González' AND apm \u003c\u003e 'Hernández') OR id=25;`; Sólo borraría a los alumnos con apellidos *González Hernández* o aquél con *id=25*.\n\n7. El comando `UPDATE` actualizará las columnas de una fila o un conjunto de filas. Se deberá respetar la sintaxis de SQL. `UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;`. **NOTA: la sección de `WHERE condition` respeta el mismo formato del comando `DELETE`.\n8. El comando `SELECT` obtendrá el conjunto de datos desde la tabla/archivo respetando la sintaxys de SQL `SELECT [*] | select_expr [, select_expr] ... [as alias] [FROM  table_reference [WHERE where_condition]`.\n\n\n## Entregables.\n\nA continuación se describe el conjunto de entregables:\n\n1. Librería en archivo `JAR` auto ejecutable.\n2. Código fuente, éste se mantendrá en el respositorio.\n3. Como parte del repositorio se deberán programar todas las pruebas unitarias necesarias para probar el funcionamiento del sistema.\n4. Se deberá realizar un reporte que contenga la explicación del funcionamiento del sistema, así como la explicación a detalle de las pruebas unitarias realizadas. **EL REPORTE SE SUBIRÁ EN FORMATO PDF EN CLASSROOM*.\n\n# Misión Principal - Actividad Práctica 2\n## Librería para la manejo de Excepciones de sentencias SQL en archivos SCV.\n\nSe necesita un framework de Excepciones para manejar las distintas situaciones anómalas (Excepciones) de la librería para el menejo de sentencias SQL (Práctica 1). Se deberán establecer excepciones marcadas y no marcadas dentro del framework.\n\nDel mismo modo se deberá implementar un sistema interactivo (interprete interactivo) para consultar tablas (archivos CSV) de diferentes bases de datos (carpetas). Del mismo modo se deberán agregar funciones *BUIT-IN* (Ver anexo).\n\n---\n\n## Entregables\n\n  1. Archivo JAR auto-ejecutable del sistema.\n  2. Código fuente, éste se mantendrá en el respositorio.\n  3. Como parte del repositorio se deberán programar todas las pruebas unitarias necesarias para probar el funcionamiento del sistema.\n  4. Se deberá realizar un reporte que contenga la explicación del funcionamiento del sistema, así como la explicación a detalle de las pruebas unitarias realizadas. *EL REPORTE SE SUBIRÁ EN FORMATO PDF EN CLASSROOM.\n\n---\n\n  \u003e **Nota**\n  \u003e Se deberán generar y cachar todas las posibles excepciones. Dado que si el programa no responde o se cierra debido a una excepción. La práctica será marcada como no entregada.\n\n---\n\n\n# Anexo\n\n  \u003e SQL viene incluido con una serie de funciones integradas. Las funciones integradas son simplemente funciones que ya vienen implementadas en el servidor SQL. Estas funciones nos permiten realizar diferentes tipos de manipulaciones en los datos. Las funciones integradas se pueden clasificar básicamente en las siguientes categorías más utilizadas.\n  \u003e\n  \u003e **Funciones de cadenas** – operan en tipos de datos de cadena\n  \u003e **Funciones numéricas** : opere en tipos de datos numéricos\n  \u003e **Funciones de fecha** : operan en tipos de datos de fecha\n  \u003e **Funciones agregadas** : opere en todos los tipos de datos anteriores y produzca conjuntos de resultados resumidos.\n\n### Funciones de cadena\n\n El script que se muestra a continuación demuestra el uso de la función “UCASE”.\n\n   ```SQL\n   SELECT `movie_id`,` title`, UCASE (`title`) FROM` movies`;\n   ```\n\n\nAqui `UCASE ('title')` es la función incorporada que toma el título como parámetro y lo devuelve en letras mayúsculas con el nombre de alias `upper_case_title`.\n\n\n## Funciones numéricas\nPodemos realizar cálculos matemáticos sobre datos numéricos en las declaraciones SQL.\n\n### Operadores aritméticos\n\nSQL admite los siguientes operadores aritmáticos que se pueden usar para realizar cálculos en las sentencias de SQL.\n\n| **Nombre** | **Descripción** |\n|------------|-----------------|\n| DIV        | División entera |\n| /          | División        |\n| –          | Sustracción     |\n| +          | Adición         |\n| *          | Multiplicación  |\n| % o MOD    | Módulo          |\n\n### División entera (DIV)\n\n ```SQL\n SELECT 23 DIV 6;\n ```\nEjecutar el script anterior nos da los siguientes resultados.\n\n`3`\n\n### Operador de división (/)\n\nVeamos ahora el ejemplo del operador de división. Modificaremos el ejemplo de DIV.\n\n ```SQL\n SELECT 23/6;\n ```\nEjecutar el script anterior nos da los siguientes resultados.\n\n`3.8333`\n\n### Operador de resta (-)\n\nVeamos ahora el ejemplo del operador de resta. Utilizaremos los mismos valores que en los dos ejemplos anteriores\n\n ```SQL\n SELECT 23 - 6;\n ```\nEjecutar el script anterior nos da `17`\n\n### Operador adicional (+)\n\nVeamos ahora el ejemplo del operador de suma. Modificaremos el ejemplo anterior.\n\n ```SQL\n SELECT 23 + 6;\n ```\nEjecutar el script anterior nos da `29`\n\n### Operador de multiplicación (*)\n\nVeamos ahora el ejemplo del operador de multiplicación. Usaremos los mismos valores que en los ejemplos anteriores.\n\n ```SQL\n SELECT 23 * 6 AS `multiplication_result`;\n ```\nEjecutar el script anterior nos da los siguientes resultados.\n\n```\nmultiplication_result\n138\n``` \n\n### Operador Modulo (-)\n\nEl operador de módulo divide N por M y nos da el recordatorio. Veamos ahora el ejemplo del operador de módulo. Usaremos los mismos valores que en los ejemplos anteriores.\n\n ```SQL\n SELECT 23% 6;\n ```\nOR\n\n ```SQL\n SELECT 23 MOD 6;\n ```\n \n\nEjecutar el script anterior nos da `5`\n\nVeamos ahora algunas de las funciones numéricas comunes en SQL.\n\nFLOOR : esta función elimina decimales de un número y lo redondea al número más bajo más cercano. El script que se muestra a continuación demuestra su uso.\n\n ```SQL\n SELECT FLOOR (23/6) AS `floor_result`;\n ```\n \n\nEjecutar el script anterior nos da los siguientes resultados.\n```\nFloor_result\n3\n```\n\nROUND : esta función redondea un número con decimales al número entero más cercano. El script que se muestra a continuación demuestra su uso.\n\n ```SQL\n SELECT ROUND (23/6) AS `round_result`;\n ```\nEjecutar el script anterior nos da los siguientes resultados.\n```\nRound_result\n4\n``` \n\nRAND : esta función se usa para generar un número aleatorio, su valor cambia cada vez que se llama a la función. El script que se muestra a continuación demuestra su uso.\n\n ```SQL\n SELECT RAND() AS `random_result`;\n ```\n\n## Funciones agregadas\n\n### COUNT función\n\nLa función `COUNT` devuelve el número total de valores en el campo especificado. Funciona tanto en tipos de datos numéricos como no numéricos. Todas las funciones agregadas por defecto excluyen valores nulos antes de trabajar en los datos.\n\n`COUNT (*)` es una implementación especial de la función `COUNT` que devuelve el recuento de todas las filas en una tabla especificada. `COUNT (*)` también considera nulos y duplicados.\n\nLa tabla que se muestra a continuación muestra los datos en la tabla movierentals\n\n| **número de referencia** | **Fecha de Transacción** | **Fecha de regreso** | **número de socio** | **movie_id** | **movie_ returned** |\n|----------------------|----------------------|------------------|-----------------|----------|-----------------|\n| 11                   | 20-06-2012           | NULO             | 1               | 1        | 0               |\n| 12                   | 22-06-2012           | 25-06-2012       | 1               | 2        | 0               |\n| 13                   | 22-06-2012           | 25-06-2012       | 3               | 2        | 0               |\n| 14                   | 21-06-2012           | 24-06-2012       | 2               | 2        | 0               |\n| 15                   | 23-06-2012           | NULO             | 3               | 3        | 0               |\n\nSupongamos que queremos obtener el número de veces que la película con ID 2 se ha alquilado\n\n```SQL\nSELECT COUNT (`movie_id`) FROM` movierentals` WHERE `movie_id` = 2;\n```\n \nEjecutar la consulta anterior en SQL workbench contra myflixdb nos da los siguientes resultados.\n```SQL\nCOUNT (‘movie_id’)\n3\n```\n\n### Palabra clave DISTINCT\n\nLa palabra clave `DISTINCT` que nos permite omitir los duplicados de nuestros resultados. Esto se logra agrupando valores similares juntos.\n\nPara apreciar el concepto de Distinct, vamos a ejecutar una consulta simple\n```SQL\n SELECT `movie_id` FROM` movierentals`;\n\n\nmovie_id\n1\n2\n2\n2\n3\n```\nAhora ejecutemos la misma consulta con la palabra clave distinct –\n\n```SQL\nSELECT DISTINCT `movie_id` FROM` movierentals`;\n```\n \nComo se muestra a continuación, distinct omite registros duplicados de los resultados.\n\n```\nmovie_id\n1\n2\n3\n```\n\n### Función MIN\n\nLa función `MIN` devuelve el valor más pequeño en el campo de tabla especificado .\n\nComo ejemplo, supongamos que queremos saber el año en el que se lanzó la película más antigua de nuestra biblioteca, podemos usar la función `MIN`` de SQL para obtener la información deseada.\n\nLa siguiente consulta nos ayuda a lograr eso\n\n```SQL\nSELECT MIN (`year_released`) FROM` movies`;\n```\nEjecutar la consulta anterior en SQL workbench contra myflixdb nos da los siguientes resultados.\n\n```SQL\nMIN (‘año liberado’)\n2005\n```\n\n### Función MAX\n\nTal como su nombre lo sugiere, la función `MAX` es lo opuesto a la función `MIN`. Se devuelve el valor más grande desde el campo de la tabla especificada .\n\nSupongamos que queremos obtener el año en que se lanzó la última película en nuestra base de datos. Podemos usar fácilmente la función `MAX` para lograr eso.\n\nEl siguiente ejemplo devuelve el último año de la película publicado.\n\n```SQL\nSELECT MAX (`year_released`) FROM` movies`;\n```\nEjecutar la consulta anterior en SQL workbench utilizando myflixdb nos da los siguientes resultados.\n\n```SQL\nMAX (‘year_released’)\n2012\n```\n\n### Función SUMA\n\nSupongamos que queremos un informe que dé la cantidad total de pagos realizados hasta el momento. Podemos usar la función `SUMA` de SQL que devuelve la suma de todos los valores en la columna especificada . SUM funciona solo en campos numéricos . Los valores nulos se excluyen del resultado devuelto.\n\nLa siguiente tabla muestra los datos en la tabla de pagos.\n\n| **ID de pago** | **número de socio** | **fecha de pago** | **descripción**              | **cantidad pagada** | **número de referencia_externo** |\n|----------------|---------------------|-------------------|------------------------------|---------------------|----------------------------------|\n| 1              | 1                   | 23-07-2012        | Pago de alquiler de película | 2500                | 11                               |\n| 2              | 1                   | 25-07-2012        | Pago de alquiler de película | 2000                | 12                               |\n| 3              | 3                   | 30-07-2012        | Pago de alquiler de película | 6000                | NULO                             |\n\na consulta que se muestra a continuación obtiene todos los pagos realizados y los resume para devolver un único resultado.\n\n```SQL\nSELECT SUM(`amount_paid`) FROM` payments`;\n```\nEjecutar la consulta anterior en MySQL workbench contra myflixdb da los siguientes resultados.\n\n```\nSUM (‘amount_paid’)\n10500\n```\n\n### Función AVG\n\nLa función de SQL AVG devuelve el promedio de los valores en una columna especificada. Al igual que la función SUMA, funciona solo en tipos de datos numéricos .\n\nSupongamos que queremos encontrar el monto promedio pagado. Podemos usar la siguiente consulta:\n\n```SQL\nSELECT AVG(`amount_paid`) FROM` payments`;\n```\nEjecutando la consulta anterior en MySQL workbench, nos da los siguientes resultados.\n\n```\nAVG (‘amount_paid’)\n3500\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feliashdzr%2Fjava-sql-developer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feliashdzr%2Fjava-sql-developer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feliashdzr%2Fjava-sql-developer/lists"}