top of page
Search

Updated: Apr 13, 2019

This post is the first in a series about physical join operators,

please be sure to check out:

I thought to jump directly to talk about the physical operators, but I do believe this series deserve a good foundation.

The confession.


Some time ago, I interviewed at a well-known tech company for a position that seemed to be my dream job, the responsibilities for this position were a perfect match (60 % SQL Developer and 40% .NET Developer). During the interview, they asked a bunch of technical questions about .NET, web services and other stuff but nothing related to SQL Server.


After several hours of interviewing with several different people, the Head of Development came into the conference room, he told me that DBA team is working on some urgent stuff and they are not able to finalize the interview that day, but he would like to schedule a phone call to finalize the interview, I agreed and left the place with a piece of paper that somebody handed to me, it was the schedule for final interview.


The three questions.


Next day, DBA Team called me, they apologized for previous day, one of the DBAs told me that in compensation they only have three questions for me, I smiled and agreed (I was thinking “easy peasy lemon squeezy”)… I was so wrong and I will never forget the two questions they asked me, yes two since I did not make it to the third one.


Please see below and try to do not laugh too loud =P.


DBA: Are scans bad? Question #1

Silly Victor: It depends! Yes I used that one and worked like charm, but I did not know the answer.

DBA: Yes, I depends.

DBA: What are the three physical join operators? Question #2

Silly Victor: Three?

DBA: Yes, three.

Silly Victor: Inner Join…

DBA: Physical join operators!

Silly Victor: Left Join…

DBA: Thank you Victor, that’s all the questions that I have for you. Do you have any questions for me?

Silly Victor: No, thank you.



Postmortem.


How did I feel after all?

A bad interview can leave you feeling frustrated and upset, I truly was very upset and angry with myself, but this was nothing compared to how stupid I felt that day.


Why do I failed?

Because I was not humble, I thought that since I was able to write complex queries, I had mastered SQL Server.


Can I fix it?

No, we cannot change the past, but we can prevent it in the near future.


What was the third question?

I have no idea and I am not sure if I am ready to answer that one, but I am doing my best every day.


Conclusions.


  • Be humble and help others as much as you can.

  • If you don’t know the answer, please do not try to make up stuff, is better to said something like “I don’t know, but I am willing to learn”

  • Never give up, no matter how you feel, please never give up.

  • Keep learning, you never stop learning.

  • SQL Server is kind of Science.

I promise that in next series I am going to talk about Nested Loop Join.

Enjoy!!

31 views0 comments

Updated: Apr 13, 2019

Esta publicación es la primera de una serie sobre operadores de unión física , asegúrese de revisar:

Pensé en saltar directamente para hablar sobre los operadores físicos, pero creo que esta serie merece una buena base.

La Confesión.


Hace algún tiempo, tuve una entrevista en una conocida empresa de tecnología para una posición que parecía ser el trabajo de mis sueños, las responsabilidades para esta posición eran una combinación perfecta (60% de desarrollador de SQL y 40% de desarrollador .NET). Durante la entrevista, hicieron muchas preguntas técnicas sobre .NET, webservices y otras cosas, pero nada relacionado con SQL Server.


Después de varias horas de entrevistas con diferentes personas, el Jefe de Desarrollo entró en la sala de conferencias, me dijo que el equipo de DBA está trabajando en algunas cosas urgentes y que no pueden finalizar la entrevista ese día, pero que le gustaría agendar una llamada telefónica , acepté y me fui del lugar con un papelito que alguien me entregó, era la hora y dia de la entrevista final.


Las tres preguntas.


Al día siguiente, el equipo de DBA me llamó, se disculparon por el día anterior, uno de los DBA me dijo que, en compensación, solo tienen tres preguntas para mí, sonreí y acepté (estaba pensando "pan comido") ... Estaba tan equivocado , juro que nunca olvidaré las dos preguntas que me hicieron, sí, solo dos ya que no llegué a la tercera.


Por favor ve abajo y trata de no reírte demasiado fuerte = P.


DBA: ¿Son malos los scans ? Pregunta #1

