Sei sulla pagina 1di 55

Bases de Datos

Captulo V

Lenguaje SQL
Restricciones y Consultas Avanzadas

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Introduccin
Las Restricciones automticamente fuerzan las integridad de datos.

Es decir, las restricciones definen reglas que determinan los valores de datos que
se permiten en una columna. Esto permite restringir los valores que se pueden
insertar en una columna, de modo que no se acepten los valores no vlidos.

Existen dos tipos de restricciones:

 Restricciones de Columna ( o de una sola columna ): slo restringe los


valores de esa columna.
 Restriccin de tablas: restricciones que afectan a mas de una columna
de la tabla; se asegura que la combinacin de los valores para las
columnas de las restriccin cumplen los requerimientos de la restriccin.
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Introduccin
Los cinco tipos de restricciones son:
Restricciones
NOT NULL
UNIQUE
PRIMARY KEY
FOREING KEY
CHECK

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
La restriccin UNIQUE asegura que una columna o un grupo de columnas no
permitirn valores repetidos en otras palabras, se impone la unicidad de los
valores en la columna o el conjunto.
Una restriccin UNIQUE se puede utilizar en cualquier columna que no sea parte
de una restriccin PRIMARY KEY, que tambin impone valores nicos.
Adems, las restricciones UNIQUE se pueden usar en columnas que permitan
valores nulos, mientras que las restricciones PRIMARY KEY no pueden. Los
valores nulos son ignorados por la restriccin UNIQUE.
Una columna con una restriccin UNIQUE puede referenciarse con una
restriccin FOREIGN KEY.
Se permiten varias restricciones UNIQUE con tal que el numero total de
restricciones es 249 no agrupadas (UNIQUE a una columna) y 1 agrupada
(UNIQUE aun conjunto de columnas).
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Para crear una restriccin UNIQUE en una tabla, se usa el comando CREATE
TABLE o ALTER TABLE.
Nomenclatura para creacin UNIQUE en CREATE TABLE:
UNIQUE no agrupado
nombre_columna tipo_dato [Opcional: NOT NULL] UNIQUE CLUSTERED
Ejemplo 1: Cree una tabla llamada Ejemplo_UNICO definida por la siguiente
tupla: Ejemplo_UNICO (codigo: numeric, nombre: nvarchar (20)). Colocando el
Campo codigo con una Restriccin UNIQUE y NOT NULL.
CREATE TABLE Ejemplo_UNICO (
codigo numeric NOT NULL UNIQUE CLUSTERED,
nombre nvarchar(20)
)

Compruebe lala restriccin


restriccin UNIQUE
UNIQUE insertando
insertando dos
dos filas
filas
Compruebe
utilizandoelelmismo
mismocdigo.
cdigo.
utilizando
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Nomenclatura para creacin UNIQUE en CREATE TABLE:
UNIQUE agrupado
En este caso la restriccin no es por una columna en particular, sino que por un
conjunto de columnas. Por lo tanto la restriccin se coloca despus de haber
definido todos los campos de la tabla y antes de cerrar la instruccin CREATE
TABLE. Se utiliza para crear esta restriccin la instruccin CONSTRAINT.
Nomenclatura:

CONSTRAINT nombre_restriccion UNIQUE NONCLUSTERED (campo1, ,


campoN)
NOTA: el nombre de la restriccin UNIQUE se recomienda por norma que
comience con UQ_nombre_restriccion.
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Nomenclatura para creacin UNIQUE en CREATE TABLE:
UNIQUE agrupado
Ejemplo 2: Crear la tabla Ejemplo_UNICO_GR basada en la siguiente tupla:
Eemplo_UNICO_GR (rut : numeric, digito: char(2),nombre: nvarchar(20)). El rut y
digito deben ser no nulos y adems en conjunto deben ser unicos.

