Está en la página 1de 101
RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Objetivos.- aprender a ingresar a SQL Server 2008. Además de manipular los archivos de una base de datos y creación de tablas

1 Acceso al Servidor SQL SERVER

CAPITULO 01

de tablas 1 Acceso al Servidor SQL SERVER CAPITULO 01 2 2 Entorno de Microsoft SQL

2

2 Entorno de Microsoft SQL Server Management Studio

3 Creación De Base De Datos

3

4

4 Creación de Tablas en una Base de Datos

5 Ingresando Registros a La Tabla CLIENTES

6 Gestión de Archivos de una base de datos

7 Separar Una Base De Datos

8 Adjuntar Una Base De Datos

9 Eliminar una base de datos SQL SERVER

Propuesto Practico 01

5

6

7

8

8

9

10

Página 1 de 101 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz
Página 1 de 101
Docentes:
Lic. Luis M. Rojas Z.
Lic. Ramiro De la Cruz
Lic. Zambrano Arce
Lic. Israel Huaraca
RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

1 Acceso al Servidor SQL SERVER

Para acceder al servidor SQL SERVER debes contar con la instalación de una instancia. Y lo podrás ubicar en la siguiente RUTA:

INICIO + PROGRAMAS + MICROSOFT SQL SERVER 2008 + SQL SERVER MANAGEMENT STUDIO

+ MICROSOFT SQL SERVER 2008 + SQL SERVER MANAGEMENT STUDIO Ingresando Credenciales de Seguridad C.-Autenticación: En

Ingresando Credenciales de Seguridad

MANAGEMENT STUDIO Ingresando Credenciales de Seguridad C.-Autenticación: En estas primeras sesiones haremos uso de

C.-Autenticación:

En estas primeras sesiones haremos uso de Autenticación de Windows.

D.- Presionar el botón CONECTAR

EL NOMBRE QUE RECIBE UN SERVIDOR SQL SERVER ES DIFERENTE EN CADA COMPUTADORA. COMO ES EL CASO DE MI SERVIDOR QUE RECIBE EL NOMBRE DE

PC-315E4BA698B1\MANCHESTER

A.-Tipo De Servidor: debe seleccionar Motor de Base de Datos

B.- Nombre de Servidor:

Debes seleccionar el servidor existente en la computadora Haciendo clic en BUSCAR MÁS

existente en la computadora Haciendo clic en BUSCAR MÁS Docentes: Lic. Luis M. Rojas Z. Lic.
existente en la computadora Haciendo clic en BUSCAR MÁS Docentes: Lic. Luis M. Rojas Z. Lic.
existente en la computadora Haciendo clic en BUSCAR MÁS Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 2 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

2 Entorno de Microsoft SQL Server Management Studio

Datos 2 Entorno de Microsoft SQL Server Management Studio Resolver: Qué tipo de autenticación está configurado

Resolver:

Qué tipo de autenticación está configurado en tu servidor

Qué tipo de autenticación está configurado en tu servidor Que cantidad de memoria por consulta tiene

Que cantidad de memoria por consulta tiene asignado tu servidor

cantidad de memoria por consulta tiene asignado tu servidor Que tiempo de espera de consulta tiene

Que tiempo de espera de consulta tiene tu servidor

servidor Que tiempo de espera de consulta tiene tu servidor Mencionar las opciones de las propiedades

Mencionar las opciones de las propiedades del servidor

Mencionar las opciones de las propiedades del servidor Cuáles son las bases de datos del sistema

Cuáles son las bases de datos del sistema

del servidor Cuáles son las bases de datos del sistema Mencionar los Objetos del Agente SQL

Mencionar los Objetos del Agente SQL SERVER

del sistema Mencionar los Objetos del Agente SQL SERVER Docentes: Lic. Luis M. Rojas Z. Lic.
del sistema Mencionar los Objetos del Agente SQL SERVER Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 3 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

3 Creación De Base De Datos

a) Expandir la raíz del explorador de objetos

b) Seleccionar el objeto BASE DE DATOS

c) Clic en NUEVA BASE DE DATOS del menú contextual de dicho objeto

en NUEVA BASE DE DATOS del menú contextual de dicho objeto d) Ingresar el Nombre de

d) Ingresar el Nombre de la base de datos LONDRES

e) Presionar el botón ACEPTAR

de la base de datos LONDRES e) Presionar el botón ACEPTAR Una vez creado la base
de la base de datos LONDRES e) Presionar el botón ACEPTAR Una vez creado la base

Una vez creado la base de datos LONDRES debes verificar que se encuentre anclado en el explorador de soluciones

Dentro de la base de datos veras como se clasificaría los objetos creados como son tablas, procedimientos almacenados u otros objetos a crearse.

NOTA: Las bases de datos de SQL server. Administra sus archivos físicos de diferente manera como lo haría tal vez un archivo MDB de Access. UNA base de datos creada está constituida por más de 1 o más archivos físicos

Además hacer uso de una base de datos existente en otra computadora necesita de un servidor SQL server y adjuntar su base de datos existente.

servidor SQL server y adjuntar su base de datos existente. Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 4 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

4 Creación de Tablas en una Base de Datos

Para este ejemplo haremos uso de la base de datos LONDRES creada anteriormente. Los pasos son los siguientes:

a) Expandir la base de datos LONDRES

b) Seleccionar el objeto TABLAS

c) Clic en NUEVA TABLA del menú contextual de dicho objeto

c) Clic en NUEVA TABLA del menú contextual de dicho objeto d) Ingresar Nombre de Columnas

d) Ingresar Nombre de Columnas y Tipos de Datos de la siguiente manera

Nombre de Columnas y Tipos de Datos de la siguiente manera e) Presionar el botón guardar

e) Presionar el botón guardar de la barra de herramientas. Y asignar el nombre CLIENTES a la tabla creada

herramientas. Y asignar el nombre CLIENTES a la tabla creada Verificar la creación de la tabla

Verificar la creación de la tabla CLIENTES

la tabla creada Verificar la creación de la tabla CLIENTES TABLA.- las tablas son objetos que

TABLA.- las tablas son objetos que nos permiten organizar la información de una empresa. Como pueden ser sus clientes, proveedores, productos, etc.

Cada tabla contiene atributos o CAMPOS y cada Campo un tipo de dato que le asigna el desarrollador.

Dentro de cada tabla podemos llenar datos (REGISTROS) Desde la cantidad que uno necesite.

Recuerda verificar la existencia de los objetos creados actualizando el servidor SQL server con la tecla f5

creados actualizando el servidor SQL server con la tecla f5 Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 5 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

5 Ingresando Registros a La Tabla CLIENTES

a) Seleccionar la tabla CLIENTES

b) Clic en EDITAR LAS PRIMERAS 200 FILAS del menú contextual de dicho objeto

LAS PRIMERAS 200 FILAS del menú contextual de dicho objeto c) Ingresar los siguientes Registros d)

c) Ingresar los siguientes Registros

de dicho objeto c) Ingresar los siguientes Registros d) Para GUARDAR los cambios realizados debes presionar

d) Para GUARDAR los cambios realizados debes presionar el botón EJECUTAR SQL

Tipos De Datos SQL Server 2008

el botón EJECUTAR SQL Tipos De Datos SQL Server 2008 Docentes: Lic. Luis M. Rojas Z.
el botón EJECUTAR SQL Tipos De Datos SQL Server 2008 Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 6 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

6 Gestión de Archivos de una base de datos SQL SERVER

Ahora aprenderemos manejar los archivos de una base de datos. Manejar una base de datos en diferentes servidores. Ahora veamos paso a paso.

Primero identifiquemos la RUTA donde se almacenan los archivos de una base de datos. La ruta es:

se almacenan los archivos de una base de datos. La ruta es: Cada vez que uno
se almacenan los archivos de una base de datos. La ruta es: Cada vez que uno

Cada vez que uno crea una base de datos a través de un asistente o herramientas visuales de SQL server 2008.

Una base de datos creada genera sus archivos en algún lugar físico dentro de un disco.

En una carpeta que fue configurado en el momento de instalación. Los archivos que genera son:

1 archivo MDF (solo uno)

1 o más archivos NDF

1 o más archivos LDF

Archivos de la base de datos LONDRES
Archivos de la base de
datos LONDRES

EN CONCLUSION cada vez que Ud. crea una base de datos.Automáticamente cada Generar 2 archivos.

una base de datos.Automáticamente cada Generar 2 archivos. DEMOSTRACION : A. Crear una base de datos

DEMOSTRACION:

A. Crear una base de datos de nombre JPANDAL

B. Verificar la ruta de donde se ha creado los archivos de la base de datos creada

C. Buscar en la carpeta DATA los archivos de la base de datos creada

en la carpeta DATA los archivos de la base de datos creada Estos 2 archivos generados

Estos 2

archivos

generados

serán

manipulados

por

los

usuarios. Es decir que si Ud. Desea transportar su

base de datos

de

una

computadora

a

otra.

Deberá realizar la acción

SEPARAR

COPIAR

-

ADJUNTAR

la acción SEPARAR – COPIAR - ADJUNTAR Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 7 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

7 Separar Una Base De Datos

a) Seleccionar una base de datos existente en el servidor

b) Clic en TAREAS + SEPARAR del menú contextual de la base de datos

en TAREAS + SEPARAR del menú contextual de la base de datos c) Presionar ACEPTAR Una

c) Presionar ACEPTAR

menú contextual de la base de datos c) Presionar ACEPTAR Una vez separado la base de
Una vez separado la base de datos UD. Podrá copiar los archivos que pertenecen a
Una vez separado la base de datos UD.
Podrá copiar los archivos que pertenecen a
la base de datos a un disco extraíble como
USB u otro. Para poder HACER USO la base
de datos en otra computadora.
Copiar los archivos en C:\BASE DE DATOS\

8 Adjuntar Una Base De Datos

Primero debes contar con los 2 archivos de la base de datos que deseas adjuntar. Una vez ubicado tus archivos. Es hora de ADJUNTAR.

a) Seleccionar el objeto Bases de datos del explorador de soluciones

b) Clic en ADJUNTAR del menú contextual del objeto seleccionado

en ADJUNTAR del menú contextual del objeto seleccionado Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro
en ADJUNTAR del menú contextual del objeto seleccionado Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 8 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos
c) En la ventana Adjuntar base de datos clic en el botón AGREGAR d) Seleccionar
c) En la ventana Adjuntar base de datos clic en el botón AGREGAR
d) Seleccionar el archivo MDF de la base de datos

e) Clic en ACEPTAR

f) Clic en ACEPTAR

9 Eliminar una base de datos SQL SERVER

a) Seleccionar la base de datos existente

b) Clic en ELIMINAR del menú contextual de la base de datos seleccionada

c) De la ventana elimina

r objeto presionar ACEPTAR

Una base de datos eliminada. También elimina los archivos que estas generaron.

También elimina los archivos que estas generaron. Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De
También elimina los archivos que estas generaron. Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 9 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Propuesto Practico 01

1 Crear las siguientes bases de datos:

TRILCE, PAMER, UPC, UPCI, JHONNYPANDAL

2 Separar las bases de datos TRILCE Y PAMER

3 Copiar y Guardar los archivos de cada base de datos separada en una carpeta con su mismo nombre en DISCO C

4 Adjuntar las bases de datos TRILCE Y PAMER desde su nueva ubicación física

5 Crear las siguientes tablas en la base de datos TRILCE e Ingresar 10 registros en cada tabla respetando la Calidad de información que se almacena.

tabla respetando la Calidad de información que se almacena. 6 Generar un diagrama de las tablas

6 Generar un diagrama de las tablas creadas

7 Qué objetos contiene la carpeta SEGURIDAD del explorador de objetos de SQL SERVER

la carpeta SEGURIDAD del explorador de objetos de SQL SERVER 8 ingresar el nombre de los

8 ingresar el nombre de los INICIOS DE SESION que existen en el servidor SQL SERVER