Silly Victor: ¡Depende! Sí, lo utilicé y funcionó a la perfección, pero no sabía la respuesta.

DBA: Sí, depende.

DBA: ¿Cuáles son los tres operadores de unión física? Pregunta #2

Silly Victor: Tres?

DBA: Si, tres.

Silly Victor: Inner Join…

DBA: Operadores de unión física!

Silly Victor: Left Join…

DBA: Gracias, Victor, esas son todas las preguntas que tengo para ti. ¿Tienes alguna pregunta para mí?

Silly Victor: No gracias..



la autopsia .


¿Cómo me sentí después de todo?

Una mala entrevista puede hacer que te sientas frustrado y molesto, realmente estaba muy molesto conmigo mismo. Pero esto no fue nada comparado con lo estúpido que me sentí ese día.


¿Por qué he fallado?

Yo no era humilde, pensé que como podía escribir consultas muy complejas, ya había dominado SQL Server.


¿Puedo arreglarlo?

No, no podemos cambiar el pasado, pero podemos evitarlo en el futuro.


¿Cuál fue la tercera pregunta?

No tengo ni idea y no estoy seguro de estar listo para responder a esa pregunta, pero hago lo mejor que puedo todos los días.


Conclusiones.


  • Sé humilde y ayuda a los demás tanto como puedas.

  • Si no sabe la respuesta, por favor, no intente inventar cosas, es mejor decir algo como "No sé, pero estoy dispuesto a aprender".

  • Nunca te rindas, no importa cómo te sientas, por favor nunca te rindas.

  • Sigue aprendiendo, nunca dejas de aprender.

  • SQL Server es una especie de ciencia.

Prometo que en la próxima serie voy a hablar sobre Nested Loop Join.

¡Diviértanse aprendiendo!

66 views0 comments

Hace poco recibí una pregunta muy interesante, ¿alguien preguntó si hay una forma de capturar los valores identity recién generados después de una inserción de varias filas en una tabla?


Respuesta: Utilizando la cláusula de OUTPUT.


SQL admite una cláusula OUTPUT, que puede utilizar para devolver información afectada por una instrucción INSERT, UPDATE, DELETE o MERGE.


Cualquier referencia a las columnas en la tabla que se está modificando debe ser calificada con la palabra clave INSERTED o DELETED, la palabra clave es solo un prefijo que especifica qué valores se deben generar.


INSERTED devuelve el valor después de UPDATE, INSERT o MERGE.

DELETED devuelve el valor antes de UPDATE, DELETE o MERGE.


El laboratorio.

Preparemos el entorno, para ello ejecute el siguiente script para crear una tabla:


Clausula OUTPUT en Declaraciones INSERT

En este ejemplo, vamos a insertar 20 registros en la tabla que hemos creado y mostramos los datos insertados al usuario.


La cláusula OUTPUT se coloca entre INSERT INTO y VALUES, tenga en cuenta que estoy usando la palabra clave INSERTED como prefijo.

Resultados:


Clausula OUTPUT En Declaraciones DELETE

En este ejemplo, vamos a eliminar todos los registros donde 'myValue_2' es mayor que 8 y mostramos los datos eliminados al usuario.


En una declaración DELETE, se agrega la cláusula OUTPUT entre la cláusula DELETE y WHERE, tenga en cuenta que estoy usando la palabra clave DELETED como prefijo.

Resultados:


Clausula OUTPUT En Declaraciones UPDATE

En este ejemplo, vamos a actualizar "myValue_1" donde "myValue_1" es igual a "myValue_2" y mostraremos los datos actualizados al usuario.


En una declaración de UPDATE , agrega la cláusula OUTPUT entre la cláusula SET y WHERE, tenga en cuenta que estoy usando ambas palabras clave, esto es muy importante ya que DELETE se usa para generar el valor anterior y INSERTED se usa para generar el valor actual.

Resultados:


Bonus: OUTPUT A una tabla temporal.

En este ejemplo, vamos a generar los datos insertados en una tabla temporal.(#MyAudit).

Resultados:


¡Diviértanse aprendiendo!

24 views0 comments
bottom of page