¿Qué consejo me puede dar para pasar de nivel de habilidad intermedio con SQL avanzado a avanzado?

Eso depende completamente de lo que creas que sea el nivel de habilidad intermedio y avanzado.

Espero que un profesional de bases de datos con habilidades intermedias entienda que la teoría de conjuntos y el diseño de bases de datos relacionales se sientan cómodos al diseñar, optimizar y operar una base de datos de forma normal “típica”. Probablemente con un conocimiento de lo diferente que podría ser una tienda de análisis de datos. Una comprensión de ETL y la carga de la base de datos también sería buena.

En este nivel, esperaría que sus consultas y declaraciones fuesen rápidas, usaran buenos índices y se basaran en configuraciones (no en iterativos cursores de horror). También esperaría que alguien se obsesione con la forma en que las personas se conectan a la base de datos y se aseguran de que las inyecciones de SQL se mitiguen (consultas parametrizadas o procedimientos almacenados): SQL dinámico poco o muy bloqueado.

Para un nivel “avanzado”, se da cuenta de que aunque la Teoría de conjuntos es una buena * abstracción * para las bases de datos relacionales, eso es todo lo que es. La * implementación * todavía se realiza mediante una aplicación de computadora estándar (su RDBMS) y tiene que implementar estas construcciones de conjuntos (uniones, relaciones, etc.) utilizando algoritmos concretos reales. Esto significa que debe sentirse cómodo con la forma en que realmente funciona su RDBMS; comprender los diferentes tipos de implementaciones de uniones y relaciones (uniones en bucle, ordenación de combinación, etc.), cuáles son las ventajas y desventajas de cada una y, finalmente, poder trabajar con el optimizador de consultas para entender por qué ciertas estrategias están siendo elegidas.

o algo así como de todos modos.

En una de las otras respuestas, hay algunos consejos para el desarrollo de un propósito mejor que advierten sobre su cegamiento por parte de su especialista: la respuesta de Jo van Schalkwyk a ¿Qué consejo me puede dar para pasar de un nivel de habilidad intermedio con SQL avanzado a avanzado? Probablemente sea mejor que mi consejo.

La respuesta corta: no se trata de SQL.

La explicación de la respuesta corta:

A medida que te vuelves más adepto a SQL, hay una trampa en la que es fácil caer. En realidad, hay dos:

  1. Usted cree que el progreso en SQL se mide por “ser hábil en la programación de consultas SQL más complejas” (etc.);
  2. Usted cree que todo debe hacerse “en SQL”. Su código se vuelve más arcano, de acuerdo con (1).

Tengo una buena analogía aquí. ¿Cuál es la diferencia entre un jugador de ajedrez competente y un gran maestro (GM)? Alguien que no haya pensado en esto podría decir: “Bueno, el DJ practica 7 horas al día, conoce todas las oportunidades y es experto en el juego intermedio a través de horas de práctica y teoría de la lectura, y a través de la experiencia amarga incluso ha adquirido habilidad”. En las sutilezas del final ”. Esta no es una buena respuesta.

Hace años, leí de un estudio en el que jugadores competentes y gerentes generales recibían posiciones de ajedrez para recordar, pero con tiempo insuficiente. Cuando se les pidió que volvieran a crear el tablero, los jugadores competentes tenían piezas ligeramente fuera de lugar. Los gerentes generales a menudo reorganizaron todo el tablero en posiciones que eran estratégicamente iguales.

Toda su conceptualización del juego fue diferente. El maestro piensa estratégicamente, en lugar de ser un “táctico muy hábil”. *

Otra analogía: la música es “el espacio entre las notas”.

Creo, y demonios, podría estar completamente equivocado aquí, que eres bueno en SQL cuando:

  • Sabes cuándo no usar SQL;
  • Puedes ver los defectos en SQL;
  • Puede tomar otro idioma o entorno (por ejemplo, construir alrededor de una de las bases de datos “NoSQL”; o R; o Erlang; o incluso Perl) y hacer algo que sea conceptualmente similar a lo que haría en SQL. Pero hace el trabajo mejor para esa tarea especial.

No se trata enfáticamente de “ser mejor en SQL cada vez más arcano”.

Mi 2c, Jo.

* Debo admitir que leí esto hace años y podría estar equivocado. Creo que el concepto que he transmitido es, sin embargo, sólido. También sé que hay mucho más trabajo que se ha hecho recientemente sobre el “pensamiento profundo en el ajedrez”. Algo bastante interesante.

Esta es mi opinión: usted es competente en SQL a nivel de experto cuando puede reescribir cualquier declaración SELECT al menos cuatro formas diferentes de obtener el mismo resultado. Esto se debe a que ese resultado no solo es posible, sino que es necesario encontrar la versión exacta de una consulta que se desempeñará mejor en las condiciones particulares de la consulta en sí misma y en los datos que debe procesar. Hace treinta y tantos años expresé esta verdad en mi frustración por lo mal diseñado que es el SQL: “Puedo escribir cualquier declaración SELECT al menos de tres formas diferentes y obtener los mismos resultados”. Lo hice un desafío y en todo ese tiempo Nunca he encontrado una consulta que no podría expresar de muchas maneras diferentes. En el camino me di cuenta de que esto era más que un ejercicio, pero una parte necesaria para escribir SQL óptimo. Por cierto, mi viejo desafío era de tres maneras y ahora digo cuatro? Bueno, desde entonces, los cambios de sintaxis de ANSI ’92 han agregado al menos una cuarta versión. A menudo hay más de cuatro

Supongo que si actualmente se encuentra en el nivel intermedio, ha escrito al menos mil tipos diferentes de sentencias de SQL. Si no lo hubieras hecho yo primero. Si quieres avanzar, obtendré ese número a aproximadamente 10,000.

Algunas cosas para pensar:

Los usuarios avanzados de SQL deberían poder generar un montón de calendarios diferentes usando nada más que sql recursivo.

Implementar un montón de funciones analíticas sería una buena idea.

Generar SQL desde SQL sería bueno saber cómo hacerlo.

Aprender a aplicar ingeniería inversa a una base de datos mediante el uso del catálogo de datos es una habilidad muy avanzada.

Sólo debe tomar unos 3-5 años.

Una vez que domine el SQL básico, profundice en las funciones avanzadas y lea la teoría relacional (por ejemplo: SQL y teoría relacional: cómo escribir código SQL preciso: CJ Fecha: 9781449316402: Amazon.com: Libros)

Obtener la certificación de un proveedor puede ser un esfuerzo valioso, ya que lo expone a la mayoría de las facetas del producto