los INICIOS DE SESION que existen en el servidor SQL SERVER 9 que nombre recibe el

9 que nombre recibe el servidor que esta Ud. trabajando

9 que nombre recibe el servidor que esta Ud. trabajando 10 que objetos muestra el AGENTE

10 que objetos muestra el AGENTE SQL SERVER

Ud. trabajando 10 que objetos muestra el AGENTE SQL SERVER Docentes: Lic. Luis M. Rojas Z.
Ud. trabajando 10 que objetos muestra el AGENTE SQL SERVER Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 10 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Objetivos.- aprender a trabajar con Transact- SQL además de crear programas haciendo uso de elementos de la programación en SQL server 2008

CAPITULO 02

elementos de la programación en SQL server 2008 CAPITULO 02 1 Transact SQL 12 2 Fundamentos

1 Transact SQL

12

2 Fundamentos de Transact SQL

12

3 Tipos de datos en Transact SQL

13

4 Variables en Transact SQL

16

5 Operadores en Transact SQL

19

6 Estructuras de control en Transact SQL

20

7 Desarrollo de Ejemplos

25

Propuesto Practico 02

27

Desarrollo de Ejemplos 25 Propuesto Practico 02 27 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro
Desarrollo de Ejemplos 25 Propuesto Practico 02 27 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 11 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

1 Transact SQL

Transact SQL es el lenguaje de programación que proporciona SQL Server para ampliar SQL con los elementos característicos de los lenguajes de programación: variables, sentencias de control de flujo, bucles,

Herramienta de Programación TRANSACT-SQL Para acceder a esta herramienta solo debe hacer clic en el botón NUEVA CONSULTA

herramienta solo debe hacer clic en el botón NUEVA CONSULTA 1.1 Guardar un Script SQL a)
herramienta solo debe hacer clic en el botón NUEVA CONSULTA 1.1 Guardar un Script SQL a)
herramienta solo debe hacer clic en el botón NUEVA CONSULTA 1.1 Guardar un Script SQL a)

1.1 Guardar un Script SQL

a) Presionar el botón GUARDAR

b) Aplicarle un nombre y ubicación

el botón GUARDAR b) Aplicarle un nombre y ubicación ES IMPORTANTE SABER QUE LOS SCRIPTS CREADOS

ES IMPORTANTE SABER QUE LOS SCRIPTS CREADOS EN CLASE DEBEN SER GUARDADOS PARA UN POSTERIOR USO

2 Fundamentos de Transact SQL

Primeros pasos con Transact SQL

Para programar en Transact SQL es necesario conocer sus fundamentos. Como introducción vamos a ver algunos elementos y conceptos básicos del lenguaje. Transact SQL no es CASE-SENSITIVE, es decir, no diferencia mayúsculas de minúsculas como otros lenguajes de programación como C o Java.

Un comentario es una aclaración que el programador incluye en el código. Son soportados 2 estilos de comentarios, el de línea simple y de multilínea, para lo cual son empleados ciertos caracters especiales como son:

-- Para un comentario de linea simple

/*

*/ Para un comentario de varias líneas

Un literal es un valor fijo de tipo numérico, caracter, cadena o lógico no representado por un identificador (es un valor explícito).

Una variable es un valor identificado por un nombre (identificador) sobre el que podemos realizar modificaciones. En Transact SQL los identificadores de variables deben comenzar por el caracter @, es decir, el nombre de una variable debe comenzar por @.Para declarar variables en Transact SQL debemos utilizar la palabra clave declare, seguido del identificador y tipo de datos de la variable.

, seguido del identificador y tipo de datos de la variable. Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 12 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Veamos algunos ejemplos:

-- Esto es un comentario de linea simple

/* Este es un comentario con varias líneas. Conjunto de Lineas. */ declare @nombre varchar(50)-- declare declara una variable -- @nombre es el identificador de la -- variable de tipo varchar

set @nombre = ‘Jhonny pandal' -- El signo = es un operador -- Jhonny pandal es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia mayúsculas ni minúsculas

es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia
es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia

Scripts y lotes.

Un script de Transact SQL es un conjunto de sentencias de Transact SQL en formato de texto plano que se ejecutan en un servidor de SQL Server.

Un script está compuesto por uno o varios lotes. Un lote delimita el alcance de las variables y sentencias del script. Dentro de un mismo script se diferencian los diferentes lotes a través de la instrucción GO.

-- Este es el primer lote del script SELECT * FROM COMENTARIOS GO-- GO es el separador de lotes -- Este es el segundo lote del script SELECT getdate()-- getdate() es una función integrada que devuelve -- la fecha

-- Este es el segundo lote del script SELECT getdate() -- getdate() es una función integrada
-- Este es el segundo lote del script SELECT getdate() -- getdate() es una función integrada

En ocasiones es necesario separar las sentencias en varios lotes, porque Transact SQL no permite la ejecución de ciertos comandos en el mismo lote, si bien normalmente también se utilizan los lotes para realizar separaciones lógicas dentro del script.

3 Tipos de datos en Transact SQL

Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que indica los posibles valores. El tipo de datos define el formato de almacenamiento, espacio que de disco-memoria que va a ocupar un campo o variable, restricciones y rango de valores válidos.

Transact SQL proporciona una variedad predefinida de tipos de datos. Casi todos los tipos de datos manejados por Transact SQL son similares a los soportados por SQL.

por Transact SQL son similares a los soportados por SQL. Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 13 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

A.- Tipos de datos numéricos.

SQL Server dispone de varios tipos de datos numéricos. Cuanto mayor sea el número que puedan almacenar mayor será en consecuencia el espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo de dato mínimo posible. Todos los dato numéricos admiten el valor NULL.

Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0.

Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0 a 255.

SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -32768 a 32767.

Int. Una columna o variable de tipo int puede almacenar el rango de valores -2 31 a 2 31 -1 .

BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -2 63 a 2 63 -1 .

Decimal(p,s). Una columna de tipo decimal puede almacenar datos númericos decimales sin redondear. Donde p es la precision (número total del dígitos) y s la escala (número de valores decimales)

Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10 308 a 1,79x-10 308, , si la definimos con el valor máxmo de precisión. La precisión puede variar entre 1 y 53.

Real. Sinónimo de float(24). Puede almacenar el rango de valores -3,4x-10 38 a 3,4x-10 38,

Money. Almacena valores númericos monetarios de -2 63 a 2 63 -1, con una precisión de hasta diexz milesimas de la unidad monetaria.

SmallMoney. Almacena valores númericos monetarios de -214.748,3647 a 214.748,3647, con una precisión de hasta diez milesimas de la unidad monetaria.

Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos autonuméricos.

DECLARE @bit bit, @tinyint tinyint, @smallint smallint, @int int, @bigint bigint, @decimal decimal(10,3), -- 10 digitos, 7 enteros y -- 3 decimales

@real real, @double float(53), @money money set @bit = 1 print @bit set @tinyint = 255 print @tinyint set @smallint = 32767 print @smallint set @int = 642325 print @int set @decimal = 56565.234 -- Punto como separador decimal print @decimal set @money = 12.34 print @money

642325 print @int set @decimal = 56565.234 -- Punto como separador decimal print @decimal set @money
642325 print @int set @decimal = 56565.234 -- Punto como separador decimal print @decimal set @money
decimal print @decimal set @money = 12.34 print @money Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 14 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

B.- Tipos de datos de carácter.

Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando los cinco bytes.

Varchar(n).Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un byte bytes.

Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 2 31 -1 bytes.

Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.

Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.

Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 2 31 -1 bytes.

C.- Tipos de datos de fecha.

Datetime. Almacena fechas con una precisión de milisegundo. Debe usarse para fechas muy específicas.

SmallDatetime. Almacena fechas con una precision de minuto, por lo que ocupa la mitad de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta

D.- Tipos de datos binarios.

Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud máxima de 8000 bytes.

Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud máxima de 8000 bytes Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco.

Varbinary(max).Igual que varbinary, pero puede almacenar 2 31 -1 bytes

E .- Tipo de datos XML.

XML.Una de las grandes mejoras que incorpora SQL Server 2005 es el soporte nativo para XML. Como podemos deducir, este tipo de datos se utiliza para almacenar XML.

DECLARE @myxml XML

set @myxml = (SELECT @@SERVERNAME NOMBRE FOR XML RAW, TYPE)

print cast(@myxml asvarchar(max))

@myxml XML set @myxml = ( SELECT @@SERVERNAME NOMBRE FOR XML RAW , TYPE ) print
@myxml XML set @myxml = ( SELECT @@SERVERNAME NOMBRE FOR XML RAW , TYPE ) print

Obtendremos la siguiente salida:

<row nombre="SVR01"/>

la siguiente salida: <row nombre="SVR01"/> Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 15 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

F.- Otros tipos de datos.

UniqueIdentifier. Se utiliza para identificadores únicos. Para generar identificadores únicos debemos utilizar la función NEWID().

DECLARE @myuniqueid UNIQUEIDENTIFIER

set @myuniqueid = NEWID()

print cast(@myuniqueid as varchar(36))

DECLARE @myuniqueid UNIQUEIDENTIFIER set @myuniqueid = NEWID() print cast(@myuniqueid as varchar (36))
DECLARE @myuniqueid UNIQUEIDENTIFIER set @myuniqueid = NEWID() print cast(@myuniqueid as varchar (36))

Obtendremos la siguiente salida: 46141D79-102C-4C29-A620-792EA0208637

Sql_Variant.Permite almacenar valores de diferentes tipos de datos. No puede almacena varchar(max), xml, timestamp y tipos de datos definidos por el usuario.

G.- Tipos de datos personalizados.

Transact SQL permite la creación de tipos de datos personalizados, a trevés de la instrucción CREATE TYPE. Personalmente, desaconsejo el uso de tipos de datos personalizados.

CREATE TYPEMD5FROMCHAR(32) NULL GO DECLARE @miMD5 MD5 set @miMD5 = '0000000000000000000000000000000A' print @miMD5

TYPEMD5FROMCHAR (32) NULL GO DECLARE @miMD5 MD5 set @miMD5 = '0000000000000000000000000000000A' print @miMD5
TYPEMD5FROMCHAR (32) NULL GO DECLARE @miMD5 MD5 set @miMD5 = '0000000000000000000000000000000A' print @miMD5

4 Variables en Transact SQL

Declarar variables es Transact SQL

Una variable es un valor identificado por un nombre (identificador) sobre el que podemos realizar modificaciones.

En Transact SQL los identificadores de variables deben comenzar por el carácter @, es decir, el nombre de una variable debe comenzar por @. Para declarar variables en Transact SQL debemos utilizar la palabra clave declare, seguido del identificador y tipo de datos de la variable.

-- Esto es un comentario de linea simple

/* Este es un comentario con varias líneas. Conjunto de Lineas. */ declare @nombre varchar(50)-- declare declara una variable -- @nombre es el identificador de la -- variable de tipo varchar set @nombre = 'MANCHESTER UNITED' -- El signo = es un operador -- MANCHESTER UNITED es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia mayúsculas ni minúsculas

es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia
es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia
de @nombre. -- No diferencia mayúsculas ni minúsculas Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 16 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Asignar variables en Transact SQL

En Transact SQL podemos asignar valores a una variable de varias formas:

A través de la instruncción set. Utilizando una sentencia SELECT. Realizando un FETCH de un cursor.

El siguiente ejemplo muestra como asignar una variable utilizando la instrucción SET.

DECLARE @nombre VARCHAR(100)

-- La consulta debe devolver un único registro

SET @nombre = (SELECT nombre

FROM CLIENTES

WHERE ID = 1)

PRINT @nombre

