Top Banner
MONOGRAFÍA. Structured Query Language Server (SQL Server). Integrantes Canayo Hualinga, Marcelo. Huamán Córdova, Sandro Cesar. Lomas Laulate, Alían Aldair. Ríos Vásquez, Yessabella Ytzel. Vásquez Mozombite, Ana Meliza. Docente Ing. Roberto Carlos Carrasco Sánchez. Facultad Ciencias E Ingeniería Carrera Ingeniería De Sistemas De Información Catedra Administración De Datos E Información I Ciclo III Fecha De Entrega: miércoles, 26 De Noviembre Del 2014. IQUITOS _LORETO _PERÚ “AÑO DE LA PROMOCION DE LA INDUSTRIA RESPONSABLE Y DEL COMPROMISO CLIMÀTICO” UNIVERSIDAD CIENTÍFICA DEL PERÙ
58
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: sql server

MONOGRAFÍA.

Structured Query Language Server (SQL Server).

IntegrantesCanayo Hualinga, Marcelo.

Huamán Córdova, Sandro Cesar.Lomas Laulate, Alían Aldair.

Ríos Vásquez, Yessabella Ytzel.Vásquez Mozombite, Ana Meliza.

DocenteIng. Roberto Carlos Carrasco Sánchez.

FacultadCiencias E Ingeniería

CarreraIngeniería De Sistemas De Información

CatedraAdministración De Datos E Información I

CicloIII

Fecha De Entrega: miércoles, 26 De Noviembre Del 2014.

IQUITOS _LORETO _PERÚ

INDICE

“AÑO DE LA PROMOCION DE LA INDUSTRIA RESPONSABLE Y DEL COMPROMISO CLIMÀTICO”

UNIVERSIDAD CIENTÍFICA DEL PERÙ

Page 2: sql server

1. INTRODUCCION………………………………………………………………

………………………….5

1.1.OBJETIVOS DE LA

INVESTIGACIÓN…………………………………………………..6

Objetivo General

Objetivos Específicos

1.2.JUSTIFICACIÓN DE LA

INVESTIGACIÓN………………………………………..7

2. MARCO

TEÓRICO…………………………………………………………………………

…………..9

2.1. Gestor de Base de Datos Microsoft SQL

Server…………………………………………...9

2.1.1. Definición de base

Datos…………………………………………………………………………………….9

2.1.2. Definición de SQL

Server…………………………………………………………………………………..10

2.1.3. Historia de SQL

Serve

r……………………………………………………………………………………..10

2.1.4. Característica

s………………………………………………………………………………………………

……..11

2.1.5. Ventaja SQL

Serve

r…………………………………………………………………………………………….1

4

2.1.6. Desventajas SQL

Serve

r…………………………………………………………………………………….14

2.2.Modelamiento de Base de Datos en SQL

Server……………………………….14

2

Page 3: sql server

2.3. Lenguaje

SQL…………………………………………………………………………….

16

2.3.1. Definición de SQL..........................................................31

2.3.2. Sintaxis.....................................................................32

2.3.3. Ejercicios de Lenguaje

SQL………………………………………………………………………………..32

2.4. T –

SQ

L…………………………………………………………………………………

……..37

2.4.1. Definición de Transact -

SQL…………………………………………………………………………..37

2.4.2. Sintaxi

s………………………………………………………………………………………………

…………………..38

2.4.3. Ejercicios de Lenguaje T –

SQL………………………………………………………………………..39

3. CONCLUSIONES

BIBLIOGRAFÍA

3

DEDICATORIA

A la Universidad Científica del Perú, institución en la cual encontramos la

oportunidad para estudiar cada uno de nosotros como becarios, y además de

hacer realidad los sueños de muchos jóvenes que tienen el anhelo de ser

profesionales para el futuro del país.

A la Facultad de Ciencias e Ingeniería, por su organización

Page 4: sql server

4

DEDICATORIA

A la Universidad Científica del Perú, institución en la cual encontramos la

oportunidad para estudiar cada uno de nosotros como becarios, y además de

hacer realidad los sueños de muchos jóvenes que tienen el anhelo de ser

profesionales para el futuro del país.

A la Facultad de Ciencias e Ingeniería, por su organización

AGRADECIMIENTO.

Agradecemos a Dios, por cada una de las cosas en especial por la vida;

y también por iluminar nuestra mente y nuestra salud. A nuestros padres y a

aquellas personas que han sido nuestros soportes y compañía durante todo el

periodo de estudio y desarrollo del tema.

Al Ing. Roberto Carlos Carrasco Sánchez, por su capacidad y

constante motivación durante la orientación y conducción de todo el proceso de

investigación, y que gracias a sus conocimientos que nos trasmite en cada

clase, motiva nuestro deseo de seguir estudiando y llegar a la meta de ser

Page 5: sql server

1. INTRODUCCIÓN

La tecnología y el desarrollo de sistemas informáticos se cuentan entre los

conceptos más ambiguos y controvertidos del mundo tecnológico. El presente

documento procura examinar estos conceptos desde una perspectiva

sistémica tratando de extraer de ellos sus elementos fundamentales.

Es cada vez más evidente que la búsqueda de información y el desarrollo de

cada uno de las herramientas que se usan exige integrar factores económicos,

científico, e investigación. Además de ello la capacitación de cada uno de

nosotros y la actualización de como emplear la herramienta; en este caso en la

creación base de datos. Sean estas herramientas SQL, SQL server, Transact

5

AGRADECIMIENTO.

Agradecemos a Dios, por cada una de las cosas en especial por la vida;

y también por iluminar nuestra mente y nuestra salud. A nuestros padres y a

aquellas personas que han sido nuestros soportes y compañía durante todo el

periodo de estudio y desarrollo del tema.

Al Ing. Roberto Carlos Carrasco Sánchez, por su capacidad y

constante motivación durante la orientación y conducción de todo el proceso de

investigación, y que gracias a sus conocimientos que nos trasmite en cada

clase, motiva nuestro deseo de seguir estudiando y llegar a la meta de ser

Page 6: sql server

SQL. Que son lenguajes de tratamiento de base de datos y programas

gestores base de datos, posteriormente el desarrollo y manejo de estas

herramientas ya mencionadas se darán a continuación. Todo esto Requiere la

articulación constructiva de los criterios que abordan el desarrollo de arriba

hacia abajo con las iniciativas de base, exige tener en cuenta el estudio

completo del manejo de estas herramientas.

Finalmente, requiere ampliar el horizonte espacial y temporal para adaptarse a

la necesidad de conocimiento de este curso.

Al abordar estos temas, el enfoque sistémico puede proporcionar una

perspectiva más útil que otros métodos analíticos, debido a que es una manera

de reflexionar en función de conexiones, relaciones y contexto.

En esta monografía se propone una definición general de las herramientas que

vamos emplear, en el ámbito profesional y que sea aplicable a cualquier

sistema de información.

1.1. Objetivos De La Investigación

Objetivo General

Aprender a utilizar correctamente el programa SQL para

poder construir, diseñar y administrar una base de datos

