0% encontró este documento útil (0 votos)
161 vistas

Manual SQL

Este documento describe los pasos para crear una base de datos en SQL Server. Explica los componentes clave de una base de datos como los archivos de datos principales, secundarios y de registro de transacciones. Luego detalla los pasos para crear una base de datos utilizando SQL Server Management Studio o un comando CREATE DATABASE, incluyendo especificar el nombre, tamaño y ubicación de los archivos.

Cargado por

Celclin QP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
161 vistas

Manual SQL

Este documento describe los pasos para crear una base de datos en SQL Server. Explica los componentes clave de una base de datos como los archivos de datos principales, secundarios y de registro de transacciones. Luego detalla los pasos para crear una base de datos utilizando SQL Server Management Studio o un comando CREATE DATABASE, incluyendo especificar el nombre, tamaño y ubicación de los archivos.

Cargado por

Celclin QP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 45

BASE DE DATOS

1
CREACIN DE BASES DE DATOS SQL SERVER
TEMA:
En esta sesin se ver el proceso de creacin de una base de datos, qu es el registro de transacciones, la
configuracin de una base de datos, la administracin de las propiedades de una base de datos, y que son
las instantneas de base de datos y cmo se crean. Esta sesin nos ser de gran utilidad para el desarrollo
de las siguientes sesiones o laboratorios.

OBJETIVOS ESPECIFICOS:

Utilizar los procedimientos necesarios para crear una Base de Datos utilizando la herramienta SQL Server
Management Studio.

CONTENIDO:
Componentes del SQL
Conociendo el SQL Server Management Studio.
Conociendo el editor Consultas: SQL Server Query.

1. COMPONENTES DEL SQL

El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Comandos:

Existen dos tipos de comandos SQL:

- Los DDL que permiten crear y definir nuevas base de datos, campos e ndices
- Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de las base de
datos.

Comandos DDL:

Comando Descripcin
CREATE Utilizado para crear nuevas tablas, campos e ndices
DROP Empleado para eliminar tablas e ndices
ALTER Utilizado para modificar las tablas agregando campos o cambiando
la definicin de los campos

Comandos DML:
Comando Descripcin
SELECT Utilizado para consultar registros de la base de datos que satisfagan
un criterio determinado
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica
operacin
UPDATE Utilizado para modificar los valores de los campos y registros
especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos

Clusulas

Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o
manipular.

Clusula Descripcin
FROM Utilizada para especificar la tabla de la cual se van a seleccionar
los registros
WHERE Utilizada para especificar las condiciones que deben reunir los
registros que se van a seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos
especficos
HAVING Utilizada para expresar la condicin que debe satisfacer cada
grupo.
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo
con un orden especifico

2
OPERADORES

Operadores Lgicos

Operador Uso
AND Es el y lgico. Evala dos condiciones y devuelve un valor de
verdad slo si ambas son ciertas
OR Es el o lgico. Evala dos condiciones y devuelve un valor de
verdad si alguna de las dos es cierta
NOT Negacin lgica. Devuelve el valor contrario de la expresin

5.3.2 Operadores de Comparacin

Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor Igual que
>= Mayor igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores
LIKE Utilizado en la comparacin de un modelo
In Utilizado para especificar registros de una base de datos

FUNCIONES DE AGREGADO

Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para
devolver un nico valor que se aplica a un grupo de registros.

Funcion Descripcin
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
MAX Utilizada para devolver el valor ms alto de un campo especificado
MIN Utilizada para devolver el valor ms bajo de un campo especificado

Nota: durante las dems sesiones se explicarn detalladamente como utilizar las instrucciones que
acabamos de mostrar.

2. APRENDIENDO A CREAR UNA BASE DE DATOS

Para crear una base de datos, determine el nombre de la base de datos, su tamao y los archivos y grupos
de archivos utilizados para almacenarla.

Una base de datos SQL Server 2005 est formado por tres tipos de archivos para almacenar una base de
datos:

ARCHIVOS PRINCIPALES
Estos archivos contienen la informacin de inicio para la base de datos. Este archivo se utiliza
tambin para almacenar datos. Almacena las tablas del sistema de la base de datos, y puede
tambin almacenar las tablas de usuario y otros objetos de la base de datos. Cada base de datos
tiene un nico archivo principal, siendo .mdf la extensin del archivo.

ARCHIVOS SECUNDARIOS
Estos archivos contienen todos los datos que no caben en el archivo de datos principal. No es
necesario que las bases de datos tengan archivos de datos secundarios si el archivo principal es lo
suficientemente grande como para contener todos los datos.
Algunas base de datos pueden ser muy grandes y necesitar varios archivos de datos secundarios o
utilizar archivos secundarios en unidades de disco distintas, de modo que los datos estn
distribuidos en varios discos.la extensin de los archivos secundarios es .ndf.

3
REGISTRO DE TRANSACCIONES(transaction log)
Estos archivos contienen la informacin de registros que se utiliza para recuperar la base de datos.
Debe haber al menos un archivo de registro de transacciones para cada base de datos, aunque
pueda haber ms de uno. La extensin del archivo es .ldf

IMPORTANTE:

Es recomendable especificar el tamao mximo de crecimiento del archivo. De ese modo se evita que se
agote el espacio disponible en el disco al agregar datos. Para especificar un tamao mximo para el archivo,
utilice el parmetro MAXSIZE de la instruccin CREATE DATABASE o bien la opcin limitar crecimiento de
archivo a (MB) cuando utilice el cuadro de dialogo propiedades del administrador de SQL Server para crear
la base de datos.

Despus de crear una base de datos, se recomienda crear una copia de seguridad de la base de datos
master.

3. CREACION DE UNA BASE DE DATOS

Antes de crear una base de datos, considere lo siguiente:

a) Slo pueden crear base de datos las cuentas de inicio de sesin que pertencen a los roles fijos
de servidor Sysadmin y dbcreator, aunque el permiso se puede conceder a otras cuentas.
b) El usuario que crea la base de datos se convierte en el propietario(dbo) de la base de datos.
c) Defina el nombre y tamao de la base de datos, los archivos (y sus propiedades) en los que
residir la base de datos.

3.1 COMO CREAR UNA BASE DE DATOS (Usando SQL Server Management Studio)

1. Con el botn derecho (o el botn secundario), pulsa en Bases de datos y del men selecciona
Nueva base de datos, tal como se muestra en la figura:

Entonces se abrir una ventana en la cual daremos los datos correspondientes para crear nuestra base de
datos, el nombre que le di es MiDB:

Damos clic en OK, y listo, nuestra base de datos est creada.

4
3.2 COMO CREAR UNA BASE DE DATOS (USANDO EL EDITOR DE CONSULTAS)

La instruccin CREATE DATABASE

Sintaxis:
CREATE DATABASE nombre_basedatos
ON [PRIMARY] (
NAME = nombre_lgico_data,
FILENAME = Ubicacin_y_nombre_archivo_data,.mdf
SIZE = tamao [ KB/ MB/GB/TB/ UNLIMITED ],
MAXSIZE = tamao_mximo [ KB/ MB/GB/TB/ UNLIMITED ],
FILEGROWTH= incremento_crecimiento [ KB/ MB/ % ] )
[registro de transacciones]
LOG ON(
NAME = nombre_lgico_log,
FILENAME = Ubicacin_y_nombre_archivo_log,.ldf
SIZE = tamao [ KB/ MB/GB/TB ],
MAXSIZE = tamao_mximo [ KB/ MB/GB/TB/ UNLIMITED ],
FILEGROWTH= incremento_crecimiento [ KB/ MB/ % ] )

ON PRIMARY : define las propiedades del archivo primario.


LOG ON: define las propiedades del archivo de registro de transacciones.

a) CREAR UNA BASE DE DATOS SIN ESPECIFICAR LOS ARCHIVOS

1. En SQL Server Management Studio, en el men File ejecute New, New SQL Server Query.
Luego, seleccione el servidor SQL al que desea conectarse

Ejemplo 01: Este ejemplo crea una base de datos llamada bd_ejemplo y crea los archivos principal
y de registro de transacciones correspondientes. Debido a que la instruccin no tiene elementos
<filespec>, el archivo principal de la base de datos tiene el tamao del archivo principal de la base
de datos model. El registro de transacciones tiene el tamao del archivo del registro de
transacciones de la base de datos model. Como no se ha especificado MAXSIZE, los archivos
pueden crecer hasta llenar todo el espacio disponible en el disco.

2. En el Code Editor, digite las siguientes instrucciones:

CREATE DATABASE bd_ejemplo


go

3. Ejecute las instrucciones. Si no hay errores recibimos el mensaje


Comand (s) completed successfully.

4. En el Object Explorer, expanda la carpeta Databases. Se debe mostrar la base de datos


recin creada bd_ejemplo.

b) CREAR UNA BASE DE DATOS INDIVIDUAL.

Ejemplo 02: En este ejemplo se crea una base de datos llamada VENTAS y se especifica un nico
archivo. El archivo especificado se convierte en el archivo principal y se crea automticamente un
archivo de registro de transacciones de 1 MB. Como no se especifican MB ni KB en el parmetro
SIZE del archivo principal, se asigna en Megabytes. Ya que no existe < filespec> para el archivo de
registro de transacciones, ste no tiene MAXSIZE y puede crecer hasta llenar todo el espacio
disponible en el disco.

CREATE DATABASE Ventas


ON
(NAME = venta_dat,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\venta.mdf,
SIZE = 4,
MAXSIZE = 10,
FILEGROWTH = 1 )
GO

5
c) CREAR UNA BASE DE DATOS SIN ESPECIFICAR SIZE

Ejemplo 03 : Este Ejemplo Crea una Base De Datos llamada Ventas2. El archivo venta2_dat se
convierte en el archivo principal, con un tamao igual al tamao del archivo principal de la base de
datos model. El archivo de registro de transacciones se crea automticamente y es un 25 por ciento
del tamao del archivo principal, o 512 KB, el que sea mayor. Como no se ha especificado
MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco.

CREATE DATABASE Ventas2


ON
(NAME = venta2_dat,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\venta2.mdf)

d) CREAR LA BASE DE DATOS MEDIANTE LA ESPECIFICACIN DE MLTIPLES ARCHIVOS DE


REGISTRO DE DATOS Y DE TRANSACCIONES.

1. En el Code Editor, digite y ejecute las siguientes instrucciones SQL:

CREATE DATABASE Multiples_a


ON
PRIMARY (NAME = Logi1,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logidat1.mdf,
SIZE = 5MB,
MAXSIZE = 10,
FILEGROWTH = 10),
( NAME = Arch2,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logidat2.ndf,
SIZE = 5MB,
MAXSIZE = 10,
FILEGROWTH = 10),

( NAME = Arch3,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logidat3.ndf,
SIZE = 5MB,
MAXSIZE = 10,
FILEGROWTH = 10)
LOG ON
( NAME = Logilog1,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logilog1.ldf,
SIZE = 5MB,
MAXSIZE = 10,
FILEGROWTH = 10),
( NAME = Archlog2,
FILENAME = C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logilog2.ldf,
SIZE = 5MB,
MAXSIZE = 10,
FILEGROWTH = 10)

El ejemplo crea una base de datos llamada Multiples_a con tres archivos de datos de 5 MB y dos archivos
de registro de transacciones de 5 MB. El archivo principal es el primer archivo de la lista y se especifica
explcitamente con la palabra clave PRIMARY. Los archivos de registro de transacciones se especifican a
continuacin de las palabras clave LOG ON. Observe las extensiones que se emplean para los archivos de
la opcin FILENAME: .mdf se utiliza para los archivos principales, .ndf para los archivos secundarios y .ldf
para los archivos de registros de transacciones. Ejecute el procedimiento almacenado sp_helpfile y observe
los resultados

Nota: Cuando se crea una base de datos se aade una entrada con el nombre de la base de datos, en la
tabla del sistema sysdatabases de la base de datos del sistema master.

2. Para revisar la tabla sysdatabases, digite y ejecute el siguiente procedimiento almacenado del
sistema:

EXEC sp_helpdb
El procedimiento sp_helpdb, entrega informacin acerca de todas las bases de datos del servidor, o de
una base de datos especfica.

6
Sintaxis:

Sp_helpdb [ nombre_basedatos]

Otro procedimiento:

USE Multiples_a
GO
EXEC sp_helpfile.

Responde: que informacin muestra al ejecutar el procedimiento almacenado sp_helpfile?

4. ADMINISTRACION DE LOS ARCHIVOS DE UNA BASE DE DATOS

CAMBIAR EL TAMAO DE LA BASE DE DATOS

Si desea cambiar el tamao de la base de datos puede usar la instruccin ALTER DATABASE o utilizar
administrador SQL Server.

4.1. ALTER DATABASE (T-SQL)

La instruccin ALTER DATABASE permite realizar cambios a una base de datos. Permite agregar o
eliminar archivos de una base de datos. Tambin se puede usar para modificar los atributos de los
archivos, tales como el nombre o el tamao de un archivo. Tambin se puede usar para cambiar el
nombre de una base de datos.