La consulta debe devolver un único registro SET @nombre = ( SELECT nombre FROM CLIENTES WHERE
La consulta debe devolver un único registro SET @nombre = ( SELECT nombre FROM CLIENTES WHERE

El siguiente ejemplo muestra como asignar variables utilizando una sentencia SELECT.

DECLARE @nombre VARCHAR(100),

@apellido1 VARCHAR(100),

@apellido2 VARCHAR(100)

SELECT @nombre=nombre ,

@apellido1=Apellido1,

@apellido2=Apellido2

FROM CLIENTES

WHERE ID = 1

PRINT @nombre

PRINT @apellido1

PRINT @apellido2

@apellido1=Apellido1, @apellido2=Apellido2 FROM CLIENTES WHERE ID = 1 PRINT @nombre PRINT @apellido1 PRINT @apellido2
@apellido1=Apellido1, @apellido2=Apellido2 FROM CLIENTES WHERE ID = 1 PRINT @nombre PRINT @apellido1 PRINT @apellido2
PRINT @nombre PRINT @apellido1 PRINT @apellido2 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 17 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Un punto a tener en cuenta cuando asignamos variables de este modo, es que si la consulta SELECT devuelve más de un registro, las variables quedarán asignadas con los valores de la última fila devuelta.

Por último veamos como asignar variables a través de un cursor.

DECLARE @nombre VARCHAR(100),

@apellido1 VARCHAR(100),

@apellido2 VARCHAR(100)

DECLARE CDATOS CURSOR

FOR

SELECT nombre , Apellido1, Apellido2

FROM CLIENTES

OPEN CDATOS

FETCH CDATOS INTO @nombre, @apellido1, @apellido2

WHILE (@@FETCH_STATUS = 0)

BEGIN

PRINT @nombre

PRINT @apellido1

PRINT @apellido2

FETCH CDATOS INTO @nombre, @apellido1, @apellido2

END

CLOSE CDATOS

DEALLOCATE CDATOS

@apellido1 PRINT @apellido2 FETCH CDATOS INTO @nombre, @apellido1, @apellido2 END CLOSE CDATOS DEALLOCATE CDATOS
@apellido1 PRINT @apellido2 FETCH CDATOS INTO @nombre, @apellido1, @apellido2 END CLOSE CDATOS DEALLOCATE CDATOS

Veremos los cursores con más detalle más adelante en este tutorial.

cursores con más detalle más adelante en este tutorial. Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 18 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

5 Operadores en Transact SQL

La siguiente tabla ilustra los operadores de Transact SQL .

Tipo de operador

 

Operadores

Operador de asignación

=

Operadores aritméticos

 

+ (suma)

- (resta)

* (multiplicación)

/ (división)

** (exponente)

% (modulo)

Operadores relacionales o de comparación

= (igual a) <> (distinto de) != (distinto de) < (menor que) > (mayor que) >= (mayor o igual a) <= (menor o igual a) !> (no mayor a) !< (no menor a)

Operadores lógicos

AND (y lógico) NOT (negacion)

OR

(o lógico)

&

(AND a nivel de bit)

|

(OR a nivel de bit)

^

(OR exclusivo a nivel de bit)

Operador de

 

concatenación

+

 

ALL (Devuelve TRUE si el conjunto completo de comparaciones es TRUE) ANY(Devuelve TRUE si cualquier elemento del conjunto de comparaciones es TRUE) BETWEEN (Devuelve TRUE si el operando está dentro del intervalo) EXISTS (TRUE si una subconsulta contiene filas) IN (TRUE si el operando está en la lista) LIKE (TRUE si el operando coincide con un patron) NOT (Invierte el valor de cualquier operador booleano) SOME(Devuelve TRUE si alguna de las comparaciones de un conjunto es TRUE)

Otros

de las comparaciones de un conjunto es TRUE) Otros Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 19 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

6 Estructuras de control en Transact SQL

Estructura condicional IF

La estructura condicional IF permite evaluar una expresión booleana (resultado SI - NO), y ejecutar las operaciones contenidas en el bloque formado por BEGIN END.

IF (<expresion>) BEGIN

END ELSEIF (<expresion>) BEGIN

END

ELSE

BEGIN

END

IF (<expresion>) BEGIN END ELSEIF (<expresion>) BEGIN END ELSE BEGIN END

Ejemplo de la estructura condicional IF.

DECLARE @Web varchar(100), @diminutivo varchar(3)

SET @diminutivo = 'DJK'

IF @diminutivo = 'DJK' BEGIN PRINT 'www.pandalsoft.com'

END

ELSE BEGIN PRINT 'Otra Web (peor!)'

END

END ELSE BEGIN PRINT 'Otra Web (peor!)' END Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 20 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

La estructura IF admite el uso de subconsultas:

DECLARE @coPais int, @descripcion varchar(255) set @coPais = 5 set @descripcion = 'España' IFEXISTS(SELECT * FROM PAISES WHERE CO_PAIS = @coPais) BEGIN

UPDATE PAISES SET DESCRIPCION = @descripcion WHERE CO_PAIS = @coPais

END

ELSE

BEGIN

INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion)

END

WHERE CO_PAIS = @coPais END ELSE BEGIN INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion) END
WHERE CO_PAIS = @coPais END ELSE BEGIN INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion) END

Estructura condicional CASE

La estructura condicional CASE permite evaluar una expresion y devolver un valor u otro.

La sintaxis general de case es:

CASE<expresion> WHEN<valor_expresion>THEN<valor_devuelto> WHEN<valor_expresion>THEN<valor_devuelto> ELSE<valor_devuelto> -- Valor por defecto

END

WHEN <valor_expresion> THEN <valor_devuelto> ELSE <valor_devuelto> -- Valor por defecto END
WHEN <valor_expresion> THEN <valor_devuelto> ELSE <valor_devuelto> -- Valor por defecto END

Ejemplo de CASE.

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK' SET @Web = (CASE @diminutivo WHEN 'DJK' THEN 'www.pandalsoft.com' WHEN 'ALM' THEN 'www.manchester.com' ELSE 'www.united.com'

END)

PRINT @Web

ELSE 'www.united.com' END ) PRINT @Web Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 21 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Otra sintaxis de CASE nos permite evaluar diferentes expresiones:

CASE

WHEN<expresion> = <valor_expresion>THEN<valor_devuelto> WHEN<expresion> = <valor_expresion>THEN<valor_devuelto> ELSE<valor_devuelto> -- Valor por defecto

END

El mismo ejemplo aplicando esta sintaxis:

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK'

SET @Web = (CASE

END)

PRINT @Web

WHEN @diminutivo = 'DJK' THEN 'www.manchester.com' WHEN @diminutivo = 'ALM' THEN 'www.united.com' ELSE 'www.jhonnypandal.com'

Otro aspecto muy interesante de CASE es que permite el uso de subconsultas.

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK'

SET @Web = (CASE

WHEN @diminutivo = 'DJK' THEN (SELECT web FROM WEBS WHERE id=1) WHEN @diminutivo = 'ALM' THEN (SELECT web FROM WEBS WHERE id=2)

ELSE 'www.jhonnypandal.com'

END)

PRINT @Web

) ELSE 'www.jhonnypandal.com' END ) PRINT @Web Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 22 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Bucle WHILE

El bucle WHILE se repite mientras expresion se evalue como verdadero.

Es el único tipo de bucle del que dispone Transact SQL.

WHILE<expresion>

BEGIN

END

WHILE <expresion> BEGIN END

Un ejemplo del bucle WHILE.

DECLARE @contador int SET @contador = 0 WHILE (@contador < 100) BEGIN SET @contador = @contador + 1

END

PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)

Podemos pasar a la siguiente iteración del bucle utilizando CONTINUE.

DECLARE @contador int SET @contador = 0 WHILE (@contador < 100) BEGIN SET @contador = @contador + 1 IF (@contador % 2 = 0) CONTINUE PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)

END

+ 1 IF (@contador % 2 = 0) CONTINUE PRINT 'Iteracion del bucle ' + cast
+ 1 IF (@contador % 2 = 0) CONTINUE PRINT 'Iteracion del bucle ' + cast

El bucle se dejará de repetir con la instrucción BREAK.

DECLARE @contador int SET @contador = 0 WHILE (1 = 1) BEGIN SET @contador = @contador + 1 IF (@contador % 50 = 0) BREAK PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)

END

@contador + 1 IF (@contador % 50 = 0) BREAK PRINT 'Iteracion del bucle ' +
@contador + 1 IF (@contador % 50 = 0) BREAK PRINT 'Iteracion del bucle ' +
del bucle ' + cast (@contador AS varchar ) END Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 23 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

También podemos utilizar el bucle WHILE conuntamente con subconsultas.

DECLARE @coRecibo int WHILE EXISTS (SELECT * FROM RECIBOS WHERE PENDIENTE = 'S')-- Ojo, la subconsulta se

ejecuta

-- una vez por cada iteracion -- del bucle!

BEGIN SET @coRecibo = (SELECTTOP 1 CO_RECIBO FROM RECIBOS WHERE PENDIENTE = 'S')

UPDATE RECIBOS SET PENDIENTE = 'N' WHERE CO_RECIBO = @coRecibo

END

Estructura GOTO

La sentencia goto nos permite desviar el flujo de ejecución hacia una etiqueta. Fué muy utilizada en versiones anteriores de SQL Server conjuntamente con la variable de sistema @@ERROR para el control de errores.

Actualmente, se desaconseja el uso GOTO, recomendandose el uso de TRY - CATCH para la gestion de errores.

DECLARE @divisor int, @dividendo int, @resultado int SET @dividendo = 100 SET @divisor = 0 SET @resultado = @dividendo/@divisor

IF @@ERROR > 0 GOTO error

PRINT 'No hay error' RETURN error:

PRINT 'Se ha producido una division por cero'

PRINT 'Se ha producido una division por cero' Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 24 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

7 Desarrollo de Ejemplos

A.- Programa que ingresa dos números y muestra la suma

Declare @Num1 Int ,@Num2 Int,@Total Int Set @Num1 =250 Set @Num2 =550

Set @Total =@Num1 + @Num2

Print @Total

B.- Programa que ingrese Nombre De Producto, Precio, Cantidad Y Mostrar Pago Total, IGV Y Pago Neto

Declare @NomProd Varchar(50) ,@Precio Money,@Cant Int,@TOTAL Money, @IGV Money,@NETO Money

Set @NomProd ='Camiseta Oficial del Manchester United 2011' Set @Precio =250 Set @Cant =10

Set @TOTAL =@Precio * @Cant Set @IGV =@TOTAL * 0.19 Set @NETO =@TOTAL + @IGV

Print @TOTAl Print @IGV Print @NETO

C.- Programa que ingrese la edad de un alumno y determine si es mayor o menos de edad

Declare @Nombre Varchar(50), @Mensaje Varchar(50), @Edad Int Set @Nombre ='Mabel' Set @Edad =12

IF @Edad >=18 Begin Set @Mensaje='MAYOR DE EDAD' End Else Begin Set @Mensaje='MENOR DE EDAD'

End

Print @Mensaje

D.- Programa que permita ingresar el nombre del empleado y la venta del mes. Si las ventas superan los 5000 soles. Recibirá un pago de 800 soles. Caso contrario solo 400 soles.

Declare @Nombre Varchar(50), @Ventas Money, @Pago Money Set @Nombre ='Fabio Da Silva' Set @Ventas=5580.25

IF @Ventas >5000 Begin Set @Pago =800 End Else Begin Set @Pago =400 End Print @Pago

Set @Pago =800 End Else Begin Set @Pago =400 End Print @Pago Docentes: Lic. Luis M.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 25 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

E.- Programa que ingrese el promedio de un alumno. Su condicion sera:

Mayor de 15 EXELENTE, mayor de 10 APROBADO, Mayor de 5 DESAPROBADO, los demas PESIMO

Declare @Nombre Varchar(50), @Promedio Int, @Condicion Varchar(30) Set @Nombre ='Alex Ferguson' Set @Promedio=15