CREATE TABLE Ejemplo_UNICO_GR(


rut numeric NOT NULL,
digito char(2) NOT NULL,

Compruebe lala restriccin


restriccin UNIQUE
UNIQUE
Compruebe
agrupada, dos
dos filas
filas con
con los
los mismos
mismos
agrupada,
valoresen
enelelcampo
camporut
rutyydigito.
digito.
valores

nombre nvarchar(20),
CONSTRAINT UQ_rut_digito UNIQUE NONCLUSTERED (rut,digito)
)

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Nomenclatura para creacin UNIQUE en ALTER TABLE:
UNIQUE no agrupado y agrupado
Para ambos casos de UNIQUE se utiliza la misma nomenclatura.
Nomenclatura NO AGRUPADO
ALTER TABLE nombre_tabla
ADD
CONSTRAINT
(nombre_campo)

UQ_nombre_restriccion

UNIQUE

CLUSTERED

Nomenclatura AGRUPADO
ALTER TABLE nombre_tabla
ADD CONSTRAINT UQ_nombre_restriccion
(campo1, ., campoN)
INF 340 - Bases de Datos

UNIQUE

NONCLUSTERED

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Nomenclatura para creacin UNIQUE en ALTER TABLE:
Ejemplo 3: Crear una tabla Ejemplo_UNICO_ALT basada en la siguiente tupla:
Ejemplo_UNICO_ALT (rut: numeric, digito: char(2), nombre: nvarchar(20)). Donde
rut y digito sern no nulos. Luego de crear la tabla agregue las siguientes
restricciones rut y digito deben ser en conjunto nicos, adems el nombre debe
tambin ser nico.

CREATE TABLE Ejemplo_UNICO_ALT (


rut numeric NOT NULL,
digito char(2) NOT NULL,

Ac se
se crea
crea lala tabla
tabla luego
luego de
de esto
esto
Ac
realice las
las restricciones
restricciones con
con ALTER
ALTER
realice
TABLE.
TABLE.

nombre nvarchar(20)
)
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Nomenclatura para creacin UNIQUE en ALTER TABLE:
Ejemplo 3:
/* ACA SE REALIZAN ALTERACIONES A LA TABLA Ejemplo_UNICO_GR*/
ALTER TABLE Ejemplo_UNICO_ALT
ADD CONSTRAINT UQ_rut_digito_ALT UNIQUE NONCLUSTERED (rut, digito)
ALTER TABLE Ejemplo_UNICO_ALT
ADD CONSTRAINT UQ_nombre_ALT UNIQUE CLUSTERED (nombre)
Compruebe las
las siguientes
siguientes restricciones
restricciones ingresando
ingresando dos
dos registros
registros con
con
Compruebe
distintorut
rutyydigito
digitoyyelelmismo
mismonombre.
nombre.
distinto
otrosdos
dosregistros
registroscon
connombre
nombredistinto
distintoyyelelrut
rutyydigito
digitoiguales.
iguales.
YYotros
NOTA: EN
EN LA
LA BASE
BASE DE
DE DATOS
DATOS NO
NO PUEDEN
PUEDEN EXISTIR
EXISTIR DOS
DOS
NOTA:
RESTRICCIONES CON
CON EL
ELINFMISMO
MISMO
NOMBRE,
AUNQUE SEAN
SEAN DE
DE
RESTRICCIONES
NOMBRE,
AUNQUE
340 - Bases de
Datos
TABLASDISTINTAS.
DISTINTAS.
TABLAS

Lenguaje de Definicin de Datos (DDL)


Restriccin - UNIQUE
Borrar una restriccin UNIQUE creada.
Para borrar una restriccin UNIQUE se debe utilizar la instruccin ALTER TABLE
con su opcin DROP.
Nomenclatura
ALTER TABLE nombre_tabla
DROP CONSTRAINT UQ_nombre_restriccion
Ejemplo 4: Borre de
Ejemplo_UNICO_ALT.

la

restriccin

UQ_nombre_ALT

ALTER TABLE Ejemplo_UNICO_ALT


DROP COSNTRAINT UQ_nombre_ALT
INF 340 - Bases de Datos