dependiendo de las circunstancias que uno se encuentre,

también como en el procesamiento y modelamiento de los

datos, lo cual es importante saber, para que nos facilite al

momento de realizar nuestras tablas con los datos obtenidos.

Conocer sobre las distintas versiones de dicha herramienta ya

que cada uno de ellos exige actualizar cada cierto tiempo. De

acuerdo a como sigue avanzando la tecnología moderna.

6

Page 7: sql server

Objetivos Específicos

Mejorar el aprendizaje de base de datos de acuerdo a los

distintos pasos o procesos.

Analizar los distintos gestores de base de datos de SQL

server por medio de varias herramientas que son útil para

el excelente manejo del programa.

Implementar el conocimiento sobre SQL para poder lograr

una mejor calidad de comprensión en este ámbito para los

estudiantes.

Investigar los lenguajes que tiene SQL lo cual nos permite

ampliar nuestros conocimientos mediante este trabajo.

1.2. Justificación de la investigación

Existen un conjunto de factores que intervienen para en un lenguaje de

desarrollo SQL.

Su desarrollo es fundamental porque a partir de ella se pueden emprender

tareas compuesta de tablas donde almacenamos registros catalogados en

función de distintos campos (características).

Un aspecto previo a considerar los valores que introducimos en esos

campos. Dado que una base de datos trabaja con todo tipo de

informaciones

Es el nivel del usuario individual, es decir, los usuarios pueden ser

programadores en algunos casos usuarios finales, cada usuario dispone

de un lenguaje y en el caso de un programador. Dispone de un lenguaje

7

Page 8: sql server

convencional. En el caso de un usuario final, será un lenguaje de consulta

o un lenguaje orientado hacia los usuarios. El punto importante de todos

estos lenguajes es que debe incluir un sub lenguaje de datos del cuál

estará inmerso o dentro de un lenguaje anfitrión, un lenguaje dado,

cualquier va a permitir el empleo de varios lenguajes anfitriones y varios

sub lenguajes para datos.

Prácticamente, la creación de la base de datos consiste en la creación de

las tablas que la componen. En realidad, antes de poder proceder a la

creación de las tablas, normalmente hay que crear la base de datos, lo que

a menudo significa definir un espacio de nombres separado para cada

conjunto de tablas. De esta manera, para una DBMS se pueden gestionar

diferentes bases de datos independientes al mismo tiempo sin que se den

conflictos con los nombres que se usan en cada una de ellas. El sistema

previsto por el estándar para crear los espacios separados de nombres

consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo,

dicho sistema no se usa (o por lo menos no con los fines y el significado

previstos por el estándar), pero cada DBMS prevé un procedimiento

propietario para crear una base de datos.

El sentido de la investigación gira en torno a la informática con propósitos

de integrarlo, con los demás personas escrito para el mundo académico

universitario.

8

Page 9: sql server

2. MARCO TEÓRICO

2.1. Gestor De Base De Datos Microsoft SQL Server

Un sistema gestor de base de datos se define como el conjunto de

programas que administran y gestionan la información contenida en una

base de datos. Ayuda a realizar las siguientes acciones:

Definición de los datos.

Mantenimiento de la integridad de los datos dentro de la base de

datos.

Control de la seguridad y privacidad de los datos.

Manipulación de los datos.

9

Page 10: sql server

2.1.1.Definición Base de Datos

Una base de datos se define como un fichero en el cual se

almacena información en campos o delimitadores, teniendo

acceso a ella posteriormente tanto de forma separada como de

forma conjunta. Se utiliza normalmente para recoger grandes

cantidades de información. (Por ejemplo el listado de nombres y

apellidos de los alumnos de varios cursos)

Normalmente el número de campos (columnas) que se pueden

tener en una base varía según las necesidades en cuanto a

gestión de datos, de forma que después se pueda explotar la

información de forma ordenada y separada, aunque el resto de la

información sigue almacenada y guardada en la base de datos.

En realidad aparte de los datos que son almacenados en el

archivo, también hay una serie de datos, en los que se informa del

tipo de campo, los campos y la longitud de cada campo, es lo que

se llama gestor de datos, que permite saber cada registro o fila,

(un registro es una suma de campos).

El programa que sirve para manejar toda esa información se

denomina sistema gestor de base de datos. Las principales en

estos momentos son Microsoft Access, Lotus Aproach, parados, u

Oracle

2.1.2.Definición de SQL Server

Es un sistema para la gestión de bases de datos creado por

Microsoft, el mismo se basa en el modelo relacional. El SQL

Server utiliza como lenguajes de consulta T-SQL y ANSI SQL.

2.1.3.Historia de SQL Server

Comenzó como un proyecto en colaboración en 1988 entre

Microsoft, Sybase, IBM e incluso Ashton-Tate para crear un

10

Page 11: sql server

sistema de gestión de base de datos para el sistema operativo

OS/2 (un sistema desarrollado entre IBM y Microsoft) tiempo

después se desarrolló la versión para Windows  NT por allá de

1993 (claro que en ese entonces era un producto “bebe” para toda

la “madurez” que ha alcanzado hasta hoy). Al año siguiente en

1994 Sybase y Microsoft deciden dar por terminada su

colaboración y Sybase se dedica al desarrollo de sus bases de

datos y Microsoft a las suyas. 

Después de “la separación” un año más tarde en 1995 Microsoft

Lanza su primera versión ya como independiente y único

propietario y desarrollador de SQL Server con la versión

Microsoft SQL Server 6.0 una versión mejorada principalmente en

rendimiento, y en el año de 1996 se lanza la versión Microsoft

SQL Server 6.5 una versión que se mantuvo vigente 2 años antes

de sacar una nueva versión en 1998 la 7.0 durante esos 2 años

Microsoft trabajo duro para realizar mejoras considerables en

cuanto usabilidad, potencia y rendimiento. Y fue una de las

versiones más fuertes, paso de ser un niño a un joven, pudiéndole

competir a sistemas como ORACLE o el propio DB2, y poco a

poco irse colocando como una propuesta atractiva a empresas

que manejaban volúmenes un poco mayores a los que SQL

Server venía manejando. Tanto que esta versión permaneció

estables y con ligeras actualizaciones hasta el desarrollo de

Microsoft SQL Server 2000 en esta versión incorpora ediciones

para ‘diferentes enfoques’ una de ellas la edición de 64  bits,

workgroup, desktop engine, profesional, personal, standard,

developer, enterprise etc y durante los siguientes 5 años comenzó

a causarle delirios de persecución los gigantes de las bases de

datos como ORACLE o IBM con DB2, para  la versión 2005 de

SQL Server ya era un serio competidor digno de respeto.

2.1.4.Características

Seguridad

11

Page 12: sql server

Protección de datos

• Criptografía integrada.

• Cifrado transparente.

• Clave extensible.

• Firma de módulos de códigos.

• Certificados a partir de bytes.

• Claves de seguridad usando AES256.

• Soporte para hashes SHA512 y SHA2 (256 y 512

bits).

Control de acceso