IF @Promedio >15 Begin Set @Condicion ='EXELENTE' End Else If @Promedio >10 Begin Set @Condicion ='APROBADO' End Else If @Promedio >5 Begin Set @Condicion ='DESAPROBADO' End Else

Begin Set @Condicion ='PESIMO'

End

Print @Condicion

F.- Programa que ingrese el promedio de un alumno. Su condición será:

Mayor de 15 EXELENTE, mayor de 10 APROBADO, Mayor de 5 DESAPROBADO, los demás PESIMO

Declare @Nombre Varchar(50), @Promedio Int, @Condicion Varchar(30) Set @Nombre =’JHONNY PANDAL POMA' Set @Promedio=15

Set @Condicion=(CASE WHEN @Promedio >15 THEN 'EXELENTE' WHEN @Promedio >10 THEN 'APROBADO' WHEN @Promedio >5 THEN 'DESAPROBADO'

ELSE 'PESIMO'

END)

PRINT 'el alumno ' + @Nombre + ' Esta ' + @Condicion

G.- Programa que ingrese el area de trabajo del empleado y defina su sueldo. Sabiendo que OBRERO gana 500, EMPLEADO gana 900 y GERENTE 2500

Declare @Nombre Varchar(50), @Sueldo Money, @Area Varchar(30) Set @Nombre =Ryan Giggs' Set @Area='OBRERO'

Set @Sueldo=(CASE @Area WHEN 'OBRERO' THEN 500 WHEN 'EMPLEADO' THEN 900 WHEN 'GERENTE' THEN 2500 END)

PRINT 'el SR. ' + @Nombre + ' Recibe S/. ' + CAST(@Sueldo AS VARCHAR(50))

+ ' Recibe S/. ' + CAST(@Sueldo AS VARCHAR(50)) Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 26 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Propuesto Practico 02

1. EDAD.VB Desarrollar un programa que ingrese el nombre y la edad de un alumno y le muestre como mensaje. Si dicho alumno es MAYOR DE EDAD o MENOR DE EDAD

2. AULA.VB Desarrollar un programa que ingrese el numero de aula, fecha inicio, fecha termino, turno y cantidad de alumno matriculados. Si el aula programada tiene mas de 15 alumnos el programa debe mostrar un mensaje de ACTIVO caso contrario INACTIVO.

3. VENTAS.VB Desarrolla un programa que ingrese las ventas de un empleado. Si sus ventas superan los 10000 mensuales. Se mostrara un mensaje de EMPLEADO DEL MES caso contrario EMPLEADO NORMAL.

4. ALUMNO.VB Desarrolle un programa que ingrese el nombre y el promedio de un alumno. El programa debe mostrar un mensajes indicando si el alumno esta APROBADO o DESAPROBADO

5. TIPO.VB Desarrollar un programa que ingrese el nombre, precio y tipo (NACIONAL o IMPORTADO) del producto. Los productos nacionales reciben un incremento de S/.100 y los importados S/. 300 soles. El programa debe mostrar: Descuento y pago neto.

6. CARGO.VB Desarrollar un programa que ingrese el nombre, apellido, edad, sexo y cargo de un empleado. Su sueldo depende del cargo que ocupe. Detalles:(GERENTE gana S/. 2500), (OBRERO gana S/. 500), (VENTAS gana S/. 2500) otro cargo diferente a los anteriores ganaría S/. 350.00

7. PROMEDIO.VB Desarrolla un Programa que ingrese el nombre y las 4 notas de un alumno. El programa debe mostrar el promedio y el acumulado de notas. ADEMAS El alumno mostrara un mensaje según el promedio que haya sacado. (PROM > 20 promedio invalido), (PROM > 14 alumno excelente), (PROM > 10 alumno aprobado), CASO CONTRARIO Desaprobado.

8. BUSCADOR.VB Desarrolla un programa que ingrese el código de un alumno y te muestre su nombre, teléfono y dirección. DETALLE: (A001, Juan Perez, 450-9600, Jr.Ica 1200) , (A002, Nadia Ivette, 478-9655, Jr.puno 478), (A003, Joce Ramirez, 987-989- 955, Calle Bahia 175), (A004, Diana Robles, 785-9655, Calle Los Pinos 125), Si ingresaras un código incorrecto mostrara una mensaje de ERROR DE INGRESO

Fecha de ENTREGA:

Es importante repetir. que es muy importante el aprendizaje de este tipo de programación. Ya
Es importante repetir. que es muy
importante el aprendizaje de este tipo de
programación. Ya que será necesario para la
comprensión de los siguientes capítulos
necesario para la comprensión de los siguientes capítulos Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 27 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Objetivos.- administrar y ampliar el tamaño

de una base de datos. Además de normalizar la misma. Haciendo uso de restricciones que permiten datos correctos

1 Archivos de Base de Datos

2 Creación de Bases de Datos

CAPITULO 03

de Base de Datos 2 Creación de Bases de Datos CAPITULO 03 29 29 3 Ampliando

29

29

3 Ampliando el Tamaño una Base De Datos

30

4 Creación de Tablas

31

5 Integridad de Datos de una Tabla

31

6 Integridad referencial FOREIGN KEY

33

7 Generando el código de CURSO-INSTRUCTOR

34

8 Generando el código de CARGO-EMPLEADO-DISTRITO

35

9 Creación de Diagrama

Propuesto Practico 03

36

37

35 9 Creación de Diagrama Propuesto Practico 03 36 37 Docentes: Lic. Luis M. Rojas Z.
35 9 Creación de Diagrama Propuesto Practico 03 36 37 Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 28 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

1 Archivos de Base de Datos

Archivos de base de datos Las bases de datos de SQL Server utilizan tres tipos de archivos:

Archivos de datos principales

El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de la base de datos. Cada base de datos tiene un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.

Archivos de datos secundarios

Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La extensión de nombre de archivo recomendada para los archivos de datos secundarios es .ndf.

Archivos de registro

Los archivos de registro almacenan toda la información de registro que se utiliza para recuperar la base de datos. Como mínimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensión de nombre de archivo recomendada para los archivos de registro es .ldf.

2 Creación de Bases de Datos

A una línea

Create Database Empresa

Con esta línea estas creando una base de datos de nombre empresa dentro de la carpeta DATA

Con Atributos configurados para cada archivo

Create Database Apple ON (Name=Apple_Dat, FileName='C:\Apple\Apple_Dat.MDF',

Size=5,

Maxsize=10,

Filegrowth=2)

LOG ON (Name=Apple_Log, FileName='C:\Apple\Apple_Log.LDF',

Size=2,

Maxsize=5,

Filegrowth=1)

Detalles: la base de datos esta creado sobre una carpeta APPLE en disco local C.

datos esta creado sobre una carpeta APPLE en disco local C. Name.- especifica el nombre del

Name.- especifica el nombre del archivo

Filename.- determinas la ubicación física del archivo

Size.- espacio mínimo que debe tener el archivo al ser construido

Maxsize.- espacio máximo que puede almacenar dicho archivo

Filegrowth.- el incremente de crecimiento del archivo a partir de su tamaño mínimo hasta su tamaño máximo

a partir de su tamaño mínimo hasta su tamaño máximo Docentes: Lic. Luis M. Rojas Z.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 29 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

3 Ampliando el Tamaño una Base De Datos

Alter Database Apple Add File

(Name=Apple_Dat1,

FileName='C:\Apple\Apple_Dat1.NDF',

Size=3,

Maxsize=15,

Filegrowth=3)

Alter Database Apple Add File

(Name=Apple_Dat2,

FileName='C:\Apple\Apple_Dat2.NDF',

Size=3,

Maxsize=20,

Filegrowth=4)

Alter Database Apple Add File

(Name=Apple_Dat3,

FileName='C:\Apple\Apple_Dat3.NDF',

Size=3,

Maxsize=7,

Filegrowth=1)

Archivos de datos Apple_Dat1 con un tamaño de 15 Mb

Archivos de datos Apple_Dat2 con un tamaño de 20 Mb

Archivos de datos Apple_Dat3 con un tamaño de 7 Mb

Grupo de Archivos Lógicos de 5mb y 15 mb

Alter Database Apple Add File

(Name=Apple_Log1,

FileName='C:\Apple\Apple_Log1.LDF',

Size=3,

Maxsize=5,

Filegrowth=1),

(Name=Apple_Log2,

Size=3, Maxsize=5, Filegrowth=1), (Name=Apple_Log2, FileName='C:\Apple\Apple_Log2.LDF', Size=3,

FileName='C:\Apple\Apple_Log2.LDF',

Size=3,

Maxsize=15,

Filegrowth=1)

Verificando los archivos Sp_Helpdb Apple
Verificando los archivos
Sp_Helpdb Apple
Filegrowth=1) Verificando los archivos Sp_Helpdb Apple Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la
Filegrowth=1) Verificando los archivos Sp_Helpdb Apple Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 30 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

4 Creacion de Tablas

Una de las primeras restrcciones que uno aplica dentro de una tabla son los tipos de datos. Al crear una tabla uno debe especificar un tipo de dato relacionado con lo que almacenara dicho campo. Ej. NOMBRE debe almacenar un varchar.

dicho campo . Ej. NOMBRE debe almacenar un varchar. 5 Integridad de Datos de una Tabla

5 Integridad de Datos de una Tabla

Restricciones PRIMARY KEY

Una tabla suele tener una columna o una combinación de columnas cuyos valores identifican de forma única cada fila de la tabla. Estas columnas se denominan claves principales de la tabla y exigen la integridad de entidad de la tabla. Puede crear una clave principal mediante la definición de una restricción PRIMARY KEY cuando cree o modifique una tabla. Este campo no acepta valores NULL por defecto.

Imposible ingresar 2 productos con mismo código. ERROR DE USUARIO
Imposible ingresar
2 productos con
mismo código.
ERROR DE
USUARIO
ingresar 2 productos con mismo código. ERROR DE USUARIO Docentes: Lic. Luis M. Rojas Z. Lic.
ingresar 2 productos con mismo código. ERROR DE USUARIO Docentes: Lic. Luis M. Rojas Z. Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 31 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Restricciones Null o Not Null.- NOT NULL Determina que el campo tenga datos de manera obligatoria. NULL por el contrario null admite campos vacíos. Para hacer uso de estas restricciones debe contar con un análisis y así conseguir unos datos consistentes.

con un análisis y así conseguir unos datos consistentes. Restricciones Unique.- Solo admit5e valores únicos dentro

Restricciones Unique.-Solo admit5e valores únicos dentro de un campo. Una tabla puede contar con muchos campos con restricción UNIQUE.

puede contar con muchos campos con restricción UNIQUE. Restricciones Check .- Nos permite aplicar una regla

Restricciones Check.- Nos permite aplicar una regla de validación dentro de un campos. Es decir una regla de datos que podrían ingresar dentro de un campo. Ej. Campo EDAD solo admite valores >=18 debido a que los clientes deben ser mayores de edad

>=18 debido a que los clientes deben ser mayores de edad Docentes: Lic. Luis M. Rojas
>=18 debido a que los clientes deben ser mayores de edad Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 32 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Definiciones DEFAULT.- Los valores por defecto indican que valor será guardado en una columna si no se especifica un valor para la columna cuando se inserta una fila. Las definiciones DEFAULT pueden ser creadas cuando la tabla es creada (como parte de la definición de la tabla) o pueden ser agregadas a una tabla existente. Cada columna en una tabla puede contener una sola definición DEFAULT.

en una tabla puede contener una sola definición DEFAULT. 6 Integridad referencial FOREIGN KEY La integridad

6 Integridad referencial FOREIGN KEY

La integridad referencial preserva las relaciones definidas entre tablas, cuando se entran, modifican o borran registros. En SQL Server, la integridad referencial esta basada en interrelaciones entre claves ajenas y claves primarias o entre claves ajenas y claves únicas (a través de la restricciones FOREIGN KEY y CHECK). La integridad referencial asegura que los valores de las claves son consistentes a través de distintas tablas. Tal consistencia requiere que no existan referencia a valores inexistentes y que, si un valor clave cambia, todas las referencias cambien consistentemente a lo largo de la base de datos.

