En primer lugar, obtenga una comprensión profunda de las uniones. No solo se une el interior y el izquierdo. Sepa lo que hace una unión cruzada y una unión externa completa. Conozca las circunstancias que le harían elegir un tipo particular de unión. Comprenda que no son intercambiables y que la consulta que usa una combinación izquierda puede devolver resultados diferentes a los de una combinación interna. (Uno podría pensar que sería obvio, pero he leído demasiadas preguntas en las que las personas al describir su problema, de alguna manera intentan al azar diferentes combinaciones).
A continuación, realmente entiendo los agregados y cómo funcionan. Mysql le permitirá salirse con la suya al no hacer bys grupales de manera estándar. Pero tenga la disciplina para definir completamente al grupo mediante una cláusula adecuada. Le ayudará a comprender lo que está haciendo y hará que su conocimiento sea más fácilmente transferible a otras bases de datos.
Aprenda lo que hace la declaración del caso.
Al hacer consultas complejas, aprenda a trabajar en trozos. Verifique en cada fragmento que tenga los resultados que espera. Entonces, por ejemplo, supongamos que necesita escribir una consulta de informes sobre los pedidos que se han devuelto en los últimos 3 meses y el motivo de la devolución, así como la información de contacto del cliente. El primer paso es obtener los pedidos devueltos en los últimos tres meses. Una vez que sepa que tiene ese sólido, puede agregar la información sobre el motivo de la devolución. Una vez que tenga ese sólido, puede agregar el cliente que lo devolvió. Una vez que tenga ese sólido, agregue la información de contacto de la persona. En cada etapa, verifique sus resultados y vea si tienen sentido. En este caso, probablemente quiera terminar con solo un registro por pedido devuelto. Si en cualquier etapa intermedia, el número de resultados aumenta o disminuye, sabe que tiene un problema con la consulta. A veces, en los bloques de construcción, querrá ver campos adicionales solo para verificar si la información es correcta. Los pongo en una línea separada y los comento a medida que avanzo en el siguiente paso (eliminarlos al final una vez que sé que estoy en lo cierto) para que estén disponibles para volver a verlos fácilmente si agregar otra arruga hizo que la consulta fuera divertida. No puede realizar consultas complejas correctamente sin una comprensión profunda de cómo deberían ser sus resultados. Pensar que se ve bien porque devolvió algunos resultados casi garantizará que tenga resultados incorrectos una buena parte del tiempo. m a la derecha) para que estén disponibles para volver a ver fácilmente si agregar otra arruga hizo que la consulta fuera divertida. No puede realizar consultas complejas correctamente sin una comprensión profunda de cómo deberían ser sus resultados. Pensar que se ve bien porque devolvió algunos resultados casi garantizará que tenga resultados incorrectos una buena parte del tiempo. m a la derecha) para que estén disponibles para volver a ver fácilmente si agregar otra arruga hizo que la consulta fuera divertida. No puede realizar consultas complejas correctamente sin una comprensión profunda de cómo deberían ser sus resultados. Pensar que se ve bien porque devolvió algunos resultados casi garantizará que tenga resultados incorrectos una buena parte del tiempo.
Aquí hay una lista de algunas cosas básicas que debería poder hacer en SQL sin tener que pensarlo:
- Primero, una selección directa sin uniones (y sin selección *) pero con condiciones en la selección
- Debe saber cómo combinar dos o más tablas y obtener registros que están en todas las tablas.
- Debe saber cómo combinar dos o más tablas y obtener registros que estén en todas las tablas, pero devuelva solo un registro de la tabla con el lado múltiple de la relación uno a muchos
- Debería poder obtener los registros en una tabla pero no en una tabla asociada
- Debería poder agregar datos para un informe
- Debería poder insertar un registro en una tabla
- Debería poder actualizar un registro en una tabla
- Debería poder eliminar un registro en una tabla
- Debería poder insertar un grupo de registros en una tabla sin cursor
- Debería poder actualizar un grupo de registros en una tabla sin cursor
- Debería poder eliminar un grupo de registros en una tabla sin cursor
- Debería poder realizar múltiples acciones en una transacción y manejar la captura de errores
- Debe poder crear una unión de registros y saber cuándo usar UNION vice UNION ALL
- Debería poder variar los datos para un campo en función de algunos criterios (utilizando CASE)
Una vez que se sienta cómodo con su conocimiento básico de SQL, conozca la estructura de su base de datos. Puedo escribir consultas complejas contra los dbs muy complicados que soporto mucho más rápido que otras personas porque entiendo la estructura y no tengo que pensar dónde están almacenadas las cosas. Si comprende la estructura de la tabla y las relaciones de clave externa y dónde se almacenan los valores de búsqueda y qué significan las columnas (no solo su nombre, sino qué datos se encuentran en ellas), entonces puede ser experto en consultar esa base de datos. Lo primero que hago en cualquier trabajo nuevo es comprender a fondo la estructura db.