• Flexibilidad mediante reparto de responsabilidades y

roles anidados.

• Evasión del acceso de Administrador del Sistema.

• Mayor cumplimiento de las normas utilizando

Windows Group.

• Usuarios individuales.

• Seguridad de usuarios con controles de TI

integrados.

Garantía de cumplimiento

• Optimización mejorada y capacidades enriquecidas

con respecto a versiones anteriores.

• Mayor flexibilidad para filtrar eventos no deseados en

el log de la auditoría.

• Permite que las aplicaciones escriban código

personalizado dentro de log de la auditoría

Integridad de datos

La exigencia de integridad de los datos garantiza la calidad de

los datos de la base de datos.

12

Page 13: sql server

• SQL Server proporciona los siguientes mecanismos para

exigir la integridad de los datos en una columna:

Restricciones PRIMARY KEY

Restricciones FOREIGN KEY

Restricciones UNIQUE

Restricciones CHECK

Definiciones DEFAULT

Permitir o denegar valores NULL

• SQL Server admite distintos tipos de datos: Integer, Float,

Decimal, Char, Varchar, binarios, texto, entre otros, además

de que permite a los usuarios definir y usar su propio tipo de

datos compuestos (UDT)

Concurrencia

• SQL Server permite que varios clientes usen la misma base

de datos al mismo tiempo controlando el acceso simultáneo

mediante 2 modos de control de concurrencia:

Pessimistic concurrency: Uso de bloqueos exclusivos y

compartidos.

Optimistic concurrency: Similar al uso de sistemas

subversión. Permite la creación de una nueva fila cada

vez que ésta se actualiza, almacenando las “versiones

anteriores” de la fila en una tabla temporal junto con el

ID de la transacción mediante la cual fueron

actualizadas.

Recuperación

• Microsoft SQL Server 2012 cuenta con 3 formas diferentes

de respaldo y recuperación de bases de datos:

13

Page 14: sql server

SQL Server Management Studio (Herramienta gráfica de

administración para SQL Server 2005 y posteriores) (nivel

de dificultad: fácil)

PowerShell (Interfaz de consola avanzada disponible para

Microsoft Windows con posibilidad de interactuar con SQL

Server) (nivel de dificultad: medio)

Transact-SQL (Lenguaje propio de SQL Server) (nivel de

dificultad: avanzado)

Diccionario de datos

Conjunto de metadatos que contiene las características lógicas

de los datos que se van a utilizar en el sistema que se

programa, incluyendo nombre, descripción, alias, contenido y

organización.

• Microsoft SQL Server contiene palabras reservadas como

cualquier otro SGBD que permiten acceder a la información

de la estructura de una BD. Para crear un diccionario de

datos simple, solo basta con crear un script que obtenga

dicha información:

2.1.5. Ventaja SQL Server

Soporte de transacciones.

Escalabilidad, estabilidad y seguridad.

Soporta procedimientos almacenados.

Incluye también un potente entorno gráfico de administración,

que Permite el uso de comandos DDL y DML gráficamente.

14

Page 15: sql server

Permite trabajar en modo cliente-servidor, donde la

información y datos se alojan en el servidor y las terminales o

clientes de la red sólo acceden a la información.

Además permite administrar información de otros servidores

de datos.

2.1.6.Desventajas SQL Server

La principal desventaja de Microsoft SQL SERVER es la enorme

cantidad de memoria RAM que utiliza para la instalación y

utilización del software.

Una de las desventajas de SQL es que si lo quieres para practicas

no te va hacer útil porque en él se prohíben muchas cosas tiene

restricciones en lo particular me parase más viable

usar MySQL es mucho mejor además de ser un software gratis.

La relación calidad-precio esta muy debajo comparado con

Oracle.

2.2. Modelamiento de Base de Datos en SQL Server

La base de datos modelo se utiliza como plantilla para todas las bases

de datos creadas en una instancia de SQL Server. Puesto que tempdb

se crea cada vez que se inicia SQL Server, la base de datos modelo

debe existir siempre en un sistema de SQL Server. Todo el contenido de

la base de datos modelo, incluidas las opciones de base de datos, se

copia en la base de datos nueva. Algunos de los valores de

configuración de la base de datos modelo también se usan para crear

una base de datos tempdb nueva durante el inicio, de modo que la base

de datos modelo siempre debe existir en un sistema SQL Server.

Las bases de datos de usuario recién creadas usan el mismo modelo de

recuperación que la en. La opción predeterminada la puede configurar el

usuario. Para obtener información sobre el modelo de recuperación

15

Page 16: sql server

actual del modelo, vea Ver o cambiar el modelo de recuperación de una

base de datos (SQL Server).

El diseño de una base de datos consiste en definir la estructura de los

datos que debe tener un sistema de información determinado. Para ello

se suelen seguir por regla general unas fases en el proceso de diseño,

definiendo para ello el modelo conceptual, el lógico y el físico.

En el diseño conceptual se hace una descripción de alto nivel de la

estructura de la base de datos, independientemente del SGBD

(Sistema Gestor de Bases de Datos) que se vaya a utilizar para

manipularla. Su objetivo es describir el contenido de información de

la base de datos y no las estructuras de almacenamiento que se

necesitarán para manejar dicha información.

El diseño lógico parte del resultado del diseño conceptual y da como

resultado una descripción de la estructura de la base de datos en

términos de las estructuras de datos que puede procesar un tipo de

SGBD. El diseño lógico depende del tipo de SGBD que se vaya a

utilizar, se adapta a la tecnología que se debe emplear, pero no

depende del producto concreto. En el caso de bases de datos

convencionales relacionales (basadas en SQL para entendernos), el

diseño lógico consiste en definir las tablas que existirán, las

relaciones entre ellas, normalizarlas, etc.

El diseño físico parte del lógico y da como resultado una descripción

de la implementación de una base de datos en memoria secundaria:

las estructuras de almacenamiento y los métodos utilizados para

tener un acceso eficiente a los datos. Aquí el objetivo es conseguir

una mayor eficiencia, y se tienen en cuenta aspectos concretos del

SGBD sobre el que se vaya a implementar. Por regla general esto es

transparente para el usuario, aunque conocer cómo se implementa

ayuda a optimizar el rendimiento y la escalabilidad del sistema.

2.3. Lenguaje SQL

16

Page 17: sql server

Como en el caso de los más modernos lenguajes relacionales, SQL está

basado en el cálculo relacional de tuplas. Como resultado, toda consulta

formulada utilizando el cálculo relacional de tuplas (o su equivalente, el

álgebra relacional) se pude formular también utilizando SQL. Hay, sin

embargo, capacidades que van más allá del cálculo o del álgebra

relaciona. Aquí tenemos una lista de algunas características

proporcionadas por SQL que no forman parte del álgebra y del cálculo

relacional:

Comandos para inserción, borrado o modificación de datos.

Capacidades aritméticas: En SQL es posible incluir operaciones

aritméticas así como comparaciones, por ejemplo A < B + 3. Nótese

que ni + ni otros operadores aritméticos aparecían en el álgebra