Cuando se fuerza la integridad referencial, SQL Server previene a los usuarios de realizar lo siguiente:

· Agregar registros a una tabla relacionada si no hay registros asociados en la correspondiente tabla primaria.

· Cambiar valores en la tabla primaria que resulten en registros huérfanos en las tablas relacionadas.

· Borrar registros desde una tabla primaria si existen registros relacionados en la tabla ajena.

EJEMPLO:

Para este ejemplo crearemos una tabla cursos y la tabla Instructor.Estas tablas están relacionadas por un campo común CODIGO de la tabla cursos y CURSO de la tabla Instructor.

CODIGO de la tabla cursos y CURSO de la tabla Instructor. Docentes: Lic. Luis M. Rojas
CODIGO de la tabla cursos y CURSO de la tabla Instructor. Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 33 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

7 Generando el código de CURSO-INSTRUCTOR

Comenzamos creando la tabla cursos e ingresando 3 registros. Luego creamos la tabla instructor y mediante FOREIGN KEY establecemos la relación con la tabla CURSOS ya creado anteriormente. Seguidamente. Ingresamos registros en la tabla INSTRUCTOR. Pero recordando que el último campo hace uso de datos externos para asegurar la integridad de datos.

Create Table Cursos (Codigo Char(5) Primary key, Nombre Varchar(50)) Go Insert Into Cursos
Create Table Cursos
(Codigo Char(5) Primary key,
Nombre Varchar(50))
Go
Insert Into Cursos Values('C0001','Sql Server Administrator')
Insert Into Cursos Values('C0002','Visual Basic 2008 - N Layer')
Insert Into Cursos Values('C0003','Analisis de Sistemas POO')
Go
Create Table Instructor
(Codigo Char(5) Primary key,
Nombre Varchar(50),
DNI Varchar(8),
Curso Char(5) Constraint FK_CursoInstr Foreign Key(Curso)
References Cursos(Codigo))
Go
Insert Into Instructor values
('P0001','Jhonny Pandal','10606388','C0001')
Ingresa correctamente el script y
obtendrás este resultado. PULSA
Insert Into Instructor values
('P0002','Juan Salazar','52362200','C0001')
Insert Into Instructor values
('P0003','Ernesto Bonifaz','11225125','C0002')
Insert Into Instructor values
('P0004','Nemanja Vidic','00006388','C0002')
Insert Into Instructor values
('P0005','Poul Scholes','12306388','C0002')
Insert Into Instructor values
('P0006','Park Jing Sung','88559960','C0002')
Insert Into Instructor values
('P0007','Rafael Da Silva','15202111','C0003')
Go
Select*From Cursos
Select*From Instructor
Que sucede al insertar estos
registros? Y como se soluciona?
LUEGOIngresar los siguientes datos a la Tabla INSTRUCTOR
P0008
Gabriel Milito
12548544 C0008
P0009
Dayana Rose
25632210 C0025
Página 34 de 101

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

8 Generando el código de CARGO-EMPLEADO-DISTRITO

Desarrollamos el script de estas 3 tablas relacionadas. Analizando que un empleado vives en un distrito y asume un cargo.

TABLA: CARGO

Create Table Cargo (CodCargo Char(5) Primary key, Nombre Varchar(30) Not Null Constraint Un_Nombre Unique) Go
Create Table Cargo
(CodCargo Char(5) Primary key,
Nombre Varchar(30) Not Null Constraint Un_Nombre Unique)
Go
Insert Into Cargo Values('CAR01','Vigilante')
Insert Into Cargo Values('CAR02','Ventas')
Insert Into Cargo Values('CAR03','Gerente')
Go
SELECT*FROM Cargo
Go

TABLA: DISTRITO

Create Table Distrito (CodDis Char(5) Primary Key, Nombre Varchar(30) Not Null Constraint Un_NombreDIS Unique) GO
Create Table Distrito
(CodDis Char(5) Primary Key,
Nombre Varchar(30) Not Null Constraint Un_NombreDIS Unique)
GO
Insert Into Distrito Values('DIS01','Chosica')
Insert Into Distrito Values('DIS02','Chaclacayo')
Insert Into Distrito Values('DIS03','Santa Anita')
GO
SELECT*FROM Distrito
Creación de Tabla Hijo EMPLEADO

Create Table Empleado (CodEmp Char(5) Primary key, NomEmp Varchar(50) Not Null,

Edad SmallInt

Dni

FechaC Datetime

Not Null Constraint Chk_Edad Check(Edad>=18 and Edad<=35),

Varchar(8) Not Null Constraint unq_Dni Unique,

Not Null Constraint Dfl_Fecha Default(Getdate()),

Email Varchar(50) Null, TlFono Varchar(15) Null,

DISTRITO Char(5) Not Null Constraint FK_EmpDis Foreign Key(DISTRITO) references Distrito(CodDis),

CARGO

Char(5) Not Null Constraint FK_EmpCar Foreign Key(CARGO) references Cargo(CodCargo)

)

GO

Insert Into Empleado Values

('E01','Jessica',21,'10603522','12/02/2009','Jess@yahoo.es',

'449-9655','DIS02','CAR01')

Insert Into Empleado Values

('E02','Carlos',35,'55663522','02/02/2004','car@yahoo.es',

'895-9655','DIS01','CAR03')

'895-9655','DIS01','CAR03') Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz Lic.

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 35 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Luego debes ingresar estos registros en la tabla EMPLEADO. De tal manera que quede al final de esta manera:

EMPLEADO. De tal manera que quede al final de esta manera: Luego debes Crear el Diagrama

Luego debes Crear el Diagrama de Datos de las 3 tablas.

9 Creación de Diagrama

a) Seleccionar Diagramas de base de datos

de Diagrama a) Seleccionar Diagramas de base de datos b) Clic en Nuevo diagrama de base
de Diagrama a) Seleccionar Diagramas de base de datos b) Clic en Nuevo diagrama de base
b) Clic en Nuevo diagrama de base de datos c) Seleccionar y AGREGAR las tablas
b)
Clic en Nuevo diagrama de base de datos
c)
Seleccionar y AGREGAR las tablas Cursos, Cargo y Empleado
d)
Clic en CERRAR
Para el desarrollo de este proyecto de 3
tablas se utilizaron integridad de datos para
cada una de las tablas involucradas. No
debes olvidar que las tablas tiene campos
comunes y que tiene el mimo tipo de dato
en cada CAMPO no olvidarse.
Además de haber poblado de datos de
forma adecuada. Ahora solo se necesita la
práctica de parte tuya.
Página 36 de 101

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Propuesto Practico 03

Desarrollo de la base de datos UNIVERSIDAD

Practico 03 Desarrollo de la base de datos UNIVERSIDAD Desarrollo de la Base de Datos FERRARI

Desarrollo de la Base de Datos FERRARI

.
.

Fecha de Entrega:

Desarrollo de la Base de Datos FERRARI . Fecha de Entrega: Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 37 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

Objetivos.- aprender hacer uso de las

funciones de SQL server. Para obtener un

mejor resultado con nuestros datos. Importante saber usar estas funciones

No olvidarse

CAPITULO 04

saber usar estas funciones No olvidarse CAPITULO 04 1 Funciones de cadena en SQL Server 39

1 Funciones de cadena en SQL Server

39

2 Funciones de Fecha

40

3 Funciones Matemáticas

41

4 Funciones de Agregado

41

5 Otras Funciones Importantes

42

Propuesto Practico 04

43

Funciones Importantes 42 Propuesto Practico 04 43 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De
Funciones Importantes 42 Propuesto Practico 04 43 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 38 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

1 Funciones de cadena en SQL Server

Función ASCII.

- Descripción: Retorna el valor del código ASCII.

- Sintaxis: ASCII (character)

-

Ejemplos:

Función RIGHT

- Descripción: Retorna la parte derecha de una cadena con el número Específico de caracteres.

- Sintaxis: RIGHT( string , integer)

-

Ejemplo:

SELECT ASCII('a') Resultado = 97 SELECT ASCII('b') Resultado = 98 SELECT ASCII('c') Resultado = 99 SELECT ASCII('A') Resultado = 65 SELECT ASCII('B') Resultado = 66 SELECT ASCII('C') Resultado = 67 SELECT ASCII('1') Resultado = 49 SELECT ASCII('2') Resultado = 50 SELECT ASCII('3') Resultado = 51 SELECT ASCII('4') Resultado = 52 SELECT ASCII('5') Resultado = 53

Función SPACE.

_ Descripción: Retorna los espacios en SQL Query (Puedes especificar el tamaño del especio).

- Sintaxis: SPACE ( integer)

-

Ejemplos:

SELECT ('Manchester') + SPACE(10) + ('United')

-- Resultado = ManchesterUnited

SELECT RIGHT('Jhonny Pandalsoft', 6) -- Resultado = alsoft SELECT RIGHT('JhonnyPandal',6) -- Resultado = Pandal

Función REPLICATE

- Descripción: Repite una cadena por un número específico de veces.

- Sintaxis: REPLICATE (string, integer)

- Ejemplo:

SELECT REPLICATE('JPP', 2) -- Resultado = JPPJPP

Función SUBSTRING

- Descripción: Retorna parte de una cadena.

- Sintaxis: SUBSTRING ( string, startindex , length )

-

Ejemplo:

SELECT SUBSTRING('SQLServer', 4, 3) -- Resultado = Ser

Función REPLACE

- Descripción: Reemplaza todas las ocurrencias de la

cadena 2 y la cadena 1 con la cadena 3.

- Sintaxis: REPLACE ( 'string1' , 'string2' , 'string3' )

- Ejemplos:

Función LEN

- Descripción: Retorna el número de caracteres de una cadena. -Sintaxis: LEN( string)

- Ejemplo:

SELECT REPLACE('All Function' , 'All', 'SQL') -- Resultado = SQL Function

SELECT LEN('DIOSTEAMA') -- Resultado = 9

Función STUFF

- Descripción: Elimina una longitud específica de caracteres e Inserta una cadena en un índice de inicio especifico.

- Sintaxis: STUFF ( string1 , startindex , length , string2 )

- Ejemplo:

SELECT STUFF('SqlTutorial', 4, 6, 'Function') -- Resultado = SqlFunctional SELECT STUFF('GoodMorning', 5, 3, 'good') -- Resultado = Goodgoodning

Función LEFT

- Descripción: Retorna la parte izquierda de una

- cadena con el número específico de caracteres.

- Sintaxis: LEFT ( string , integer) Ejemplo:

SELECT LEFT('ManchesterCampeon', 6) -- Resultado = Manche

SELECT LEFT('Megadeth',6) -- Resultado = Megade

Función REVERSE

- Descripción: Convierte a una cadena invertida.

- Sintaxis: REVERSE( string)

- Ejemplo:

SELECT REVERSE('Pandal') -- Resultado = ladnaP

Función UNICODE

- Descripción: Retorna el valor entero del estándar unicode.

- Sintaxis: UNICODE( char)

- Ejemplo:

SELECT UNICODE('SqlServer') -- Resultado = 83 (it take first character) SELECT UNICODE('S') -- Resultado = 83

character) SELECT UNICODE('S') -- Resultado = 83 Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 39 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

FunciónLOWER

- Descripción: Convierte una cadena a minúscula.

- Sintaxis: LOWER( string )

- Ejemplo

SELECT LOWER('PandalSoft')

-- Resultado =pandalsoft

Función UPPER

- Descripción: Convierte una cadena a mayúscula. - Sintaxis: UPPER( string )

- Ejemplo:

- SELECT UPPER('sistemasjhonny')

-- Resultado = SISTEMASJHONNY

Función LTRIM

- Descripción: Retorna una cadena después de eliminar los espacios de la izquierda. - Sintaxis: LTRIM( string )

