En primer lugar, obtenga una comprensión completa de las uniones. No solo juntas internas y de izquierda tampoco. Sepa lo que hace una unión cruzada y una unión externa completa. Conozca las circunstancias que podrían causarle elegir un tipo particular de unión. Comprenda que no son intercambiables y que la consulta que utiliza una combinación a la izquierda puede generar resultados diferentes a los de una combinación interna. (Uno podría pensar que eso sería obvio, pero he leído demasiadas preguntas en las que las personas al describir su problema, intentan de forma aleatoria diferentes combinaciones).
Siguiente realmente entiende los agregados y cómo funcionan. Mysql le permitirá salirse con la suya de no hacer bys de grupo de forma estándar. Pero ten la disciplina para definir completamente el grupo por cláusula adecuadamente. 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 parte que tenga los resultados que espera. Por ejemplo, supongamos que necesita escribir una consulta de informe 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, es probable que desee terminar con un solo registro por pedido devuelto. Si en cualquier etapa intermedia, el número de resultados aumenta o disminuye, usted sabe que tiene un problema con la consulta. A veces, en bloques de construcción, deseará ver campos adicionales solo para verificar si la información es correcta. Los coloco en una línea separada y los comento a medida que avanzo el siguiente paso (eliminándolos al final una vez que sé que tengo razón), por lo que están disponibles para ver de nuevo 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 deben verse los resultados. Pensar que se ve bien porque obtuvo algunos resultados casi garantizará que haya 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 ninguna 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 devuelven solo un registro de la tabla
con los muchos aspectos 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
un cursor
- Debería poder actualizar un grupo de registros en una tabla
sin un cursor
- Debería poder eliminar un grupo de registros en una tabla sin
un cursor
- Debes poder realizar múltiples acciones en una
transacción y manejar la captura de errores
- Debería poder crear una unión de registros y saber cuándo
use UNION vice UNION ALL
- Debería poder variar los datos para un campo basándose en 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 apoyo mucho más rápido que otras personas porque entiendo la estructura y no tengo que pensar dónde se almacenan 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 también los datos que contienen), puede ser un experto en la consulta de esa base de datos. Lo primero que hago en cualquier trabajo nuevo es entender completamente la estructura de la base de datos.