relacional ni en cálculo relacional.

Asignación y comandos de impresión: es posible imprimir una

relación construida por una consulta y asignar una relación calculada

a un nombre de relación.

Funciones agregadas: Operaciones tales como promedio

(average), suma (sum), máximo (max), etc. se pueden aplicar a las

columnas de una relación para obtener una cantidad única.

Select

El comando más usado en SQL es la instrucción SELECT, que se utiliza

para recuperar datos. La sintaxis es:

SELECT [ALL|DISTINCT] { * | expr_1 [AS c_alias_1] [, ... [, expr_k [AS c_alias_k]]]} FROM table_name_1 [t_alias_1] [, ... [, table_name_n [t_alias_n]]] [WHERE condition] [GROUP BY name_of_attr_i [,... [, name_of_attr_j]] [HAVING condition]] [{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...]

17

Page 18: sql server

[ORDER BY name_of_attr_i [ASC|DESC] [, ... [, name_of_attr_j [ASC|DESC]]]];

Ilustraremos ahora la compleja sintaxis de la instrucción SELECT con

varios ejemplos. Las tablas utilizadas para los ejemplos se definen

en: La Base de Datos de Proveedores y Artículos.

Ejemplo: Select sencillas

Aquí tenemos algunos ejemplos sencillos utilizando la instrucción

SELECT:

Query sencilla con cualificación

Para recuperar todas las tuplas de la tabla PART donde el

atributo PRICE es mayor que 10, formularemos la siguiente

consulta:

SELECT * FROM PART WHERE PRICE > 10;

y obtenemos la siguiente tabla: PNO | PNAME | PRICE -----+-------------+-------- 3 | Cerrojos | 15 4 | Levas | 25

Utilizando "*" en la instrucción SELECT solicitaremos todos

los atributos de la tabla. Si queremos recuperar sólo los

atributos PNAME y PRICE de la tabla PART utilizaremos la

instrucción:

SELECT PNAME, PRICE FROM PART WHERE PRICE > 10;

En este caso el resultado es:

PNAME | PRICE ------------+-------- Cerrojos | 15 Levas | 25

18

Page 19: sql server

Nótese que la SELECT SQL corresponde a la "proyección" en álgebra

relaciona, no a la "selección" (vea Álgebra Relacional para más detalles).

Las cualificaciones en la cláusula WHERE pueden también conectarse

lógicamente utilizando las palabras claves OR, AND, y NOT:

SELECT PNAME, PRICE FROM PART WHERE PNAME = 'Cerrojos' AND (PRICE = 0 OR PRICE < 15);

dará como resultado:

PNAME | PRICE ------------+-------- Cerrojos | 15

Las operaciones aritméticas se pueden utilizar en la lista de objetivos y

en la cláusula WHERE. Por ejemplo, si queremos conocer cuánto

cuestan si tomamos dos piezas de un artículo, podríamos utilizar la

siguiente consulta:

SELECT PNAME, PRICE * 2 AS DOUBLE FROM PART WHERE PRICE * 2 < 50;

y obtenemos: PNAME | DOUBLE ------------+--------- Tornillos | 20 Tuercas | 16 Cerrojos | 30

Nótese que la palabra DOBLE tras la palabra clave AS es el nuevo título

de la segunda columna. Esta técnica puede utilizarse para cada

elemento de la lista objetivo para asignar un nuevo título a la columna

resultante. Este nuevo título recibe el calificativo de "un alias". El alias no

puede utilizarse en todo el resto de la consulta.

19

Page 20: sql server

Joins (Cruces)

El siguiente ejemplo muestra como las joins (cruces) se realizan en SQL.

Para cruzar tres tablas SUPPLIER, PART y SELLS a través de sus

atributos

comunes,

formularemos la siguiente instrucción:

Y obtendremos la siguiente tabla como resultado:

SNAME | PNAME -------+------- Smith | Tornillos Smith | Tuercas Jones | Levas Adams | Tornillos Adams | Cerrojos Blake | Tuercas Blake | Cerrojos Blake | Levas

En la cláusula FROM hemos introducido un alias al nombre para cada

relación porque hay atributos con nombre común (SNO y PNO) en las

relaciones. Ahora podemos distinguir entre los atributos con nombre

común simplificando la adicción de un prefijo al nombre del atributo con

el nombre del alias seguido de un punto. La Join se calcula de la misma

forma, tal como se muestra en Una Inner Join (Una Join Interna).

Primero el producto cartesiano: SUPPLIER × PART × SELLS Ahora

seleccionamos únicamente aquellas tuplas que satisfagan las

condiciones dadas en la cláusula WHERE (es decir, los atributos con

nombre común deben ser iguales). Finalmente eliminamos las columnas

repetidas (S.SNAME, P.PNAME).

Operadores Agregados

SQL proporciona operadores agregados (como son AVG, COUNT, SUM,

MIN, MAX) que toman el nombre de un atributo como argumento. El

valor del operador agregado se calcula sobre todos los valores de la

20

SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO;

Page 21: sql server

columna especificada en la tabla completa. Si se especifican grupos en

la consulta, el cálculo se hace sólo sobre los valores de cada grupo

(vean la siguiente sección).

Ejemplo: Agregates

Si queremos conocer el coste promedio de todos los artículos de la tabla

PART, utilizaremos la siguiente consulta:

SELECT AVG(PRICE) AS AVG_PRICE FROM PART;

El resultado es:

y obtendremos: COUNT ------- 4

Agregación por Grupos

SQL nos permite particionar las tuplas de una tabla en grupos. En estas

condiciones, los operadores agregados descritos antes pueden aplicarse

a los grupos (es decir, el valor del operador agregado no se calculan

sobre todos los valores de la columna especificada, sino sobre todos los

valores de un grupo. El operador agregado se calcula individualmente

para cada grupo).

El aprisionamiento de las tuplas en grupos se hace utilizando las

palabras clave GROUP BY seguidas de una lista de atributos que

21

AVG_PRICE ----------- 14.5

SELECT COUNT(PNO) FROM PART;

Page 22: sql server

definen los grupos. Si tenemos GROUP BY A1, ⃛, Ak habremos

particionado la relación en grupos, de tal modo que dos tuplas son del

mismo grupo si y sólo si tienen el mismo valor en sus atributos A1, ⃛, Ak.

Ejemplo: Agregados

Si queremos conocer cuántos artículos han sido vendidos por cada

proveedor formularemos la consulta:

SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME;

y obtendremos:

SNO | SNAME | COUNT -----+-------+------- 1 | Smith | 2 2 | Jones | 1 3 | Adams | 2 4 | Blake | 3

Demos ahora una mirada a lo que está ocurriendo aquí. Primero, la join

de las tablas SUPPLIER y SELLS:

S.SNO | S.SNAME | SE.PNO -------+---------+-------- 1 | Smith | 1 1 | Smith | 2 2 | Jones | 4 3 | Adams | 1 3 | Adams | 3 4 | Blake | 2 4 | Blake | 3 4 | Blake | 4

Ahora particionamos las tuplas en grupos reuniendo todas las tuplas que

tiene el mismo atributo en S.SNO y S.SNAME:

22

Page 23: sql server

S.SNO | S.SNAME | SE.PNO -------+---------+-------- 1 | Smith | 1 | 2 -------------------------- 2 | Jones | 4 -------------------------- 3 | Adams | 1 | 3 -------------------------- 4 | Blake | 2 | 3 | 4

En nuestro ejemplo, obtenemos cuatro grupos y ahora podemos aplicar

el operador agregado COUNT para cada grupo, obteniendo el resultado

total de la consulta dada anteriormente.

Nótese que para el resultado de una consulta utilizando GROUP BY y

operadores agregados para dar sentido a los atributos agrupados,

debemos primero obtener la lista objetivo. Los demás atributos que no

aparecen en la cláusula GROUP BY se seleccionarán utilizando una

función agregada. Por otro lado, no se pueden utilizar funciones

agregadas en atributos que aparecen en la cláusula GROUP BY.

Having

La cláusula HAVING trabaja de forma muy parecida a la cláusula

WHERE, y se utiliza para considerar sólo aquellos grupos que satisfagan

la cualificación dada en la misma. Las expresiones permitidas en la

cláusula HAVING deben involucrar funcionen agregadas. Cada

expresión que utilice sólo atributos planos deberá recogerse en la

cláusula WHERE. Por otro lado, toda expresión que involucre funciones

agregadas debe aparecer en la cláusula HAVING.

Ejemplo: Having

Si queremos solamente los proveedores que venden más de un artículo,

utilizaremos la consulta:

23

Page 24: sql server

SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME HAVING COUNT(SE.PNO) > 1;

y obtendremos: SNO | SNAME | COUNT -----+-------+------- 1 | Smith | 2 3 | Adams | 2 4 | Blake | 3

Subconsultas

En las clausulas WHERE y HAVING se permite el uso de subconsultas

(subselects) en cualquier lugar donde se espere un valor. En este caso,

el valor debe derivar de la evaluación previa de la subconsulta. El uso de

subconsultas amplía el poder expresivo de SQL.

Ejemplo: Subselect

Si queremos conocer los artículos que tienen mayor precio que el

artículo llamado 'Tornillos', utilizaremos la consulta:

SELECT * FROM PART WHERE PRICE > (SELECT PRICE FROM PART WHERE PNAME='Tornillos');

El resultado será:

PNO | PNAME | PRICE -----+-------------+-------- 3 | Cerrojos | 15 4 | Levas | 25

Cuando revisamos la consulta anterior, podemos ver la palabra clave

SELECT dos veces. La primera al principio de la consulta - a la que nos

referiremos como la SELECT externa - y la segunda en la cláusula

WHERE, donde empieza una consulta anidada - nos referiremos a ella

24

Page 25: sql server

como la SELECT interna. Para cada tupla de la SELECT externa, la

SELECT interna deberá ser evaluada. Tras cada evaluación,

conoceremos el precio de la tupla llamada 'Tornillos', y podremos

chequear si el precio de la tupla actual es mayor.

Si queremos conocer todos los proveedores que no venden ningún

artículo (por ejemplo, para poderlos eliminar de la base de datos),

utilizaremos:

SELECT * FROM SUPPLIER S WHERE NOT EXISTS (SELECT * FROM SELLS SE WHERE SE.SNO = S.SNO);

En nuestro ejemplo, obtendremos un resultado vacío, porque cada

proveedor vende al menos un artículo. Nótese que utilizamos S.SNO de

la SELECT externa en la cláusula WHERE de la SELECT interna. Como

hemos descrito antes, la subconsulta se evalúa para cada tupla de la

consulta externa, es decir, el valor de S.SNO se toma siempre de la

tupla actual de la SELECT externa.

Unión, Intersección, Excepción

Estas operaciones calculan la unión, la intersección y la diferencia de la

teoría de conjuntos de las tuplas derivadas de dos subconsultas.

Ejemplo: Union, Intersect, Except

La siguiente consulta es un ejemplo de UNION:

SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNAME = 'Jones' UNION SELECT S.SNO, S.SNAME, S.CITY

25

Page 26: sql server

FROM SUPPLIER S WHERE S.SNAME = 'Adams';

Dará el resultado:

SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris 3 | Adams | Vienna

Aquí tenemos un ejemplo para INTERSECT:

SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 1 INTERSECT SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 2;

que dará como resultado: SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris La única tupla devuelta por ambas partes de la consulta es la única que tiene $SNO=2$.

Finalmente, un ejemplo de EXCEPT:

SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 1 EXCEPT SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 3;

que dará como resultado:

SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris 3 | Adams | Vienna

26

Page 27: sql server

Definición de Datos

El lenguaje SQL incluye un conjunto de comandos para definición de

datos.

Create Table

El comando fundamental para definir datos es el que crea una nueva

relación (una nueva tabla). La sintaxis del comando CREATE TABLE es:

CREATE TABLE table_name (name_of_attr_1 type_of_attr_1 [, name_of_attr_2 type_of_attr_2 [, ...]]);

Ejemplo: Creación de una tabla

Para crear las tablas definidas en La Base de Datos de Proveedores y Artículos se utilizaron las siguientes instrucciones de SQL:

CREATE TABLE PART (PNO INTEGER, PNAME VARCHAR(20), PRICE DECIMAL(4 , 2));

CREATE TABLE SELLS (SNO INTEGER, PNO INTEGER);

o Tipos de Datos en SQL

A continuación sigue una lista de algunos tipos de datos soportados

por SQL:

27

CREATE TABLE SUPPLIER (SNO INTEGER, SNAME VARCHAR(20), CITY VARCHAR(20));

Page 28: sql server

INTEGER: entero binario con signo de palabra completa (31 bits de

precisión).

SMALLINT: entero binario con signo de media palabra (15 bits de

precisión).

DECIMAL (p[,q]): número decimal con signo de p dígitos de precisión,

asumiendo q a la derecha para el punto decimal. (15 ≥ p ≥ qq ≥ 0).

Si q se omite, se asume que vale 0.

FLOAT: numérico con signo de doble palabra y coma flotante.

CHAR(n): cadena de caracteres de longitud fija, de longitud n.

VARCHAR(n): cadena de caracteres de longitud variable, de longitud

máxima n.

Create Index

Se utilizan los índices para acelerar el acceso a una relación. Si una

relación R tiene un índice en el atributo A podremos recuperar todas la

tuplas t que tienen t(A) = a en un tiempo aproximadamente proporcional

al número de tales tuplas t más que en un tiempo proporcional al tamaño

de R.

Para crear un índice en SQL se utiliza el comando CREATE INDEX. La

sintaxis es:

CREATE INDEX index_name ON table_name ( name_of_attribute );

Ejemplo: Create Index

Para crear un índice llamado I sobre el atributo SNAME de la relación

SUPPLIER, utilizaremos la siguiente instrucción:

28

CREATE INDEX I ON SUPPLIER (SNAME);

Page 29: sql server

El índice creado se mantiene automáticamente. es decir, cada vez que

una nueva tupla se inserte en la relación SUPPLIER, se adaptará el

índice I. Nótese que el único cambio que un usuario puede percibir

cuando se crea un índice es un incremento en la velocidad.

Create View

Se puede ver una vista como una tabla virtual, es decir, una tabla que no

existe físicamente en la base de datos, pero aparece al usuario como si

existiese. Por contra, cuando hablamos de una tabla base, hay

realmente un equivalente almacenado para cada fila en la tabla en algún

sitio del almacenamiento físico.

Las vistas no tienen datos almacenados propios, distinguibles y

físicamente almacenados. En su lugar, el sistema almacena la definición

de la vista (es decir, las reglas para acceder a las tablas base

físicamente almacenadas para materializar la vista) en algún lugar de los

catálogos del sistema (vea System Catalogs). Para una discusión de las

diferentes técnicas para implementar vistas, refiérase a SIM98.

En SQL se utiliza el comando CREATE VIEW para definir una vista. La

sintaxis es:

Donde select_stmt es una instrucción select válida, como se definió en Select.

Nótese que select_stmt no se ejecuta cuando se crea la vista. Simplemente se

almacena en los catálogos del sistema y se ejecuta cada vez que se realiza

una consulta contra la vista.

Sea la siguiente definición de una vista (utilizamos de nuevo las tablas

de La Base de Datos de Proveedores y Artículos ):

29

CREATE VIEW view_name AS select_stmt

Page 30: sql server

CREATE VIEW London_Suppliers AS SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO AND S.CITY = 'London';

Ahora podemos utilizar esta relación virtual London_Suppliers como si

se tratase de otra tabla base:

SELECT * FROM London_Suppliers WHERE P.PNAME = 'Tornillos';

Lo cual nos devolverá la siguiente tabla:

SNAME | PNAME -------+---------- Smith | Tornillos

Para calcular este resultado, el sistema de base de datos ha realizado

previamente un acceso oculto a las tablas de la base SUPPLIER, SELLS

y PART. Hace esto ejecutando la consulta dada en la definición de la

vista contra aquellas tablas base. Tras eso, las cualificaciones

adicionales (dadas en la consulta contra la vista) se podrán aplicar para

obtener la tabla resultante.

o Drop Table, Drop Index, Drop View

Se utiliza el comando DROP TABLE para eliminar una tabla (incluyendo

todas las tuplas almacenadas en ella):

DROP TABLE table_name;

Para eliminar la tabla SUPPLIER, utilizaremos la instrucción:

30

Page 31: sql server

DROP TABLE SUPPLIER;

Se utiliza el comando DROP INDEX para eliminar un índice:

DROP INDEX index_name;

Finalmente, eliminaremos una vista dada utilizando el comando DROP VIEW:

DROP VIEW view_name;

Manipulación de Datos

o Insert Into

Una vez que se crea una tabla (vea Create Table), puede ser llenada

con tuplas mediante el comando INSERT INTO. La sintaxis es:

INSERT INTO table_name (name_of_attr_1 [, name_of_attr_2 [,...]]) VALUES (val_attr_1 [, val_attr_2 [, ...]]);

Para insertar la primera tupla en la relación SUPPLIER (de La Base de

Datos de Proveedores y Artículos) utilizamos la siguiente instrucción:

INSERT INTO SUPPLIER (SNO, SNAME, CITY) VALUES (1, 'Smith', 'London');

Para insertar la primera tupla en la relación SELLS, utilizamos:

INSERT INTO SELLS (SNO, PNO) VALUES (1, 1);

o Update

Para cambiar uno o más valores de atributos de tuplas en una relación,

se utiliza el comando UPDATE. La sintaxis es:

UPDATE table_name SET name_of_attr_1 = value_1 [, ... [, name_of_attr_k = value_k]] WHERE condition;

31

Page 32: sql server

Para cambiar el valor del atributo PRICE en el artículo 'Tornillos' de la relación PART, utilizamos:

El nuevo valor del atributo PRICE de la tupla cuyo nombre es 'Tornillos' es ahora 15.

o Delete

Para borrar una tupla de una tabla particular, utilizamos el comando DELETE FROM. La sintaxis es:

DELETE FROM table_name WHERE condition;

Para borrar el proveedor llamado 'Smith' de la tabla SUPPLIER, utilizamos la siguiente instrucción:

DELETE FROM SUPPLIER WHERE SNAME = 'Smith';

2.3.1.Definición de SQL

La sigla que se conoce como SQL corresponde a la expresión

inglesa Structured Query Language (entendida en español como

Lenguaje de Consulta Estructurado), la cual identifica a un tipo de

lenguaje vinculado con la gestión de bases de datos de carácter

relacional que permite la especificación de distintas clases de

operaciones entre éstas. Gracias a la utilización del álgebra y de

cálculos relacionales, el SQL brinda la posibilidad de realizar

consultas con el objetivo de recuperar información de las bases de

datos de manera sencilla.

2.3.2.Sintaxis

32

UPDATE PART SET PRICE = 15 WHERE PNAME = 'Tornillos';

Page 33: sql server

Comandos para definición de datos:

CREATE TABLE: Se utiliza para crear una nueva relación a la

que se le asigna un nombre y unos atributos:

DROP TABLE: Borra una relación existente así como también

sus atributos y la tupla asignada a esta relación

ALTER TABLE: Modifica la tabla, agrega un atributo a una de

estas, además de cambiar la tupla del código de la Base de

Datos

CREATE INDEX: Comando empleado para crear índices, estos

índices se crean bajo un nombre y pueden ser eliminados

cuando son innecesarios

DROP INDEX: Este comando es usado para borrar los índices

de la tabla relacionada y la tupla del catálogo.

2.3.3.Ejercicios de Lenguaje SQL

Ejemplo:

Tabla Países

Contiene información o relación de países en donde viven

los clientes o empleados. La tabla Países se encuentra en

el esquema Venta.

Columna Tipo de datos Nulos Descripción

Idpais char(3) No NULL Identificador de país. Clave primaria

NombrePais

Varchar(40) No NULL Nombre del país.

Tabla Categorías

33

Page 34: sql server

Contiene información o relación de categorías en donde se

encuentran registrados los productos. La tabla Categorías

se encuentra en el esquema Compra.

Columna Tipo de datos Nulos Descripción

IdCategoria int No NULL

Identificador de categoría. Clave primaria

NombreCategoria

Varchar(40) No NULL

Nombre de la categoría.

Descripción Text Null Descripción de la categoría

Tabla Clientes

Contiene información o relación de clientes que se

encuentran registrados en la base de datos. La tabla

Clientes se encuentra en el esquema Venta.

Columna Tipo de datos Nulos Descripción

IdCliente Char(5) No NULL Identificador de cliente. Clave primaria

NomCliente Varchar(40) No NULL Nombre del cliente.

DirCliente Varchar(80) No NULL Dirección del cliente

Idpais Char(3) No NULL Identificador de país. Clave externa de países.

fonoCliente Varchar(15) NULL Teléfono del cliente

Tabla Proveedores

Contiene información o relación de los proveedores que se

encuentran registrados en la base de datos. La tabla

Proveedores se encuentra en el esquema Compra

Columna Tipo de datos Nulos Descripción

34

Page 35: sql server

IdProveedor Int No NULL

Identificador de proveedor. Clave primaria

NomProveedor Varchar(80) No NULL

Nombre del proveedor.

DirProveedor Varchar(100)

No NULL

Dirección del proveedor.

NomContacto Varchar(80) No NULL

Nombre del contacto del proveedor.

CargoContacto Varchar(50) No NULL

Cargo del contacto del proveedor

Idpais Char(3) No NULL

Identificador del país. Clave externa de países

FonoProveedor Varchar(15) No NULL

Teléfono del proveedor.

FaxProveedor Varchar(15) No NULL

Fax del proveedor.

Tablas de Productos

Contiene información o relación de los productos que

ofrecen para la venta y que se encuentra registrado en la

base de datos. La tabla producto se encuentra en el

esquema compra.

Columna Tipo de datos Nulos Descripción

IdProducto Int No NULL

Identificador de producto. Clave primaria

nomProducto varchar(80) No NULL

Nombre del producto.

idProveedor Int No NULL

Identificador del proveedor. Clave externa de proveedores

idCategoria Int No NULL

Identificador de la categoría. Clave externa de categorías.

cantxUnidad varchar(50) No NULL

Cantidad de productos por unidad almacenada

PrecioUnidad

decimal(10,2)

No NULL

Precio por unidad del producto

UniEnExistencia

smallint No NULL

Unidades en existencia o stock del producto

35

Page 36: sql server

UniEnPedido smallint No NULL

Unidades que se encuentran en pedido.

Tabla Cargos

Contiene información o relación de los cargos que se le asigna

a cada empleado que se encuentran registrados en la base de

datos. La tabla Cargos se encuentra en el esquema RRHH.

Columna Tipo de datos Nulos Descripción

IdCargo Int No NULL Identificador de cargo. Clave primaria

Descargo varchar(30)

No NULL Descripción del cargo

Tabla Distrito

Contiene información o relación de los distritos que se

asignan a cada empleados que se encuentran

registrado en base de datos. La tabla distrito se

encuentra en el esquema RRHH.

Columna Tipo de datos Nulos Descripción

IdDistrito Int No NULL

Identificador de distrito. Clave primaria

nomDistrito varchar(50) No NULL

Nombre del distrito

Tabla Empleados

Contiene información o relación de los empleados que

se encuentran registrados en la base de datos. La tabla

Empleados se encuentra en el esquema RRHH.

Columna Tipo de datos Nulos Descripción

36

Page 37: sql server

IdEmpleado Int No NULL Identificador del empleado. Clave primaria

NomEmpleado varchar(50) No NULL Nombre del empleado

ApeEmpleado varchar(50) No NULL Apellido del empleado

FecNac Datetime No NULL Fecha de Nacimiento

DirEmpleado varchar(100)

No NULLL

Dirección del empleado

IdDistrito Int No NULL Identificador de distrito. Clave externa de distritos.

fonoEmpleado varchar(15) NULL Teléfono del empleado

Idcargo Int No NULL Identificador de cargo, clave externa de cargos

FecContrata Datetime No NULL Fecha de contratación

fotoEmpleado Image NULL Foto del empleado

Tabla Pedidos Cabe

Contiene información o relación de la cabecera de los

pedidos que se registran en el proceso de la venta y

que se encuentran registrados en la base de datos. La

tabla Pedidos Cabe se encuentra en el esquema Venta.

Columna Tipo de datos Nulos Descripción

IdPedido Int No NULL

Identificador de la cabecera de pedido. Clave primaria

Idcliente varchar(5) No NULL

Identificador de cliente. Clave externa de clientes

IdEmpleado Int No NULL

Identificador del empleado. Clave externa de empleados

fechaPedido Datetime No NULL

Fecha de solicitud del pedido

FechaEntrega

Datetime No NULL

Fecha de entrega del pedido

FechaEnvio Datetime No NULL

Fecha de envío del pedido

37

Page 38: sql server

enviopedido char(1) No NULL

Indica si el pedido ha sido o no entregado

Destinatario

varchar(60) No NULL

Nombre del destinatario

Dirdestinatario

varchar(100) No NULL

Dirección del destinatario

Tabla Pedidos Deta

Contiene información o relación del detalle de los

productos solicitados en los pedidos de venta y que se

encuentran registrados en la base de datos. La tabla

PedidosDeta se encuentra en el esquema Compra.

Columna Tipo de datos Nulos Descripción

IdPedido Int No NULL Identificador de pedido. Clave externa de pedidoscabe

IdProducto

Int No NULL Identificador del producto. Clave externa de producto

PrecioUnidad

Decimal(10,2) No NULL Precio del producto en el pedido

Cantidad smallint No NULL Cantidad solicitada del producto

Descuento Decimal(10,2) No NULL Cantidad de productos por unidad almacenada

2.4. T-SQL

2.4.1.Definición de Transact-SQL

• Transact-SQL es una extensión del lenguaje SQL, propiedad de

Microsoft y Sybase. Implementa el estándar ISO del nivel básico

de la especificación ANSI SQL-92.

• Se pueden ejecutar desde cualquier producto que cumpla los

requisitos básicos.

• Incluye una funcionalidad ampliada.

Para hacer a SQL más poderoso, le fueron agregados algunas

características como:

38

Page 39: sql server

Mejora en las declaraciones DELETE y UPDATE

Variables locales.

Soporte de varias funciones para el procesamiento de

cadenas, datos, matemática, etc.

Un lenguaje de control de flujos.

Para el lenguaje de control de flujos utiliza palabras claves como

BEGIN y END, BREAK, CONTINUE, GOTO, IF y ELSE,

RETURN, WAITFOR y WHILE.

Para las variables locales utiliza DECLARE para declararlas y

SET para proveerles un valor.

2.4.2.Sintaxis

Directivas de proceso por lotes

Comentarios

Identificadores

Tipos de datos

Variables

Funciones del sistema

Operadores

Expresiones

Elementos del lenguaje de control de flujo

Palabras clave reservadas

39

Page 40: sql server

2.4.3.Ejercicios de Lenguaje T – SQL

1) Usar GROUP BY con una expresiónEn este ejemplo se agrupa por una expresión. Puede agrupar por

