Hablando de metros, dejo esto por acá 😎🚝🚎🚌🚠
Introducción
¿Cuál es la diferencia entre MySQL y MariaDB?
Proyecto del curso: metro de CDMX
Diagramas Entidad Relación
Diagramas conceptuales vs. diagramas físicos
Diagrama conceptual: estableciendo relaciones
Diagrama físico: detalles en las tablas
Reto: relaciones en el diagrama físico
Instalando nuestras herramientas
Instalación de MariaDB en Windows
Instalación de MariaDB en Linux
Instalación de MariaDB en macOS
Sentencias básicas
Archivos SQL: CREATE DATABASE
Manejo de usuarios para la base de datos
CREATE TABLE
Modificando tablas con ALTER TABLE
Playground: Manejo de Tablas con SQL
Insertando información en la base de datos
Actualizando información: UPDATE
Borrando datos: DELETE
Playground: INSERT, UPDATE y DELETE en SQL
Listando datos: SELECT
Playground: Metro de CDMX en SQL
Consultas anidadas
¿Qué son las consultas anidadas?
Creando nuestra primer consulta anidada
Playground: Metro de Bogotá en SQL
Geolocalización
¿Cómo funciona la geolocalización?
Creando nuestras consultas de geolocalización
Reto: geolocalización con consultas anidadas
Stored Procedures
¿Qué son los Stored Procedures?
Crea tus primeras Stored Procedures
Prepared statements
Triggers
¿Qué son los triggers?
Crea tus primeros triggers
Triggers compuestos
Bonus
Confesión personal: phpMyAdmin es superior
Próximos pasos
Cómo seguir aprendiendo SQL
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
RetaxMaster
Aportes 26
Preguntas 7
Hablando de metros, dejo esto por acá 😎🚝🚎🚌🚠
Para los que no ven 🙈 mejor que buscar la imagen, aquí están las líneas 👀
Ferrería -> Línea 6
Pantitlan - Línea 1, Línea 5, Línea 9, Línea A
Tacuba -> Línea 7, Línea 2
Martín Carrera -> Línea 4, Línea 6
Descubrí que se pueden declarar funciones en SQL, así que me puse la tarea de crear una función con la que le pasara el id de la linea y el nombre de la estación que queria relacionar y me quedó así
DELIMITER //
CREATE FUNCTION insertTuple2(id, nameToFilter) RETURN INT
BEGIN
INSERT INTO `metro_project`.`lines_stations` (line_id, station_id) VALUES
(id, (SELECT id FROM `metro_project`.`stations` WHERE name=nameToFilter))
RETURN NULL
END //
DELIMITER ;
Lo que me pareció mas interesante fue el DELIMITER (Ya que sirve para cambiar el simbolo que representa el fin de una linea en SQL) y lo determinante que es para que funcione correctamente la sentencia, me pase dos noches sin poder avanzar por no entenderlo. Espero les pique el bicho de la curiosidad.
Saludos
Espero poder sacar provecho de esté curso para inicarme como desarrollador para el metro de Bogota D.C.
Mi reto va a ser el Metro de Caracas (excluyendo a las zonas en construcción y el el metro de los Teques)
Para quienes lo esten haciendo del transmilenio Bogotá
Troncales
<
A-Caracas |
| D-Cl 80 |
| G-NQS sur |
| K-Cl 26 |
| B-Norte |
| E-NQS central |
| H-Caracas sur |
| L-kr 10 |
| C-Suba |
| F-americas |
| J-Eje ambiental |
| M-Kr 7
>
Esraciones por troncales
A
<
Tercer milenio |
| Av jimenez |
| cll 19 |
| cll 22 |
| cll 26 |
| Profamilia |
| av 39 |
| cll 45 |
| Marly |
| cll 57 |
| cll 63 |
| Flores |
| cll 72 |
| cll 76 |
| Heroes
>
D
<
Polo |
| Escuela militar |
| cra 47 |
| cra 53 |
| av 68 |
| Ferias |
| Boyacá |
| Minuto de Dios |
| Granja-cra 77 |
| av cali |
| cra 90 |
| Quirigua |
| Portal de la 80
>
G
<
Comuneros |
| Santa isabel |
| SENA |
| NQS-cll 30 s |
| NQS-cll 38-a s |
| General Santander |
| Alquería |
| Venecia |
| Sevillana |
| Madelena |
| Perdomo |
| Portal del sur |
| Bosa |
| La despensa |
| León XIII |
| Terreros-hospitalC.V |
| San Mateo
>
K
<
Universidades |
| Centro memoria |
| Plaza deLaDemocracia |
| Ciudad universitaria |
| Corferias |
| Quinta paredes |
| Gobernación |
| CAN |
| Salitre-el greco |
| El tiempo-maloka |
| av rojas |
| Normandía |
| Modelia |
| Portal el Dorado |
| Aereopuerto elDorado
>
B
<
cll 85 |
| Virrey |
| cll 100 |
| cll 106 |
| Pepe sierra |
| cll 127 |
| Prado |
| Alcalá |
| cll 142 |
| cll 146 |
| Mazurén |
| Cardio infantil |
| Toberín |
| Portal del norte |
| cll 187 |
| Terminal >
E
<
Tigua-san Jose |
| Guatoque-veraguas |
| Ricaurte |
| Paloquemao |
| CAD |
| av el Dorado |
| U nacional |
| CampinUAntonioNariño |
| Coliseo |
| Simón Bolívar |
| av Chile |
| NQS-cll 75 |
| La castellana
>
H
<
Hospital |
| Nariño |
| Fucha |
| Restrepo |
| Olaya |
| Quiroga |
| cll 40 s |
| Santa Lucía |
| Socorro |
| Consuelo |
| Molinos |
| Portal Usme |
| Biblioteca |
| Parque |
| Portal del Tunal
>
L
<
Portal 20 de Julio |
| Country sur |
| av 1 de Mayo |
| Ciudad jardin-UAN |
| Policarpa |
| Hospitales |
| Bicentenario |
| San victorino |
| Las nieves |
| San Diego>
C
<
San Martin |
| Rio negro |
| Suba-cll 95 |
| Suba-cll 100 |
| Puente largo |
| Shaio |
| Humedal córdoba |
| Niza-cll 127 |
| Suba-av Boyacá |
| Gratamira |
| 21 Ángeles |
| Suba-tv 91 |
| La campiña |
| Portal de suba
>
F
<
De la sabana |
| San facon-kra 22 |
| CDS-kra 32 |
| Zona industrial |
| cra 43 |
| Puente aranda |
| Américas-kra 53A |
| Pradera |
| Marsella |
| Mundo Aventura |
| Mandalay |
| Banderas |
| Transversal 86 |
| Biblioteca tintal |
| Patio bonito |
| Portal deLasAméricas
>
J
<
Las aguas |
| Museo del oro
>
M
<Kra 7 >
Existe una mejor manera de llenar la tabla lines_stations
con solo un Query.
.
Pero para lograr esto, hay que hacer cambios en la tabla de stations
. Se tendría que agregar la columna line_id
dentro de esta tabla de stations
.
.
Yo lo hice de esa forma porque siempre cada estación va a pertenecer a una línea del metro. Y en caso de las estaciones con más de una línea, para eso nos va a ayudar la tabla pivot.
.
Despues de agregar este campo, hay que agregarle un valor a cada estación. Ese código lo tengo ya hecho en este archivo sql: https://github.com/irvingvjuarez/mariadb-course/blob/main/update/update-line-id.sql
.
Una vez que ya todas las estaciones tienen un valor en line_id
, entonces ahora si podemos llenar de manera sencilla la tabla lines_stations
con el siguiente query
USE cdmx_subway;
INSERT INTO lines_stations (station_id, line_id)
SELECT id, line_id
FROM stations;
Y listo, la tabla pivot se habrá llenado de valores de manera rápida y sencilla
Tengo suerte porque decidí hacer el proyecto con el metro de Buenos Aires que tiene 85 estaciones jeje
Mysql sí acepta acentos.
SI COPIASTE TODA LA TABLA DE UNA Y QUERES VER SI LO QUE PUSO EL PROFE ESTA BIEN:
SELECT * FROM metro_cdmx.lines_stations
WHERE line_id = 9 AND station_id = 1;
Y ENCONTRAS EL RESULTADO
This course is amazing!
Lo habia hecho con anterioridad y así tengo creada esa tabla:
CREATE TABLE `lines_stations`(
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`lines_id` BIGINT(20) UNSIGNED NOT NULL,
`stations_id` BIGINT(20) UNSIGNED NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
CONSTRAINT `lines_stations_line_id_foreign` FOREIGN KEY(`lines_id`) REFERENCES `lines`(`id`),
CONSTRAINT `lines_stations_stations_id_foreign` FOREIGN KEY(`stations_id`) REFERENCES `stations`(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
![](
La conclucion con respecto al uso de los acentos sería: De preferencia, no lo uses.
USE metro_cdmx;
TRUNCATE TABLE `lines_stations`;
INSERT INTO
`lines_stations` (lines_id, stations_id)
VALUES
(
(
SELECT
`lines`.`id`
FROM
`lines`
WHERE
`lines`.`name` = 'Linea 1'
),
(
SELECT
`stations`.`id`
FROM
`stations`
WHERE
`stations`.`name` = 'Buenavista'
)
),
(
(
SELECT
`lines`.`id`
FROM
`lines`
WHERE
`lines`.`name` = 'Linea 1'
),
(
SELECT
`stations`.`id`
FROM
`stations`
WHERE
`stations`.`name` = 'Zaragoza'
)
),
(
(
SELECT
`lines`.`id`
FROM
`lines`
WHERE
`lines`.`name` = 'Linea 2'
),
(
SELECT
`stations`.`id`
FROM
`stations`
WHERE
`stations`.`name` = 'Gómez Farías'
)
),
(
(
SELECT
`lines`.`id`
FROM
`lines`
WHERE
`lines`.`name` = 'Linea 1'
),
(
SELECT
`stations`.`id`
FROM
`stations`
WHERE
`stations`.`name` = 'Boulevard Puerto Aéreo'
)
),
(
(
SELECT
`lines`.`id`
FROM
`lines`
WHERE
`lines`.`name` = 'Linea 3'
),
(
SELECT
`stations`.`id`
FROM
`stations`
WHERE
`stations`.`name` = 'Balbuena'
)
);
-- SELECT
-- l.name AS nombre_linea,
-- l.color AS color_lines,
-- ls.lines_id AS id_linea,
-- ls.stations_id AS id_estacion,
-- s.name AS nombre_estacion
-- FROM
-- `lines` AS l
-- INNER JOIN lines_stations AS ls ON l.id = ls.lines_id
-- INNER JOIN stations AS s ON ls.stations_id = s.id;
USE metro_cdmx;
INSERT INTO `lines_stations` (line_id, station_id) VALUES
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name` = "Línea 9"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name` = "Lázaro Cárdenas"
)
)
Reto
INSERT INTO `lines_stations`(line_id, station_id) VALUES
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 9"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Lázaro Cárdenas"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 6"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Ferrería "
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 1"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Pantitlán"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 5"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Pantitlán"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 9"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Pantitlán"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea A"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Pantitlán"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 2"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Tacuba"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 7"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Tacuba"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 4"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Martín Carrera"
)
),
(
(
SELECT `lines`.`id`
FROM `lines`
WHERE `lines`.`name`= "Línea 6"
),
(
SELECT `stations`.`id`
FROM `stations`
WHERE `stations`.`name`="Martín Carrera"
)
);
Es maravilloso todo lo que he aprendido haciendo todo el proceso en cada clase; me salen errores desconocidos que me hacen buscar documentación, leer parte del manual de mariadb, buscar en foros y a veces despues de buscar por horas, darme cuenta que solo me faltaba una palabra o lo peor era solo un coma.
Son geniales las clases con Retax ❤️
Mi gran reto es insertar todas las estaciones del metro de medellín 😃
jajaja, yo esperando esta clase y preguntando ¿Qué pasó con esa tabla?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?