Sunteți pe pagina 1din 28

Universidad José Cecilio del Valle

IIT3014 - Base de Datos Relacional

SQL AVANZADO

SQL Avanzado 1
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Cláusula SQL SELECT TOP


La cláusula SELECT TOP se utiliza para especificar el número de registros a devolver.
Puede ser muy útil en tablas grandes con miles de registros. Devolver un gran número
de registros puede afectar e rendimiento de la Base de Datos.

Sintaxis

SELECT TOP number|percent column_name(s)


FROM table_name;

Ejemplo

La siguiente sentencia SQL selecciona los dos primeros registros de la tabla "clientes":

SELECT TOP 2 * FROM Customers;

Ejemplo PORCIENTO

La siguiente sentencia SQL selecciona el primer 50% de los registros de la tabla


"clientes":

SELECT TOP 50 PERCENT * FROM Customers;

SQL LIKE operador


El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón especificado
en una columna.

Sintaxis

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

SQL Avanzado 2
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo

La siguiente sentencia SQL selecciona todos los clientes una ciudad empezando con la
letra "s":

SELECT * FROM Customers


WHERE City LIKE 's%';

Ejemplo
La siguiente sentencia SQL selecciona todos los clientes con un país que contiene el
patrón "tierra":

SELECT * FROM Customers


WHERE Country LIKE '%land%';

Uso de la palabra clave NOT: Permite seleccionar los registros que no coinciden con el
patrón.

Ejemplo
La siguiente sentencia SQL selecciona todos los clientes con un país que no contiene el
patrón de "tierra":

SELECT * FROM Customers


WHERE Country NOT LIKE '%land%';

SQL Avanzado 3
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL COMODINES
Un carácter comodín se puede utilizar para sustituir a cualquier otro carácter (s) en
una cadena.

 En SQL, los caracteres Comodines se utilizan con el operador SQL LIKE.


 Los Comodines SQL se utilizan para buscar datos dentro de una tabla.

Comodín Descripción

% Sustituto de cero o más caracteres

_ Sustituto de un solo carácter

[charlist] Establece rangos de caracteres para que coincida

[^charlist] Coincide con sólo un carácter no especificado dentro de los


or corchetes
[!charlist]

Usando el Comodín SQL %

La siguiente sentencia SQL selecciona todos los clientes de una ciudad que comienza
con "ber":

SELECT * FROM Customers


WHERE City LIKE 'ber%';

La siguiente sentencia SQL selecciona todos los clientes una ciudad que contiene el
patrón "es":

SELECT * FROM Customers


WHERE City LIKE '%es%';

Usando el Comodín SQL _

La siguiente sentencia SQL selecciona todos los clientes de una ciudad a partir de
cualquier carácter, seguido de "erlín":

SELECT * FROM Customers


WHERE City LIKE '_erlin';

SQL Avanzado 4
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

La siguiente sentencia SQL selecciona todos los clientes de una ciudad que comienza
con "L", seguida de cualquier carácter, seguido de "n", seguido de cualquier carácter,
seguido de "en":

SELECT * FROM Customers


WHERE City LIKE 'L_n_on';

Usando el Comodín SQL [charlist]

La siguiente sentencia SQL selecciona todos los clientes de una ciudad que comienza
con "b", "s" o "p":

SELECT * FROM Customers


WHERE City LIKE '[bsp]%';

La siguiente sentencia SQL selecciona todos los clientes de una ciudad que comienza
con "a", "b" o "c":

SELECT * FROM Customers


WHERE City LIKE '[a-c]%';

La siguiente sentencia SQL selecciona todos los clientes de una ciudad que no
comienza con "b", "s" o "p":

SELECT * FROM Customers


WHERE City LIKE '[!bsp]%';

SQL Operador IN
El operador IN permite especificar varios valores en una cláusula WHERE.

Sintaxis

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

SQL Avanzado 5
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo
La siguiente sentencia SQL selecciona todos los clientes de una ciudad de "Paris" o
"London":

SELECT * FROM Customers


WHERE City IN ('Paris','London');

SQL Operador BETWEEN