una expresión si ésta no incluye funciones de agregado.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT AVG(OrderQty) AS [Average Quantity],

NonDiscountSales = (OrderQty * UnitPrice)

FROM Sales.SalesOrderDetail

GROUP BY (OrderQty * UnitPrice)

ORDER BY (OrderQty * UnitPrice) DESC;

GO

2) Usar GROUP BY con ORDER BYEn este ejemplo se busca el precio medio de cada tipo de producto y se ordenan los resultados por precio medio.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT ProductID, AVG(UnitPrice) AS [Average Price]

FROM Sales.SalesOrderDetail

WHERE OrderQty > 10

GROUP BY ProductID

ORDER BY AVG(UnitPrice);

GO

3) K.Usar la cláusula HAVINGEn el primer ejemplo se muestra una cláusula HAVING con una

función de agregado. Agrupa las filas de la

tabla SalesOrderDetail por Id. de producto y elimina aquellos

productos cuyas cantidades de pedido medias son cinco o

40

Page 41: sql server

menos. En el segundo ejemplo se muestra una

cláusula HAVING sin funciones de agregado.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT ProductID

FROM Sales.SalesOrderDetail

GROUP BY ProductID

HAVING AVG(OrderQty) > 5

ORDER BY ProductID;

GO

En esta consulta se utiliza la cláusula LIKE en la cláusula HAVING.