Sintaxis:
ALTER DATABASE nombre_basedatos
ADD FILE especificacin_archivo,
ADD LOG FILE especificacin_archivo
REMOVE FILE nombre_lgico_archivo
MODIFY FILE especificacin_archivo
MODIFY FILE nuevo_nombre_basedatos

especificacin_archivo, son los tributos del archivo de la base de datos, tal como se definieron en
el comando CREATE DATABASE

Ejemplo : el siguiente ejemplo modifica la base de datos ventas para agregarle un archivo de datos
de 5MB.

ALTER DATABASE Ventas


ADD FILE
(
NAME = venta_dat,
FILENAME = d:\sql200\grupo1\Bd_ven1dat.ndf,
SIZE = 5 MB,
MAXSIZE = 10MB,
FILEGROWTH = 5MB
)
GO

4.2. EXPANSION DE LA BASE DE DATOS


Puede expandir la base de datos aadindole archivos adicionales, los archivos de datos
crecern automticamente hasta que se acabe el espacio en disco.

Ejemplo: el ejemplo siguiente aumenta el tamao de uno de los archivos agregados a la base
de datos Ventas.

1. Primero averiguamos que tamao tienen los archivos de la base de datos Ventas.

- Ingresar a la base de datos Ventas.

7
- Ejecutar el siguiente procedimiento almacenado sp_helpdb Ventas.
- Escribir las siguientes sentencias:

ALTER DATABASE Ventas


MODIFY FILE
( NAME = venta_dat,
SIZE = 18MB )

Ahora ejecute el procedimiento almacenado de sistema sp_helpdb para verificar que se haya
agrandado satisfactoriamente la base de datos:

EXEC SP_HELPDB Ventas

4.3. ELIMINAR UN ARCHIVO DE UNA BASE DE DATOS

Para eliminar un archivo de la base de datos ventas.


ALTER DATABASE Ventas
REMOVE FILE venta_dat es archivo principal no se puede eliminar
GO
NOTA: la eliminacin de un archivo de la base de datos solo se puede ejecutar cuando el
archivo est vaco.

5. REDUCCION DEL TAMAO DE UNA BASE DE DATOS

a) La instruccin DBCC SHRINKFILE, reduce el tamao de un archivo de base de datos activa.

Sintaxis:

DBCC SHRINKFILE (nombre_lgico_archivo,tamao_final_enMB)

Ejemplo: para reducir el tamao del archivo primario de la base de datos bd_ejemplo hasta 3 MB:

Use bd_ejemplo
Go

DBCC SHRINKFILE ( Test1dat,3)


Go

b) La instruccin DBCC SHRINKDATABASE, reduce el tamao de los archivos de datos de la base de


datosespecificada.

Sintaxis:

DBCC SHRINKDATABASE (nombre_basedatos,porcentaje_espacio_libre_despus_reduccin)

Ejemplo: para reducir toda la base de dato bd_ejemplo hasta que quede solo 50% de espacio libre:

DBCC SHRINKDATABASE (bd_ejemplo,50)


go

6. ELIMINAR UNA BASE DE DATOS

Hay veces en que es necesario eliminar una base de datos del sistema. Quizs ya no lo necesite o esta se
haya corrompido y tiene que reconstruirlo. En cualquier caso eliminar una base de datos es una tarea
relativamente directa, esta operacin se puede hacer a travs del SQL Server Management Studio o por
medio de Transact-SQL

Ejemplo: en este ejemplo se eliminar la base de datos bd_ejemplo.

DROP DATABASE bd_ejemplo


7. INSTANTNEAS DE UNA BASE DE DATOS

8
Una instantnea de base de datos es una vista de la base de datos, esttica y de slo lectura, hasta un
instante de tiempo determinado. Se pueden crear varias instantneas de una base de datos, y cada una de
ellas es consistente hasta el momento en que se cre la instantnea.

Como una instantnea de base de datos contiene la data hasta el momento de creacin de la instantnea,
se puede utilizar para la creacin de reportes con data hasta el momento especfico en el tiempo.

Para crear una instantnea de base de datos hacemos uso de la instruccin CREATE DATABASE con
la siguiente sintaxis:

Sintaxis:
CREATE DATABASE nombre_instantnea_basedatos
ON (
NAME = nombre_lgico_archivo_basedatos_origen
FILENAME = nombre_fsico_archivo_instantnea )

AS SNAPSHOT OF nombre_basedatos_origen

Ejemplo: el siguiente ejemplo crea una instantnea de la base de datos Ventas. Observe que el nombre se
ha especificado de modo que indica que representa una instantnea, e informa acerca del momento en que
se cre la instantnea.

CREATE DATABASE Ventas_instante_26_abril2010_12h


ON (
NAME = ventas_data,
FILENAME = d: \SQL Server2005\INSTANTANEAS\ventas_instante_01.ss )

AS SNAPSHOT OF Ventas
Go

PARA RECORDAR

Recuerde siempre que una base de datos es una coleccin de objetos, como tablas, vistas y procedimientos
almacenados. Cada base de datos tiene su propio registro de las transacciones y una base de datos se
mantiene coherente lgicamente en trminos de restricciones de integridad entre los objetos de la misma. Si
deseamos crear una base de datos podemos hacerla de dos maneras, una usando SQL Server Management
Studio y la otra usando el editor de consultas.

TRABAJO:

DESARROLLE LOS SIGUIENTES CONCEPTOS Y/O DEFINICIONES:

1:- SQL Server 2014, caractersticas, Ventajas.


2.- Tecnologas o componentes del SQL Server 2014.
3.- Ediciones SQL Server 2014.
4.- Requerimientos de hardware y del sistema operativo.
5.- desarrolle de manera resumida las ventanas de SQL Server Management Studio.(Explorador de objetos)

9
CREACIN DE TABLAS E INTEGRIDAD DE RELACIN
CONTENIDO:
Los tipos de datos SQL Server 2005
Creacin de tablas CREATE TABLE
Modificacin de la definicin de una tabla ALTER TABLE
Integridad de datos Las restricciones CONSTRAINTS.
PRIMARY KEY, FOREIGN KEY, UNIQUE, DEFAULT, CHECK, IDENTITY

TEMA:

Los sistemas de gestin de base de datos organizan y estructuran los datos de tal modo que puedan ser
recuperados y manipulados por usuarios y programas de aplicacin. La estructura ms importante de una
base de datos relacional son las tablas. En esta sesin aprenderemos a creerlas y relacionarlas de la
manera ideal.

OBJETIVOS ESPECIFICOS:

- Crear tablas desarrollando algn caso pequeo de manera que el alumno pueda comprender el uso
de las relaciones entre ellas.

1.- APRENDIENDO A CREAR TABLAS:

1.1 QUE ES UNA TABLA?

Una tabla es una coleccin de datos sobre una entidad (Persona, lugar, cosa) especifica,
que tiene un nmero discreto de atributos designados ( por ejemplo cantidad o tipo). Las
tablas estn en el corazn de SQL Server y del modelo relacional en general. Las tablas
son fciles de entender ya que son prcticamente iguales a las listas que utiliza de manera
cotidiana. En SQL Server una tabla suele denominarse tabla de base, para hacer nfasis
sobre donde se almacenan los datos. La utilizacin de <<Tabla de base>>, tambin
distingue la tabla de una vista (View), una tabla virtual que es una consulta interna de una
tabla base.

Conforme se utiliza la base de datos con frecuencia se encontrar conveniente definir


tablas propias para almacenar datos personales o datos extrados de otras tablas.

Los atributos de los datos de una tabla (como tamao, color, cantidad, fecha, etc) toman la
forma de columnas con nombre en la tabla.

Las columnas de la tabla recin creada se define en el cuerpo de las sentencias CREATE
TABLE . La definicin de columnas aparecen en una lista separada por comas e incluida
entre parntesis. La definicin de la columna determina el orden de izquierda a derecha de
la columna en la tabla.

a. Nombre de columna:
Pueden ser iguales a los nombres de las columnas de otras tablas
b. Tipo de datos
Identifica la clase de datos que la columna almacenar.
c. Si la columna contiene datos requeridos
La clusula NOT NULL impide que aparezcan valores NULL en la columna o en
caso contrario admite valores NULL
Las tablas suelen estar relacionadas con otras tablas.

1.2 CREACIN DE TABLAS.

Cuando se crea una tabla se debe especificar el nombre de la tabla, el nombre de la


columna, el tipo de dato de la columna y las restricciones de la columna.
Los nombres de las columnas deben ser nicos en una tabla especfica, pero se puede
usar el mismo nombre de la columna en tablas diferentes dentro de la misma base de
datos.

1.3 TIPOS DE DATO

Un tipo de dato es un atributo que especifica el tipo de dato (carcter, entero, binario, etc.)

10
que puede ser almacenado en una columna, parmetro o variable. SQL Server provee de
un conjunto de tipos de dato, an cuando se pueden crear tipos de dato definidos por el
usuario que se crean sobre la base de tipos de dato provisto por el SQL Server. Los tipos
de dato provistos por el sistema definen todos los tipos de dato que se pueden usar en
SQL Server. Los tipos de dato pueden ser utilizados para asegurar la integridad de los
datos porque los datos ingresados o modificados deben cumplir con el tipo de dato
especificado para el objeto correspondiente. Por ejemplo, no se puede almacenar el
nombre de alguien en una columna con un tipo de dato datetime, ya que esta columna solo
aceptar valores vlidos de fecha y hora.

Categoria TIPO DE DATOS DESCRIPCION

Bigint Datos enteros de 8 bytes

Int Datos enteros de 4 bytes

Entero Smallint Datos enteros de 2 bytes

tinyint Datos enteros comprendidos entre 0 y 255 (entero de 1 byte)

Bit Datos enteros con valor 1, 0 NULL

Decimal (p,s) * P es la precisin, y va de 1 a 38, siendo 18 el valor predeterminado.


Numrico S es la escala y va desde o hasta p
exacto
Numeric (p,s) * Funcionalmente equivalente a decimal

Money Valor monetario de 8 bytes


moneda
Smallmoney Valor monetario de 4 bytes

Numrico Float Nmeros con precisin de coma flotante comprendidos entre -1.79E
aproximado + 308 y 1.79E + 308

Real Nmeros con precisin de coma flotante comprendidos entre-1.18E-


38,0 y 1.18E -38 a 3.40E + 38

Fecha y hora Datetime Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y
el 31 de diciembre de 9999

Smalldatetime Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y


el 06 de junio de 2079

Char(n) Cadena de longitud Fija (n puede ser de1 a 8 000 caracteres)

Varchar(n|max) Cadena de longitud variable (n puede ser de1 a 8 000 bytes). Max
Cadena
indica la longitud mxima que es 2^31-1 bytes

Text Cadena de longitud variable con un mximo de 2^31 -1 caracteres

Datos nchar(n) Datos Unicode de longitud fija de n caracteres ( n puede ser de 1 a


unicode 4000 caracteres)

nvarchar(n|max) Cadena de longitud variable ,los datos pueden variar en el nmero


de caracteres (hasta 4000 caracteres Unicode) Max indica la
longitud mxima que es 2^31-1 bytes

11
ntext Cadena UNICODE de longitud variable con un mximo de 2^30 -1
caracteres

Binary(n) Los datos deben tener la misma longitud fija (n puede ser de 1
Binario hasta 8 000 bytes)

Varbinary(n|max) Datos binarios de longitud variable(n puede ser con una longitud
maxima de 8000 bytes) Max indica la longitud mxima que es 2^31-
1 bytes
Generacin
automtica timestamp Generacin automtica de nmeros binarios de modo que son
nicos dentro de una base de datos

* p es la precisin y determina el nmero mximo de dgitos tanto a la izquierda como a la derecha del
punto decimal. S es la escala y determina el nmero mximo de dgitos a la derecha del punto decimal.

Como recomendacin podemos probar con estos consejos al escoger tipos de datos:

Si se necesita almacenar datos enteros desde 0 hasta 255, usar el tipo de dato tinyint.
Las columnas con tipos de datos tinyint usan solamente 1 byte para almacenar sus valores, en
comparacin con 2 bytes, 4 bytes y 8 bytes usados para guardar las columnas con smallint, int y
bigint respectivamente.
Si se necesita guardar datos enteros desde -32,7658 hasta 32,767, usar smallint.
Las columnas con tipo de dato smallint usan solamente 2 bytes para almacenar sus valores, a
diferencia de los 4 bytes y 8 bytes de los tipos de datos int y bigint respectivamente.
Si se necesita almacenar datos enteros desde -2,147,483,648 hasta 2,147,483,647, usar int.
Las columnas con tipo de dato int usan solamente 4 bytes para guardar sus valores, mientras que
los bigint usan 8 bytes. Se puede utilizar si es que por ejemplo se necesita catalogar una biblioteca
con ms de 32,767 libros.
Usar smallmoney en vez de money, si se necesita guardar valores monetarios desde
-214,748.3648 hasta 214,748.3647.
Las columnas con tipo de dato smallmoney usan solamente 4 bytes para guardar sus valores, en
comparacin con los 8 bytes que son usados cuando las columnas tienen tipo de dato money. Por
ejemplo si necesitas almacenar los sueldos mensuales de los empleados.
Usar smalldatetime en vez de datetime, si se necesita guardar la fecha y hora desde Enero 1
de 1900 hasta Junio 6 del 2079, con exactitud al minuto.
Las columnas con smalldatetime usan solamente 4 bytes para guardar sus valores, en comparacin
con los 8 bytes usados para guardar valores de las columnas con datetime. Si necesitas almacenar
la fecha de ingreso de un empleado a la compaa utiliza este tipo de dato.
Usar columnas varchar/nvarchar en vez de text/ntext cuando sea posible.
Porque SQLServer almacena las columnas text/ntext en las pginas de tipo Text/Image separado
del resto de datos que estn en las pginas de Datos, esto hace que tome ms tiempo obtener los
valores text/ntext.