El operador BETWEEN se utiliza para seleccionar valores dentro de un rango.

Sintaxis

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Ejemplo
La siguiente sentencia SQL selecciona todos los productos con un precio de entre 10 y
20:

SELECT * FROM Products


WHERE Price BETWEEN 10 AND 20;

La siguiente sentencia SQL selecciona todos los pedidos con un OrderDate ENTRE '04-
Julio-1996 'y '09-julio-1996':

SELECT * FROM Orders


WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;

Ejemplo NOT BETWEEN


Para mostrar los productos fuera del alcance del ejemplo anterior, utilice NOT
BETWEEN:

SELECT * FROM Products


WHERE Price NOT BETWEEN 10 AND 20;

SQL Avanzado 6
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo BETWEEN con AND

La siguiente sentencia SQL selecciona todos los productos con un precio de entre 10 y
20, pero los productos con un CategoryID de 1,2 o 3 no se deben mostrar:

SELECT * FROM Products


WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);

Ejemplo BETWEEN con Text Value

La siguiente sentencia SQL selecciona todos los productos con un principio


ProductName con cualquier letra entre la 'C' y 'M':

SELECT * FROM Products


WHERE ProductName BETWEEN 'C' AND 'M';

Ejemplo NOT BETWEEN con Text Value

La siguiente sentencia SQL selecciona todos los productos con un principio


ProductName con cualquiera de la carta NO ENTRE 'C' y 'M':

SELECT * FROM Products


WHERE ProductName NOT BETWEEN 'C' AND 'M';

Observe que el operador BETWEEN puede producir resultados


diferentes en diferentes bases de datos

En algunas bases de datos, entre los campos selectos que se encuentran entre
los valores y la exclusión de la prueba.

En otras bases de datos, entre los campos selectos que se encuentran entre
los valores y la inclusión de la prueba.

Y en otras bases de datos, BETWEEN selecciona áreas entre los valores de la


prueba, incluyendo el primer valor de la prueba y excluyendo el último valor
de la prueba.

SQL Avanzado 7
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL Aliases
Los Alias de SQL se utilizan para dar a una tabla de Base de Datos o a una columna de
una tabla un nombre temporal. Básicamente los Alias se crean para que los nombres
de columna sean más legibles.

Sintaxis de Columnas

SELECT column_name AS alias_name


FROM table_name;

Sintaxis de Tablas

SELECT column_name(s)
FROM table_name AS alias_name;

Ejemplo para Columnas de Tabla

La siguiente sentencia SQL especifica dos alias, uno para la columna CustomerName y
otro para la columna ContactName. Consejo: Se requieren comillas dobles o corchetes
si el nombre de la columna contiene espacios:

SELECT CustomerName AS Customer, ContactName AS [Contact Person]


FROM Customers;

En la siguiente sentencia SQL se combinan cuatro columnas (Dirección, Ciudad,


CódPostal y país) y crear un alias llamado "Dirección":

SELECT CustomerName, Address+', '+City+', '+PostalCode+', '+Country AS Address


FROM Customers;

Ejemplo para Tablas

La siguiente sentencia SQL selecciona todos los pedidos de los clientes "Alfreds
Futterkiste". Utilizamos los "clientes" y las tablas "Pedidos", y les damos los alias de
tabla de la "c" y "o" respectivamente (Aquí hemos utilizado alias para que el SQL más
corto):

SELECT o.OrderID, o.OrderDate, c.CustomerName


FROM Customers AS c, Orders AS o
WHERE c.CustomerName='Alfreds Futterkiste';

SQL Avanzado 8
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

La misma sentencia SQL sin alias:

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName


FROM Customers, Orders
WHERE Customers.CustomerName='Alfreds Futterkiste';

Las Abreviaturas pueden ser útiles cuando:

 Hay más de una tabla que participan en una consulta


 Las funciones se utilizan en la consulta
 Los nombres de columna son grandes o no muy legible
 Dos o más columnas se combinan juntos

SQL JOIN
Una cláusula SQL JOIN se utiliza para combinar filas a partir de dos o más tablas,
basándose en un campo común entre ellos.

