{"id":19741517,"url":"https://github.com/kevinrivera1/postgresql-manual","last_synced_at":"2026-03-19T11:24:21.270Z","repository":{"id":226688208,"uuid":"769394597","full_name":"KevinRivera1/PostgreSQL-Manual","owner":"KevinRivera1","description":"Este repositorio es una valiosa fuente de información para aquellos que deseen aprender y trabajar con PostgreSQL.","archived":false,"fork":false,"pushed_at":"2024-03-09T01:11:57.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T20:15:12.189Z","etag":null,"topics":["relational-databases","sgbd","sql"],"latest_commit_sha":null,"homepage":"","language":null,"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/KevinRivera1.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}},"created_at":"2024-03-09T00:47:19.000Z","updated_at":"2024-03-09T00:52:53.000Z","dependencies_parsed_at":"2024-03-09T02:25:28.585Z","dependency_job_id":"17d7c2cf-e12e-48eb-9a5b-1c38484c7771","html_url":"https://github.com/KevinRivera1/PostgreSQL-Manual","commit_stats":null,"previous_names":["kevinrivera1/postgresql-manual"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KevinRivera1%2FPostgreSQL-Manual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KevinRivera1%2FPostgreSQL-Manual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KevinRivera1%2FPostgreSQL-Manual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KevinRivera1%2FPostgreSQL-Manual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KevinRivera1","download_url":"https://codeload.github.com/KevinRivera1/PostgreSQL-Manual/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241072350,"owners_count":19904745,"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":["relational-databases","sgbd","sql"],"created_at":"2024-11-12T01:26:50.734Z","updated_at":"2026-02-09T00:04:00.015Z","avatar_url":"https://github.com/KevinRivera1.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Manual de PostgreSQL\n\nEste manual proporciona una guía paso a paso para aprender PostgreSQL, un sistema de gestión de bases de datos relacional de código abierto y potente.\n\n## Contenido\n\n1. [Introducción](#introducción)\n2. [Instalación](#instalación)\n3. [Conceptos Básicos](#conceptos-básicos)\n4. [Operaciones Básicas](#operaciones-básicas)\n5. [Modificación de Tablas](#modificación-de-tablas)\n6. [Eliminación de Tablas](#eliminación-de-tablas)\n\n## Introducción\n\nPostgreSQL es un sistema de gestión de bases de datos relacional extremadamente potente y versátil. Se destaca por su capacidad para manejar grandes cargas de trabajo y su amplia gama de características.\n\n## Instalación\n\nPara instalar PostgreSQL, sigue las instrucciones específicas para tu sistema operativo en la [documentación oficial](https://www.postgresql.org/docs/).\n\n## Conceptos Básicos\n\nAlgunos conceptos básicos que necesitas comprender antes de comenzar son:\n\n- **Tablas:** Almacenan los datos en filas y columnas.\n- **Consultas:** Se utilizan para recuperar datos de la base de datos.\n- **Claves primarias y extranjeras:** Se utilizan para establecer relaciones entre tablas.\n- **Comandos SQL:** Se utilizan para interactuar con la base de datos.\n\n## Operaciones Básicas\n\n### Creación de Tablas\n\n```sql\n\n-- Ejemplo de creación de tabla\n\n-- Tabla Imagenes\nCREATE TABLE Imagenes (\n  id_imagen SERIAL PRIMARY KEY,\n  ruta VARCHAR(255) NOT NULL,\n  formato VARCHAR(10) NOT NULL,\n  tamaño INT NOT NULL,\n  fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Tabla Servicios\nCREATE TABLE Servicios (\n  id_servicio SERIAL PRIMARY KEY,\n  nombre VARCHAR(100) NOT NULL,\n  descripcion TEXT,\n  precio DECIMAL(10,2) NOT NULL,\n  proveedor VARCHAR(50) NOT NULL,\n  imagenes_id INTEGER, -- Añadimos la columna imagenes_id\n  CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen)\n);\n\n-- Tabla Productos\nCREATE TABLE Productos (\n  id_producto SERIAL PRIMARY KEY,\n  nombre VARCHAR(100) NOT NULL,\n  descripcion TEXT,\n  precio DECIMAL(10,2) NOT NULL,\n  stock INT NOT NULL,\n  marca VARCHAR(50) NOT NULL,\n  dimensiones VARCHAR(50),\n  imagenes_id INTEGER, -- Añadimos la columna imagenes_id\n  CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen)\n);\n\n-- Tabla Categorias\nCREATE TABLE Categorias (\n  id_categoria SERIAL PRIMARY KEY,\n  nombre VARCHAR(50) NOT NULL\n);\n\n-- Tabla Intermedia ProductoCategoria\nCREATE TABLE ProductoCategoria (\n  id_producto INTEGER NOT NULL,\n  id_categoria INTEGER NOT NULL,\n  tipo_categoria VARCHAR(50),\n  PRIMARY KEY (id_producto, id_categoria),\n  FOREIGN KEY (id_producto) REFERENCES Productos(id_producto),\n  FOREIGN KEY (id_categoria) REFERENCES Categorias(id_categoria)\n);\n```\n\n### En caso de haber creado las tablas sin relaciones, se pueden añadir después con el siguiente comando:\n\n```sql\n\n-- Añadir clave foránea\n\n-- Agregar columna imagenes_id y relación de clave externa en la tabla Productos\nALTER TABLE productos\nADD COLUMN imagenes_id INTEGER,\nADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen);\n\n-- Agregar columna imagenes_id y relación de clave externa en la tabla Servicios\nALTER TABLE servicios\nADD COLUMN imagenes_id INTEGER,\nADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen);\n```\n\n## Descripción de la Instrucción ALTER TABLE\n\n- **ALTER TABLE:** Esta es la instrucción SQL que se utiliza para realizar cambios en la estructura de una tabla existente.\n\n- **productos:** Es el nombre de la tabla en la que queremos hacer cambios.\n\n- **ADD COLUMN imagenes_id INTEGER:** Esto agrega una nueva columna llamada 'imagenes_id' a la tabla 'productos'.\n\n  - La columna es de tipo INTEGER, lo que significa que almacenará valores numéricos enteros.\n\n- **ADD CONSTRAINT fk_imagenes_id FOREIGN KEY (imagenes_id) REFERENCES imagenes(id_imagen):**\n\n  - Esta parte establece una restricción de clave externa (foreign key constraint) en la columna 'imagenes_id' de la tabla 'productos'.\n\n  - La restricción se llama 'fk_imagenes_id'.\n\n  - Esto significa que los valores en la columna 'imagenes_id' de la tabla 'productos' deben hacer referencia a los valores en la columna 'id_imagen' de la tabla 'imagenes'.\n\n  - Esto establece una relación entre las dos tablas, donde 'productos' tiene una referencia a 'imagenes'.\n\n## Elimina la tabla\n\n```sql\n-- Eliminar tabla con relaciones:\nDROP TABLE nombre_tabla CASCADE;\n\n-- Ejemplos:\nDROP TABLE categorias CASCADE;\nDROP TABLE imagenes CASCADE;\nDROP TABLE productocategoria CASCADE;\nDROP TABLE productos CASCADE;\nDROP TABLE servicios CASCADE;\n```\n\n## Relacion de tablas uno auno\n\n```sql\n-- Crear tabla\n-- Crear la tabla persona\nCREATE TABLE persona (\n  id_persona SERIAL PRIMARY KEY,\n  nombre VARCHAR(50) NOT NULL,\n  apellido VARCHAR(50) NOT NULL,\n  edad INTEGER\n);\n\n-- Crear la tabla direccion\nCREATE TABLE direccion (\n  id_direccion SERIAL PRIMARY KEY,\n  calle VARCHAR(100) NOT NULL,\n  ciudad VARCHAR(50) NOT NULL,\n  codigo_postal VARCHAR(10) NOT NULL,\n  id_persona INTEGER UNIQUE,  -- Se añade la restricción UNIQUE para asegurar que cada dirección esté asociada a una sola persona\n  FOREIGN KEY (id_persona) REFERENCES persona(id_persona) ON DELETE CASCADE  -- Se establece la clave foránea con opción de eliminación en cascada\n);\n```\n\n### Explicación detallada de la Relación Uno a Uno\n\nEn la definición de la tabla `direccion`, hemos establecido una restricción de clave foránea (**FOREIGN KEY**), que es una regla que asegura la consistencia de los datos entre dos tablas relacionadas en una base de datos relacional.\n\n- **Clave Foránea (FOREIGN KEY):** Esta restricción garantiza la integridad referencial entre dos tablas. En este caso, la clave foránea se ha aplicado a la columna `id_persona` en la tabla `direccion`.\n\n- **Referencia a la tabla `persona`:** La clave foránea en la columna `id_persona` de la tabla `direccion` está referenciando la columna `id_persona` en la tabla `persona`. Esto significa que los valores en la columna `id_persona` de la tabla `direccion` deben coincidir con los valores en la columna `id_persona` de la tabla `persona`.\n\n- **ON DELETE CASCADE:** Esto es una especificación adicional que hemos añadido a la restricción de clave foránea. Cuando se establece en `ON DELETE CASCADE`, indica que si se elimina una fila en la tabla `persona`, todas las filas relacionadas en la tabla `direccion` que contienen el mismo valor en la columna `id_persona` también se eliminarán automáticamente. Esta acción es útil para mantener la integridad referencial y evitar registros huérfanos en la base de datos.\n\n## Colaboración y Contribuciones\n\n¡Tu contribución es bienvenida para mejorar este manual! Si tienes sugerencias para agregar contenido adicional, corregir errores o mejorar la claridad de la información, ¡no dudes en participar!\n\n### Cómo Contribuir\n\n1. Haz un clone de este repositorio y clona tu copia localmente:\n\n```bash\ngit clone https://github.com/TuUsuario/NombreDelRepositorio.git\n```\n\n2. Crea una nueva rama para tu contribución:\n\n```bash\ngit checkout -b nueva-funcionalidad\n```\n\n3. Crea un Pull Request (PR) desde tu rama en GitHub.\n4. Describa detalladamente tus cambios en el PR y espera comentarios o revisiones.\n\n### Informar Problemas\n\n- Esta sección proporciona instrucciones claras sobre cómo contribuir al proyecto a través de `pull requests` en GitHub, así como cómo informar problemas o sugerencias a través de `issues`.\n\n- Si encuentras un problema o tienes una sugerencia para mejorar el manual, por favor crea un `issue` en este repositorio.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinrivera1%2Fpostgresql-manual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinrivera1%2Fpostgresql-manual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinrivera1%2Fpostgresql-manual/lists"}