lunes, 22 de junio de 2015

Operadores en SQL



Aprendimos que los operadores son símbolos que permiten realizar distintos tipos de operaciones.
SQL Server tiene 4 tipos de operadores: 
  1. relacionales o de comparación 
  2. lógicos  
  3. aritméticos 
  4. de concatenación.

Los operadores aritméticos permiten realizar cálculos con valores numéricos.
Son: 
  1. multiplicación (*)
  2. división (/) 
  3. módulo (%) (el resto de dividir números enteros)
  4. suma (+)  
  5. resta (-)

Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un campo de una tabla.

Si queremos ver los títulos, precio y cantidad de cada libro escribimos la siguiente sentencia: 
    select titulo,precio,cantidad from libros;

Si queremos saber el monto total en dinero de un título podemos multiplicar el precio por la cantidad por cada título, pero también podemos hacer que SQL Server realice el cálculo y lo incluya en una columna extra en la salida: 
     select titulo, precio,cantidad, precio*cantidad from libros;


Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la sentencia los siguientes cálculos: 
     select titulo,precio, precio-(precio*0.1) from libros;


También podemos actualizar los datos empleando operadores aritméticos: 
        update libros set precio=precio-(precio*0.1);


Todas las operaciones matemáticas retornan "null" en caso de error. Ejemplo: select 5/0;


Los operadores de concatenación: permite concatenar cadenas, el más (+).

Para concatenar el título, el autor y la editorial de cada libro usamos el operador de concatenación ("+"): 
        select titulo+'-'+autor+'-'+editorial from libros; 

Pero lo que realmente nos importa son los operadores Aritmeticos

Operadores aritméticos (Transact-SQL)

Los operadores aritméticos realizan operaciones matemáticas con dos expresiones de uno o más de los tipos de datos de la categoría de tipos de datos numéricos. 













+ (Sumar): Suma dos números. Este operador aritmético de suma también puede sumar un número, en días, a una fecha. 

Sintaxis: expression + expression
Expression: Es cualquier expresión válida de uno de los tipos de datos de la categoría numérica, excepto el tipo de datos bit. No se puede usar con los tipos de datos datetimedatetime2 o datetimeoffset.
Tipo de resusltado: Devuelve el tipo de datos del argumento con mayor prioridad. 
Algunos ejemplos:

Utilizar el operador de suma para sumar días a valores de fecha y hora. En el ejemplo siguiente se suma un número de días a una fecha datetime.

USE master;
GO
SET NOCOUNT ON
DECLARE @startdate datetime, @adddays int;
SET @startdate = ''January 10, 1900 12:00 AM';
SET @adddays = 5;
SET NOCOUNT OFF;
SELECT @startdate + 1.25 AS 'Start Date', 
   @startdate + @adddays AS 'Add Date';

- (Restar): Resta dos números (un operador aritmético de sustracción). También puede restar un número, en días, de una fecha.

Sintaxis: -- Core Syntax (common to SQL Server and SQL Database)
expression - expression
Expression: Es cualquier expresión válida de cualquiera de los tipos de datos de la categoría de tipos de datos numéricos, excepto bit. No se puede usar con los tipos de datos datetimedatetime2 o datetimeoffset.
Tipo de resusltado: Devuelve el tipo de datos del argumento con mayor prioridad. 
Algunos ejemplos:

-Usar la resta en una instrucción SELECT

El ejemplo siguiente calcula la diferencia de tasa impositiva entre el estado o provincia con la tasa impositiva más alta y el que tiene la tasa impositiva más baja.
USE AdventureWorks2015;
GO
SELECT MAX(TaxRate) - MIN(TaxRate) AS 'Tax Rate Difference'
FROM Sales.SalesTaxRate
WHERE StateProvinceID IS NOT NULL;
GO

-Usar la resta en una fecha

En el ejemplo siguiente se resta un número de días de una fecha datetimeSe aplica a: SQL Server y a Base de datos SQL.
USE AdventureWorks2015;
GO
DECLARE @altstartdate datetime;
SET @altstartdate = CONVERT(DATETIME, ''January 10, 1900 3:00 AM', 101);
SELECT @altstartdate - 1.5 AS 'Subtract Date';

* (Multiplicar): 

Sintaxis: expression * expression
Expression: Es cualquier expresión válida de uno de los tipos de datos de la categoría de tipos de datos numéricos excepto los tipos de datos datetime y smalldatetime.
Tipo de resusltado: Devuelve el tipo de datos del argumento con mayor prioridad. 
Algunos ejemplos:

En el siguiente ejemplo se recupera el número de identificación del producto, el nombre, el precio de venta y el precio de venta nuevo de todas las bicicletas de montaña de la tabla Product. El precio de venta nuevo se calcula con el operador aritmético * para multiplicar ListPrice por 1.15.
USE AdventureWorks2012;
GO
SELECT ProductID, Name, ListPrice, ListPrice * 1.15 AS NewPrice
FROM Production.Product
WHERE Name LIKE 'Mountain-%'
ORDER BY ProductID ASC;
GO

/ (Dividir): 

Sintaxis: dividend / divisor
Argumentos: 
dividendo
Es la expresión numérica que se va a dividir. dividend puede ser cualquier expresión válida de uno de los tipos de datos de la categoría de tipos de datos numéricos, excepto los tipos de datos datetime y smalldatetime.
divisor
Es la expresión numérica entre la que se va a dividir el dividendo. divisor puede ser cualquier expresión válida de uno de los tipos de datos de la categoría de tipos de datos numéricos, excepto los tipos de datos datetime y smalldatetime.
Tipo de resusltado: Devuelve el tipo de datos del argumento con mayor prioridad. 
Si un dividend de tipo entero se divide entre un divisor de tipo entero, el resultado es un entero en el que se trunca la parte fraccionaria del resultado.
Algunos ejemplos:
En el siguiente ejemplo se utiliza el operador aritmético de división para calcular el objetivo de ventas mensual para los vendedores en Adventure Works Cycles.
USE AdventureWorks2012;
GO
SELECT s.BusinessEntityID AS SalesPersonID, FirstName, LastName, SalesQuota, SalesQuota/12 AS 'Sales Target Per Month'
FROM Sales.SalesPerson AS s 
JOIN HumanResources.Employee AS e 
    ON s.BusinessEntityID = e.BusinessEntityID
JOIN Person.Person AS p 
    ON e.BusinessEntityID = p.BusinessEntityID;

Algunos Videos 

https://www.youtube.com/watch?v=UK8r--AcOb4


Hora de Inicio 2:00 pm
Hora de Fin 5:00pm

No hay comentarios:

Publicar un comentario