El tipo más común de unión es: SQL combinación interna - INNER JOIN (join sencilla).
Un SQL INNER JOIN devuelve todas las filas de varias tablas cuando se cumpla la
condición de unión.

Visualicemos una selección de la tabla "Pedidos":

OrderID CustomerID OrderDate

10308 2 1996-09-18

10309 37 1996-09-19

10310 77 1996-09-20

A continuación, visualice una selección de la tabla "clientes":

CustomerID CustomerName ContactName Country

1 Alfreds Futterkiste Maria Anders Germany

2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico

3 Antonio Moreno Taquería Antonio Moreno Mexico

SQL Avanzado 9
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Observe que la columna "CustomerID" de la tabla "Pedidos" se refiere al cliente en la


tabla "clientes". La relación entre las dos tablas anteriores es la columna
"CustomerID".

Entonces, si nos encontramos con la siguiente sentencia SQL (que contiene un INNER
JOIN):

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate


FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

Va a producir algo como esto:

OrderID CustomerName OrderDate

10308 Ana Trujillo Emparedados y helados 9/18/1996

10365 Antonio Moreno Taquería 11/27/1996

10383 Around the Horn 12/16/1996

10355 Around the Horn 11/15/1996

10278 Berglunds snabbköp 8/12/1996

Diferentes uniones SQL


Antes de continuar con los ejemplos, vamos a enumerar los tipos de las diferentes
uniones SQL que puede utilizar:

 INNER JOIN: Devuelve todas las filas cuando hay por lo menos un partido en
ambas tablas.
 LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda, y las filas
coincidentes de la tabla de la derecha.
 RIGHT JOIN: Devuelve todas las filas de la tabla de la derecha, y las filas
coincidentes de la tabla izquierda.
 FULL JOIN: Devuelve todas las filas cuando hay un partido en una de las tablas.

SQL Avanzado 10
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL INNER JOIN


La palabra clave INNER JOIN selecciona todas las filas de ambas tablas, siempre y
cuando hay una coincidencia entre las columnas en ambas tablas.

Sintaxis

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

PS! INNER JOIN es la misma que JOIN.

A continuación se muestra una selección de la tabla "clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México D.F. 05021 México


Emparedados … Constitución 2222

3 Antonio Moreno Antonio Moreno Mataderos 2312 México D.F. 05023 México
Taquería

SQL Avanzado 11
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Y una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

Ejemplo

La siguiente sentencia SQL devolverá todos los clientes con pedidos:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Nota: La palabra clave INNER JOIN selecciona todas las filas de ambas tablas, siempre
y cuando hay una coincidencia entre las columnas. Si hay filas en la tabla "clientes"
que no tienen coincidencias en "Pedidos", no se mostrarán estos clientes.

SQL LEFT JOIN


La palabra clave REGISTRARSE EN LEFT devuelve todos los filas a partir la tabla izquierda
(tabla1), con las filas coincidentes en la tabla derecha (tabla2). El resultado es NULL en el lado
derecho cuando no hay ninguna coincidencia.

Sintaxis

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

SQL Avanzado 12
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

PS! En algunas bases de datos DEJADA REGISTRARSE EN que se llama DEJADA JOIN
EXTERIOR.

A continuación se muestra una selección de la tabla "clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México D.F. 05021 México


Emparedados … Constitución 2222

3 Antonio Moreno Antonio Moreno Mataderos 2312 México D.F. 05023 México
Taquería

Y una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

Ejemplo

La siguiente declaración SQL regresará todos los clientes, y con cualesquiera órdenes
de que pudieran tener:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

SQL Avanzado 13
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Nota: La palabra clave JOIN LEFT devuelve todas las filas de la tabla izquierda
(clientes), incluso si no hay coincidencias en la tabla de la derecha (Órdenes).

SQL RIGHT JOIN


La palabra clave RIGHT JOIN devuelve todas las filas de la tabla de la derecha (tabla
2), con las filas coincidentes en la tabla de la izquierda (tabla 1). El resultado es NULL
en el lado izquierdo cuando no hay ninguna coincidencia.

Sintaxis

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

PS! En algunas bases de datos RIGHT JOIN se llama RIGHT OUTER JOIN.

