universidad capitán general gerardo barrios facultad … · use select para declaraciones de...

12
Universidad Capitán General Gerardo Barrios Facultad de Ciencia y Tecnología Guía práctica II - Base de Datos I Sentencias avanzadas de SQL, utilizadas en MySql - MariaDb, con la base de datos Northwind. Docente: Lic.Ms. William Alexander Flores Cardona Fecha de Entrega: Miércoles, 2 de Abril de 2014

Upload: hoangtu

Post on 31-Aug-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Universidad Capitán General Gerardo Barrios

Facultad de Ciencia y Tecnología

Guía práctica II - Base de Datos I

Sentencias avanzadas de SQL, utilizadas en MySql - MariaDb,

con la base de datos Northwind.

Docente: Lic.Ms. William Alexander Flores Cardona

Fecha de Entrega: Miércoles, 2 de Abril de 2014

SELECCIÓN AVANZADA

Use SELECT para declaraciones de recuperación de valores calculados.

Trabajar con funciones agregadas y agrupación.

Trabajar con las funciones de la manipulación de datos del SQL.

A. Campos calculados:

Los campos calculados son campos que no existen en una tabla, pero se crean en la declaración del

SELECT. Por ejemplo, podría querer crear el nombre completo (Nombre y apellidos juntos) de

FirstName y LastName.

Eso se puede hacer de la siguiente forma:

Concatenación:

Es una palabra de fantasía que sirve para insertar palabras juntas con diferentes caracteres.

Ejemplo.

Para SQL SERVER, se utiliza el signo + en la concatenación.

SELECT FirstName + ' ' + LastName FROM Employees;

Para MySql, se utiliza la función CONCAT()

SELECT CONCAT(FirstName, ' ', LastName) FROM Employees;

Cálculos matemáticos:

Los cálculos matemáticos en SQL son similares a aquellos en otros lenguajes.

Operadores Matemáticos

Operador Descripción

+ Adición

- Substracción

* Multiplicación

/ División

% Módulo

Ejemplo:

Si el costo del flete es mayor o igual a 500,00 dólares, que ahora se graven en un 10%. Cree un informe que muestra la Identificación del pedido, flete, costos de flete con este impuesto para todos los pedidos de $ 500 o más.

/* If the cost of freight is greater than or equal to $500.00,it will now be taxed by 10%. Create a report that shows the order id, freight cost, reight cost with this tax for all orders of $500 or more. */

SELECT OrderID, Freight, Freight * 1.1 FROM Orders WHERE Freight >= 500;

Notará que la última columna (No column name), no

tiene nombre, para colocarle un nombre se utiliza la

palabra reservada AS.

Ej.

SELECT OrderID, Freight, Freight * 1.1 AS FreightTotal FROM Orders WHERE Freight >= 500;

B. Funciones agregadas y de agrupación:

Las funciones agregadas son usadas para calcular resultados usando datos de campo de

archivos múltiples. Hay cinco funciones agregadas comunes.

Funciones agregadas comunes

Función agregada Descripción

COUNT() Devuelve el número de filas que contienen valores no nulos en el campo

especificado.

SUM() Devuelve la suma de los valores no nulos en el campo especificado.

AVG() Devuelve el promedio de los valores no nulos en el campo especificado.

MAX() Devuelve el máximo de los valores no nulos en el campo especificado.

MIN() Devuelve mínimo de los valores no nulos en el campo especificado.

EJEMPLOS: COUNT, SUM, AVG,

Encontrar cuántos empleados, de la tabla empleados.

-- Find the Number of Employees SELECT COUNT(*) AS NumEmployees FROM Employees;

-- Find the Total Number of Units Ordered of Product ID 3 /****************************** SQL Server ******************************/ SELECT SUM(Quantity) AS TotalUnits FROM "Order Details" WHERE ProductID=3;

/****************************** Oracle and MySQL ******************************/ SELECT SUM(Quantity) AS TotalUnits FROM Order_Details WHERE ProductID=3;

-- Find the Average Unit Price of Products SELECT AVG(UnitPrice) AS AveragePrice FROM Products;

-- Find the Earliest and Latest Dates of Hire

SELECT MIN(HireDate) AS FirstHireDate, MAX(HireDate) AS LastHireDate FROM Employees;

La declaración ESCOGIDA devolverá el 1 de abril de 1992 y el 15 de noviembre de 1994 como el

FirstHireDate y LastHireDate, respectivamente. El formato de la fecha variará de la base de

datos a la base de datos.

C. Agrupación de Datos

- Group by.

Con la cláusula GROUP BY, las funciones agregadas se pueden aplicar a grupos de archivos basados en

valores de la columna. Por ejemplo, el código siguiente devolverá el número de empleados en cada

ciudad.

--Retrieve the number of employees in each city SELECT City, COUNT(EmployeeID) AS NumEmployees FROM Employees GROUP BY City;

- HAVING

La cláusula Having es usada para filtrar datos agrupados. Por ejemplo, el código siguiente

especifica que sólo queremos la información sobre ciudades que tienen más de un empleado.

/* Retrieve the number of employees in each city in which there are at least 2 employees. */ SELECT City, COUNT(EmployeeID) AS NumEmployees FROM Employees GROUP BY City HAVING COUNT(EmployeeID) > 1;

El orden de las cláusulas de la estructura SQL, es el siguiente:

1. SELECT

2. FROM

3. WHERE

4. GROUP BY

5. HAVING

6. ORDER BY

Ejemplo:

/* Find the number of sales representatives in each city that contains at least 2 sales representatives. Order by the number of employees. */

SELECT City, COUNT(EmployeeID) AS NumEmployees FROM Employees WHERE Title = 'Sales Representative' GROUP BY City HAVING COUNT(EmployeeID) > 1 ORDER BY NumEmployees;

Reglas en la agrupación de datos:

- Cada columna no agregada que aparece en la cláusula SELECT también debe aparecer en la

cláusula GROUP BY.

- Usted no puede usar los alias en la cláusula HAVING.

- Puede utilizar alias en la cláusula ORDER BY.

- Sólo podrá utilizar los campos calculados en la cláusula HAVING.

- Puede utilizar alias de campos calculados o campos reales en la cláusula ORDER BY.

D. DISTINCT (Selección de registros distintos)

La palabra clave DISTINCT es usada para seleccionar combinaciones distintas de valores de la

columna de una tabla. Por ejemplo, el ejercicio siguiente muestra cómo encontraría todas las ciudades

distintas en las cuales Northwind tiene empleados.

/* Find all the distinct cities in which Northwind has employees. */ SELECT DISTINCT City FROM Employees ORDER BY City

DISTINCT a menudo se usa con funciones agregadas. El ejemplo siguiente muestra cómo DISTINCT

puede ser usado para averiguar en cuantas ciudades diferentes Northwind tiene empleados.

/* Find out in how many different cities Northwind has employees. */ SELECT COUNT(DISTINCT City) AS NumCities FROM Employees

E. Funciones integradas de manipulación de datos

En esta sección, hablaremos de algunas funciones de la manipulación de datos integradas más

comunes. Lamentablemente, las funciones se diferencian enormemente entre bases de datos,

por tanto seguramente comprobaría su documentación de la base de datos usando estas

funciones.

Las tablas debajo muestran algunas funciones matemáticas más comunes, cadenas y funciones

de la fecha.

Funciones matemáticas comunes

Descripción Servidor de SQL Oráculo MySQL

Valor absoluto ABS ABS ABS

El número entero más

pequeño> = valor CEILING CEIL CEILING

Redondee al número

entero más cercano FLOOR FLOOR FLOOR

Poder POWER POWER POWER

Por ahí ROUND ROUND ROUND

Raíz cuadrada SQRT SQRT SQRT

El formateo de

números a dos sitios

decimales

CAST(num AS

decimal(8,2)) CAST(num AS

decimal(8,2))

FORMAT(num,2) o CAST(num AS

decimal(8,2))

Ejemplo:

/* Select freight as is and freight rounded to the first decimal (e.g, 1.150 becomes 1.200) from the Orders tables */ SELECT Freight, ROUND(Freight,1) AS ApproxFreight FROM Orders;

/* Select the unit price as is and unit price as a CHAR(10) from the Products tables */

SELECT UnitPrice, CAST(UnitPrice AS CHAR(10)) FROM Products;

/****************************** ADD CONCATENATION ******************************/

/****************************** MySQL ******************************/

SELECT UnitPrice, CONCAT('$',CAST(UnitPrice AS CHAR(10))) FROM Products;

Note que el CHAR(10) crea el espacio para 10 caracteres y si el precio unitario requiriera más de 10

caracteres lo tendría que aumentar en consecuencia.

F. Funcions de Cadena (Stirng) comunes:

Funciones de cadena (String) comunes

Descripción Servidor de SQL Oráculo MySQL

Convertir caracteres a minúscula LOWER LOWER LOWER

Convertir caracteres a mayúscula UPPER UPPER UPPER

Quite el rastreo de espacios en blanco RTRIM RTRIM RTRIM

Quite espacios en blanco principales LTRIM LTRIM LTRIM

Funciones de cadena (String) comunes

Descripción Servidor de SQL Oráculo MySQL

Subcadena SUBSTRING SUBSTR SUBSTRING

Ejemplo:

/* Select first and last name from employees in all uppercase letters */

SELECT UPPER(FirstName), UPPER(LastName) FROM Employees;

-- Select the first 10 characters of each customer's address

/****************************** SQL Server and MySQL ******************************/

SELECT SUBSTRING(Address,1,10) FROM Customers;

G. Funciones de fecha comunes

Funciones de fecha comunes

Descripción Servidor de SQL Oráculo MySQL

Adición de la fecha DATEADD (use +) DATE_ADD

Substracción de la fecha DATEDIFF (use -) DATEDIFF

Fecha del converso para ensartar DATENAME TO_CHAR DATE_FORMAT

Fecha del converso a número DATEPART TO_NUMBER(TO_CHAR) EXTRACT

Consiga la fecha corriente y tiempo GETDATE SYSDATE NOW

/****************************** MySQL ******************************/ -- Find the hiring age of each employee -- in versions of MySQL prior to 4.1.1

SELECT LastName, BirthDate, HireDate, YEAR(HireDate)-YEAR(BirthDate) AS HireAge FROM Employees;

-- In MySQL 4.1.1 and later, DATEDIFF() returns the number of days between -- two dates. You can then divide and floor to get age.

SELECT LastName, BirthDate, HireDate, FLOOR(DATEDIFF(HireDate,BirthDate)/365) AS HireAge FROM Employees ORDER BY HireAge;

/****************************** MySQL ******************************/

SELECT FirstName, LastName, DATE_FORMAT(BirthDate, '%M') AS BirthMonth FROM Employees ORDER BY EXTRACT(MONTH FROM BirthDate);