- Ejemplo:

SELECT LTRIM(' sqlserver') -- Resultado = 'sqlserver' -- (Remove left side space or blanks)

Función RTRIM

- Descripción: Retorna una cadena después de eliminar los espacios de la derecha. - Sintaxis: RTRIM( string )

- Ejemplo:

SELECT RTRIM('Prof.Pandal ')

-- Resultado = 'Prof.Pandal'

-- (Remove right side space or blanks)

Prof.Pandal ' -- (Remove right side space or blanks) 2 Funciones de Fecha DATEADD Devuelve un

2 Funciones de Fecha

DATEADD Devuelve un valor datetime nuevo que se basa en la suma de un intervalo a la fecha especificada.

Ejemplo

DECLARE @DateNow DATETIME SET @DateNow='08/10/1980' SELECT DATEADD(Year, 15, @DateNow) AS NewDate

DATEDIFF Devuelve el número de límites de fecha y hora que hay entre dos fechas especificadas.

Ejemplos

DECLARE @DateNow DATETIME SET @DateNow='08/10/1980'

SELECT DATEADD(Year, 15, @DateNow) AS NewDate SELECT DATEADD(Month, 3, @DateNow) AS NewDate SELECT DATEADD(dayofyear,3, @DateNow) AS NewDate SELECT DATEADD(Day, 3, @DateNow) AS NewDate SELECT DATEADD(Hour, 3, @DateNow) AS NewDate SELECT DATEADD(minute, 3, @DateNow) AS NewDate SELECT DATEADD(second, 3, @DateNow) AS NewDate

DATENAME Devuelve una cadena de caracteres que representa la parte De la fecha especificada de la fecha especificada.

Ejemplos

SELECT DATENAME(month, GETDATE())

SELECT DATENAME(dayofyear, GETDATE())

SELECT DATENAME(day, GETDATE())

SELECT DATENAME(millisecond , GETDATE())

DATEPART Devuelve un entero que representa la parte de la fecha Especificada de la fecha indicada

Ejemplo

SELECT DATEPART(year, '2007-06-01') AS "Month" SELECT DATEPART(month, '2007-06-01') AS "Month" SELECT DATEPART(day, '2007-06-01') AS "Day" SELECT DATEPART(dayofyear, '2007-06-01') AS "Dy" SELECT DATEPART(weekday, '2007-06-01') AS "Weeday"

DAY Devuelve un entero que representa la parte del día de la fecha especificada.

Ejemplo

SELECT DAY('02/12/2004') AS "DIA"

GETDATE Devuelve la fecha y hora actuales del sistema en el formato Interno estándar de Microsoft® SQL Server™ para los valores datetime.

Ejemplo

SELECT GETDATE() as "HOY ES"

MONTH Devuelve un entero que representa el mes de una fecha Especificada.

Ejemplo

SELECT MONTH('02/12/2004') AS "MES"

SELECT DATENAME(week, GETDATE())

SELECT DATENAME(hour, GETDATE())

YEAR Devuelve un entero que representa la parte de año de la fecha Especificada.

SELECT DATENAME(minute, GETDATE())

SELECT DATENAME(second , GETDATE())

Ejemplo

SELECT YEAR('02/12/2004') AS "AÑO"

Ejemplo SELECT YEAR('02/12/2004') AS "AÑO" Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 40 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

3 Funciones Matematicas

RAND (Transact-SQL) Es una expresión de tipo entero (tinyint, smallint o int) que proporciona El valor de inicialización. Si no se especifica seed, SQL Server Database Engine (Motor de base de datos de SQL Server) asigna un valor de Inicialización de forma aleatoria. Para un valor de inicialización especificado, El resultado devuelto es siempre el mismo.

Ejemplos En el siguiente ejemplo se producen cuatro números aleatorios diferentes, Generados con la función RAND.

DECLARE @Numero SmallInt ,@Resultado smallint; SET @Numero = 1; WHILE @Numero < 5 BEGIN Set @Resultado =(RAND()*100) SET @Numero = @Numero + 1 Print @Resultado

GO

END

ACOS (Transact-SQL) Función matemática que devuelve el ángulo, en radianes, cuyo coseno es la expresión float especificada; también se denomina arco coseno.

Ejemplos En el ejemplo siguiente se devuelve el valor ACOS del número especificado.

DECLARE @N_COSENO float; SET @N_COSENO = -1.0; SELECT 'Coseno Es:' + CONVERT(varchar, ACOS(@N_COSENO))

SQRT (Transact-SQL) Devuelve la raíz cuadrada del valor de tipo flotante especificado.

Ejemplos En el ejemplo siguiente se devuelve la raíz cuadrada de los números Comprendidos entre 1.00 y 10.00.

DECLARE @myvalue float; SET @myvalue = 1.00; WHILE @myvalue < 10.00 BEGIN SELECT SQRT(@myvalue); SET @myvalue = @myvalue + 1

END

GO

SELECT SQRT(@myvalue); SET @myvalue = @myvalue + 1 END GO 4 Funciones de Agregado Las funciones

4 Funciones de Agregado

Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor. Si exceptuamos la función COUNT, todas las funciones de agregado ignoran los valores NULL. Las funciones de agregado se suelen utilizar con la cláusula GROUP BY de la instrucción SELECT.

Las funciones de agregado sólo se pueden utilizar como expresiones en:

La lista de selección de una instrucción SELECT (en una subconsulta o en la consulta externa).

Cláusulas COMPUTE o COMPUTE BY.

Cláusulas HAVING.

Cláusulas COMPUTE o COMPUTE BY.  Cláusulas HAVING. Transact-SQL proporciona las siguientes funciones de

Transact-SQL proporciona las siguientes funciones de agregado:

NOTA: Para ejecutar los ejemplos debe crear la tabla VENDEDORES Con los siguientes registros:

crear la tabla VENDEDORES Con los siguientes registros: Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro
crear la tabla VENDEDORES Con los siguientes registros: Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro
crear la tabla VENDEDORES Con los siguientes registros: Docentes: Lic. Luis M. Rojas Z. Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 41 de 101

RPP - Taller de Base de Datos
RPP - Taller de Base de Datos

AVG (Transact-SQL) Devuelve el promedio de los valores de un grupo. Los valores NULL Se pasan por alto. Puede ir seguida de la cláusula OVER.

COUNT (Transact-SQL) Permite contar el número de elementos de un grupo. Normalmente Usamos esta función para obtener un valor entero

Ejemplo Mostrar en promedio de ventas de los vendedores estables

Mostrar en promedio de ventas de los vendedores estables MIN Y MAX (Transact-SQL) Min Devuelve el

MIN Y MAX (Transact-SQL) Min Devuelve el valor mínimo de una expresión. Max devuelve el valor Máximo de una expresión

Ejemplo Mostrar la mayor y menor venta de los vendedores

Ejemplo Mostrar la mayor y menor venta de los vendedores VAR (Transact-SQL) Devuelve la varianza estadística

VAR (Transact-SQL) Devuelve la varianza estadística de todos los valores de la expresión Especificada.

Ejemplo Este ejemplo devuelve la varianza para todos los valores de Visitas De la tabla Vendedores

para todos los valores de Visitas De la tabla Vendedores Ejemplo Mostrar la mayor y menor

Ejemplo Mostrar la mayor y menor venta de los vendedores

Ejemplo Mostrar la mayor y menor venta de los vendedores 5 Otras Funciones Importantes SQL server

5 Otras Funciones Importantes

SQL server cuenta con los siguientes tipo de funciones queharemos uso y debemos conocer con la iniciativa de investigación del estudiante.

Funciones de conjuntos de filas Funciones de categoría Funciones de configuración

Funciones del cursor

Funciones de metadatos Funciones de seguridad Funciones del sistema Funciones estadísticas del sistema Funciones de texto e imagen Aquí algunas que deberemos usar:

Funciónmatemática

@@IDENTITY (Transact-SQL) Se trata de una función del sistema que devuelve el último valor de identidad insertado. @@IDENTITY

ISDATE (Transact-SQL) Devuelve 1 si expression es un valor date, time o datetime válido; de lo contrario, devuelve 0.

ISNULL (Transact-SQL) Reemplaza NULL con el valor de reemplazo especificado. ISNULL ( check_expression , replacement_value )

ISNUMERIC (Transact-SQL) Determina si una expresión es de tipo numérico válido.

CAST y CONVERT (Transact-SQL) Convierte una expresión de un tipo de datos en otro.

Convierte una expresión de un tipo de datos en otro . Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Z. Lic. Ramiro De la Cruz

Lic. Zambrano Arce Lic. Israel Huaraca

Página 42 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Propuesto Practico 04

Según lo aprendido ahora debe resolver las siguientes consultas N-100

a) Consulta que muestre INSTRUCTOR como resultado ROTCURTSNI

b) Consulta que muestre los 3 últimosdígitos de la palabra MICROSOFT

c) Consulta que muestre los 2 primero dígitos de tu nombre

d) Consulta que duplique tu nombre 3 veces

e) Consulta que muestre la cantidad de dígitos de tus apellidos y nombres

f) Consulta que muestre el nombre de tu distrito en MAYUSCULA

g) Consulta que muestre la fecha 15/03/2001 adicionándole 3 meses = 15/06/2001

h) Consulta que muestre la fecha 15/03/2001 adicionándole 15 años = 15/06/2016

i) Consulta que muestre el mes de 12/14/2011

j) Consulta que muestre el promedio de visitas que tuvieron los contratados

k) Consulta que muestre la menor visita

l) Consulta que muestre la cantidad de estables que hayan tenido más de 30 visitas

m) Consulta que muestre a los vendedores que hayan tengan ventas superiores al promedio

Fecha de Entrega:

hayan tengan ventas superiores al promedio Fecha de Entrega: Docentes: Lic. Luis M. Rojas Zúñiga Lic.

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz Lic. Zambrano Arce, Julio Lic. Israel

Página 43 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Objetivos.- es importante saber gestionar los

datos de un DB. En esta sección debemos aprender consultas que nos permitan hacer

uso de los datos

CAPITULO 05

que nos permitan hacer uso de los datos CAPITULO 05 1 DML, Lenguaje de Manipulación de

1 DML, Lenguaje de Manipulación de Datos SELECT

45

2 Lenguaje de manipulación de datos (I) - INSERT

45

3 Consultas N-100 - WARDS SUPERMARKET

47

4 Consulta de Datos I

49

5 Consultas de Actualización I - UPDATE

51

6 Consultas de Actualización II

52

7 Consultas de Actualización III

53

8 Consulta de Eliminación - DELETE

55

Propuesto Practico 05

61

Eliminación - DELETE 55 Propuesto Practico 05 61 Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro
Eliminación - DELETE 55 Propuesto Practico 05 61 Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 44 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

1 DML, Lenguaje de Manipulación de Datos

El Lenguaje de Manipulación de Datos (DML, por sus siglas en inglés) se utiliza para obtener, insertar y modificar información de una base de datos.

INSERT.- El comando INSERT en SQL es utilizado para agregar nuevos registros a una tabla existente. Tomando como ejemplo la tabla "personal", imaginemos que el departamento de recursos humanos necesita agregar un nuevo empleado a la base de datos. Se podría utilizar un comando similar al siguiente:

datos. Se podría utilizar un comando similar al siguiente: Note que hay cuatro valores específicos para

Note que hay cuatro valores específicos para el registro. Estos corresponden a los atributos de la tabla en el orden en que fueron definidos: nombre, apellido, empleado_id y salario.

Ejemplo

definidos: nombre, apellido, empleado_id y salario. Ejemplo LUEGO Debes ingresar los registros restantes 2 Lenguaje de
definidos: nombre, apellido, empleado_id y salario. Ejemplo LUEGO Debes ingresar los registros restantes 2 Lenguaje de

LUEGO Debes ingresar los registros restantes

2 Lenguaje de manipulación de datos (I)