SQL Avanzado 14
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

A continuación se muestra una selección de la tabla "clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México D.F. 05021 México


Emparedados … Constitución 2222

3 Antonio Moreno Antonio Moreno Mataderos 2312 México D.F. 05023 México
Taquería

Y una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

Ejemplo

La siguiente sentencia SQL devolverá todos los pedidos, así como cualquier cliente que
podrían haberlos colocados:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Nota: La palabra clave RIGHT JOIN devuelve todas las filas de la tabla de la derecha
(órdenes), incluso si no hay coincidencias en la tabla de la izquierda (Clientes).

SQL Avanzado 15
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL FULL OUTER JOIN


La palabra clave FULL OUTER JOIN devuelve todas las filas de la tabla de la izquierda
(tabla 1) y de la tabla de la derecha (tabla 2). La palabra clave FULL OUTER JOIN
combina el resultado de la izquierda y la derecha se une.

Sintaxis

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

A continuación se muestra una selección de la tabla "clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México D.F. 05021 México


Emparedados … Constitución 2222

3 Antonio Moreno Antonio Moreno Mataderos 2312 México D.F. 05023 México
Taquería

Y una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

SQL Avanzado 16
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo

La siguiente sentencia SQL selecciona todos los clientes, y todas las órdenes:

SELECT Customers.CustomerName, Orders.OrderID


FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Una selección del conjunto de resultados puede tener este aspecto:

CustomerName OrderID

Alfreds Futterkiste

Ana Trujillo Emparedados y helados 10308

Antonio Moreno Taquería 10365

10382

10351

Nota: La palabra clave FULL OUTER JOIN devuelve todas las filas de la tabla izquierda
(clientes), y todas las filas de la tabla derecha (Órdenes). Si hay filas en "Clientes" que
no tienen coincidencias en "Pedidos", o si hay filas de "Pedidos" que no tienen
coincidencias en "Clientes", las filas se mostrarán también.

SQL Operador UNION


El operador UNION se usa para combinar el conjunto de resultados de dos o más
sentencias SELECT.

Tenga en cuenta que cada sentencia SELECT dentro de la Unión debe tener el mismo
número de columnas. Las columnas deben tener tipos de datos similares. Además, las
columnas de cada instrucción SELECT deben estar en el mismo orden.

SQL Avanzado 17
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Sintaxis

SELECT column_name(s) FROM table_name1


UNION
SELECT column_name(s) FROM table_name2;

Nota: El operador UNION selecciona sólo los valores distintos de forma


predeterminada. Para permitir valores duplicados, utilice UNION ALL.

Sintaxis SQL UNION ALL

SELECT column_name(s) FROM table_name1


UNION ALL
SELECT column_name(s) FROM table_name2;

PS: Los nombres de columna del conjunto de resultados de una UNION son siempre
iguales a los nombres de columna en la primera instrucción SELECT de la UNION.

A continuación se muestra una selección de la tabla "clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México D.F. 05021 México


Emparedados … Constitución 2222

3 Antonio Moreno Antonio Moreno Mataderos 2312 México D.F. 05023 México
Taquería

Y una selección de la tabla "Proveedores":

SupplierID SupplierName ContactName Address City PostalCode Country

1 Exotic Liquid Charlotte Cooper 49 Gilbert St. London EC1 4SD UK

2 New Orleans Cajun D… Shelley Burke P.O. Box 78934 New Orleans 70117 USA

3 Grandma Kelly's Hom… Regina Murphy 707 Oxford Rd. Ann Arbor 48104 USA

SQL Avanzado 18
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo

La siguiente sentencia SQL selecciona todas las diferentes ciudades de los "clientes" y
los "Proveedores":

SELECT City FROM Customers


UNION
SELECT City FROM Suppliers;

Nota: Este comando no se puede utilizar para enumerar todas las ciudades de las dos
tablas. En el ejemplo anterior varios clientes y proveedores comparten la misma
ciudad, pero cada ciudad sólo se mostrará una vez. El comando UNION sólo selecciona
valores distintos.

SQL UNION ALL