de

la

tabla

Lenguaje de Definicin de Datos (DDL)


Restriccin PRIMARY KEY
La restriccin PRIMARY KEY se usa para especificar la clave primaria de una
tabla, la columna o conjunto de columnas que identifican unvocamente a una fila.
Debido a que identifica a una fila la clave primaria nunca puede ser NULL, esto es
la que lo diferencia de la restriccin UNIQUE.
Para la definicin de la restriccin PRIMARY KEY se pueden utilizar las
instrucciones CREATE TABLE y ALTER TABLE.
Nomenclatura para CREATE TABLE:
nombre_campo tipo_dato PRIMARY KEY

Ejemplo 1: Crea una Tabla denominada Ejemplo_Clave_PR, basada en la


siguiente tupla: Ejemplo_Clave_PR (codigo: numeric, nombre: nvarchar(20)).
Colocando el campo codigo como clave primaria.
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin PRIMARY KEY
Ejemplo 1:
CREATE TABLE Ejemplo_Clave_PR (
codigo numeric PRIMARY KEY,
nombre nvarchar(20)

Compruebe sisi se
se cumple
cumple lala
Compruebe
restriccin de
de clave
clave primaria
primaria
restriccin
ingresandodos
dosfilas
filascon
conelelmismo
mismo
ingresando
cdigo.
cdigo.

)
Adems usando CREATE TABLE se le puede asignar un nombre a la restriccin
PRIMARY KEY (IDEAL) , usando la siguiente nomenclatura:
Para cuando se coloca al lado del campo:
nombre_campo tipo_dato CONSTRAINT PK_nombre_clave PRIMARY KEY
Para cuando se coloca antes de cerrar el CREATE TABLE
CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas)
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin PRIMARY KEY
Nomenclatura para ALTER TABLE:
ALTER TABLE nombre_tabla
ADD CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas)
Nomenclatura para BORRAR una clave primaria:
ALTER TABLE nombre_tabla
DROP CONSTRAINT PK_nombre_clave
NOTA: EN
EN LA
LA BASE
BASE DE
DE DATOS
DATOS NO
NO PUEDEN
PUEDEN EXISTIR
EXISTIR DOS
DOS
NOTA:
RESTRICCIONES CON
CON EL
EL MISMO
MISMO NOMBRE,
NOMBRE, AUNQUE
AUNQUE SEAN
SEAN DE
DE
RESTRICCIONES
TABLASDISTINTAS.
DISTINTAS.
TABLAS
NOTA: Por
Por nomenclatura
nomenclatura alal dar
dar un
un nombre
nombre aa una
una clave
clave primaria
primaria es
es
NOTA:
idealcomenzar
comenzarcon
conlalaletras
letrasPK
PK
ideal
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Una restriccin FOREIGN KEY define una clave externa, que identifica una
relacin entre dos tablas.
La columna o columnas clave externa de una tabla referencia a una clave
candidata una o varias columnas de otra tabla.
Cuando se inserta una fila en la tabla con la restriccin FOREIGN KEY, los
valores que se van a introducir en la columna o columnas que se han definido
como clave externa se comprueban frente a los valores de la clave candidata de
la tabla referenciada. Si ninguna fila de la tabla referenciada se ajusta a los
valores de la clave externa, la nueva fila no se puede insertar.
La restriccin FOREIGN KEY tambin se comprueba cuando se realizan
actualizaciones y borrados en la tabla referenciada o la tabla que posee la clave
externa.
Una clave externa slo puede referenciar columnas que tengan las
restricciones PRIMARY KEY o UNIQUE en la tabla referenciada.
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Una clave externa slo puede referenciar columnas que tengan las
restricciones PRIMARY KEY o UNIQUE en la tabla referenciada.
Adems, el tipo de dato y el tamao de la columna o columnas de la clave
externa, tambin debe
coincidir con el de la columna o columnas
referenciadas.
Esta restriccin FOREIGN KEY se puede asignar utilizando la sentencia CREATE
TABLE y ALTER TABLE.
Nomenclatura en CREATE TABLE (Siempre se agrega antes de finalizar la
creacin de la tabla):
CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o columnas
que guardaran los valores de la clave ajena) REFERENCES
nombre_tabla_referencia (columna o columna que poseen datos a validar)

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Ejemplo 5: Crear las siguientes tablas basadas en las tuplas:
Colegio (codigo_col: numero,nombre:nvarchar(20))
Alumno (rut: numero, digito: char(2), nombre: nvarchar(20), colegio: numero)
Restricciones: Colegio clave primaria codigo_col y Alumno clave primaria rut y
digito. Adems en alumno colegio es una clave externa que se debe verificar en
Colegio.
Paso 1: Crear las Tablas
CREATE TABLE COLEGIO(
codigo_col numeric,
nombre nvarchar(20) NOT NULL,
CONSTRAINT PK_colegio PRIMARY KEY (codigo_col)
)

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Ejemplo 5:
Paso 1: Crear las Tablas
CREATE TABLE ALUMNO(
rut numeric,
digito char(2),
nombre nvarchar(20) NOT NULL,
colegio numeric NOT NULL,
CONSTRAINT PK_alumno PRIMARY KEY (rut,digito),
CONSTRAINT FK_alumno_colegio FOREIGN KEY (colegio)
REFERENCES COLEGIO (codigo_col)
)
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Ejemplo 5:
Paso 2: Comprobacin de la RESTRICCION DE CLAVE FORANEA
Ingrese dos colegios: (1,ESCUELA DEL SABER) (2,ESCUELA 2)
Ingrese dos alumnos colocando en el campos colegio uno de los dos colegios
antes ingresado. Luego ingrese un tercer alumno haciendo referencia al cdigo de
colegio 3.

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin FOREIGN KEY
Nomenclatura en ALTER TABLE (para cuando se desea crear una clave externa
despus de haber creado la tabla):
ALTER TABLE nombre_tabla
ADD CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o
columnas
para
recepcin
de
clave
ajena)
REFERENCES
nombre_tabla_referencia (columna o columnas de referencia)

