SQL-Avanzado-UJCV (3).docx

Universidad José Cecilio del Valle IIT3014 - Base de Datos Relacional SQL AVANZADO SQL Avanzado Ing. Rommell Duval Var

Views 48 Downloads 1 File size 526KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad José Cecilio del Valle IIT3014 - Base de Datos Relacional

SQL AVANZADO

SQL Avanzado Ing. Rommell Duval Vargas Laitano MGCT

1

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 Ing. Rommell Duval Vargas Laitano MGCT

2

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 Ing. Rommell Duval Vargas Laitano MGCT

3

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] [^charlist] or [!charlist]

Establece rangos de caracteres para que coincida Coincide con sólo un carácter no especificado dentro de los corchetes

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 Ing. Rommell Duval Vargas Laitano MGCT

4

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 Ing. Rommell Duval Vargas Laitano MGCT

5

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 '04Julio-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 Ing. Rommell Duval Vargas Laitano MGCT

6

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 ProductName con cualquier letra entre la 'C' y 'M':

los

productos

con

un

principio

La siguiente sentencia SQL selecciona todos los productos ProductName con cualquiera de la carta NO ENTRE 'C' y 'M':

con

un

principio

SELECT * FROM Products WHERE ProductName BETWEEN 'C' AND 'M';

Ejemplo NOT BETWEEN con Text Value

SELECT * FROM Products WHERE ProductName NOT BETWEEN 'C' AND 'M';

Observe que el operador BETWEEN diferentes en diferentes bases de datos

puede

producir

resultados

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 Ing. Rommell Duval Vargas Laitano MGCT

7

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 Ing. Rommell Duval Vargas Laitano MGCT

8

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 Ing. Rommell Duval Vargas Laitano MGCT

9

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 ambas tablas. LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda, coincidentes de la tabla de la derecha. RIGHT JOIN: Devuelve todas las filas de la tabla de la derecha, coincidentes de la tabla izquierda. FULL JOIN: Devuelve todas las filas cuando hay un partido en una de

SQL Avanzado Ing. Rommell Duval Vargas Laitano MGCT

partido en y las filas y las filas las tablas.

10

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

1

Alfreds Futterkiste

Maria Anders

Obere Str. 57

Berlin

12209

Germany

2

Ana Trujillo Emparedados …

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

México

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

México

SQL Avanzado Ing. Rommell Duval Vargas Laitano MGCT

Address

City

PostalCode Country

11

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 Ing. Rommell Duval Vargas Laitano MGCT

12

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 Emparedados …

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

México

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

México

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 Ing. Rommell Duval Vargas Laitano MGCT

13

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 Ing. Rommell Duval Vargas Laitano MGCT

14

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 Emparedados …

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

México

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

México

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 Ing. Rommell Duval Vargas Laitano MGCT

15

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 Emparedados …

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

México

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

México

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 Ing. Rommell Duval Vargas Laitano MGCT

16

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 Ing. Rommell Duval Vargas Laitano MGCT

17

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 predeterminada. Para permitir valores duplicados, utilice UNION ALL.

de

forma

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 Emparedados …

Ana Trujillo

Avda. de la Constitución 2222

México D.F.

05021

México

3

Antonio Moreno Taquería

Antonio Moreno

Mataderos 2312

México D.F.

05023

México

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

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 Ing. Rommell Duval Vargas Laitano MGCT

UK

18

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 Ing. Rommell Duval Vargas Laitano MGCT

19

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 Ing. Rommell Duval Vargas Laitano MGCT

20

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 Ing. Rommell Duval Vargas Laitano MGCT

21

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 Ing. Rommell Duval Vargas Laitano MGCT

22

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

5

Chef Anton's Gumbo Mix

2

2

36 boxes

21.35 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 Ing. Rommell Duval Vargas Laitano MGCT

23

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) WHERE CustomerID=7;

AS

OrdersFromCustomerID7

FROM

Orders

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 Ing. Rommell Duval Vargas Laitano MGCT

24

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 Ing. Rommell Duval Vargas Laitano MGCT

25

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 Ing. Rommell Duval Vargas Laitano MGCT

26

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 Ing. Rommell Duval Vargas Laitano MGCT

27

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 Ing. Rommell Duval Vargas Laitano MGCT

28