USE AdventureWorks2012 ;

GO

SELECT SalesOrderID, CarrierTrackingNumber

FROM Sales.SalesOrderDetail

GROUP BY SalesOrderID, CarrierTrackingNumber

HAVING CarrierTrackingNumber LIKE '4BD%'

ORDER BY SalesOrderID ;

GO

4) Usar HAVING y GROUP BY

En el siguiente ejemplo se muestra el uso de las

cláusulas GROUP BY, HAVING, WHERE y ORDER BY en una

instrucción SELECT. Genera grupos y valores de resumen pero lo

hace tras eliminar los productos cuyos precios superan los 25 $ y

cuyas cantidades de pedido medias son inferiores a 5. También

organiza los resultados por ProductID.

Transact-SQL

USE AdventureWorks2012;

GO

41

Page 42: sql server

SELECT ProductID

FROM Sales.SalesOrderDetail

WHERE UnitPrice < 25.00

GROUP BY ProductID

HAVING AVG(OrderQty) > 5

ORDER BY ProductID;

GO

5) Usar HAVING con SUM y AVGEn el siguiente ejemplo se agrupa la tabla SalesOrderDetail por

Id. de producto y solo se incluyen aquellos grupos de productos

cuyos pedidos suman más de $1000000.00y cuyas cantidades de