Nomenclatura para borrar una clave ajena:


ALTER TABLE nombre_tabla
DROP CONSTRAINT FK_nombre_restriccion

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin CHECK
La restriccin CHECK se usa para restringir los valores permitidos de una
columna o unos valores especficos. Los valores de una columna que se van a
introducir o actualizar se confirman.
Se puede agregar esta restriccin utilizando las instrucciones CREATE TABLE o
ALTER TABLE.

Nomenclatura CREATE TABLE:


CONSTRAINT CK_nombre_restriccion CHECK (condiciones)

Ejemplo 6: Crear una Tabla Ejemplo_CH basandose en la siguiente tupla:


Ejemplo_CK (codigo: numeric, nombre: nvarchar(20)). Donde codigo es la clave
primaria y solo puede aceptar valores entre 1 y 100.
INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin CHECK
Ejemplo 6:
CREATE TABLE Ejemplo_CK (
codigo numeric,
nombre nvarchar(20),
CONSTRAINT PK_codigo PRIMARY KEY (codigo),
CONSTRAINT CK_codigo_condicion CHECK (codigo > 0 and codigo < 101)
)

Para probar
probar lala realidad
realidad de
de lala restriccin
restriccin ingrese
ingrese un
un
Para
registro aa lala tabla
tabla Ejemplo_CK
Ejemplo_CK con
con un
un codigo
codigo con
con valor
valor
registro
mayorque
que100.
100.
mayor

INF 340 - Bases de Datos

Lenguaje de Definicin de Datos (DDL)


Restriccin CHECK
Nomenclatura para ALTER TABLE (en el caso de que se cree una restriccin
despus de haber creado la tabla):
ALTER TABLE nombre_tabla
ADD CONSTRAINT CK_nombre_restriccion CHECK (condiciones)

Nomenclatura para Borrar una restriccin CHECK:


ALTER TABLE nombre_tabla
DROP CONSTRAINT CK_nombre_restriccion

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Concatenacin

Permite concatenar en una sola salida varios campos. Los campos deben ser String,
sino lo son se pueden trasformar utilizando la operacin convert (tipo dato, campo)

Ejemplo 1: Utilizando la base de datos Northwind. Genere una lista de seleccin de


la tabla Employees (Empleado) donde solo se genere una columna de salida y esta
contenga los campos: EmployeeID, LastName y FirstName.
Select convert(nvarchar(2),EmployeeID) + + LastName + + FirstName as Nombre
from Employees

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Literales

Es cualquier cosa que no sea ni alias ni nombre de columna.


Existen dos formas para colocar estos valores anexados a la Lista de Seleccin.
Se puede colocar el mensaje entre comillas simples () o Colocar el nombre de la
columna de salida entre corchetes [ ] = valor de salida.
Ejemplo 2: Utilizando la tabla Employees liste las columnas EmployeeID, LastName,
FirstName, adems envi dos mensajes en conjunto con cada fila utilizando para
cada uno una de las opciones de literales.
Select EmployeeID, LastName as Apellido, FirstName as Nombre, 'ESTOS SON
EMPLEADOS' as Literal, [Otra Forma] = 'Esta es otra forma'
from Employees
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Between AND

Este operador se utiliza en la clusula where, para poder restringir una lista de seleccin
segn un rango de valores.
NOMENCLATURA:
WHERE Nombre_Columna BETWEEN parametro1 AND parametro2
NOTA: parametro1 (Mnimo) y parametro2 (Mximo)
Ejemplo 4: Suponga que queremos ver aquellos productos (Tabla Products) cuyos
valores se encuentran entre los 4 y 20 Dlares.

Select *
from Products
where UnitPrice Between 5.0 and 20.0
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
IN (Lista)

Este operador permite verificar si el campo se encuentra en una lista determinada o


subconsulta. Retorna verdadero si el campos se encuentra en la lista.
NOMENCLATURA:
WHERE campo_tabla IN (Lista de datos o Subconsulta)
Ejemplo 5: Liste los campos de la tabla productos que tengan exactamente un
precio de 18, 19 y 10 dolares.
Select *
from Products
where UnitPrice in (10.0,18.0,19.0)
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Like

Esta palabra clave indica el patrn de ajuste con una condicin de bsqueda. La
coincidencia de patrones significa analizar una coincidencia entre una expresin y el
patrn especificado en la condicin de bsqueda.
NOMENCLATURA:
Columna_Tabla LIKE Patron_de_Busqueda
Si la expresin coincide con el patrn se devuelve un valor booleano TRUE. En caso
contrario se devuelve FALSO. La expresin (COLUMNA_TABLA) debe ser de tipo
carcter.
Los patrones son realmente expresiones de cadena. Y van acompaados de caracteres
de comodn, que colocados en a expresin toman un significado especial.

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Like

Carcter Comodn

Descripcin

Smbolo de porcentaje, coincide con una cadena de


cero o ms caracteres.

Subrayado, coincide con un nico carcter.

[]

Carcter comodn en rango, coincide con cualquier


carcter nico en el rango o conjunto, tales como [m
p] o [ mnop ], significando que cualquiera de los
caracteres puede ser m, n, o ,p.

[^ ]

Carcter comodn no en rango, coincide con cualquier


