Descargar archivos ({{ 2 }})
Version 0.2.5
{{{"Hola negritos. Quiero aprender SQL y MySQL dato que quiero cambiar de empleo pero no se como comenzar y YouTube me confunde.\n\n¿Qué paginas o libros me recomiendan para aprender este lenguaje y que tan difícil es?" | renderPostMessage 41177}}}
>> | 155451496143.jpg [Google] [ImgOps] [iqdb] [SauceNAO] ( 71.70KB, 1087x1063, 50910845_2232130880446974_1978613681474240512_o.jpg ) {{{">>41177 (OP)\nAy negrito yo también quiero aprender base de datos. Espero un programanon te respondo" | renderPostMessage 41180}}} |
>> | {{{">>41177 (OP)\nAntes que nada deberás aprender los fundamentos de base de datos.\nDesde lo más básico: teoría de conjuntos, aprender algunos conceptos, diagramas entidad-relación, diagramas relacionales, tipos de dato, aprender a comprender las reglas de negocio, etc.\n\nYa después vas con comandos DML, DDL, creación de tablas, restricciones, vistas, insertar registros, consultas, etc.\n\nTe dejo algo con lo que puedes empezar:\nhttp://mateo.pbworks.com/w/file/fetch/122276985/Fundamentos_de_Bases_de_Datos_5a_Ed.-_Si.pdf" | renderPostMessage 41181}}} |
>> | {{{">>41177 (OP)\nUso el libro de silverchaus, es que necesitas aprender, modelado, diagramas, estructura y mantenimiento de bases de datos no solo Mysql, te puedes saltar la parte de álgebra relaciónala si te parece difícil pero aprende bien los join y las formas normales que serán las que mas uses, de MySQL es bastante sencillo.\n\nhttps://kakeboksen.td.org.uit.no/Database%20System%20Concepts%206th%20edition.pdf" | renderPostMessage 41182}}} |
>> | {{{">>41181\nSe me olvidaba, algo muy importante: la normalización.\n\nDebes saber normalizar una base de datos para que sea consistente, debes poner mucha atención a ese tema cuando lo estudies." | renderPostMessage 41183}}} |
>> | {{{">>41182\n>>41183\nMuchas gracias negritos, empezaré a leer sus recomendaciones para tener buenas prácticas y no crear o manipular BD's a lo tonto." | renderPostMessage 41190}}} |
>> | {{{">>41190\nKek, le vinculamos el mismo libro, solo que el en español y yo en ingles, toma el de español.\n\nLas reglas de normalizacion son faciles y te salvaran de muchos problemas de programacion y de gestion." | renderPostMessage 41191}}} |
>> | {{{">>41177 (OP)\n>¿Qué paginas o libros me recomiendan para aprender este lenguaje y que tan difícil es?\nUn libro que usaba como material de consulta mientras estudiaba programación era [i]Guía Lan Times de SQL[/i] de James R Groff aunque no parece haber una versión online, pero quizás lo puedas conseguir en alguna librería o universidad de tu ciudad.\n>>41182\n>álgebra relacional\nSolo por curiosidad, ¿para que me serviría saber álgebra relacional en SQL?" | renderPostMessage 42309}}} |
>> | {{{">>41177 (OP)\nnegrito aprende primero lo conceptual, llaves primarias, foraneas, tipos de datos, fechas, y luego practica negro, practica, eso es lo que te hara un buen DBA. Yo estuve bastante tiempo con lo teorico, pero no aprendi mucho sino fue hasta que puse en practica todo lo teorico, hay archivos de sql para practicar lo tecnico, busca northwide.sql, el instalador de mysql (no el de XAMPP) ya lo trae, es una base de datos gigante para practicas, suerte" | renderPostMessage 42310}}} |
>> | {{{">>42309\nCodd creo el algebra relacional como formalismo para manejar bases de datos, años despues SQL se baso en el algebra relacional, si no sabes SQL el algebra relacional puede parecer complicado o inutil, por que seria mejor aprender algo de SQL y ver el algebra relacional como base de SQL.\n\nAunque para personas mas expertas en SQL o con inclinacion mas matematica pueden usar el algebra relacional como formalismo para todo el manejo de bases de datos y el manejo de consultas.\n\nAqui un libro.\nhttp://web.cecs.pdx.edu/~maier/TheoryBook/TRD.html" | renderPostMessage 42315}}} |
>> | {{{">>42309\n>Solo por curiosidad, ¿para que me serviría saber álgebra relacional en SQL?\nPara saber el por que de las cosas, por que existe, por que se aplica, por que la normalizacion es necesaria y ayuda a que una base de datos bien diseñada no sea un puto infierno.\nEso es lo más simple que puedo pensar para explicarlo.\nNo es un conocimiento obligatorio, puedes usar un carro sin tener puta idea de los motores de combustión interna, pero si algun dia se descompone tu motor, ese conocimiento te puede resultar útil.\n\nDe la misma manera puedes usar una abse de datos sin saber cuestiones profundas, pero tener esos datos a la mano te puede ser de utilidad cuando alguien la cague, o cuando algun jefe pida cosas imposibles." | renderPostMessage 42341}}} |
>> | {{{">>42315\n>>42341\nLe estuve dando una lectura rápida a http://ict.udlap.mx/people/carlos/is341/bases04.html y básicamente son cosas que mas o menos ya domino (uniones, producto cartesiano, selección, etc).\n>Aunque para personas mas expertas en SQL o con inclinacion mas matematica pueden usar el algebra relacional como formalismo para todo el manejo de bases de datos y el manejo de consultas.\n>tener esos datos a la mano te puede ser de utilidad cuando alguien la cague, o cuando algun jefe pida cosas imposibles.\n¿Y conocer el álgebra relacional en profundidad también ayuda para optimizar consultas complejas o para eso es mejor emplear otras soluciones?" | renderPostMessage 43171}}} |
>> | {{{">>43171\nSe usa algo parecido para los algoritmos de optimizaciones de joins, pero en la vida real la optimizaciones de consultas es casi poner indices a las tablas, tener bien normalizadas las tablas o en cierto de normalizar las tablas y mas en profundidad conocer el motor de base de datos con el que trabajas, conocer las estructuras de datos como Arboles B,Hash tables, con esas bases lo normal que los motores avanzados descomponga las consultas en un lenguaje de menor nivel y puedas ver como funciona el planificador o compilador de esas consultas, pero eso es el nivel mas avanzado, de lo que veras es que los indices están indexados y que los joins(son el producto cartesiano) no exploten en tamaño o no re consultes mucho una parte de tu consulta." | renderPostMessage 43194}}} |
>> | {{{">>43171\n¿Cómo encontraste la página? Estudio en la UDLAP y no sabía de su existencia." | renderPostMessage 43491}}} |
>> | {{{">>41177 (OP)\n¿Alguien aquí tiene experiencia con el JSON de MySQL? En mi trabajo me pidieron implementar una tabla con atributos en este formato y tengo unas dudas sobre como hacer ciertos selects. Digamos que tengo una tabla como esta:\n[code]-- La clausula temporary es para que no guarde la tabla permanentemente al momento de ser creada --\nCREATE temporary TABLE pruebas(\njsondata JSON NOT NULL\n);\ninsert into pruebas values('[{\"id\": 1, \"name\": \"x\"},{\"id\": 2, \"name\": \"y\"},{\"id\": 3, \"name\": \"y\"},{\"id\": 4, \"name\": \"z\"}]');\ninsert into pruebas values('[{\"id\": 1, \"name\": \"y\"},{\"id\": 2, \"name\": \"y\"},{\"id\": 3, \"name\": \"z\"},{\"id\": 4, \"name\": \"x\"}]');[/code]\nAlgo que me interesa hacer es contar todos los atributos del tipo \"name\" que sean iguales a una determinada cosa. La idea seria hacer algo como esto:\n[code]select json_length(jsondata->'$[*].name') from pruebas where jsondata->'$[*].name' = \"y\";[/code]\nPero no he tenido suerte ya que no encontré la manera de filtrar solo las claves que me interesan. Estuve revisando la documentación de https://dev.mysql.com/doc/refman/5.7/en/json-functions.html e investigando al respecto pero no me ha ido mejor.\nOtra cosa que me haría falta seria elegir un \"id\" al azar de cada array, lo cual ya conseguí a través de este select:\n[code]select json_extract(jsondata, concat('$[', round((json_length(jsondata) - 1)* rand()), '].id')) from pruebas;[/code]\nAun así me gustaría saber si hay una mejor forma de hacerlo.\n>>43491\n>¿Cómo encontraste la página?\n¿Probaste buscando [i]álgebra relacional[/i] en Google? En mi caso aparece entre los primeros resultados." | renderPostMessage 44252}}} |
>> | {{{">>41177 (OP)\nTengo un par de preguntas sobre los selects.\nLa primera es, ¿que es mas eficiente, tres selects simples o uno complejo? Estoy considerando la idea de combinar unos selects que tengo en un script de php pero no se si eso haga que se tarde mas en devolver los mismos resultados.\nLa otra pregunta es, ¿hay alguna diferencia en cuanto a performance entre \"select * from tabla\" y \"select a, b from tabla\" (en especial si [i]tabla[/i] tiene muchas columnas)?\nPor si sirve de algo la base de datos es MySQL." | renderPostMessage 45132}}} |
>> | {{{">>45132\nEn la mayoría de los casos hacer casi todo en una consulta, el optimizador de consultas se encargara de hacer que la consulta necesite un mínimo de lecturas al disco duro y ser mas rápido, en caso de varias consultas tiene la latencia de la conexión, reprocesar la consulta y que se consulte varias veces el disco.\n\nDe select *, solo lo debes usar para pruebas en código de producción debes escribir todos los parámetros si no sucede algo como que realmente necesites que esa consulta tome o muestre los campos de mas, lo que pasa que SQL en varios tipos de consulta hace todas las columnas por todas las columnas, por lo que especificar el mínimo de columnas es mas rápido." | renderPostMessage 45136}}} |
>> | {{{"¿Alguien sabe como fusionar estos selects en uno solo?\n[code]SELECT COUNT(*) FROM tabla WHERE x = 0 AND y in (\"a\", \"b\", \"c\");\nSELECT COUNT(*) FROM tabla WHERE x = 0 AND y not in (\"a\", \"b\", \"c\");[/code]\nLa idea seria que devuelva dos columnas con algo como esto:\n[code]SELECT (COUNT(*) when x = 0 AND y in (\"a\", \"b\", \"c\")), (COUNT(*) when x = 0 AND y not in (\"a\", \"b\", \"c\")) FROM tabla;[/code]\nPero no entiendo bien como hacer que funcione (estoy usando MySQL)." | renderPostMessage 45877}}} |
>> | {{{">>45877\nUsa Union\nhttps://www.w3schools.com/sql/sql_union.asp" | renderPostMessage 45879}}} |
>> | {{{">>45879\n¿Un union es lo mejor que se te ocurrió? Si es casi lo mismo que ejecutar ambas consultas por separado, además de que ni siquiera sirve ya que devuelve filas y no columnas. De todos modos existe una forma mas apropiada de hacer lo que pide >>45877:\n[code]SELECT sum(CASE WHEN y in (\"a\", \"b\", \"c\") THEN 1 ELSE 0 END), sum(CASE WHEN y not in (\"a\", \"b\", \"c\") THEN 1 ELSE 0 END) FROM tabla where x=0;[/code]\nY en lugar de contestar lo primero que te sale del culo en tu afán de \"ayudar\" al menos para la próxima procura comprender lo que estas leyendo." | renderPostMessage 46585}}} |
>> | {{{">>41177 (OP)\nMejor aprende NoSQL, es más facil." | renderPostMessage 46587}}} |
>> | {{{">>46587\n>aprende NoSQL, es [b][u]diferente[/u][/b].\nCorregido, vale aclarar que ninguno es mejor que el otro y son conceptos tan aparte que cuando aprendes uno al otro lo tienes que aprender prácticamente desde cero. Aun así siempre esta la posibilidad de usar arrays en una base de datos relacional con tal de tener un esquema \"híbrido\" (solo aplicable en motores que cuentan con el tipo de dato JSON).\nSi OP quiere pensar a futuro también podría darle un vistazo a SPARQL, en especial por todas las posibilidades que ofrecen bases de datos semánticas como Wikidata (basta con ver todos los ejemplos que hay en http://query.wikidata.org/ )." | renderPostMessage 47302}}} |
>> | {{{">>47302\nMe atrevo a decir que MySQL es más usado ¿No?" | renderPostMessage 47327}}} |
>> | {{{">>47302\n>SPARQL\nPara quien le interese hace poco encontré una serie de artículos sobre \"Web Semántica desde cero\" en donde se explican los fundamentos y funcionamiento de esta:\n* RDF: https://blog.adrianistan.eu/web-semantica-rdf\n* RDF Schema: https://blog.adrianistan.eu/web-semantica-rdf-schema\n* SPARQL: https://blog.adrianistan.eu/web-semantica-sparql\n* Linked Data y SOLID: https://blog.adrianistan.eu/web-semantica-linked-data-solid\n>>47327\n>MySQL\nNo se si habrá alguna estadística al respecto pero imagino que si, aunque PostgreSQL también es una buena opción." | renderPostMessage 47980}}} |
>> | {{{">>41177\n¿Existen servidores descentralizados o p2p para bases de datos?" | renderPostMessage 47995}}} |
>> | {{{">>47980\n>postgres tambien es una buena opcion\nEs una mejor opción porque se toma en serio el estandar y la integridad de los datos.\nhttps://www.cybertec-postgresql.com/en/why-favor-postgresql-over-mariadb-mysql/#" | renderPostMessage 48005}}} |
>> | {{{"¿Existen bases de datos en Internet con las cuales puedo practicar?" | renderPostMessage 49013}}} |
>> | {{{">>49013\ncy\nhttps://remotemysql.com" | renderPostMessage 49072}}} |
>> | {{{">>49013\nTambién esta http://sqlfiddle.com/ donde puedes crear tablas y querys en alguno de los motores de base de datos que te permite usar, pero creo que esta mas orientado a pruebas y demostraciones que a un uso real." | renderPostMessage 49774}}} |
>> | {{{"Bump" | renderPostMessage 50163}}} |
>> | {{{"Bump" | renderPostMessage 50443}}} |
>> | {{{">>50443\nalmenos si vas a bumpear esto dale algo de contenido interesante al hilo" | renderPostMessage 50464}}} |
>> | {{{"Negrito, existen bases de datos hechas, con las que puedes practicar.\n\nhttp://superalumnos.net/base-de-datos-de-ejemplo-inmobiliaria" | renderPostMessage 51033}}} |
>> | {{{">>41177 (OP)\nHace poco descubrí que con SQLite es posible manejar datos en JSON tal como se puede ver en https://www.sqlite.org/json1.html (aunque solo es una extensión por lo que me parece que no funciona en todos los programas) pero, ¿como se hace para obtener solo las filas donde una columna con el JSON contenga cierto valor?\nPara que se entienda mejor, digamos que tengo una tabla como esta:\n[code]create table test(a text, b json);\ninsert into test values ('fdkgpodfg', json_array('x'));\ninsert into test values ('sodfuu09zefu0er', json_array('x', 'y'));\ninsert into test values ('ooeuw049w30ede', json_array('z'));\ninsert into test values ('pzeor3ke00ea', json_array('x', 'y', 'z'));\ninsert into test values ('34oti3r9ik400f', json_array());[/code]\n¿Cual seria la forma correcta de obtener solo los registros donde b contiene z (en lo posible sin usar el operador like)? Según la pagina quizás sea con json_each() pero no entiendo bien como funciona." | renderPostMessage 51701}}} |
>> | {{{">>41177 (OP)\n>Quiero aprender SQL y MySQL\nEn otro hilo habían dejado unos videotutoriales sobre MySQL, si aun te interesa se pueden ver en https://mega.nz/#F!UC5UnQgQ!MrUyOqYyyd8cmL4xIMJ1Gg" | renderPostMessage 52318}}} |