2 DISEO DE LA INTEGRIDAD DE LA BASE DE DATOS

Establecer las normas de integridad es un proceso tan importante como el modelamiento, pues si
bien el primero se encarga de encontrar el modelo que optimice ms los recursos del servidor de
base de datos, las normas de integridad determinarn la forma ms segura de controlar la
confiabilidad, veracidad e integridad de la informacin.

Se debe analizar cada uno de los atributos para determinar qu norma de integridad puede afectarlo
para lograr los objetivos de la seguridad.

LAS RESTRICCIONES(constrains):

Las restricciones son un mtodo declarativo de definicin de la integridad de datos ya que ellas se
definen al momento de crear la tabla (con la sentencia CREATE TABLE), o al momento de modificar
la definicin de la tabla (con la sentencia ALTER TABLE).
En otras palabras, una restriccin forma parte de la definicin de la tabla. Las restricciones son el
mtodo preferido para dar fuerza a la integridad de los datos.

12
TIPOS DE RESTRICCIONES:
Las restricciones son un mtodo estndar ANSI para forzar la integridad de los datos.

Garantizan que los datos ingresados en las columnas sean valores vlidos y que se mantengan las
relaciones entre las tablas.

PRIMARY KEY (PK)


Garantiza que cada fila o registro en una tabla es nico(a). la columna o combinacin de columnas
definida como clave primaria no permite valores duplicados.
Cuando se define la restriccin PK sobre un (o unos) atributo(s) de una entidad se obliga a:
- No duplicar el contenido de dicho atributo en la entidad
- No permite valores nulos (NULL)
- Se sugiere usar el tipo de datos Integer (int, smallint o tynint), numeric o
decimal

FOREIGN KEY (FK)

Indica el atributo o atributos que almacenaran el dato que los relacionar con otra entidad. Este
atributo en la otra entidad debe ser un PK para poder establecer una adecuada relacin.
Cuando se define la restriccin FK sobre un (o unos) atributo(s) de una entidad se obliga a:
- el dato que se desea almacenar en el atributo FK, debe haber sido previamente registrado
en la entidad que contiene el PK.
- Al tratar de eliminar el dato en la entidad que contiene el atributo PK, previamente se debe
eliminar el dato en la entidad que contiene el FK.
UNIQUE(UN)
Garantiza que cada valor en una columna es nico. Permite valores nicos.
Cuando se definen la restriccin UN sobre un (o unos) atributo(s) de una entidad se obliga a:
- no repetir los valores definidos como nicos

NOT NULL: (NU)


Indica que, a pesar que el motor de la base de datos obliga a registrar todos los valores de una
entidad, podramos causar excepciones, para dejar atributos vacos.
Cuando se define la restriccin NU sobre un (o unos) atributo(s) de una entidad se le obliga a:
- No causar un error de excepcin cuando se deje dicho atributo en blanco
- Los Primary Key y Foreign key, no pueden tener esta restriccin.

IDENTITY ( ID)

Indica que un atributo de la entidad ser un correlativo automtico que facilitar el control de algn
tipo de codificacin o contador instantneo.

Cuando se define la restriccin ID sobre un (o unos) atributo(s) de una entidad se le obliga a:


- Slo un atributo de la entidad puede poseer esta restriccin.
- El valor de este atributo ser autogenerado, por ningn motivo puede ser editado.
- Se debe registrar dos parmetros : el valor inicial (seed:semilla), y el incremento.

CHECK (CK)

Indica que algunos atributos pueden ser validados dentro de un rango de valores.
Cuando se define la restriccin CK sobre un (o unos) atributo(s) de una entidad se le obliga a:

- El valor que vaya a tener dicho atributo debe encontrarse en el conjunto de valores vlidos
que se le ha indicado.
Por ejemplo: el atributo sexo de una entidad de clientes solo puede ser M o F

DEFAULTS

Un DEFAULTS es un valor por defecto que se puede asignar en un campo cuando el valor de
este campo no es insertado en el registro.
Las definiciones DEFAULT se pueden:
Crear cuando se crea la tabla, durante el proceso de definicin de la misma.
Agregar a una tabla ya existente. Cada columna de una tabla puede contener una sola
definicin DEFAULT
Modificar o eliminar, si ya existen definiciones DEFAULT.por ejemplo, puede modificar
el valor que se inserta en una columna cuando no se escribe ningn valor.

13
RESTRICCIONES (CONSTRAINTS)

Las restricciones permiten definir el modo en que SQL Server automticamente fuerza la integridad
de la base de datos. Las restricciones definen reglas indicando los valores permitidos en las
columnas y son el mecanismo estndar para asegurar integridad. Usar restricciones es preferible a
usar desencadenadores, reglas o valores por defecto.

DIAGRAMA ENTIDAD RELACION de la base de datos ventas

1) implementacin paso a paso. Con ayuda de ALTER TABLE


1.1) Creamos las tablas.
Agregamos algunas restricciones:
1.2) Agregamos restriccin DEFAULT, CHECK, UNIQUE..
1.3) Agregamos las llaves primarias (ADD PRIMARY KEY)
1.4) Agregamos Las Llaves Forneas Y Relaciones (ADD FOREIGN KEY-REFERENCES)

2) Implementamos las tablas, las llaves primarias, las llaves forneas y las relaciones en una
forma directa
A continuacin detallaremos ambos caso.:

1) Implementacin paso a paso utilizando el Analizador de consultas

EJERCICIO1 : crear una base de datos llamada Ventas en una carpeta llamada base de datos, tamao
mximo de 50MB y con un porcentaje de crecimiento del 5%.

CREACIN DE TABLAS

LA INSTRUCCION CREATE TABLE


Sisntaxis:
CREATE TABLE nombre_tabla (
Nombre _columna1 tipo_dato1[ NULL| NOT NULL] ,
Nombre _columna1 tipo_dato1[ NULL| NOT NULL] ,
Nombre _columna1 tipo_dato1[ NULL| NOT NULL] ,
)

USE VENTAS

CREATE TABLE CLIENTE (


Cod_cliente int ,
ApePat CHAR(50),
ApeMat char (50),
Nombre char (50),
Ruc char(11),
Direccion char (70),
Cod_dist char(5))

EL PROCEDIMIENTO sp_help
Genera un reporte con informacin a cerca de la definicin de un objeto de la base de datos activa. Todo los
usuarios de la base de datos pueden ejecutar este procedimiento.

14
Sintaxis:
sp_help nombre_objeto_basedatos

ejecute la siguiente instruccin:

sp_help cliente

CREATE TABLE DISTRITO (


Cod_dist CHAR(5) NOT NULL,
Descripcin_dist CHAR(15))

.
.
.
ejercicio 02: crear las siguientes tablas PRODUCTO, UNIDAD, FACTURA, DETALLE FACTURA

MODIFICACIN DE LA DEFINICION DE UNA TABLA


En una tabla podemos aadir nuevas columnas, eliminar columnas, cambiar las propiedades de una
columna, aadir o eliminar restricciones.

ALTER TABLE

Permite modificar las definiciones de una tabla.

SINTAXIS:

ALTER TABLE nombre tabla


ADD nombre_columna propieddes columna
DROP COLUMN columna_nombre
ALTER COLUMN nombre_columna
Nuevas_propiedades_columna
ADD CONSTRAINT nombre_restriccion
PRIMARY KEY . | UNIQUE| FOREIGN KEY |
|DEFAULT| CHECK
DROP CONSTRAINT nombre_restriccin

AGREGANDO LAS LLAVES PRIMARIAS A TODAS LAS TABLAS:

ALTER TABLE CLIENTE


ADD CONSTRAINT PK_CODCLIENTE
PRIMARY KEY (Cod_cliente)

ALTER TABLE DETALLE_FACTURA


ADD CONSTRAINT PK_DETALLEFACT
PRIMARY KEY (Num_fact, Cod_producto)

.
.
.

AGREGANDO LLAVES FORNEAS Y RELACIONANDO TABLAS

Agregando referencia a la tabla distrito

15
ALTER TABLE CLIENTE
ADD CONSTRAINT FK_CODDISTRITO
FOREIGN KEY (Cod_dist)
REFERENCES DISTRITO (Cod_dist)

.
.
.

2) Implementamos las tablas, las llaves primarias, las llaves forneas y las relaciones en una
forma directa

CREATE DATABASE VENTAS_PROD1


USE VENTAS_PROD1

CREATE TABLE DISTRITO(


Cod_dist CHAR(5)NOT NULL PRIMARY KEY,
DESCRIPCION_DIST CHAR(15))

CREATE TABLE CLIENTE(


Cod_cliente int identity (100,1) NOT NULL PRIMARY KEY,
ApePat CHAR(50),
ApeMat char (50),
Nombre char (50),
Ruc char(11),
Direccion char (70),
Cod_dist char(5) references DISTRITO)
.
.

EJERCICIO PROPUESTO

Se desea crear la base de datos de una institucin que brinda cursos de extensin profesional. Los
interesados en los cursos se pueden matricular sin ninguna restriccin, y adems tienen facilidades para
pagar el costo de los cursos.
A continuacin se presenta el modelo fsico SQL Server de la base de datos a crear.:

16
1- Crear una base de datos llamada Extensin_profesional en la unidad D, carpeta Trabajo_Encargado
2- Implemente paso a paso la base de datos, para lo cual:
2.1. Cree las tablas
2.2. Agregue las llaves primarias
2.3. agregue las llaves forneas y relaciones
2.4. Realice algunas preguntas para cada una de las tablas y desarrolle las restricciones check,
unique , default, para las tablas creadas

PARA RECORDAR:

Recuerde siempre que las tablas son el corazn de las bases de datos relacionales en general y de SQL
Server en particular. Las restricciones de integridad aseguran que la clave primaria identifique unvocamente
a cada entidad representada de la base de datos y adems aseguran que las relaciones entre entidades de
la base de datos se preserven durante las actualizaciones.

OPERACIONES DE MANTENIMIENTO DE DATOS


INGRESO, MODIFICACIN Y ELIMINACIN DE DATOS

TEMA:
Esta sesin muestra como se puede utilizar SQL para aadir nuevos registros en una tabla, suprimir
registros en una tabla y modificar registros en una tabla ya existente.

OBJETIVOS ESPECIFICOS:

- Describir las tres sentencias SQL que se emplean para modificar los CONTENIDOS de una base
de datos.

CONTENIDO:

INSERT
DELETE
UPDATE

1.- INSERT
La sentencia de INSERT se utiliza para aadir registros a las tablas de la base de datos. En un
tratamiento simplificado, el comando INSERT toma la siguiente forma:

Sintaxis:
INSERT [INTO] Nombre_tabla (nombre_columna1,..) VALUES (exp,)

Nombre_tabla es nicamente el nombre de la tabla donde se desea ingresar los nuevos datos.
Nombre_columna es una lista opcional de nombres de campo en los que se insertarn valores en
el mismo nmero y orden que se especificarn en la Clusula VALUES. Si no se especifica la lista
de columnas(nombre_comumna1,), los valores de expr en la clusula VALUES deben ser tantos
como campos tenga la tabla y en el mismo orden que se definieron al crear la tabla.

Si solo se indica una lista parcial de columnas, el resto de las columnas recibirn un valor nulo o el
valor configurado por defecto para esa columna, en caso que lo tenga.
Adems, no se deben asignar valores a los siguientes tipos de columnas, dado que SQL Server
genera automticamente este valor.

Columnas con la propiedad IDENTITY

17
Exp es una lista de expresiones o valores constantes, separados por comas, para dar valor a los
distintos campos del registro que se aadir a la tabla. Las cadenas de caracteres debern estar
encerradas entre comillas simples.

NOTA

La palabra clave INTO en un comando INSERT es opcional y solo se utiliza para clarificar el
cdigo.
Los valores ingresados deben coincidir con la lista de columnas. La cantidad de valores
provistos debe ser igual a la cantidad de columnas indicadas en la lista de columnas, y el tipo
de dato, precisin, y escala de cada valor debe coincidir con los de las columnas
correspondientes.

Cuando se define un comando INSERT, se puede usar la clusula VALUES para especificar los
valores de los datos para una fila o usar una subconsulta SELECT para especificar los valores
para una o ms columnas.

Nota: Una vez creadas las tablas de la base de datos se debe cargar la data, para ello copiar la base de
datos ControlInventario de una tienda de abarrotes.

1.1 INSERTAR REGISTROS CON VALORES INCOMPLETOS