pedido medias son inferiores a 3.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT ProductID, AVG(OrderQty) AS AverageQuantity,

SUM(LineTotal) AS Total

FROM Sales.SalesOrderDetail

GROUP BY ProductID

HAVING SUM(LineTotal) > $1000000.00

AND AVG(OrderQty) < 3;

GO

6) Usar la sugerencia del optimizador INDEXEn el ejemplo siguiente se muestran dos formas de usar la

sugerencia del optimizador INDEX. En el primer ejemplo se

muestra cómo obligar al optimizador a que use un índice no

clúster para recuperar filas de una tabla, mientras que en el

segundo ejemplo se obliga a realizar un recorrido de tabla

mediante un índice igual a 0.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT pp.FirstName, pp.LastName, e.NationalIDNumber

FROM HumanResources.Employee AS e WITH

(INDEX(AK_Employee_NationalIDNumber))

42

Page 43: sql server

JOIN Person.Person AS pp on e.BusinessEntityID =

pp.BusinessEntityID

WHERE LastName = 'Johnson';

GO

-- Force a table scan by using INDEX = 0.

USE AdventureWorks2012;

GO

SELECT pp.LastName, pp.FirstName, e.JobTitle

FROM HumanResources.Employee AS e WITH (INDEX = 0) JOIN