carcter distinto de m, n, o, p (segn ejemplo anterior [ ^
mnop ].

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Like

Ejemplo 7: Encontrar todos los apellidos (LastName) en la tabla Employees que


comiencen con la letra <<S>>. Use el carcter comodn %.

SELECT LastName
FROM Employees
WHERE LastName LIKE 'S%' Ac se arma la frase con el comodn
Ejemplo 8: Para recuperar el apellido de los Empleados cuya primera letra comienza
entre <<A>> y <<M>>. Utilice el comodn [ ].

SELECT LastName
FROM Employees
WHERE LastName LIKE '[A-M ]%'
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
Like

Ejemplo 9: Usar Base de Datos Pubs. Para recuperar la informacin de un autor cuyo ID
comienza con el numero 724, sabiendo que cada ID tiene el formato de tres dgitos
seguidos por un guin, seguido por dos dgitos, otro guin y finalmente cuatro dgitos.
Utilizar el comodn _ .

Select *
from authors
where au_id LIKE '724-__-____'

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores Especiales
IS NULL

Realiza un testeo para valores que son Nulos. Retorna True si la columna es NULL sino
retorna FALSE.
NOMENCLATURA:
WHERE Columna IS NULL
Ejemplo 10: Usar base de datos Northwind. Liste todos los campos de la tabla Suppliers
cuya columna Regin sea NULL.

Select *
from Suppliers
where Region is null

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
Las funciones de agregado son:

SUM, AVG, COUNT, COUNT(*), MAX y MIN

Estas funciones generan valores de resumen en los conjuntos de resultados de


las consultas. Una funcin de agregado (con la excepcin de COUNT(*))
procesa todos los valores seleccionados en una nica columna para generar un
nico resultado.
Las funciones de agregado se pueden aplicar a todas las filas de una tabla, a
un subconjunto de la tabla especificado por una clusula WHERE o a uno o
varios grupos de filas de la tabla. Cuando se aplica una funcin de agregado,
se genera un valor individual por cada conjunto de filas.

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
Funcin de agregado

Resultado

SUM([ALL | DISTINCT] expression)

Total de los valores de la expresin numrica.

AVG([ALL | DISTINCT] expression)

Promedio de los valores de la expresin


numrica.

COUNT([ALL | DISTINCT] expression)

Nmero de valores en la expresin.

COUNT(*)

Nmero de filas seleccionadas.

MAX(expression)

Valor mayor de la expresin.

MIN(expression)

Valor menor de la expresin.

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
SUM, AVG, COUNT, MAX y MIN omiten los valores NULL; COUNT(*) no lo
hace.
La palabra clave opcional DISTINCT se puede usar con SUM, AVG y COUNT
para eliminar los valores duplicados antes de que se establezca la funcin de
agregado.
SUM y AVG se pueden usar slo con columnas numricas, como, por ejemplo,
las de los tipos de datos int, smallint, tinyint, decimal, numeric, float, real,
money y smallmoney. MIN y MAX no se pueden usar con tipos de datos bit.
El resto de las funciones de agregado que no sean COUNT(*) no se puede usar
con los tipos de datos text e image.

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
SUM
Retorna: Total de los valores de la expresin numrica.
NOMENCLATURA:
SUM (Columna para la suma)
Ejemplo: Usando la base de dato PUBS. Calcula la suma de las ventas del ao
hasta la fecha (ytd_sales) de todos los libros de la tabla titles.
USE pubs
SELECT SUM(ytd_sales)
FROM titles

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
AVG
Retorna: Promedio de los valores de la expresin numrica.
NOMENCLATURA:
AVG (Columna a Promediar)
Ejemplo: Usando la base de datos PUBS. Puede averiguar el precio promedio
de todos los libros si se duplicaran los precios (tabla titles).
SELECT avg (price * 2)
FROM titles

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
MAX
Retorna: Valor mayor de la expresin.
NOMENCLATURA:
MAX (Columna a obtener el Mximo valor)
Ejemplo: Usando la base de dato PUBS. Muestre el mayor valor de las las
ventas del ao (ytd_sales) de todos los libros de la tabla titles.
USE pubs
SELECT MAX(ytd_sales)
FROM titles

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
MIN
Retorna: Valor menor de la expresin.
NOMENCLATURA:
MIN (Columna a obtener el Mnimo valor)
Ejemplo: Usando la base de dato PUBS. Muestre el mnimo valor de las ventas
del ao (ytd_sales) de todos los libros de la tabla titles.
USE pubs
SELECT MIN (ytd_sales)
FROM titles

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
COUNT
Retorna: Nmero de valores en la expresin. En el caso de utilizar (*) retorna el
numero de filas.
NOMENCLATURA:
COUNT (expresin) o COUNT (*)
Ejemplo: Usando la base de datos PUBS. Cuente las filas de la tabla titles.
Use Pubs
SELECT COUNT(*)
FROM titles

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operadores de Agregado
COUNT
Ejemplo: Usando la base de datos PUBS. Cuente los datos de la tabla titles,
cuyo tipo (TYPE) sea business .
Use Pubs
SELECT COUNT(TYPE)
FROM titles
WHERE TYPE = business

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Sentencia GROUP BY
Esta sentencia no permite dividir el resultado de una lista de seleccin en
grupos ms pequeos.
Para poder listar otras columnas con las funciones de agregacin se debe
utilizar esta sentencia.
NOMENCLATURA:
SELECT lista _de_seleccion
FROM Tablas
[WHERE OPCIONAL]
GROUP BY Nombre_columnas_de_grupo

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Sentencia GROUP BY
Ejemplo (SQL Server 2005): Utilizando la base de datos PUBS. Liste las suma
de las ventas por ao ( ytd_sales ) hasta la fecha, clasificndolas por tipo
(TYPE) de titulo (titles).
Use Pubs
SELECT TYPE,SUM(ytd_sales)
FROM titles
GROUP BY TYPE Resultados mostrados por TYPE
Ejemplo: (GRUPOS DENTRO DE GRUPOS). Liste las sumas de las ventas por
ao (ydt_sales) hasta la fecha, clasificndolas por tipo (TYPE) y pub_id.
Use Pubs
SELECT TYPE, pub_id,SUM(ytd_sales)
from titles
Group by TYPE, pub_id - - El orden de evaluacin es TYPE, pub_id
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Sentencia GROUP BY CLAUSULA HAVING
Esta clusula se utiliza si se desea especificar cuales grupos van a ser
desplegados, o sea, restringir los grupos que retornan.
NOMENCLATURA:
SELECT columnas
FROM Tablas
[WHERE OPCIONAL]
GROUP BY columnas_para_grupos
HAVING condiciones_para_grupos
Ejemplo: Utilizando el ultimo ejemplo. Liste solamente los grupos cuyo pub_id
sea igual a 0877. Utilice HAVING
SELECT TYPE, pub_id,SUM(ytd_sales)
from titles
Group by TYPE,pub_id
INF 340 - Bases de Datos
HAVING pub_id = '0877 --ACA SE HACE
RESTRICCION PARA LOS GRUPOS

Lenguaje de Manipulacin de Datos (DML)


TABLAS COMBINADAS
Una tabla combinada es el resultado de una operacin de combinacin
realizada sobre dos o ms tablas. Se pueden realizar varios tipos de
combinaciones de tablas: combinaciones internas (inner), externa completa (full
outer), externa por la izquierda (left outer), externa por la derecha (rigth outer) y
cruzada (cross).
Combinacin Interna (Inner Join): Es el tipo de combinacin predeterminado;
especifica que solamente se han de incluir en el resultado filas de la tabla que
satisfagan la condicin ON.
Para especificar una combinacin hay que utilizar la palabra clave JOIN. Se
utiliza la palabra clave ON para identificar la condicin de bsqueda sobre la
cual se basa la combinacin. NOMENCLATURA:
SELECT columnas_de_las_tablas
FROM tabla1 JOIN tabla2 ON condiciones
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


TABLAS COMBINADAS
Combinacin Interna (Inner Join)
Ejemplo: De la base de datos PUBS. Combine las tablas stores y discounts
para mostrar que tienda (stor_id) ofrece un descuento y el tipo de descuento
(discounttype).
Use Pubs
SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO
FROM stores s JOIN discounts d
ON s.stor_id = d.stor_id

SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO
FROM stores as s,discounts as d
WHERE s.stor_id = d.stor_id
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


TABLAS COMBINADAS
Combinacin externas Completas (full Outer Join)
Especifica que se debera incluir en el resultado las filas no coincidentes (filas
que no cumplen con la condicin ON) as como las filas que coincidan (filas que
cumplen la condicin ON). En el campo donde no es coincidente la condicin
se coloca NULL.
Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instruccin
FULL OUTER JOIN.
Use Pubs
SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO
FROM stores s FULL OUTER JOIN discounts d
ON s.stor_id = d.stor_id

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


TABLAS COMBINADAS
Combinacin externa por la izquierda (Left Outer Join)
Devuelve las filas coincidentes ms todas las filas de la tabla que se
especifican a la izquierda de la palabra clave JOIN.
Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instruccin
LEFT OUTER JOIN.
Use Pubs
SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO
FROM stores s LEFT OUTER JOIN discounts d
ON s.stor_id = d.stor_id

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


TABLAS COMBINADAS
Combinacin externa por la derecha (Right Outer Join)
Es lo contrario a Left Outer Join
Ejemplo: Utilice el mismo ejemplo anterior solo utilice en el from la instruccin
RIGHT OUTER JOIN.
Use Pubs
SELECT s.stor_id as ALMACEN, d.discounttype as DESCUENTO
FROM stores s RIGHT OUTER JOIN discounts d
ON s.stor_id = d.stor_id

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


SELECT ANIDADOS
En algunas situaciones es necesario utilizar SELECT anidados para resolver
cierta necesidades de consultas que no pueden ser resueltas utilizando un
nico SELECT.
Recordar que al realizar un SELECT se genera una tabla temporal de la lista de
seleccin, esto es lo que realmente hace posible que se puedan generar
consultas sobre consultas o condiciones sobre listas de seleccin.
NOMENCLATURA:
SELECT Lista_de_seleccin
FROM Tablas o Otros Select.
WHERE condiciones [JOIN | SUBCONSULTAS | etc. ]

INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


SELECT ANIDADOS
Ejemplo: Usando base de datos Northwind. Muestre los Productos (ID del
Producto, Nombre y Precio Unitario) que tengan un precio unitario igual al Mximo.
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UnitPrice = (SELECT MAX (UnitPrice)
FROM Products)
Ejemplo: Usando base de datos Northwind. Muestre los Productos (ID del
Producto, Nombre y Precio Unitario) que tengan un precio unitario igual al Mnimo.
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UNITPRICE = (SELECT MIN(UNITPRICE)
FROM Products)
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operador UNION
Este operador mezcla los resultados de dos o ms consultas en un solo conjunto
de resultados que contiene todas las filas que pertenecen a las consultas de la
unin.
Como restriccin las columnas que se obtienen por la UNION en ambas consultas
deben ser del mismo tipo de datos.
NOMENCLATURA:
SELECT * FROM TABLAS
UNION [ ALL ]
SELECT * FROM TABLAS
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operador UNION
NOTA: Al usar el operador opcional ALL se listan como resultados todas las filas
de ambas consultas. Sino no se utiliza ALL se lista la UNION es decir no se listan
datos duplicados.
Ejemplo: Realice una unin de las consultas anidadas vistas anteriormente.
Usando ambas opciones de unin (Con y Sin ALL).
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UNITPRICE = (SELECT MIN(UNITPRICE)
FROM Products)
UNION
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UNITPRICE = (SELECT MIN(UNITPRICE)
FROM Products)
INF 340 - Bases de Datos

Lenguaje de Manipulacin de Datos (DML)


Operador UNION
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UNITPRICE = (SELECT MIN(UNITPRICE)
FROM Products)
UNION ALL
SELECT ProductID as ID,ProductName as Nombre, UnitPrice as Precio_Unitario
FROM Products
WHERE UNITPRICE = (SELECT MIN(UNITPRICE)
FROM Products)

INF 340 - Bases de Datos

FIN DEL CURSO

INF 340 - Bases de Datos

Potrebbero piacerti anche