Cuando la lista de valores est incompleta es obligatorio establecer en que columna va cada valor de la lista,
por lo que la lista de columnas es obligatoria en la instruccin INSERT.

Utilizar la base de datos ControlInventario creada anteriormente.

EJEMPLO 01: Aadir un registro a la tabla proveedor

18
INSERT proveedor ( Nombre , Representante , Direccion )
VALUES('GOLOSINAS Y ANTOJOS','ZAVALA ZEGARRA, CLAUDIA',
'AV. CIRCUNVALACION 755 ZONA INDUSTRIAL')

INSERT proveedor ( Nombre , Representante , Direccion )


VALUES('EL DULZON','PRADO PRADO, MIGUEL', 'AV. BRASIL CDA 5 NRO 526')

INSERT proveedor ( Nombre , Representante , Direccion )


VALUES('LACTEOS DEL CENTRO','JUAN PEREZ, WALTER','LIBERTAD 345 URB. EL PINO')

En este comando, los valores han sido definidos para la columnas Nombre, Representante Y Direccion
Sin embargo, no es necesario incluir la columna IdProveedor en el comando INSERT, dado que la columna
IdProveedor se define con la propiedad IDENTITY, porque los valores para esa columna se generan
automticamente.

Cada sentencia INSERT aade un nico registro a la tabla. En el ejemplo slo se han especificado 3 campos
con sus respectivos valores, el resto de campos quedarn a nulo. Un valor Nulo NULL no significa blancos o
ceros sino simplemente que el campo nunca ha tenido un valor.

1.2 INSERTAR REGISTROS CON VALORES COMPLETOS

Aadir un registro a la tabla PRODUCTO

INSERT producto (IdCategoria,IdProveedor,Nombre,UnidadMedida,PrecioProveedor,


StockActual,StockMinimo,Descontinuado )
VALUES(1,1,'CARAMELOS BASTON ARCOR','PAQUETE 454 GR',1.50,200,50,0)

INSERT producto VALUES(1,2,'CARAMELOS SURTIDO DE FRUTAS','PAQUETE 450 GR',1.00,300,50,0)

INSERT producto VALUES(2,3,'YOGURT GLORIA FRESA','ENVASE 1 LT',2.00,450,240,0)

INSERT producto VALUES(3,4,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0)

Aadir un registro a la tabla CATEGORIA

INSERT categoria (Categoria, Descripcion)


VALUES('GOLOSINAS','GALLETAS,CHOCOLATES,CARAMELOS,TOFFES')

INSERT categoria VALUES('LACTEOS','LECHES,YOGURES,QUESOS,MANTEQUILLAS')

INSERT categoria VALUES('EMBUTIDOS','JAMONADAS,JAMONES,SALCHICHAS,CHORIZOS')

Ejercicio01. Llenar 1 registro ms a la tabla PROVEEDOR, PRODUCTO Y CATEGORIA

1.3 INSERCIN DE LA FECHA DEL SISTEMA

La funcin getdate() entrega la fecha y hora del sistema. La puede utilizar para insertar la fecha y hora del
sistema en una columna de tipo fecha_hora.

Aadir un registro a la tabla ORDEN

INSERT orden (IdOrden,FechaOrden)

VALUES(1, getdate())

--INSERT orden (IdOrden,FechaOrden)

--VALUES(1, 28/25/10)

19
INSERT orden VALUES(2, getdate(), getdate() )

INSERT orden VALUES(3, getdate() - 10, getdate() - 8)

Realizar consulta la tabla Orden:

SELECT * FROM ORDEN

1.4 INSERCIN DE UN VALOR DE FECHA ESPECIFICO

Para enviar un dato fecha al servidor, la fecha se enva como una cadena con formato de fecha. Por lo
general, cuando la conexin es a un servidor SQL, no sabemos cul es el formato de fecha predeterminado
que est utilizando el servidor, por lo que en ocasiones podemos tener problemas con la manipulacin de
las fechas.

EJERCICIO:

1.4.1 Cree una tabla PRUEBA_FECHAS, con un campo Fecha de tipo Datetime que no permita
valores nulos, para hacer algunas pruebas con las fechas.
1.4.2 Ahora, inserte la fecha 20 de junio de 1998

INSERT INTO PRUEBA_FECHAS

VALUES(20 Jun 1998)

go

SELECT * FROM PRUEBA_FECHAS

1.4.3 Ahora inserte la fecha 3 de enero de 1979 (03/01/1979) e inserte otro registro con la fecha :
(11/26/1980)

NOTA: observe si la fechas se registr correctamente

Cuando se enva fechas al servidor se recomienda informar al servidor en qu formato se le est enviando
las fechas para que las lea correctamente

1.4.4 Infrmale al servidor acerca del formato de sus fechas:

SET DATEFORMAT dmy


go

SET DATEFORMAT mdy


go

SET DATEFORMAT ymd

Go

Ahora inserte nuevamente la fecha usando el formato acostumbrado para nosotros(dmy)

1.2 INSERTAR MLTIPLES REGISTROS:

Adems existe la posibilidad de agregar mltiples registros con ayuda del comando SELECT .

Usar una subconsulta SELECT para agregar datos

20
Se puede usar una subconsulta SELECT dentro de un comando INSERT para agregar datos a una
tabla desde otra u otras tablas o vistas. Una subconsulta permite agregar ms de una fila a la vez.

NOTA: Una subconsulta SELECT en un comando INSERT se utiliza para agregar subconjuntos de
datos existentes a una tabla, mientras que la clusula VALUES se usa para guardar datos nuevos
en una tabla.

Ejemplo :

o Agregar a la tabla PROVEEDOR 2 registros.

Ejecutar la siguiente instruccin SQL :

SELECT * FROM proveedor (Selecciona todos los campos de la tabla PROVEEDORES)

o Crear una tabla nueva llamada COPIA_PROVEEDOR y que contenga los


mismos campos o columnas de la tabla PROVEEDOR.

CREATE TABLE COPIA_PROVEEDOR (


IdProveedor int ,
Nombre varchar(40) NOT NULL,
Representante varchar(30) NULL,
Direccion varchar(60) NULL,
Ciudad varchar(15) NULL,
Departamento varchar(15) NULL,
CodigoPostal varchar(15) NULL,
Telefono varchar(15) NULL,
Fax varchar(15) NULL )

o Ahora nuestro objeto es trasladar todos los proveedores de la tabla PROVEEDOR


que tenga el campo ciudad =LIMA, a nuestra nueva tabla COPIA_PROVEEDOR.

INSERT INTO COPIA_PROVEEDOR


SELECT IdProveedor ,
nombre,Representante,Direccion,Ciudad,Departamento,CodigoPostal,Telefono,Fax
FROM PROVEEDOR

WHERE Ciudad = 'lima'

Como podemos observar es posible combinar nuestro comando INSERT con consultas de
seleccin, para agregar datos especficos sin tener la necesidad de realizarlo uno por uno

2. UPDATE
La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una tabla de la
base de datos. Su formato es:

UPDATE Nombre_tabla SET nombre_columna = expr,


[WHERE {condicin}]

Nombre_tabla es nicamente el nombre de la tabla donde se desea ingresar los nuevos datos

21
Nombre_columna es el nombre de columna o campo cuyo valor se desea cambiar. En una misma
sentencia UPDATE pueden actualizarse varios campos de cada registro de la tabla.

Expr es el nuevo valor que se desea asignar al campo que le precede. La expresin puede ser un valor
constante o una subconsulta. Las cadenas de caracteres debern estar encerradas entre comillas. Las
subconsultas entre parntesis.

La clusula WHERE determina que registros se modificarn

EJEMPLO01: Subir el precio de los productos de la tabla producto a un 15% de aquellos


productos cuya categora sea igual a 1.

SP_HELP PRODUCTO
select * from PROVEEDOR
select * from dbo.PRODUCTO
select * from dbo.CATEGORIA

INSERT proveedor VALUES('ANTOJITOS','MENDIETA AZPARRENT,BERTHA',


'AV. GRAU 125','AREQUIPA','AREQUIPA',NULL,NULL,NULL)
go
INSERT proveedor VALUES('DISTRIBUIDORA DE GOLOSINAS FENIX','FELICES ARSENIO, JOSE',
'JR. RECUAY 347 BREA','LIMA','LIMA',NULL,NULL,NULL)
go