Consulta de datos. El proceso más importante que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada serviría una base de datos si no

pudiéramos consultarla. Es además la operación que efectuaremos con mayor frecuencia. Para consultar la información SQL pone a nuestra disposición la sentencia SELECT.

SQL pone a nuestra disposición la sentencia SELECT . La sentencia SELECT La sentencia SELECT nos

La sentencia SELECT La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos. El formato de la sentencia select es:

Veamos por partes que quiere decir cada una de las partes que conforman la sentencia.

Significado

SELECT

Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de selección.

ALL

Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca.

DISTINCT

Indica que queremos seleccionar sólo los valores distintos.

FROM

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE.

WHERE

Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admiten los operadores lógicos AND y OR.

GROUP BY Especifica la agrupación que se da a los datos. Se usa siempre en
GROUP BY
Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones
agregadas.
Página 45 de 101

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

HAVING

Especifica una condición que debe cumplirse para los datosEspecífica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condición debe estar referida a los campos contenidos en ella.

ORDER BY

Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.

DESC (orden descendente). El valor predeterminado es ASC. La cláusula WHERE Ejemplo La cláusula WHERE es

La cláusula WHERE

Ejemplo

El valor predeterminado es ASC. La cláusula WHERE Ejemplo La cláusula WHERE es la instrucción que

La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente no deseamos obtener toda la información existente en la tabla, sino que queremos obtener sólo la información que nos resulte útil es ese momento. La cláusula WHERE filtra los datos antes de ser devueltos por la consulta.

MOSTRAR TODOS LOS REGISTROS

Select * From Empleado

FILTRAR CAMPOS

Select id_Empleado,Nombre From Empleado

FILTRAR Y AGRUPAR POR NOMBRE

Select id_Empleado,Nombre From Empleado Order By Nombre

FILTRAR A LOS EMPLEADOS QUE GANEN DE

5000 A MÁS

Select * From Empleado Where Salario>=5000

FILTRAR A LOS EMPLEADOS QUE GANEN DE

3000 A MENOS

Select * From Empleado Where Salario<=3000

FILTRAR A LOS EMPLEADOS QUE GANEN EN UN RANGO DE 2000 A 3000

Select * From Empleado Where Salario>=2000 and

Salario<=3000

FILTRAR DONDE NOMBRE INICIE CON LETRA C

Select * From Empleado Where Nombre LIKE 'C%'

FILTRAR DONDE NOMBRE TERMINE CON LETRA A

Select * From Empleado Where Nombre LIKE '%A'

FILTRAR EMPLEADOS SIN SALARIO

Select * From Empleado Where Salario is null

CONTAR CANT. DE EMPLEADOS

Select COUNT(*) From Empleado

MOSTRAR PROMEDIO DE SALARIO

Select AVG(Salario) From Empleado

MOSTRAR EMPLEADOS CON SALARIO MAYOR AL PROMEDIO

Select * From Empleado Where Salario> (Select AVG(Salario) From Empleado)

MOSTRAR MAYOR SALARIO

Select Max(Salario) AS ALTO From Empleado

MOSTRAR MENOR SALARIO

Select Min(Salario) AS BAJO From Empleado

MENOR SALARIO Select Min(Salario) AS BAJO From Empleado Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 46 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

3 Consultas N-100

RPP - Taller de Base de Datos I 3 Consultas N-100 Diagrama de la base de

Diagrama de la base de datos

Para aprender a realizar estas consultas se requiere de la base de datos WardsSupermarket. La
Para aprender a realizar estas consultas se requiere de la
base de datos WardsSupermarket. La cual será facilitado
por tu Instructor.
Mr. Pandal Poma JHONNY
Ahora debes Adjuntar o Restaurar a tu servidor y a
practicar sin dudarlo =)
o Restaurar a tu servidor y a practicar sin dudarlo =) Docentes: Lic. Luis M. Rojas
o Restaurar a tu servidor y a practicar sin dudarlo =) Docentes: Lic. Luis M. Rojas

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 47 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Estructura de Cada Tabla

Tabla: CATEGORIASTabla: CLIENTES

I Estructura de Cada Tabla Tabla: CATEGORIASTabla: CLIENTES Tabla: COMPAÑIASDEENVIOS Tabla: DETALLESDEPEDIDOSTabla:

Tabla: COMPAÑIASDEENVIOS

Tabla: CATEGORIASTabla: CLIENTES Tabla: COMPAÑIASDEENVIOS Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS

Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS

COMPAÑIASDEENVIOS Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS Docentes: Lic. Luis M. Rojas Zúñiga Lic.

Tabla: PEDIDOS

Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz
Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz
Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz
Tabla: DETALLESDEPEDIDOSTabla: EMPLEADOS Tabla: PEDIDOS Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 48 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Tabla: PRODUCTOS

RPP - Taller de Base de Datos I Tabla: PRODUCTOS 4 Consulta de Datos I Tabla:

4 Consulta de Datos I

Tabla: PROVEEDORES

I Tabla: PRODUCTOS 4 Consulta de Datos I Tabla: PROVEEDORES 01 Mostrar los productos que inicien

01 Mostrar los productos que inicien su nombre con la letra A

Mostrar los productos que inicien su nombre con la letra A Resultado: 02 Mostrar Código, Nombre

Resultado:

productos que inicien su nombre con la letra A Resultado: 02 Mostrar Código, Nombre y Precio

02 Mostrar Código, Nombre y Precio de Productos. Usar ALIAS

02 Mostrar Código, Nombre y Precio de Productos. Usar ALIAS Resultado: 03 Mostrar los productos que

Resultado:

Código, Nombre y Precio de Productos. Usar ALIAS Resultado: 03 Mostrar los productos que inicien su

03 Mostrar los productos que inicien su nombre con la letra A y C

los productos que inicien su nombre con la letra A y C Docentes: Lic. Luis M.
los productos que inicien su nombre con la letra A y C Docentes: Lic. Luis M.
los productos que inicien su nombre con la letra A y C Docentes: Lic. Luis M.

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 49 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

04 Mostrar los productos donde el intervalo de precio sea de 12 a 15 soles

Select IdProducto,NomProducto,PrecioUnidad From dbo.Productos

Where PrecioUnidad >=12 And PrecioUnidad <=15

05 Mostrar los productos donde el precio sea de 70 soles a más

Select IdProducto,NomProducto,PrecioUnidad From dbo.Productos

Where PrecioUnidad >=70

06 Mostrar los productos donde el precio sea menor igual a 5 soles

Select IdProducto,NomProducto,PrecioUnidad From dbo.Productos

Where PrecioUnidad <=5

07 Mostrar los productos donde intervalo de precio sea de 30 a 35 soles USAR FUNCION

Select IdProducto,NomProducto,PrecioUnidad From dbo.Productos

Where PrecioUnidad Between 30 and 35

08 Mostrar los productos donde el proveedor tenga el código 1

Select IdProducto,NomProducto,PrecioUnidad,IdProveedor From dbo.Productos

Where IdProveedor=1

09 Mostrar los productos donde el proveedor tenga el código 1 y 5

Select IdProducto,NomProducto,PrecioUnidad,IdProveedor From dbo.Productos

Where IdProveedor=1 or IdProveedor=5

10 Mostrar los productos donde el proveedor tenga el código 1, 3 y 5 USAR FUNCION

Select IdProducto,NomProducto,PrecioUnidad,IdProveedor From dbo.Productos

Where IdProveedor IN(1,3,5)

11 Mostrar los productos activos

Select NomProducto,Stock,Suspendido From dbo.Productos

Where Suspendido=1

12 Mostrar los productos donde el nombre tenga en su interior la palabra ROD

Select NomProducto From dbo.Productos

Where NomProducto LIKE '%Rod%'

13 Mostrar el producto de mayor precio

Select MAX(stock)AS MAYOR From Productos

14 Mostrar los productos de la categoría de código 7

Select NomProducto,IdCategoria AS [Codigo CAT]

From Productos Where IdCategoria=7

15 Mostrar los productos que NO pertenezcan a la categoría de código 1

Select NomProducto,IdCategoria AS [Codigo CAT]

From Productos Where NOT IdCategoria=1

16 Mostrar los productos que NO sean de la categoría donde el código es 1, 2, 3, 4 y 5

Select NomProducto,IdCategoria AS [Codigo CAT] From Productos Where NOT IdCategoria IN(1,2,3,4,5)

17 Mostrar los productos donde la categoría sea del código 4 y 5

Select NomProducto,IdCategoria AS [Codigo CAT]

From Productos Where IdCategoria IN(4,5)

18 Mostrar los productos que tengan un stock mayor igual a 100 y su proveedor tenga el código 17

Select IdProducto,NomProducto,Stock,IdProveedor

From Productos Where Stock >=100 AND IdProveedor=17

19 Mostrar el producto de mayor precio

Select IdProducto,NomProducto,Stock,IdProveedor From ProductosWhere Stock Between 100 and 150 AND NomProducto LIKE 'C%'

Between 100 and 150 AND NomProducto LIKE 'C%' Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 50 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

5 Consultas de Actualizacion I

El comando UPDATE puede ser utilizado para modificar información contenida dentro de una tabla. Cada año, la compañía les da a todos los empleados un incremento del 3% sobre el salario. El siguiente comando SQL podría ser utilizado para aplicar esto a todos los empleados de la base de datos:

para aplicar esto a todos los empleados de la base de datos: Vamos a trabajar con

Vamos a trabajar con la tabla CompañiasDeEnvios

de datos: Vamos a trabajar con la tabla CompañiasDeEnvios Aquí Tenemos los registros de la tabla
Aquí Tenemos los registros de la tabla de Compañía de Envíos Los datos serán modificados
Aquí Tenemos los registros de la
tabla de Compañía de Envíos
Los datos serán modificados
según lo requiera las empresas
Los datos se actualizarán por
necesidad del usuario

CASO 1

 

La empresa United Package decide cambiar de razón social por motivos económicos. Su nueva razón social será United International Ud. Deberá aplicar una consulta de actualización para realizar dicha modificación.

UPDATE dbo.CompañíasDeEnvíos SET NomCompañía='United International' Where IdCEnvíos=2

CASO 2

 

La empresa Wester Junior También cambia de razón social a London Union

UPDATE dbo.CompañíasDeEnvíos SET NomCompañía='London Union' Where IdCEnvíos=5

CASO 3

 

La Empresa Speedy Express Cambia de numero telefonico a 0808-8025-852

UPDATE dbo.CompañíasDeEnvíos SET Telefono='0808-8025-852' Where IdCEnvíos=1

CASO 4

La empresa Federal Shipping decide cambiar de razón social a Federal Peruana y de número telefónico a 330-1012

Después de haber ejecutado los 4 casos. La tabla Compañía de Envíos tuvo ciertas modificaciones
Después de haber ejecutado los 4 casos.
La tabla Compañía de Envíos tuvo ciertas
modificaciones en su información
haciendo
Uso de Consultas de Actualización
información haciendo Uso de Consultas de Actualización UPDATE dbo.CompañíasDeEnvíos SET

UPDATE dbo.CompañíasDeEnvíos SET NomCompañía='Federal Peruana',

Telefono='330-1012'

Where IdCEnvíos=3

Peruana', Telefono='330-1012' Where IdCEnvíos=3 Página 51 de 101 Docentes: Lic. Luis M. Rojas Zúñiga
Peruana', Telefono='330-1012' Where IdCEnvíos=3 Página 51 de 101 Docentes: Lic. Luis M. Rojas Zúñiga

Página 51 de 101

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

6 Consultas de Actualizacion II

Mostrar lo siguientes datos:

Select IdEmpleado,Apellidos,Nombre,TelDomicilio From dbo.Empleados

Ahora vamos a modificar los datos de los empleados.
Ahora vamos a modificar los
datos de los empleados.
Ahora vamos a modificar los datos de los empleados. 01 Modificar los apellidos y nombre del

