Iniciando con SQL Server: 1. Consultas SELECT simples

En esta serie de lecciones aprenderá a consultar Microsoft SQL Server utilizando la sentencia SQL SELECT. Una vez que haya leído esta lección será capaz de:

  • Identificar todas las tablas de una base de datos SSMS (SQL Server Management Studio) de SQL Server.
  • Entender cómo listar las columnas de una tabla.
  • Para ver columnas, crear resultados de texto y matemáticos y establecer valores distintos, utilice la sentencia SQL SELECT.
  • Aprenda algunas técnicas para depurar sus comandos y corregir errores.

¡Importante! Por favor, sigue los ejemplos de tu base de datos y hazlos. Si aún no lo has hecho, suscríbete a mi Guía de Iniciación a SQL Server. Podrá recibir orientación para descargar el software gratuito y la base de datos de ejemplo.

Cómo entender su base de datos

Una sentencia select simple consta de dos partes. La primera parte describe qué columnas queremos ver y la segunda qué tabla estamos viendo. Una sentencia select tiene el siguiente aspecto:

SELECT LastName FROM Person.Person

En este ejemplo Apellido es la columna y Persona la tabla. Las columnas vienen después de la palabra clave SELECT; mientras que la tabla va precedida de FROM.

Nombre de la tabla

Tal vez se pregunte por qué la tabla Persona se denomina Person. Persona en la declaración anterior. Esto tiene que ver con la forma en que se organizan los objetos en el servidor. La base de datos se puede considerar como una serie de contenedores anidados. Los contenedores son:

  • Servidor/Instancia – La instancia de SQL Server que se ejecuta en el equipo.
  • Bases de datos – Una o más bases de datos creadas en la instancia.
  • Esquemas – Una forma de agrupar lógicamente las tablas y otros objetos de la base de datos.

El nombre completo de una tabla es …. Así que si realmente quisiéramos ser explícitos podríamos usar algo como

SELECT LastName FROM ...

para hacer una consulta. Por suerte, normalmente escribimos las consultas en el contexto de una base de datos, por lo que sólo tenemos que especificar el esquema y el nombre de la tabla de la siguiente manera:

SELECT LastName FROM Person.Person

¿Pero qué pasa con los corchetes? Se utilizan si su tabla tiene un espacio en el nombre. Así que

SELECT Last NameFROM Person.Person Table

daría error

SELECT FROM Person.

Está bien. ¿Mi consejo? Si tienes que nombrar tus propias tablas, no uses espacios, ¡los paréntesis son feos! Si debes hacerlo, haz como la gente de Oracle y usa guiones bajos. Person_Table es mucho más fácil de leer que , personalmente prefiero PersonTable.

Usando el Explorador de Objetos

Para escribir consultas necesitas saber qué tablas y columnas están disponibles en tus bases de datos. Cuando se utiliza SSMS (SQL Server Management Studio) puede simplemente expandir la carpeta de tablas de la base de datos para enumerar todas las tablas que se encuentran en su base de datos. Una vez que encuentre una tabla sobre la que le gustaría saber más, simplemente haga clic en el nombre de la tabla para expandirla, y luego en la carpeta de columnas para listar todas las columnas.

Ejecución de consultas en SSMS

Antes de que lleguemos demasiado lejos déjame mostrarte cómo ejecutar una consulta en SSMS. En realidad es muy fácil. Una vez que haya lanzado SQL Server Management Studio, querrá seleccionar su base de datos. A continuación, haga clic en el botón Nueva consulta situado en la barra de herramientas superior. Esto muestra una ventana de consulta a la derecha. Usted puede escribir cualquier cosa que desee en esta ventana, ya que es básicamente un editor de texto. Corte y pegue o escriba una sentencia SQL, luego haga clic en Ejecutar para ejecutar la sentencia. Los resultados se muestran en la parte inferior de la ventana y cualquier mensaje, como los errores, se muestran en la pestaña de mensajes.

Seleccionar varias columnas

Para seleccionar más de una columna, basta con separarlas con una coma. Por ejemplo,

SELECT FirstName, LastNameFROM Person.Person

retorna como resultado tanto el nombre como el apellido. En caso de que se pregunte, puede mezclar las mayúsculas y minúsculas al escribir las consultas. Es decir,

SELECT FirstName, LastNameFROM Person.Person

funciona igual de bien que

select FirstName, LastNamefrom Person.Person

¡Consejo! Una convención común es poner en mayúsculas todas las palabras clave. Algunos DBA’s sienten que es más fácil leer los comandos escritos de esta manera. Personalmente no lo hago, pero para este blog LO INTENTARÉ. 🙂

Renombrar Columnas SQL

Puedes renombrar las columnas que resultan de tus sentencias select. Para ello, utilice la sentencia AS así:

SELECT LastName as SirNameFROM Person.Person