INSERT producto VALUES(1,9,'GALLETAS SURTIDAS BUTTER COOKIES','ENVASE 16


ONZAS',2.50,200,50,0)
go
INSERT producto VALUES(1,10,'CHOCOLATE LOVER CHIPS DELUXE','BARRA 16
ONZAS',1.30,230,100,0)
go
INSERT producto VALUES(3,5,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0)
go

select * from dbo.PRODUCTO

UPDATE PRODUCTO
SET PrecioProveedor = PrecioProveedor*1.5
WHERE IdCategoria = 1

Ejemplo 02:fijar el campo FechaEntrada de Orden (en la tabla ORDEN) de todos aquellas rdenes
realizadas que tienen vaca (NULL)a la fecha de hoy, se pondra:

select * from dbo.ORDEN

UPDATE dbo.ORDEN
SET FechaEntrada = GETDATE()
WHERE FechaEntrada is NULL

1. Un ejemplo mas simple podra ser fijando un precio nico para todos los productos, sin utilizar la
clusula WHERE.

UPDATE PRODUCTO
SET PrecioProveedor = 200

3. DELETE
DELETE es especialmente til cuando se desea eliminar varios registros. En una instruccin
DELETE con mltiple tablas, debe incluir el nombre de tabla (tabla*). Si se especifica ms de una
tabla para eliminar registros, todas deben tener una relacin de muchos a uno. Si se desea eliminar
todos los registros de una tabla, eliminar la propia tabla es ms eficiente que ejecutar una consulta
de borrado.
EL FORMATO DE LA SENTENCIA ES:

22
DELETE FROM Nombre_tabla
[WHERE {condicin}]

Nombre_tabla es nicamente el nombre de la tabla donde se desea borrar los datos

La clusula WHERE determina que registros se borrarn

Cada sentencia DELETE borra los registros que cumplen la condicin impuesta o todos si no se indica
la clusula WHERE

EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla ORDEN

DELETE ORDEN

EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla CATEGORIA

DELETE CATEGORIA

4. TRUNCATE TABLE
A diferencia de la instruccin DELETE, TRUNCATE TABLE no devuelve un mensaje acerca de la
cantidad de las filas afectadas. Tanto TRUNCATE TABLE como DELETE quitan todas las filas de la
tabla, pero TRUNCATE TABLE es ms rpida y utiliza menos recursos de los registros de transacciones
y del sistema.

EJEMPLO 01:
Elimine todos los registros de la tabla PRODUCTO

TRUNCATE TABLE PRODUCTO

EJERCICIOS PROPUESTOS;

SEGN LA BASE DE DATOS Controlinverntario:

WHERE SUE_VEN >800


1. Insertar 5 registros a la tabla ORDEN_DETALLE .

2. Realice una insercin de mltiples registros de la tabla producto, y que solo inserte los registros a la
nueva tabla creada, los productos cuyo PrecioProveedor sean mayores a 20 soles y menores que
30.
RE TIP_VEN = 1
3. Actualice el campo FechaOrden y coloque la fecha actual del sistema de la tabla ORDEN.

4. Crear 2 preguntas para realizar actualizaciones o cambios a una de las tablas de la bd.

5. Realizar una actualizacin en cascada.

6. Eliminar los registros con la descripcin del campo ciudad igual a Lima de la tabla PROVEDOR.

7. Eliminar los registros de la tabla PROVEEDOR en cascada.

PARA RECORDAR:

La sentencia INSERT de una fila aade una fila de datos a una tabla. Los valores para la nueva
fila se especifican en la sentencia como constantes.

23
UPDATE es especialmente til cuando se desea cambiar un gran nmero de registros o
cuando stos se encuentran en mltiples tablas. Puede cambiar varios campos a la vez. Las
filas a actualizar son especificadas mediante una condicin de bsqueda.

La sentencia DELETE suprime cero o mas filas de datos de una tabla. Las filas a suprimir son
especificadas mediante una condicin de bsqueda.

A diferencia de la sentencia SELECT, que puede operar sobre mltiples tablas, las sentencias
INSERT, DELETE y UPDATE funcionan solamente sobre una nica tabla cada vez.

IMPLEMENTACIN DE CONSULTAS BSICAS


TEMA:
En esta seccin veremos como leer el contenido de una tabla mediante la ejecucin de consultas sencillas a
travs de la instruccin SELECT
.

OBJETIVOS ESPECIFICOS:
Utilizar los comandos SQL de manera que nos permita recuperar la informacin de alguna base de datos.

CONTENIDO
Introduccin a las consultas
Uso del SELECT, FROM, WHERE, ORDER BY.

1. INTRODUCCION A LAS CONSULTAS

Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva la informacin de las
bases de datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en
objeto recordset. Este conjunto de registros es modificable.

2. LA INSTRUCCIN SELECT
La clusula SELECT lista los datos a recuperar por la sentencia SELECT. Los elementos o datos a
seleccionar pueden ser columnas de la base de datos o columnas a calcular por SQL cuando efecta la
consulta o tambin el asterisco(*) para recuperar todos los campos de un fichero o tabla.

FROM
La clusula FROM lista las tablas o ficheros que contienen los datos a recuperar por la consulta. El formato
de esta clusula es:

SELECT * FROM NombreTabla

Hay 3 componentes bsicos en la instruccin SELECT: SELECT, FROM Y WHERE.

a. SINTAXIS BSICA:

SELECT * / ListaColumnas
FROM origenTabla
[WHERE condicinBsqueda]

ListaColumnas: es la lista de columnas a mostrar el resultado de la consulta.


Si se especifica * se mostrarn todas las columnas de la tabla.
CondicinBsqueda: es una expresin lgica que indica que las filas a mostrar son
aquellas para las que el valor de la expresin es verdadero.

b. SINTAXIS COMPLETA:

24
SELECT [ALL|DISTINCT] [ TOP n [ PERCENT] [WITH TIES] ListaColumnas
[INTO nuevaTabla]
FROM origenTabla
[WHERE condicinBsqueda]
[GROUP BY [ALL]expresinAgruparPor]
[WITH CUBE | ROLLUP ]
[HAVING condicinBsqueda]
[ORDER BY expresinOrden [ASC / DESC] ]
[COMPUTE AVG | COUNT | MAX | MIN |SUM (expresin)]

LECTURA DE TODOS LOS DATOS DE UNA TABLA:

EJEMPLO1: el siguiente ejemplo retorna todas las columnas y filas de la tabla


PRODUCTOS que se encuentra en la base de datos ControlInventario

USE ControlInventario
GO

SELECT * FROM PRODUCTO


GO

LECTURA DE COLUMNAS SELECCIONADAS DE UNA TABLA:

Ejemplo2: El ejemplo siguiente retorna las columnas idProducto,


nombre,unidadMedida y precioProveedor de la tabla Producto.

SELECT nombre,unidadMedida , precioProveedor


FROM producto
GO

Ejercicio1: Listar los campos idProducto, precioVenta y cantidad de la tabla


GUIA_DETALLE que se encuentra en la base de datos ControlInventario

DEFINIENDO ALIAS PARA LOS NOMBRES DE COLUMNA

Un alias define ttulos alternativos para los nombres de columna. Si el Alias es una
frase(contiene espacios) debe escribirse entrecomillada.

Ejemplo3:

SELECT idProducto AS Cdigo,


Nombre AS Descripcin,
unidadMedida AS Unidad,
precioProveedor AS 'Precio Unitario'
FROM producto
GO

DEFINIENDO COLUMNAS COMPUTADAS

Una columna computada es una columna que se muestra en el resultado de una consulta,
pero no existe fsicamente como tal en la tabla. La columna computada muestra el resultado
de ejecutar alguna operacin con las columnas de la tabla.

Ejemplo4: El siguiente ejemplo retorna las columnas idProducto, Nombre,


precioProveedor, y el campo calculado Precio con descuento = precioProveedor*0.9 de
la tabla producto.

SELECT idProducto AS Cdigo,


Nombre AS Descripcin,
unidadMedida AS Unidad,

25
precioProveedor AS 'Precio Unitario',
precioProveedor*0.90 as 'Precio con Descuento'
FROM producto
GO

WHERE
La clusula WHERE dice a SQL que incluya slo ciertas filas o registros de datos en los
resultados de la consulta, es decir, que tiene que cumplir los registros que se desean ver. La
clusula WHERE contiene condiciones en la forma:

WHERE Expresin1 operador Expresin2


Donde: Expresion1 y Expresin2 pueden ser nombres de campos, valores constantes o
expresiones.
Operador es un operador relacional que une dos expresiones .
Ejemplo5:

El siguiente ejemplo retorna las columnas IdProveedor,Nombre,Representante,Ciudad de


la tabla Proveedor. El ejemplo slo retorna las filas de los proveedores que residen en
el callao

select IdProveedor,Nombre,Representante,Ciudad
from PROVEEDOR
where ciudad='callao'

Ejemplo6:

El siguiente ejemplo retorna las columnas IdProveedor,Nombre,Representante,Ciudad de


la tabla Proveedor. El ejemplo slo retorna las filas de los proveedores que residen en
el callao o Arequipa

select IdProveedor,Nombre,Representante,Ciudad
from PROVEEDOR
where ciudad='callao' or ciudad='Arequipa'

Ejemplo8:
La siguiente sentencia nos muestra la cantidad de rdenes de productos pedidos con
posterioridad al mes de mayo

SELECT COUNT(*)
FROM ORDEN
WHERE MONTH(FechaOrden)>05

USO DEL OPERADOR MENOR O IGUAL QUE (<= )

Ejercicio04: mostrar una lista de los campos idproducto y Nombre de la tabla producto
cuyo nombre se encuentra antes o en la posicin del producto de nombre cepillo
master adulto.

INTO
Crea una nueva tabla e inserta en ella las filas resultantes de la consulta.
Para crear una tabla temporal, el nombre de la tabla debe comenzar con un signo numrico
(#)

Ejemplo 9:
El siguiente ejemplo crea la tabla temporal #MICOPIA e inserta todas las columnas y
filas de la tabla Proveedor

SELECT * INTO #MICOPIA FROM PROVEEDOR

Para comprobar la existencia de la tabla temporal #MICOPIA. realice un select a la tabla


temporal #MICOPIA en el Analizador de consultas:

SELECT * FROM #MICOPIA

26
ORDER BY
La clusula ORDER BY ordena los resultados de la consulta en base a los datos de una o
ms columnas. Si se omite, los resultados saldrn ordenados por el primer campo que sea
clave en el ndice q haya utilizado.
Por tanto, indica como deben clasificarse los registros que se seleccionen. Tiene la forma:

SELECT * FROM TABLA


ORDER BY {Expresion_Orden [DESC/ASC]}

Expresin_orden puede ser el nombre de un campo, expresin o el nmero de posicin que


ocupa la expresin de columna en la clusula SELECT. Por defecto se ordena
ascendentemente(de menor a mayor) si se deseara de mayor a menor es emplear DESC
(DESCendente).

Ejemplo10: el ejemplo muestra los nombre de los productos de la tabla productos


ordenados descendentemente

SELECT idProducto, nombre


FROM producto
ORDER BY nombre DESC

Para obtener un listado de proveedores por su lugar ordenado por ciudades y dentro de cada
ciudad ordenados por departamentos se utilizara:

SELECT Representante, Ciudad,Departamento


FROM PROVEEDOR
ORDER BY Ciudad, Departamento DESC

O lo mismo de otra forma:

SELECT Representante, Ciudad,Departamento


FROM PROVEEDOR
ORDER BY 2, 3 DESC

Donde los nmeros son la pocisin actual de los campos mostrados en la clusula SELECT

3. CONSULTAS CON PREDICADO:


El predicado se incluye entre la clusula y el primer nombre del campo a recuperar, los posibles
predicados son:

TOP:
Devuelve un cierto nmero de registros que entran entre el principio o el final de un rango
especificado por una clusula ORDER BY.

Ejemplo11:Supongamos que queremos recuperar los nombres de los 5 primeros proveedores


del campo departamento

SELECT TOP 5 IdProveedor,Nombre


FROM PROVEEDOR
ORDER BY Departamento DESC

Sino se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 5 registros de
la tabla empleados Se puede utilizar la palabra reservada PERCENT para devolver un cierto
porcentaje de registros que caen al principio o al final de un rango especificado por la clusula
ORDER BY.

SELECT TOP 5 PERCENT IdProveedor,Nombre


FROM PROVEEDOR

27
ORDER BY Departamento

DISTINCT:
Omite los registros que contiene datos duplicados en los campos seleccionados. Para que los valores
de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser nicos.

Ejemplo12: el siguiente ejemplo retorna la columna departamento de la tabla proveedores.

SELECT DISTINCT departamento


FROM PROVEEDOR
GO

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la
clusula SELECT posean un contenido diferente.

Trabajo para casa:

1. De la bd de datos desarrollada del lab anterior , defina 10 consultas y mostrar los


resultados, utilizando el comando select, where, order by y los predicatos top,
percent y disctint.

CONSULTAS CONDICIONALES
TEMA:
Las consultas ms sencillas para recuperar datos son las que nos ayudarn a entender las siguientes
sesiones. En esta sesin aprenderemos a recuperar algunas filas y a recuperar algunas columnas en base a
una sola tabla

OBJETIVOS ESPECIFICOS:

Recuperar datos de mltiples formas sencillas, haciendo uso de algunas condiciones de comparacin.

CONTENIDO
AND, <,>, = ,<>,
IF EXISTS
BETWEEN, IN, AND, OR, NOT
LIKE

1.- CRITERIOS DE SELECCION


A lo largo de esta y la prxima sesin estudiaremos las posibilidades de filtrar los registros con el fin
de recuperar solamente aquellos que cumplan unas condiciones preestablecidas.

Antes de comenzar el desarrollo de esta sesin, hay que recalcar 2 detalles de vital importancia el primero
de ellos es que cada vez que se desee establecer una condicin referida a un campo de texto la condicin
de bsqueda debe ir cerrada entre comillas simples; la segunda hace referencia a las fechas. Las fechas se
deben escribir siempre segn el formato de configuracin de su sistema.

2.- OPERADORES LOGICOS

OPERADOR USO
AND Es el y lgico. Evala dos condiciones y devuelve un valor de
verdad slo si ambas son ciertas
OR Es el o lgico. Evala dos condiciones y devuelve un valor de
verdad si alguna de las dos es cierta
NOT Negacin Lgica. Devuelve el contrario de la expresin

AND , OR, NOT


Observe que las condiciones de bsqueda con AND, OR y NOT pueden ser ellas mismas condicionales
de bsquedas compuestas.

28
La palabra clave OR se utiliza para combinar de dos condiciones de bsqueda, cuando una a la otra
(o ambas) debern ser ciertas.
La palabra clave AND la usamos para combinar dos condiciones de bsqueda que deban ser
ciertas simultneamente.

La palabra clave NOT nos sirve para seleccionar filas en donde la condicin de bsqueda sea falsa.

Poseen la siguiente sintaxis:

<expresin1> operador <expresion2>


En donde expresin1 y expresin2 son las condiciones a evaluar, el resultado de la operacin vara en
funcin del operador lgico.

Dos o ms condiciones pueden ser combinadas para formar expresiones ms complejas con distintos
criterios. Cunado existen dos o ms condiciones debern estar unidas por AND o OR.

EJEMPLOS DE OPERADORES LOGICOS:

EJEMPLO 01: El siguiente ejemplo retorna todas las columnas de la tabla de productos que se
encuentran en la base de datos ControlInventario. El ejemplo slo retorna las filas de los productos
con idproveedor igual a 10 y adems tenga como IDCATEGORIA igual a 5.

SELECT *
FROM PRODUCTO
WHERE IdProveedor=10 AND IdCategoria=5

EJEMPLO 02:Mostrar los datos del proveedor que sea representante igual a GORDILLO BARRIGA,
SANCHO

EJEMPLO 03:Mostrar los datos de ORDEN_DETALLE cuyo Idorden sea igual a 5 y idproducto sea
diferente de 2

EJEMPLO 04:Mostrar el nombre, apellidos y fecha de nacimiento de la tabla Empleado, si la fecha de


nacimiento es igual 1985

EJEMPLO 05: Mostrar las columnas nombre, apellidos y el ao de la tabla Empleado, si la fecha de
nacimiento es igual 1980 o nombre del empleado es igual a Juana.

EJEMPLO 06: Mostrar el nombre, apellidos, fecha de nacimiento y edades de la tabla Empleados si la
edad comprende entre 25-50 aos

3.- OPERADORES NUMERICOS

Para realizar operaciones numricas se puede utilizar los operadores:

OPERADOR SIGNIFICADO
+ Suma
- Resta
* Multiplicacin
/ Divisin
** ^ Exponenciacin

3.1 Ejemplos de operadores Numricos

EJEMPLO 07:Mostrar los datos de un producto, (slo campos importantes y con nombres
adecuados), adems el IGV a un 18% y el Importe de cada producto(precio total).

29
4. OPERADORES DE CARACTERES:

Las expresiones de caracteres pueden incluir los siguientes operadores:


OPERADOR SIGNIFICADO
+ Concatenacin manteniendo espacios en blanco

4.1 Ejemplos de operadores de Caracteres

EJEMPLO 08: Mostrar el nombre y apellido del empleado en una solo columna, fecha de nacimiento.

select IdEmpleado as codigo, Nombres + ApePat + ApeMat as 'Nombres y Apellidos', FechaNacimiento


from empleado

EJEMPLO 09: Mostrar la Ciudad y Departamento en una solo columna, cuyo nombre de la nueva
columna es Ubicacin, de la tabla PROVEEDOR.

5. OPERADORES DE COMPARACION
Los operadores de comparacin comprueban si dos expresiones son o no las mismas. Se pueden utilizar en
todas la expresiones excepto en las de los tipos text, ntext o image.

OPERADOR USO
< Menor que
> Mayor que
<> Distinto de
<= Menor igual que
>= Mayor igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores
LIKE Utilizado en la comparacin de un modelo
IN Utilizado para especificar registros de una base de datos

5.1 EJEMPLOS DE OPERADORES DE COMPARACIN


5.1.1 : COMPARANDO NMEROS
EJEMPLO 10: Mostrar todos los datos de los Empleados que tengan menos de 50
aos de edad.

5.1.2 COMPARANDO FECHAS:

EJEMPLO 11: Mostrar todos los datos de los empleados que hayan nacido antes del
mes de junio.

6. BETWEEN

Para indicar que deseamos recuperar los registros segn el intervalo de valores de un campo emplearemos
el operador Between cuya sintaxis es:

CAMPO [NOT] BETWEEN VALOR1 AND VALOR2


(LA CONDICION NOT ES OPCIONAL)

30
En este caso la consulta devolvera los registros que contengan en campo un valor incluido en el intervalo
Valor1, Valor2 (ambos imclusive). Si anteponemos la condicin NOT devolver aquellos valores no incluidos
en el intervalo.

EJEMPLO 12:El siguiente ejemplo retorna todas las columnas de la tabla productos. El ejemplo solo
retorna las filas de los productos que tengan un precio comprendido entre 12 y 20 soles

SELECT *
FROM PRODUCTo
WHERE PrecioProveedor >=12 AND PrecioProveedor<=20

EJEMPLO 13: El siguiente ejemplo es similar al anterior. Se utiliza BETWEEN que especifica el
intervalo inclusivo que se va a probar.

SELECT IdProducto as Codigo,Nombre as 'Descripcion',PrecioProveedor as 'Precio Unitario'


FROM PRODUCTo
WHERE PrecioProveedor BETWEEN 12 AND 20

EJEMPLO 14:El siguiente ejemplo retorna las columnas de la tabla producto. El ejemplo solo retorna
las filas de los productos de los precios que no estn comprendidos entre 10 y 50 soles

7. IN
Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de una lista. Su sintaxis
es:

EXPRESIN [NOT] IN (VALOR1, VALOR2,)

Ejemplo15: El siguiente ejemplo retorna todas las columnas de la tabla productos. EL ejemplo solo
retorna las filas de los productos que pertenezcan a las categoras 1,3 o 5

SELECT *
FROM PRODUCTO
WHERE IdCategoria =1 OR IdCategoria =3 OR IdCategoria =5

EJEMPLO16:El siguiente ejemplo es similar al ejemplo 15 se utiliza IN que determina si un valor dado
coincide con algn valor de una subconsulta o lista.

SELECT *
FROM PRODUCTO
WHERE IdCategoria IN(1,3,5)

EJEMPLO 17 : Consultar todos los PROVEEDORES que vivan en las ciudades de Lima, Trujillo Y
Arequipa.

8. LIKE
Se utiliza para comparar una expresin de cadena con un modelo en una expresin SQL. Su sintaxis:

EXPRESION LIKE MODELO

En donde expresin es una cadena modelo o campo contra el que se compara expresin. Se puede utilizar
el operador LIKE para encontrar valores en los campos que coincidan con el modelo especificado. Por
modelo tambin se puede especificar un valor completo, o se pueden utilizar caracteres comodn para
encontrar un rango de valores de la siguiente forma:

EJEMPLO 18 : Consultar todos los Empleados que tengan como apellido Paterno igual a Cardenas.

SELECT IdEmpleado as codigo, Nombres,ApePat, ApeMat, FechaNacimiento


FROM empleado
WHERE ApePat like 'Cardenas'

31
A continuacin presentaremos los distintos caracteres comodn para posteriormente comprobar las
expresiones con diferentes modelos.

Carcter Descripcin
Comodn
% Cualquier cadena de cero o ms caracteres
El - Cualquier carcter individual operador Like se puede
(Subrayado) utilizar en una
[] Cualquier carcter individual dentro del rango expresin para
especificado comparar un valor de
[^] Cualquier carcter individual que no est dentro del rango un campo con una
especificado expresin de cadena.
Por ejemplo, si
introduce Like c% en una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por
la letra C. en una subconsulta con parmetros, puede hacer que el usuario escriba el modelo que se va
utilizar.

EJEMPLO19: Este ejemplo devuelve los nombres cuyo contenido empiece con una letra de la A a la D
seguida de cualquier cadena.

SELECT IdEmpleado as codigo, Nombres,ApePat, ApeMat, FechaNacimiento


FROM EMPLEADO
WHERE Nombres LIKE '[A-F]%'

DESARROLLAR LOS SIGUIENTES EJEMPLOS:

Ejemplo 20: El siguiente ejemplo retorna todas las columnas de la tabla productos. El ejemplo slo
retorna las filas de los Productos que no empiece con F o C como carcter inicial en el nombre del
producto.

Ejemplo 21: el siguiente ejemplo retorna las columnas idProveedor, nombr, repsresentaante, ciudad y
departamento de la tabla Proveedores. El ejemplo slo retorna las filas de los Proveedores que
tengan los caracteres a al final de la columna ciudad.

Ejemplo 22: el siguiente ejemplo retorna todas las columnas de la tabla Productos. El ejemplo slo
retorna las filas de los Productos que tengan los caracteres Queso en la columna nombre del
producto

Ejemplo 23: El siguiente ejemplo devuelve los nombres de los empleados que comienzan la letra P
seguido de cualquier letra entre A y F y de dos caracteres cualquiera o cuyo nombre a buscar las 3
primeras letras estn dispuestas de la siguiente manera : que empiece con la letra J , el segundo
carcter cualesquiera y la tercera letra sea una a :

FUNCIONES
OBJETIVOS ESPECIFICOS:

Aprender a trabajar con las funciones para la manipulacin de fechas.


Realizar conversiones de tipo de datos.
Obtener resultados originados por la seleccin de uno o varios grupos, haciendo uso de las
funciones de columna.

CONTENIDO:

32
GETDATE, GETUCDATE, DATEADD, DATEDIFF, DATEPART, DATENAME
CAST, CONVERT
SUM,AVG,COUNT,MIN,MAX,
GROUP BY, uso de GROUP BY con el operador ROLLUP
uso de GROUP BY con el operador CUBE
HAVING
COMPUTE BY

FUNCIONES PARA MANIPULACIN DE FECHAS:

El siguiente cuadro muestra una lista de funciones para manipular fechas:

FUNCION DESCRIPCION
getdate() Retorna la fecha y hora del sistema
Retorna la fecha y hora del Meridiano de Greenwich el
getucdate() valor se obtiene a partir de la configuracin regional del
sistema.
Genera una nueva fecha a partir de fecha, aadindole
dateadd(parte_fecha, n, fecha)
a fecha n unidades de parte_fecha
Entrega la diferencia entre fecha1 y fecha2 en las
datediff(parte_fecha, fecha1, fecha2)
unidades indicadas en parte_fecha.
Devuelve, a partir de fecha, un valor entero con la
datepart(parte_fecha, fecha)
parte_fecha especificada.
Devuelve, a partir de fecha, una cadena con la
datename(parte_fecha,fecha)
parte_fecha especificada.
day(fecha) Devuelve un entero con la parte del da de fecha
month(fecha) Devuelve un entero con la parte del mes de fecha
year(fecha) Devuelve un entero con la parte del ao de fecha

El siguiente cuadro muestra la parte_fecha que podemos especificar en las funciones de fecha listas en el
cuadro anterior:

parte_fecha Abreviatura Descripcion


year yy, yyyy Ao de la fecha
quarter q, qq Trimestre del ao de la fecha
month m, mm Mes del ao de la fecha
week ww, wk Semana del ao de la fecha
day d, dd Da de la fecha
dayofyear y,dy Da del ao de la fecha
weekday dw Da de la semana de la fecha
hour hh Hora de la fecha
minute n, mi Minutos de la hora de la fecha
second s, ss Segundos de la hora de la fecha
millisecond ms Milisegundos de la hora de la fecha

Ejemplos del uso de funciones para manipulacin de fechas:

Ejemplo 01: Entrega la fecha y hora del sistema.

SELECT GETDATE()

Ejemplo 02: Entrega la fecha y hora del Meridiano de Greenwich

SELECT GETUTCDATE()

Ejemplo 03: El siguiente ejemplo genera una nueva fecha aadindole 30 das a fechaOrden

SELECT idOrden, fechaOrden, DATEADD(day,30,fechaOrden) AS 'Fecha pago'


FROM orden

Ejemplo 04: Obtener la diferencia en semanas entre fechaOrden y la fecha del sistema.

SELECT idOrden, fechaOrden,


DATEDIFF(week, fechaOrden, GETDATE()) AS 'Semanas transcurridas'

33
FROM orden

Ejemplo 05: el siguiente ejemplo entrega el nmero y el nombre del mes de la fecha del sistema.

SELECT DATEPART(month, GETDATE())


SELECT DATENAME(month, GETDATE())

Ejemplo 06: el siguiente ejemplo entrega el da, mes y ao de la fecha del sistema.

SELECT DAY(GETDATE())
SELECT MONTH(GETDATE())
SELECT YEAR(GETDATE())

FUNCIONES DE CONVERSION DE TIPOS DE DATOS

Para convertir expresiones de un tipo de datos a otro tipo, o para darle formato a sus datos, utilice
las funciones CAST Y CONVERT

LA FUNCION CAST()

Convierte expresin al tipo de dato especificado

Sintaxis:

CAST(expresin AS tipo_dato)

Donde:
Expresin, representa el dato que se desea convertir a otro tipo de dato.
Tipo_dato, especfica el tipo de dato al que se desea convertir expresin.

Ejemplo 07: En el siguiente ejemplo se obtiene el monto en nuevos soles existente en el almacn
para cada uno de los productos. El resultado lo convierte a un dato de tipo entero (int).

SELECT idproducto, nombre, precioProveedor,stockActual,


CAST(precioProveedor*stockActual AS int)
FROM producto

LA FUNCION CONVERT()

Convierte expresin al tipo_dato especificado, y le da el formato especificado en estilo.

Sintaxis:

CONVERT(tipo_dato, expression[, estilo])

Donde:
Tipo_dato, especifica el tipo de dato al que se desea convertir expresin.
Expresin, representa el dato que se desea convertir a otro tipo de dato.
Estilo, indica el formato de presentacin del dato resultante.

USO DE LA FUNCION CONVERT() con datos de tipo money o smallmoney.

Utilice la funcin CONVERT cuando desee darle formato a la salida de los valores de tipo Money. Para ello,
convierta el valor de Money a una cadena, y luego dle formato utilizando el argumento estilo.

El siguiente cuadro muestra los valores de estilo para la funcin CONVERT cuando se utiliza con
datos Money smallmoney.

Estilo Salida Ejemplo


0(predeterminado) Sin separador de miles, y con 2 decimales 1563.25
1 Con separador de miles, y 2 decimales 1,563.25
2 Sin separador de miles, y 4 decimales 1563.25876

34
Ejemplo 08: el siguiente ejemplo, aplica el estilo 1, con separador de miles y 2 decimales , para la
nueva columna inventario valorizado.

SELECT idproducto, nombre, CONVERT(varchar(10),


precioproveedor*stockActual,1) AS 'Inventario valorizado'
FROM Producto

FUNCIONES AGRUPADAS Y BSQUEDA DE GRUPOS

Muchas peticiones de informacin no requieren el nivel de detalle proporcionado por las consultas descritas
en las sesiones anteriores. Ahora veremos que SQL soporta peticiones de datos sumarios mediante
funciones de columna y mediante clusulas GROUP BY y HAVING de la sentencia SELECT.

Las funciones de agregacin permiten consolidar datos numricos. El uso de la clusula GROUP BY nos
permitir obtener reportes con data consolidada segn distintos criterios.

FUNCIONES DE AGREGACION
Son funciones que permiten efectuar una operacin aritmtica que resume los valores de una columna de
toda la tabla, o resume los valores de la columna agrupados segn determinado criterio la funcin produce
un solo valor que es el resumen de la tabla, o de cada uno de los grupos.

1. SUM
Devuelve la suma del conjunto de valores contenido en un campo especfico de una consulta.

Sintaxis :

SELECT SUM(`[DISTINCT] expresin) FROM TABLA

En donde:

DISTINCT indica que debe eliminarse los valores duplicados de expresin antes de avaluar la
funcin.

expresin representa el nombre del campo que contiene los datos que desean sumarse o
una expresin que realice un clculo utilizando los datos de dichos campos. Los operandos de
expresin pueden incluir el nombre de un campo de una tabla, una constante o una funcin.

Veamos algunos ejemplos:

EJEMPLO 01: El siguiente ejemplo retorna el total de unidades pedidas (la suma de todos
los valores almacenados en el campo 'cantidad' de la tabla Guia_detalle).
SELECT SUM(cantidad ) as 'Cantidad pedidos'
FROM GUIA_DETALLE

EJEMPLO 02: el siguiente ejemplo retorna el monto Total de los productos vendidos de la
tabla Guia_detalle

SELECT SUM(cantidad*PrecioVenta) as 'Cantidad total pedidos'


FROM GUIA_DETALLE

2. AVG:
Calcula la media aritmtica de un conjunto de valores contenido en un campo especificado de
una consulta.

Sintaxis :

SELECT AVG((`[DISTINCT] expresin_numrica) FROM TABLA

En donde expresin_numrica representa el campo que contiene los datos numricos para
los que se desea calcular la media o una expresin que realiza un clculo utilizando los datos

35
de dicho campo. La media calculada por AVG es la media aritmtica(la suma de los valores
dividido por el nmero de valores).la funcin AVG no incluye ningn campo Null en el clculo.

DISTINCT indica que debe eliminarse los valores duplicados de expresin antes de avaluar la
funcin.

EJEMPLO 03: Obtener el precio unitario promedio de todos los productos en la tabla productos.

SELECT AVG(PrecioProveedor) as 'PROMEDIO PRECIOS'


FROM Producto

EJEMPLO 04: El siguiente ejemplo retorna el promedio de unidades pedidas (la media de
todos los valores almacenados en el campo cantidad de la tabla Guia_detalle ').

SELECT AVG(cantidad) as 'PROMEDIO de unidades'


FROM GUIA_DETALLE

3. MIN, MAX
Devuelven el mnimo o el mximo de un conjunto de valores contenido en un campo especfico
de una consulta.

Sintaxis :

SELECT MIN(expresin) FROM TABLA

SELECT MAX(expresin) FROM TABLA

En donde expresin es el campo sobre el que se desea realizar el clculo. expresin pueden
incluir el nombre de un campo de una tabla, una constante o una funcin.

EJEMPLO 07: El siguiente ejemplo retorna el precio ms alto y ms bajo de los productos
registrados en la tabla productos

SELECT MAX (PrecioProveedor)AS 'PRECIO MAYOR' ,


MIN(PrecioProveedor) AS 'PRECIO MENOR'
FROM PRODUCTO

EJEMPLO 08: El siguiente ejemplo retorna el pedido ms pequeo y lo refleja en el campo


'minimo'.

SELECT MAX (cantidad)AS 'pedido pequeo' ,


MIN(PrecioProveedor) AS 'PRECIO MENOR'

EJEMPLO 09: El siguiente ejemplo retorna la guia de remisin ms antigua

EJEMPLO : El siguiente ejemplo retorna la guia de remisin ms reciente.

EJEMPLO 10: El siguiente ejemplo retorna el nombre del primer producto y del ultimo producto
si se ordena en base al nombre.

4. COUNT
Calcula el nmero de registros devueltos por una consulta.

Sintaxis:

SELECT COUNT[DISTINCT](expresin) FROM TABLA

En donde expresin contiene el nombre del campo que desea contar. Los operandos de
expresin pueden incluir el nombre de un campo de una tabla, una constante o una funcin.
Puede contar cualquier tipo de datos incluso texto.

36
Aunque expresin puede realizar un clculo sobre un campo, count simplemente cuenta el
nmero de registros sin tener en cuenta qu valores se almacenan en los registros. La funcin
COUNT no cuenta los registros que tienen campos NULL a menos que expresin sea el
carcter comodn asterisco (*). Si utiliza un asterisco, COUNT calcula el nmero total de
registros, incluyendo aquellos que contienen campos null. COUNT(*) Es considerablemente
mas rpida que count(campo). No se debe poner el asterisco entre comillas simples (*)

EJEMPLO 11: El siguiente ejemplo cuenta el total de productos registrados en la base de


datos

SELECT COUNT(*) AS TOTAL_PROCUCTOS


FROM producto

EJEMPLO 12 : el siguiente ejemplo retorna el total de empleados que nacieron el ao 1985

EJEMPLO13: El siguiente ejemplo retorna el total, la media, el mximo y el mnimo de


unidades pedidas, y el nmero de pedidos realizados.

Nota:
Se pueden combinar varias funciones de columna en una expresin pero no se pueden anidar funciones de
columna, es decir:

SELECT (AVG(ventas) * 3) + SUM(cuota) SELECT AVG(SUM(ventas))


FROM ... FROM ...
es correcto NO es correcto, no se puede incluir una
funcin de columna dentro de una funcin de
columna

GROUP BY y HAVING

5. GROUP BY

Combina los registros con valores idnticos, en la lista de campos especificados, en un nico
registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como
por ejemplo SUM o COUNT, en la instruccin SELECT. Su sintaxis es:

SELECT CAMPOS
FROM TABLA
WHERE CRITERIO
GROUP BY CAMPOS DEL GRUPO

GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada
en la instruccin SELECT. Los valores null en los campos GROUP BY se agrupan y no se omiten.
No obstante, los valores null no se evalan en ninguna de las funciones SQL agregadas.

EJEMPLO 14: El siguiente ejemplo retorna la cantidad de productos registrados para cada
categora.

SELECT idCategoria, COUNT(IDPRODUCTO) AS Cantidad_productos


FROM PRODUCTO
GROUP BY idCategoria

EJEMPLO 15: El siguiente ejemplo retorna la cantidad de productos por proveedor para las
categoras 2 y 4.

SELECT idCategoria, IdProveedor, COUNT(IDPRODUCTO) AS cantidad_productos


FROM PRODUCTO
where idCategoria IN(2,4)
GROUP BY idCategoria,IdProveedor
ORDER BY idCategoria

37
EJEMPLO 15: El siguiente ejemplo retorna el idGuia, el nmero de artculos en cada pedido y el
monto total de cada pedido de la tabla Guia_detalle y ordenado por el cdigo de la guia en forma
ascendente.

SELECT idCategoria, IdProveedor, COUNT(idGuia) AS cantidad_productos


FROM PRODUCTO
where idCategoria IN(2,4)
GROUP BY idCategoria,IdProveedor
ORDER BY idCategoria

EJEMPLO 16: El siguiente ejemplo retorna el Monto total despachado por producto y ordenado por
el Monto total en forma descendente.

NOTA:

La columna de agrupacin se puede indicar mediante un nombre de columna o cualquier


expresin vlida basada en una columna pero no se pueden utilizar los alias de campo.

Ejemplo :

SELECT importe/cant , SUM(importe) Est permitido, equivaldra a agrupar las lneas de


FROM pedidos pedido por precio unitario y sacar de cada precio
GROUP BY importe/cant unitario el importe total vendido.
SELECT importe/cant AS precio, SUM(importe)
FROM pedidos No est permitido, no se puede utilizar un alias campo.
GROUP BY precio

6. CLAUSULA HAVING:

Especifica una condicin de bsqueda de un grupo o agregado. Normalmente, HAVING se utiliza


con la clusula GROUP BY. Cuando no se utiliza GROUP BY ,HAVING se comporta como la
clusula WHERE.

HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se
han agrupado utilizando GROUP BY, HAVING determina cual de ellos se van a mostrar.

Haciendo uso del HAVING :

EJEMPLO 17: El siguiente ejemplo retorna los productos cuyo monto total despachado es mayor a
15.000 de la tabla guia_detalle.

SELECT idProducto, SUM(precioVenta*cantidad) AS 'MOnto Total'


FROM GUIA_DETALLE
GROUP BY idProducto
HAVING SUM(precioVenta*cantidad)>15000
ORDER BY 'MOnto Total' DESC

EJEMPLO 18: Para cada pedido en que se encuentre ms de 5 artculos, recuperar el nmero de
pedido y el nmero de productos pedidos o vendidos.

SELECT IdGuia, COUNT(IdProducto) AS NRO_PRODUCTOS, sum(PrecioVenta*Cantidad)as


IMPORTE
FROM dbo.GUIA_DETALLE
GROUP BY IdGuia
HAVING COUNT(IdProducto)>10
ORDER BY IMPORTE

38
EJERCICIOS PROPUESTOS:

EJERCICIO 1: El siguiente ejercicio retorna el total de unidades de stock de productos que sea menor a
100 de la tabla productos

EJERCICIO 2: el siguiente ejercicio retorna el Importe total de la tabla Guia_detalle, el importe total es
calculado por el producto de la cantidad Y el precio de venta menos el descuento del IGV.

EJERCICIO 3:Cuntos empleados tenemos?

EJERCICIO 4: Cuenta los productos despachados a los diferentes locales de la empresa de la tabla
Guia_detalle.

EJERCICIO 5: El siguiente ejemplo Retorna el promedio de las edades de todos los empleados.

EJERCICIO 6 : Hallar el importe medio de pedidos, el importe total de pedidos y el precio medio de venta.

EJERCICIO 7 : El siguiente ejemplo retorna el pedido ms grande, donde el cdigo del


producto(IdProducto) es igual a 100 y lo refleja en el campo 'maximo'.

EJERCICIO 8: Hallar en qu fecha se realiz el primer pedido (suponiendo que en la tabla Guia tenemos
todos los pedidos realizados hasta la fecha).

**La fecha del primer pedido es la fecha ms antigua de la tabla Guia.

EJERCICIO 9: Hallar cuntos pedidos hay de ms de 1000 soles de la tabla Guia_detalle .

EJERCICIO 10::Retornar los campos IdCategora, el promedio de precios y el nmero de artculos por
categora de la tabla producto.

EJERCICIO 11: Para cada pedido, cuyos pedidos suman ms de 30.000 Soles, hallar su importe medio de
pedidos. En el resultado indicar el nmero de pedido y su importe medio de pedidos.

CONSULTAS MULTITABLAS
TEMA:

Muchas consultas tiles solicitan datos procedentes de dos o ms tablas en la base de datos. En esta sesin
veremos que SQL permite recuperar datos que responden a peticiones mediante consultas multitabla que
componen datos procedentes de dos o ms tablas.

OBJETIVOS ESPECIFICOS:

Recuperar Datos que respondan a peticiones procedentes de consultas de dos o ms tablas.

CONTENIDO:

JOIN, LEFT JOIN, RIGHT JOIN,CROSS JOIN

UTILIZANDO COMBINACIONES

Las condiciones de combinacin se pueden especificar en las clusulas FROM o WHERE, aunque se
recomienda que se especifiquen en la clusula FROM. Las clusulas WHERE Y HAVING pueden contener
tambin condiciones de bsqueda para filtrar aun ms las filas seleccionadas por las condiciones de
combinacin.

39
Las combinaciones se pueden clasificar en:

1. COMBINCIONES INTERNAS (la operacin tpica, que usa algunos operadores de comparacin
como = o <>). En este tipo se incluyen las combinaciones equivalentes y las combinaciones
naturales.

Las combinaciones internas usan un operador de comparacin para hacer coincidir las filas de dos
tablas segn los valores de las columnas comunes de cada tabla. Un ejemplo sera recuperar todas
las filas en las que el nmero de identificacin de estudiante es el mismo en las tablas estudiantes y
cursos

1.1 INNER JOIN


Una combinacin interna es aquella en la que los valores de las columnas que se estn
combinando se comparan mediante un operador de comparacin.

Ejemplo 01: Obtener el nombre de los proveedores y los productos que estos
suministran ordenados por el nombre del proveedor.

Use Northwind
Go
SELECT SUPPLIERS.COMPANYNAME, PRODUCTS.PRODUCTNAME
FROM SUPPLIERS INNER JOIN PRODUCTS
ON SUPPLIERS.SUPPLIERID = PRODUCTS.SUPPLIERID
ORDER BY 1

Ejemplo 02: Obtener el Idproducto, nombreproducto, EL nombrecategoria y el


nombre de la compaa donde ID_PROVEEDOR es igual a 1. Utilice una
combinacin de las tablas productos, categoras y proveedores.(combinacin de
tres tablas)

USE NORTHWIND
GO
SELECT P.PRODUCTID,P.PRODUCTNAME,C.CATEGORYNAME, PV.COMPANYNAME
FROM PRODUCTS P INNER JOIN CATEGORIES C
ON P.CATEGORYID=C.CATEGORYID INNER JOIN SUPPLIERS PV
ON P.SUPPLIERID=PV.SUPPLIERID
WHERE P.SUPPLIERID=1

1.1.1 COMBINACIONES CON EL OPERADOR NO IGUAL


La combinacin no igual (< >) se usa con poca frecuencia. Como regla general, las
combinaciones no igual slo tienen sentido cuando se usan con una auto combinacin. Por
ejemplo, la combinacin no igual de Transact-SQL y la auto combinacin siguientes se
usan para buscar categoras de dos o ms libros baratos (menos de 15 dlares) de
distintos precios:

Ejemplo 03:

USE PUBS
SELECT DISTINCT T1.TYPE, T1.PRICE
FROM TITLES T1 INNER JOIN TITLES T2
ON T1.TYPE=T2.TYPE AND T1.PRICE < > T2.PRICE
WHERE T1.PRICE<15 AND T2.PRICE<15

Ejemplo 04:En el siguiente ejemplo de Transact- SQL se usa una combinacin no


igual que se combina con una auto combinacin para buscar todas las filas de la
tabla TITLEAUTHOR en la que dos o ms filas tengan el mismo TITLE_ID pero
distintos nmeros de AU_ID(es decir, libros con ms de un autor):

SELECT DISTINCT T1.AU_ID,T1.TITLE_ID


FROM TITLEAUTHOR T1 INNER JOIN TITLEAUTHOR T2 ON T1.TITLE_ID =
T2.TITLE_ID
WHERE T1.AU_ID < > T2.AU_ID
ORDER BY T1.AU_ID

2. COMBINACIONES EXTERNAS

40
Las combinaciones internas slo devuelven filas cuando hay una fila de ambas tablas, como
mnimo, que coincide con la condicin de la combinacin. Las combinaciones internas eliminan las
filas que no coinciden con alguna fila de la otra tabla. Sin embargo, las combinaciones externas
devuelven todas las filas de una de las tablas o vistas mencionadas en la clusula FROM, como
mnimo, siempre que tales filas cumplan con algunas de las condiciones de bsqueda de WHERE o
HAVING. Todas las filas se recuperarn de la tabla izquierda a la que se haya hecho referencia con
una combinacin externa izquierda, y de la tabla derecha a la que se haya hecho referencia con una
combinacin externa derecha. En una combinacin externa completa, se devuelven todas las filas
de ambas tablas.

SQL Server 2005 utiliza las siguientes palabras clave de SQL-92 para las combinaciones externas
puede ser una combinacin externa izquierda, derecha o completa especificadas en una clusula
FROM con uno de los siguientes conjuntos de palabras clave:

LEFT OUTER JOIN o LEFT JOIN


RIGHT OUTER JOIN o RIGHT JOIN
FULL OUTER JOIN o FULL JOIN

2.1 LEFT JOIN O LEFT OUTER JOIN: (Utilizando combinaciones exteriores izquierdas)

El conjunto de resultados de una combinacin externa izquierda incluye todas las filas de
la tabla de la izquierda especificada en la clusula LEFT OUTER, y no slo aquellas en
las que coincidan las columnas combinadas. Cuando una fila de la tabla de la izquierda
no tiene filas coincidentes en la tabla de la derecha, la fila asociada del conjunto de
resultados contiene valores NULL en todas las columnas de la lista de seleccin que
procedan de la tabla de la derecha.

EJEMPLO 05:EL siguiente ejemplo retorna las columnas ID_cliente, nombre


compaia, de la tabla clientes utilizando una combinacin externa izquierda (LEFT
JOIN) con la tabla pedidos. De esta tabla obtiene las columnas Idpedido y Fecha
pedido.

Use Northwind
Go
SELECT C.CUSTOMERID,C.COMPANYNAME, O.ORDERID, O.ORDERDATE
FROM CUSTOMERS C LEFT OUTER JOIN ORDERS O
ON C.CUSTOMERID=O.CUSTOMERID
ORDER BY O.CUSTOMERID

Al ejecutar la consulta se obtiene 832 filas, observe en el grfico anterior los valores
NULL para las dos primeras filas, esto significa que nos retorna clientes que no tienen
pedidos realizados. En lugar de LEFT OUTER JOIN utilice INNER JOIN .Esta consulta
retorna (830 filas afectadas) la diferencia es 2 que es el nmero de clientes que no
tienen pedidos.

EJEMPLO 06:EL siguiente ejemplo retorna todos los clientes que no realizaron
pedidos. Utilizar una combinacin externa Izquierda

Use Northwind
Go
SELECT C.CUSTOMERID, C.COMPANYNAME, O.ORDERID, O.ORDERDATE
FROM CUSTOMERS C LEFT OUTER JOIN ORDERS O
ON C.CUSTOMERID=O.CUSTOMERID
WHERE O.ORDERID IS NULL

Ejemplo 07:

Imagine una combinacin de la tabla AUTHORS Y de la tabla PUBLISHERS en sus


columnas CITY de la base de datos PUBS.los resultados slo muestran los autores que
viven en ciudades donde hay algn editor(en este caso, Abraham Bennet y cheryl
Carson)

Para incluir todos los autores en el resultado, con independencia de que un editor se
encuentre o no en la misma ciudad, use una combinacin exterior izquierda. a

41
continuacin se muestra la consulta y los resultados de la combinacin externa izquierda
de Transact-SQL:

USE PUBS
GO
SELECT A.AU_FNAME, A.AU_LNAME,P.PUB_NAME
FROM AUTHORS A LEFT JOIN PUBLISHERS P
ON A.CITY = P.CITY
ORDER BY P.PUB_NAME ASC, A.AU_LNAME ASC, A.AU_FNAME ASC

LEFT JOIN incluye en el resultado todas las filas de la tabla AUTHORS, tanto si hay una
coincidencia en la columna CITY de la tabla PUBISHERS como si no hay. Observe que,
en los resultados, no hay datos coincidentes con la mayor parte de los autores
enumerados, con lo que estas filas contienen valores NUL en la columna PUB_NAME

2.2 RIGHT JOIN O RIGHT OUTER JOIN (Utilizando combinaciones exteriores derecha)

Una combinacin externa derecha es el inverso de una combinacin externa izquierda.


Se devuelven todas las filas de la tabla de la derecha. Cada vez que una fila de la tabla
de la derecha no tenga correspondencia en la tabla de la izquierda, se devuelven valores
NULL para la tabla de la izquierda.

Ejemplo 08: El ejemplo siguiente inserta 3 registros a la tabla compaias de


envos(SHIPPERS) en la BD Northwind. stos datos de ejemplo son necesarios
para crear los ejercicios siguientes:

INSERT Shippers
VALUES ('AERO CONDOR','(503)555-8831')
INSERT Shippers
VALUES ('AMERICAM EXPRESS','(503)555-9586')
INSERT Shippers
VALUES ('AMAZONAS S.A','(503)555-2240')

SELECT *
FROM Shippers

EJEMPLO 09:El ejemplo siguiente retorna las columnas IDPEDIDO de la tabla


pedidos y nombre compaa, de la tabla compaas de envos utilizando una
combinacin externa derecha (RIGHT OUTER JOIN)
SELECT O.ORDERID, CE.COMPANYNAME
FROM ORDERS AS O
RIGHT OUTER JOIN SHIPPERS AS CE
ON O.ShipVia=CE.ShipperID
ORDER BY 2

La consulta retorna (833 filas afectadas), como es una combinacin externa derecha
retorna todas las filas de la tabla compaas de envos. Los tres registros ingresados en
el ejercicio anterior no tienen pedidos asignados.

Ejemplo 10: Imagine una combinacin de la tabla AUTHORS Y de la tabla


PUBLISHERS(editores) en sus columnas CITY. los resultados slo muestran los
autores que viven en ciudades donde hay algn editor(en este caso, Abraham
Bennet y cheryl Carson). El operador de combinacin exterior derecha, RIGHT
JOIN, indica que todas las filas de la segunda tabla se deben incluir en los
resultados, con independencia si hay datos coincidentes en la primera tabla.

Para incluir todos los editores en los resultados, sin tener en cuenta si hay un editor en
la ciudad, use una combinacin externa derecha. A continuacin se muestra la consulta
de Transact-SQL y los resultados de la combinacin externa derecha:

USE PUBS
SELECT A.AU_FNAME, A.AU_LNAME,P.PUB_NAME

42
FROM AUTHORS AS A RIGHT JOIN PUBLISHERS AS P
ON A.CITY = P.CITY
ORDER BY P.PUB_NAME ASC, A.AU_LNAME ASC, A.AU_FNAME ASC

Ejemplo 11: Una combinacin externa se puede restringir an ms si se utiliza un


predicado (como comparar la combinacin con una constante). En este ejemplo se
muestra la misma combinacin externa derecha, pero se eliminan todos los ttulos
de los que se han vendido menos de 50 copias:

USE PUBS
SELECT S.STOR_ID, S.QTY, TITLE
FROM SALES S RIGHT JOIN TITLES T
ON S.TITLE_ID=T.TITLE_ID
AND S.QTY >50
ORDER BY S.STOR_ID ASC

2.3 FULL JOIN o FULL OUTER JOIN (Utilizando combinaciones externas completas)

Una combinacin externa completa devuelve todas las filas de las tablas de la izquierda
y de la derecha. Cada vez que una fila no tenga coincidencia en la otra tablas, las
columnas.

Para retener la informacin que no coincida al incluir las filas no coincidentes en los
resultados de una combinacin, utilice una combinacin externa completa. SQL Server
2000 proporciona el operador de combinacin externa completa, FULL JOIN, que incluye
todas las filas de ambas tablas, con independencia de que la otra tabla tenga o no un
valor coincidente.

Ejemplo 12:
Imagine una combinacin de la tabla AUTHORS Y de la tabla PUBLISHERS en sus
columnas CITY. los resultados slo muestran los autores que viven en ciudades donde
hay algn editor(en este caso, Abraham Bennet y cheryl Carson). El operador de
combinacin externa completa, FULL JOIN, indica que todas las filas de ambas tablas se
van a incluir en los resultados, con independencia de que haya datos coincidentes en las
tablas.

Para incluir todos los editores y todos los autores en el resultado, sin tener en cuenta si
una ciudad tiene un editor que se encuentra en la misma ciudad, use una combinacin
externa completa. A continuacin se muestra la consulta y los resultados de la
combinacin externa completa de Transact-SQL:

USE PUBS
SELECT A.AU_FNAME,A.AU_LNAME,P.PUB_NAME
FROM AUTHORS A FULL JOIN PUBLISHERS P ON A.CITY =P.CITY
ORDER BY P.PUB_NAME ASC, A.AU_LNAME ASC, A.AU_FNAME ASC

3. COMBINACIONES CRUZADAS CROSS JOIN

Las combinaciones cruzadas devuelven todas las filas de la tabla izquierda y cada fila de la tabla
izquierda se combina con todas las filas de la tabla de la derecha. Las combinaciones cruzadas se
llaman tambin productos cartesianos.

Ejemplo 16:A continuacin se muestra un ejemplo de una combinacin cruzada

USE PUBS
SELECT A.AU_FNAME, A.AU_LNAME, P.PUB_NAME
FROM AUTHORS A CROSS JOIN PUBLISHERS P
ORDER BY A.AU_LNAME DESC

USO DEL OPERADOR ROLLUP

43
El operador ROLLUP resulta til para generar informes que contienen subtotales y totales. El
operador ROLLUP genera un conjunto de resultados que es similar a los conjuntos de resultados
generados por el operador CUBE.

Las diferencias entre CUBE Y ROLLUP son:

CUBE genera un conjunto de resultados que muestra agregados para todas las combinaciones
de valores de las columnas seleccionadas.

ROLLUP genera un conjunto de resultados que muestra agregados para una jerarqua de
valores de las columnas seleccionadas.

EJEMPLO 17: El ejemplo siguiente contesta a la siguiente pregunta Mustrame los


empleados y cuenta el nmero de pedidos que atendieron por ao

SELECT E.FirstName, COUNT(P.OrderID) AS 'NRO DE PEDIDOS', YEAR(P.OrderDate) AS 'AOS'


FROM Orders AS P INNER JOIN EMPLOYEES AS E
ON (P.EMPLOYEEID = E.EMPLOYEEID)
GROUP BY E.FIRSTNAME, YEAR(ORDERDATE) WITH ROLLUP

USO DEL OPERADOR CUBE

El operador CUBE genera un conjunto de resultados que es un cubo multidimensional. Un cubo


multidimensional es una expansin de datos de hechos o datos que registran sucesos individuales.
La expansin se basa en columnas que el usuario desea analizar, estas columnas se llaman
dimensiones. CUBE EXPLOTA LOS DATOS para generar un conjunto de resultados que contienen
un sper conjunto de grupos, con una tabulacin cruzada de cada columna con el valor de todas las
dems columnas, adems de un valor sper agregado especial que puede entenderse como
TODOS LOS VALORES.

Ejemplo 18: El ejemplo siguiente contesta a la siguiente pregunta Mustrame los empleados
y el nmero de pedidos que atendieron por cada ao

SELECT E.FirstName, COUNT(P.OrderID) AS 'NRO DE PEDIDOS', YEAR(P.OrderDate) AS 'AOS'


FROM Orders AS P INNER JOIN EMPLOYEES AS E
ON (P.EMPLOYEEID = E.EMPLOYEEID)
GROUP BY E.FIRSTNAME, YEAR(ORDERDATE) WITH CUBE

EJERCICIOS PROPUESTOS:

Ejercicio 01: Obtener el Idproducto, nombreproducto y nombrecategoria. Utilice una


combinacin de las tablas productos y categoras

Ejercicio 02: El siguiente ejercicio retorna el Impedido, fechapedido y todas las columnas de
la tabla cliente. Esta consulta nos responde a la pregunta Mustrame todos los nmeros de
pedidos, fecha y los datos del cliente que hizo el pedido Ordenarlos por cdigo cliente en
forma ascendente

Ejercicio 03. mostrar los autores y editores que vivan en la misma ciudad. N Ordenar
los resultados por apellidos del autor en forma descendente.

Ejercicio 04: El siguiente ejercicio contesta la siguiente pregunta Mustrame cuantos


pedidos realiz el cliente HILARION-Abastos

Ejercicio 05: El siguiente ejercicio contesta la siguiente pregunta Mustrame cuantos


productos existen por categora

44
Ejercicio 06:: El ejercicio siguiente retorna las columnas IDCLIENTE, y nombre compaa, de
la tabla CLIENTES, y el ORDERID de la tabla pedidos ,utilice una combinacin externa
completa (FULL OUTER JOIN)

45

También podría gustarte