01 Modificar los apellidos y nombre del Empleado donde su código es 1

UPDATE dbo.Empleados SET Apellidos='Pandal',

Nombre='Jhonny' WHERE IdEmpleado=1

02 Modificar los 3 campos del empleado donde su código es 2

UPDATE dbo.Empleados SET Apellidos='Gates', Nombre='Bill',

TelDomicilio='985-965-845'

WHERE IdEmpleado=2

03 Modificar fecha de contratación del empleado Jhonny Pandal

UPDATE dbo.Empleados SET FechaContratacion='12/03/2006' WHERE IdEmpleado=1

04 Mostrar código, nombres y teléfono de empleados. Agrupado por el segundo campo calculado

Select IdEmpleado,Nombre+SPACE(3)+Apellidos AS [Nombres y Apellidos],FechaContratacion,TelDomicilio From dbo.Empleados

05 Mostrar código, nombres, fecha contratación, teléfono de empleados.

Agrupado por el segundo campo calculado Select IdEmpleado,Nombre+SPACE(3)+Apellidos AS [Nombres y Apellidos],TelDomicilio From dbo.Empleados Order By 2

y Apellidos],TelDomicilio From dbo.Empleados Order By 2 Cada vez que ejecutes una consulta verifica que los
Cada vez que ejecutes una consulta verifica que los datos realmente se hayan actualizado. UPDATE
Cada vez que ejecutes una consulta
verifica que los datos realmente se
hayan actualizado. UPDATE nos permite
modificar registros existentes.
NO LO OLVIDES
nos permite modificar registros existentes. NO LO OLVIDES Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 52 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Consultas de Actualizacion III

En la seccion anterior aprendimos a actualizar solo un registro a la vez. Pero en ocasiones se deben hacer modificaciones a un grupo de registros. Es facil solo deberas usar lo aprendido anteriormente.

Primero:

Mostramos los 5 primeros productos(codigo,nombre,precio y categoria) de la categoria 1

Select TOP 5 IdProducto,NomProducto,PrecioUnidad,IdCategoria From dbo.Productos where IdCategoria=1

From dbo.Productos where IdCategoria=1 Segundo: La empresa Wards Supermarket decide subir los

Segundo:

La empresa Wards Supermarket decide subir los precios de los productos que pertenezcan a la categoria1. Este incremente será del 50% del mismo.

UPDATE dbo.Productos SET PrecioUnidad=PrecioUnidad+(PrecioUnidad*0.50) WHERE IdCategoria =1

El resultado si te das cuenta sera 12 filas afectadas. Ya que hay 12 productos de la categoria1 que fueron modificadas en grupo. Verifica los cambios

que fueron modificadas en grupo. Verifica los cambios CASO 5 La empresa decide reducir el precio

CASO 5 La empresa decide reducir el precio de los productos a un 50% pero que pertenezcan a la categoría de condimentos (2) y que tengan un stock mayor igual a 50 unidades en almacén.

Mostrando datos Antes:

Select IdProducto,NomProducto,PrecioUnidad,Stock,IdCategoria From dbo.Productos where IdCategoria=2 AND Stock >=50

From dbo.Productos where IdCategoria=2 AND Stock >=50 Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De
From dbo.Productos where IdCategoria=2 AND Stock >=50 Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 53 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

Vamos a actualizar los datos:

UPDATE dbo.Productos SET PrecioUnidad=PrecioUnidad-(PrecioUnidad*0.50) WHERE IdCategoria =2 AND Stock >=50

WHERE IdCategoria =2 AND Stock >=50 Como pueden ver los datos actualizados cumplen el criterio

Como pueden ver los datos actualizados cumplen el criterio detallado.

CASO 6

La empresa decide poner un precio de 15 soles a todas las marcas de las cervezas que vende. Debes modificar dichos precios.

Mostrando datos Antes:

Select IdProducto,NomProducto,PrecioUnidad,Stock,IdCategoria From dbo.Productos where NomProducto LIKE 'Cerveza%'

From dbo.Productos where NomProducto LIKE 'Cerveza%' Vamos a actualizar los datos: UPDATE dbo.Productos SET

Vamos a actualizar los datos:

UPDATE dbo.Productos SET PrecioUnidad=15 WHERE NomProducto LIKE 'Cerveza%'

PrecioUnidad= 15 WHERE NomProducto LIKE 'Cerveza%' Una consulta de actualización depende de los criterios que

Una consulta de actualización depende de los criterios que deben de cumplir dicha modificación. Es importante tener en cuenta que para poder modificar registros primero debes tener un respaldo. Pues los datos modificados no pueden ser restaurados.

Una sentencia que NO DEBES EJECUTAR NUNCA

UPDATE dbo.Productos SET NomProducto='Impresora Canon'

dbo.Productos SET NomProducto='Impresora Canon' Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz
dbo.Productos SET NomProducto='Impresora Canon' Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 54 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

8 Consulta de Eliminación

Utilizado para eliminar datos dentro de una tabla. Desafortunadamente, los últimos ingresos de la corporación reportan disminución en el desempeño, esto ha causado que Juan Pérez sea despedido. El

comando DELETE con la cláusula WHERE puede ser utilizado para eliminar su registro de la tabla de personal:

utilizado para eliminar su registro de la tabla de personal: 01 empresa decide eliminar de su

01 empresa decide eliminar de su data todos los productos suspendidos

la

Select * From dbo.Productos Where Suspendido=0

02 empresa decide eliminar de su data los productos acabados

la

Delete From dbo.Productos Where Stock=0

acabados la Delete From dbo.Productos Where Stock=0 03 empresa decide eliminar de su data todos los

03 empresa decide eliminar de su data todos los productos en pedido menores igual a 40 que pertenezcan

la

A la categoría 1

Delete From dbo.Productos Where CantEnPedido <=40 AND IdCategoria=1

04 que no debes USAR

la

Delete From dbo.Productos

Una empresa real cuenta con una tabla denominada Historial_Productos en esta tabla se almacena los
Una empresa real cuenta con una tabla denominada
Historial_Productos en esta tabla se almacena los
registros eliminados de la tabla principal Productos.
Además de los registros de los productos antes de
ser actualizados con update

Consulta de Datos II

Consulta a Dos Tablas

01.- Mostrar codigo y nombre del producto. ademas el pais y telefono de los proveedores de dichos productos

Select P.IdProducto,P.NomProducto,PR.Pais,PR.Telefono From Productos AS P INNER JOIN Proveedores AS PR ON P.IdProveedor =PR.IdProveedor

Resultado

AS PR ON P.IdProveedor =PR.IdProveedor Resultado Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la
AS PR ON P.IdProveedor =PR.IdProveedor Resultado Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 55 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

02.- Mostrar codigo y nombre del producto. ademas el nombre de la empresa y el nombre del empleado de la empresa proveedora. Ademas configurar el ancabezado con ALIAS

Select P.IdProducto AS [COD PRODUCTO],P.NomProducto AS [NOMBRE DEL PRODUCTO], PR.NomEmpresa AS [EMPRESA],PR.NomEmpleado AS [NOMBRE DE EMPLEADO] From Productos AS P INNER JOIN Proveedores AS PR ON P.IdProveedor =PR.IdProveedor

Resultado:

AS PR ON P.IdProveedor =PR.IdProveedor Resultado: DESCRIPCION: a) Una consulta multitablas requiere de los
AS PR ON P.IdProveedor =PR.IdProveedor Resultado: DESCRIPCION: a) Una consulta multitablas requiere de los

DESCRIPCION:

a) Una consulta multitablas requiere de los campos de cada tabla en la sección SELECT.

b) Luego la unión de las tablas que intervienen en dicha consultas. Las cuales están unidas con la unión INNER JOIN estas tablas deben estas relacionadas por un campo común.

c) La instrucción ON en la cual comparamos los dos campos comunes de dichas tablas.

03.- Además podemos filtrar este resultado acompañando a esta consulta con la instrucción WHERE

Select P.IdProducto AS [COD PRODUCTO],P.NomProducto AS [NOMBRE DEL PRODUCTO], PR.NomEmpresa AS [EMPRESA],PR.NomEmpleado AS [NOMBRE DE EMPLEADO] From Productos AS P INNER JOIN Proveedores AS PR ON P.IdProveedor =PR.IdProveedor Where PR.NomEmpleado ='Wendy Mackenzie'

Resultado:

Where PR.NomEmpleado ='Wendy Mackenzie' Resultado: WHERE 04.- Mostrar El nombre de la categoria. ademas nombre

WHERE

04.- Mostrar El nombre de la categoria. ademas nombre y precio del producto de dicha categoria

Select C.NomCategoria,PD.NomProducto,PD.PrecioUnidad From Categorias AS C INNER JOIN Productos AS PD ON C.IdCategoria =PD.IdCategoria

Resultado:

Productos AS PD ON C.IdCategoria =PD.IdCategoria Resultado: Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De
Productos AS PD ON C.IdCategoria =PD.IdCategoria Resultado: Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página 56 de 101

RPP - Taller de Base de Datos I
RPP - Taller de Base de Datos I

05.- Mostrar El nombre de la categoria. ademas nombre y precio del producto de dicha categoria. Pero solo de las bebidas

Select C.NomCategoria,PD.NomProducto,PD.PrecioUnidad From Categorias AS C INNER JOIN Productos AS PD ON C.IdCategoria =PD.IdCategoria Where C.NomCategoria ='Bebidas'

Resultado:

Where C.NomCategoria ='Bebidas' Resultado: 06.- Mostrar los detalles del pèdido 10250. mostrando:

06.- Mostrar los detalles del pèdido 10250. mostrando: codigo y nombre del producto en pedido. ademas de precio unitario y la cantidad a comprar de dicho producto.ademas nos piden que mostremos un campo CALCULADO que es SUBTOTAL que se genera a partir de la multiplicacion de 2 campos

Select DT.IdProducto,P.NomProducto,DT.PrecioUnidad,DT.Cantidad, (DT.PrecioUnidad*DT.Cantidad) AS SUBTOTAL From DetallesDePedidos AS DT INNER JOIN Productos AS P ON DT.IdProducto =P.IdProducto Where DT.IdPedido ='10250'

Resultado:

=P.IdProducto Where DT.IdPedido ='10250' Resultado: 06.- Mostrar los detalles del pèdido 10258. mostrando:

06.- Mostrar los detalles del pèdido 10258. mostrando: codigo y nombre del producto en pedido. ademas de precio unitario y la cantidad a comprar de dicho producto.ademas nos piden que mostremos un campo CALCULADO que es SUBTOTAL,DESCUENTO Y NETO haciendo uso de 2 campos calculados

Select DT.IdProducto,P.NomProducto,DT.PrecioUnidad,DT.Cantidad, (DT.PrecioUnidad*DT.Cantidad) AS SUBTOTAL, (DT.PrecioUnidad*DT.Cantidad)*DT.Descuento AS DESCUENTO,

((DT.PrecioUnidad*DT.Cantidad)-(DT.PrecioUnidad*DT.Cantidad)*DT.Descuento) AS NETO

From DetallesDePedidos AS DT INNER JOIN Productos AS P ON DT.IdProducto =P.IdProducto Where DT.IdPedido ='10258'

Resultado:

=P.IdProducto Where DT.IdPedido ='10258' Resultado: Para este ejemplo hemos usado 3 campos de la tabla

Para este ejemplo hemos usado 3 campos de la tabla DetallesDePedidos, 1 Campo de la tabla Productos y 3 campos calculados (SUBTOTAL, DESCUENTO, NETO) haciendo uso de la multiplicación de PrecioUnidad*Cantidad

haciendo uso de la multiplicación de PrecioUnidad*Cantidad Docentes: Lic. Luis M. Rojas Zúñiga Lic. Ramiro De

Docentes:

Lic. Luis M. Rojas Zúñiga Lic. Ramiro De la Cruz

Lic. Zambrano Arce, Julio Lic. Israel Huaraca

Página