Esto muestra el resultado como «SirName» en lugar de «LastName». Esta es una buena característica desde el punto de vista de la vanidad, pero también resulta útil cuando queremos devolver un resultado de un cálculo y necesitamos darle un nombre. Por ejemplo, supongamos que queremos devolver el apellido en mayúsculas. Podrías escribir

SELECT UPPER(LastName) AS SirNameFROM Customers

UPPER se conoce como una función. SQL Server tiene muchas funciones que puede utilizar para realizar muchos tipos de cálculos. Veremos todas ellas más adelante, pero por ahora, sepa que puede encadenar varias funciones para crear una expresión compleja que dé salida a los datos de la forma que necesite.

Expresiones de columna complejas

Nuestra tabla de empleados contiene campos separados para el nombre y el apellido. Supongamos que el departamento de RRHH necesita ver el nombre completo en mayúsculas. ¿Cómo lo haría? Muy sencillo. Podrías escribir

SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person

Esta sentencia puede parecer complicada, pero una vez que la desglosemos, verás que sólo se compone de un montón de elementos simples.

  • Como acabas de aprender, UPPER se utiliza para devolver la mayúscula de una columna.
  • El + le dice a SQL que combine dos valores juntos.

Cualquier cosa entre comillas simples (‘) se muestra literalmente tal cual. En nuestro caso el ‘ ‘ significa que se muestra un solo espacio. Si lees nuestra expresión, en inglés, se leería como «Take the uppercase of the FirstName combine it with a space and then add the uppercase of LastName to it.»

¡Haz matemáticas con SQL!

También puedes hacer que SQL haga trucos matemáticos por ti. Puede hacer algunas aritméticas bastante complicadas si le permites hacerlo. Por hoy, te mostraré cómo multiplicar dos números, pero puedes sumar, restar o dividir con la misma facilidad. Más adelante lo haremos más complicado para que puedas revivir tus días de Álgebra II 🙂 Estos son algunos operadores matemáticos comunes que puedes usar en SQL:

  • * Multiplicar
  • / Dividir
  • + Sumar
  • – Restar

Usaremos la tabla OrderDetails y calcularemos el precio total multiplicando el precio unitario por la cantidad.

SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail

El bit » UnitPrice * OrderQty» dice que hay que multiplicar UnitPrice por Quantity.

Be Distinct and Debug

Hasta ahora hemos utilizado la sentencia select para recuperar todos los registros de una tabla sin importar si algunos valores se repiten o no. Si lo desea, puede utilizar la palabra clave DISTINCT para eliminar los duplicados de los resultados. Por ejemplo, si quiere obtener una lista única de los títulos de los empleados, utilice esta sentencia SQL:

SELECT DISTINCT JobTitleFROM HumanResources.Employee

La sentencia DISTINCT también funciona en más de una columna. Si lo desea, puede obtener una lista distinta de títulos de trabajo y géneros escribiendo

SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee

¡Trivia: La palabra clave ALL es la contraparte de DISTINCT y es el comportamiento por defecto. Por eso no la escribimos en nuestras sentencias.

Encontrar y corregir errores

Tarde o temprano escribirá mal una sentencia select en la línea de comandos y el ordenador le gritará: «¡Error de sintaxis!» o «Nombre de columna no válido» ¿Qué hacer? Recuerde que la sentencia select se compone de dos partes principales: la parte SELECT y la parte FROM. En general, la base de datos busca primero si estas palabras clave están presentes, y si no lo están se produce un error de sintaxis.

Esto es sólo una frase elegante para «has escrito mal una palabra clave o la tienes fuera de orden» (por ejemplo, tienes el Distinct antes de Select como en DISTINCT SELECT). Una vez comprobadas las palabras clave, se inspecciona la sentencia para asegurarse de que se ha especificado una tabla. Una vez conocida la tabla puede comprobar las columnas. Así que el orden es comprobar primero las palabras clave, luego las tablas y por último las columnas correctas. Cuando aparezca un error, léalo con atención. Lo más probable es que haya escrito mal algo. El ordenador te dirá lo que has escrito mal entre comillas; tu trabajo es encontrar el error y corregirlo.

Ejercicios de selección de SQL

¡Es importante practicar! Utilice la base de datos de ejemplo para responder a estas preguntas.

  1. ¿Cómo puede encontrar todos los nombres de las tablas en la base de datos AdventureWorks2012?
  2. ¿Cuáles son las dos formas de obtener los nombres de todas las columnas de la tabla Person.Persona?
  3. Seleccione JobTitle y BirthDate para todos los empleados.
  4. ¿Cuál sería el UnitPrice de cada artículo de PurchaseOrderDetail si hubiera una venta a mitad de precio?

Las respuestas están aquí

¡Felicidades! Acabas de aprender a utilizar el comando select para consultar una base de datos. A continuación, habrá más tutoriales, en los que nos adentraremos en algunas de las áreas que hemos repasado hoy, como los operadores matemáticos y las funciones. Recordad. Quiero recordaros a todos que si tenéis otras preguntas que queráis que se respondan, enviad un comentario o twitteadme. Estoy aquí para ayudaros.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.