La siguiente sentencia SQL selecciona todas las ciudades de los "clientes" y los
"Proveedores":

SELECT City FROM Customers


UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

SQL SELECT INTO


SQL SELECT INTO se puede utilizar para crear copias de seguridad de las tablas. La
instrucción SELECT INTO selecciona datos de una tabla y lo inserta en una tabla
diferente.

La instrucción SELECT INTO es la más utilizada para crear copias de seguridad de las
tablas.

SQL Avanzado 19
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Sintaxis

Podemos seleccionar todas las columnas en la nueva tabla:

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

Podemos seleccionar sólo las columnas que queremos en la nueva tabla:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

Ejemplo

Hacer una copia de seguridad - Ahora queremos hacer una copia exacta de los
datos en nuestra tabla "Personas".

Nosotros usamos la siguiente instrucción SQL:

SELECT *
INTO Persons_Backup
FROM Persons

También podemos utilizar la cláusula IN para copiar la tabla en otra base de datos:

SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons

También podemos copiar sólo unos pocos campos en la nueva tabla:

SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons

SQL Avanzado 20
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL SELECT INTO - Con una cláusula WHERE


La siguiente sentencia SQL crea una tabla "Persons_Backup" sólo con las personas que
viven en la ciudad "Sandnes":

SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'

SQL SELECT INTO - Tablas Combinadas


Selección de los datos de más de una tabla también es posible.

El ejemplo siguiente crea una tabla "Persons_Order_Backup" contiene los datos de las
dos tablas "Personas" y "Pedidos":

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id

SQL Avanzado 21
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL FUNCIONES
SQL tiene muchas funciones integradas para realizar cálculos sobre los datos.

Las Funciones de SQL devuelven un solo valor, calculado a partir de los valores de una
columna.

 AVG () - Devuelve el valor medio


 COUNT () - Devuelve el número de filas
 FIRST () - Devuelve el primer valor
 Last () - Devuelve el último valor
 MAX () - Devuelve el valor más grande
 MIN () - Devuelve el valor más pequeño
 SUM () - Devuelve la suma

Las funciones escalares de SQL

Funciones escalares de SQL devuelven un valor único, basado en el valor de entrada.

 UCASE () - Convierte un campo a mayúsculas


 LCASE () - Convierte un campo a minúsculas
 MID () - Extrae caracteres de un campo de texto
 LEN () - devuelve la longitud de un campo de texto
 ROUND () - Redondea un campo numérico al número de decimales especificado
 NOW () - Devuelve la fecha y hora actuales
 FORMATO () - Formatos de cómo es un campo que se mostrará

Consejo: Las funciones agregadas y las funciones escalares se explicarán en detalle en


los próximos capítulos.

Función AVG ()
El AVG () devuelve el valor medio de una columna numérica.

Sintaxis

SELECT AVG(column_name) FROM table_name

SQL Avanzado 22
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

A continuación se muestra una selección de la tabla "productos":

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 21.35

5 Chef Anton's Gumbo Mix 2 2 36 boxes 25

Ejemplo

La siguiente sentencia SQL obtiene el valor promedio de la columna "Precio" de la tabla


"productos":

SELECT AVG(Price) AS PriceAverage FROM Products;

La siguiente sentencia SQL selecciona la opción "ProductName" y registros "precio" que


tienen un precio superior a la media:

SELECT ProductName, Price FROM Products


WHERE Price>(SELECT AVG(Price) FROM Products);

Función COUNT ()
El COUNT () devuelve el número de filas que coincida con los criterios especificados.

Sintaxis

SQL COUNT (column_name)

La función count (column_name) devuelve el número de valores (no se cuentan los


valores NULL) de la columna especificada:

SELECT COUNT(column_name) FROM table_name;

SQL Avanzado 23
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SQL COUNT (*)

La función COUNT (*) devuelve el número de registros en una tabla:

SELECT COUNT(*) FROM table_name;

Sintaxis

SQL COUNT (DISTINCT column_name)

La función COUNT (DISTINCT column_name) devuelve el número de valores distintos


de la columna especificada:

SELECT COUNT(DISTINCT column_name) FROM table_name;