Person.Person AS pp

ON e.BusinessEntityID = pp.BusinessEntityID

WHERE LastName = 'Johnson';

GO

7) Usar OPTION y las sugerencias GROUP

En el ejemplo siguiente se muestra cómo se usa la cláusula OPTION (GROUP) con una cláusula GROUP BY.Transact-SQL

USE AdventureWorks2012;

GO

SELECT ProductID, OrderQty, SUM(LineTotal) AS Total

FROM Sales.SalesOrderDetail

WHERE UnitPrice < $5.00

GROUP BY ProductID, OrderQty

ORDER BY ProductID, OrderQty

OPTION (HASH GROUP, FAST 10);

GO

8) Usar la sugerencia de consulta UNION En el ejemplo siguiente se usa la sugerencia de consulta MERGE UNION.

Transact-SQL

USE AdventureWorks2012;

GO

SELECT BusinessEntityID, JobTitle, HireDate, VacationHours,

SickLeaveHours

FROM HumanResources.Employee AS e1

UNION

43

Page 44: sql server

SELECT BusinessEntityID, JobTitle, HireDate, VacationHours,

SickLeaveHours

FROM HumanResources.Employee AS e2

OPTION (MERGE UNION);

GO

9) Usar una instrucción UNION simpleEn el ejemplo siguiente, el conjunto de resultados incluye el

contenido de las columnas ProductModelID y Name de las

tablas ProductModel y Gloves.

Transact-SQL

USE AdventureWorks2012;

GO

IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL

DROP TABLE dbo.Gloves;

GO

-- Create Gloves table.

SELECT ProductModelID, Name

INTO dbo.Gloves

FROM Production.ProductModel

WHERE ProductModelID IN (3, 4);

GO

-- Here is the simple union.

USE AdventureWorks2012;

GO

SELECT ProductModelID, Name

FROM Production.ProductModel

WHERE ProductModelID NOT IN (3, 4)

UNION

SELECT ProductModelID, Name

FROM dbo.Gloves

ORDER BY Name;

GO

44

Page 45: sql server

3. CONCLUSIONES

La realización de la investigación acerca de la herramienta SQL en la

asignatura de Administración de Datos e información nos lleva a las siguientes

conclusiones:

Se logró el objetivo de conocer como es el manejo adecuado de la

herramienta SQL. Teniendo en cuenta el estudio previo y la practica con

dicha herramienta.

Así mismo, aprendimos los pasos a seguir para crear estructuras de

tablas, procesos y consultas. De acuerdo al lenguaje de dicha

herramienta.

De igual forma tuvimos que analizar los distintos gestores de base de

datos de una forma teórica ya que tienen un vínculo directo con la

herramienta SQL, SQL server y Transact-SQL.

La investigación se enfatizó en las características encontradas, y la

implementación de estas herramientas, para que se pueda dar una

mejora en la comprensión y facilidad de manejo para los estudiantes.

De esta manera, esta investigación formara parte del aprendizaje

obtenido acerca de una de las herramientas muy importantes basado

en la creación de base de datos. Y que posteriormente lo emplearemos

en nuestra vida profesional.

45

Page 46: sql server

BIBLIOGRAFIA

http://es.slideshare.net/CrypticHernndezOrtega/caracteristicas-microsoft-

sql-server

http://es.slideshare.net/hcumbicusr/sistemas-gestores-de-base-de-datos-

sgbd-13333545?related=1

http://es.wikipedia.org/wiki/SQL

http://es.wikipedia.org/wiki/SQL

http://proyectobasesdedatos.galeon.com/enlaces1416755.html

http://www.aulaclic.es/sqlserver/spr_9_10_1.htm

46