A continuación se muestra una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10265 7 2 1996-07-25 1

10266 87 3 1996-07-26 3

10267 25 4 1996-07-29 1

Ejemplo

La siguiente sentencia SQL cuenta el número de órdenes de "CustomerID" = 7 de la


tabla "Pedidos":

SELECT COUNT(CustomerID) AS OrdersFromCustomerID7 FROM Orders


WHERE CustomerID=7;

La siguiente sentencia SQL omite la cláusula WHERE y cuenta el número total de


pedidos de la tabla "Pedidos":

SELECT COUNT(*) AS NumberOfOrders FROM Orders;

Ejemplo SQL COUNT (DISTINCT column_name)

Ahora queremos contar el número de clientes exclusivos de la tabla "Pedidos". Usamos


la siguiente instrucción SQL:

SQL Avanzado 24
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

SELECT COUNT(DISTINCT CustomerID) AS NumberOfCustomers FROM Orders;

El conjunto de resultados se verá así, que es el número de clientes exclusivos de la tabla


"Pedidos".

NumberOfCustomers

89

Función MAX ()
La función MAX () devuelve el mayor valor de la columna seleccionada.

Sintaxis

SELECT MAX(column_name) FROM table_name;

Ejemplo

La siguiente sentencia SQL obtiene el valor más grande de la columna de "Precio" de la


tabla "productos":

SELECT MAX(Price) AS HighestPrice FROM Products;

Función MIN ()
El MIN () devuelve el valor más pequeño de la columna seleccionada.

Sintaxis

SELECT MIN(column_name) FROM table_name;

Ejemplo

La siguiente sentencia SQL obtiene el menor valor de la columna "Precio" de la tabla


"productos":

SELECT MIN(Price) AS SmallestOrderPrice FROM Products;

SQL Avanzado 25
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Función SUM ()
El SUM () devuelve la suma total de una columna numérica.

Sintaxis

SELECT SUM(column_name) FROM table_name;

A continuación se muestra una selección de la tabla "OrderDetails":

OrderDetailID OrderID ProductID Quantity

1 10248 11 12

2 10248 42 10

3 10248 72 5

4 10249 14 9

5 10249 51 40

Ejemplo

La siguiente sentencia SQL busca la suma de todos los campos de la "cantidad" de la


tabla "OrderDetails":

SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

SQL Avanzado 26
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Declaración SQL GROUP BY


Las funciones agregadas a menudo necesitan un Grupo añadido BY.

La instrucción GROUP BY se utiliza en conjunción con las funciones de agregado para


agrupar el conjunto de resultados de una o más columnas.

Sintaxis

SELECT column_name, aggregate_function(column_name)


FROM table_name
WHERE column_name operator value
GROUP BY column_name;

A continuación se muestra una selección de la tabla "Pedidos":

OrderID CustomerID EmployeeID OrderDate ShipperID

10248 90 5 1996-07-04 3

10249 81 6 1996-07-05 1

10250 34 4 1996-07-08 2

Y una selección de la tabla "cargadores":

ShipperID ShipperName Phone

1 Speedy Express (503) 555-9831

2 United Package (503) 555-3199

3 Federal Shipping (503) 555-9931

Y una selección de la tabla "Empleados":

EmployeeID LastName FirstName BirthDate Photo Notes

1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....

2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....

3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

SQL Avanzado 27
Ing. Rommell Duval Vargas Laitano MGCT
Universidad José Cecilio del Valle
IIT3014 - Base de Datos Relacional

Ejemplo

Ahora queremos encontrar el número de órdenes enviadas por cada transportista.

La siguiente declaración de cuenta de SQL como pedidos agrupados por los


cargadores:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM


Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;

GROUP BY más de una columna

También podemos utilizar la instrucción GROUP BY en más de una columna, de esta manera:

SELECT Shippers.ShipperName, Employees.LastName,


COUNT(Orders.OrderID) AS NumberOfOrders
FROM ((Orders
INNER JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID)
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY ShipperName,LastName;

SQL Avanzado 28
Ing. Rommell Duval Vargas Laitano MGCT

S-ar putea să vă placă și