SlideShare una empresa de Scribd logo
1 de 45
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Ù
2
INDICE
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 Server……………………………………………………………………………………..10
2.1.4. Características……………………………………………………………………………………………………..11
2.1.5. Ventaja SQL Server…………………………………………………………………………………………….14
2.1.6. Desventajas SQL Server…………………………………………………………………………………….14
2.2.Modelamiento de Base de Datos en SQL Server……………………………….14
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 – SQL………………………………………………………………………………………..37
2.4.1. Definición de Transact - SQL…………………………………………………………………………..37
2.4.2. Sintaxis…………………………………………………………………………………………………………………..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
administrativa y académica, cuyas condiciones han favorecido superar nuestras
limitaciones y asimilar nuevas experiencias académicas y en el futuro ser
profesionales.
4
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
profesionales en el futuro.
5
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
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.
6
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.
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.
7
1.2. Justificaciónde 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
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
9
2. MARCO TEÓRICO
2.1. Gestor De Base De Datos MicrosoftSQL 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.
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
10
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
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
11
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
 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
12
• 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.
• 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
13
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:
 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.
14
 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.
 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.DesventajasSQL 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
15
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 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
16
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
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:
17
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
...]
[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:
18
SELECT PNAME, PRICE
FROM PART
WHERE PRICE > 10;
En este caso el resultado es:
PNAME | PRICE
------------+--------
Cerrojos | 15
Levas | 25
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
19
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.
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).
SELECT S.SNAME, P.PNAME
FROM SUPPLIER S, PART P, SELLS SE
WHERE S.SNO = SE.SNO AND
P.PNO = SE.PNO;
20
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 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:
Si queremos conocer cuántos artículos se recogen en la tabla PART,
utilizaremos la instrucción:
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
AVG_PRICE
-----------
14.5
SELECT COUNT(PNO)
FROM PART;
21
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 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
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
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
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
FROM SUPPLIER S
25
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:
26
SNO | SNAME | CITY
-----+-------+--------
2 | Jones | Paris
3 | Adams | Vienna
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
CREATE TABLE SUPPLIER
(SNO INTEGER,
SNAME VARCHAR(20),
CITY VARCHAR(20));
27
A continuación sigue una lista de algunos tipos de datos soportados
por SQL:
 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
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 ):
CREATE INDEX I
ON SUPPLIER (SNAME);
CREATE VIEW view_name
AS select_stmt
29
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
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
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
UPDATE PART
SET PRICE = 15
WHERE PNAME = 'Tornillos';
32
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.Ejerciciosde 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 Tipode datos Nulos Descripción
Idpais char(3) No NULL Identificador de país.
Clave primaria
Nombre
Pais
Varchar(40) No NULL Nombre del país.
 Tabla Categorías
33
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
NombreCateg
oria
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 Tipode 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 Tipode datos Nulos Descripción
34
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 Tipode 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
PrecioUnida
d
decimal(10,
2)
No
NULL
Precio por unidad del
producto
UniEnExiste
ncia
smallint No
NULL
Unidades en existencia o
stock del producto
35
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 Tipode datos Nulos Descripción
IdCargo Int No NULL Identificador de cargo. Clave
primaria
Descargo varchar(3
0)
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 Tipode 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
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 Tipode 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
FechaEntreg
a
Datetime No
NULL
Fecha de entrega del
pedido
FechaEnvio Datetime No
NULL
Fecha de envío del pedido
37
enviopedido char(1) No
NULL
Indica si el pedido ha
sido o no entregado
Destinatari
o
varchar(60) No
NULL
Nombre del destinatario
Dirdestinat
ario
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
IdProduct
o
Int No NULL Identificador del producto.
Clave externa de producto
PrecioUni
dad
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
 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
2.4.3.Ejerciciosde Lenguaje T – SQL
1) Usar GROUP BY con una expresión
En 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 BY
En 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 HAVING
En 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
menos. En el segundo ejemplo se muestra una
cláusula HAVING sin funciones de agregado.
40
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
SELECT ProductID
FROM Sales.SalesOrderDetail
WHERE UnitPrice < 25.00
GROUP BY ProductID
41
HAVING AVG(OrderQty) > 5
ORDER BY ProductID;
GO
5) Usar HAVING con SUM y AVG
En 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 sugerenciadeloptimizadorINDEX
En 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))
JOIN Person.Person AS pp on e.BusinessEntityID =
pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO
42
-- 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 OPTIONy las sugerenciasGROUP
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 sugerenciade 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
SELECT BusinessEntityID, JobTitle, HireDate, VacationHours,
SickLeaveHours
FROM HumanResources.Employee AS e2
OPTION (MERGE UNION);
GO
43
9) Usar una instrucción UNION simple
En 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
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
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

Más contenido relacionado

La actualidad más candente

Diseño de entradas para sistemas de información
Diseño de entradas para sistemas de informaciónDiseño de entradas para sistemas de información
Diseño de entradas para sistemas de informaciónYaskelly Yedra
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores JUANR1022
 
Estándares, Modelos y Normas Internacionales de Redes
Estándares, Modelos y Normas Internacionales de RedesEstándares, Modelos y Normas Internacionales de Redes
Estándares, Modelos y Normas Internacionales de RedesJose Adalberto Cardona Ortiz
 
GESTION DE PROCESOS Sistemas Operativos
GESTION DE PROCESOS Sistemas OperativosGESTION DE PROCESOS Sistemas Operativos
GESTION DE PROCESOS Sistemas Operativosadriel91
 
Entrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosEntrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosKarina Rivra
 
Fase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónFase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónNAHAMA19
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidoscarlosmax10
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosJosé Antonio Sandoval Acosta
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 
Sistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosSistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosGuillermo Chirinos
 
Estrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasEstrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasmaricelaguilar
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clasesRamiro Estigarribia Canese
 

La actualidad más candente (20)

Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Diseño de entradas para sistemas de información
Diseño de entradas para sistemas de informaciónDiseño de entradas para sistemas de información
Diseño de entradas para sistemas de información
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
 
Estándares, Modelos y Normas Internacionales de Redes
Estándares, Modelos y Normas Internacionales de RedesEstándares, Modelos y Normas Internacionales de Redes
Estándares, Modelos y Normas Internacionales de Redes
 
Capa de aplicación
Capa de aplicaciónCapa de aplicación
Capa de aplicación
 
GESTION DE PROCESOS Sistemas Operativos
GESTION DE PROCESOS Sistemas OperativosGESTION DE PROCESOS Sistemas Operativos
GESTION DE PROCESOS Sistemas Operativos
 
Entrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosEntrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas Operativos
 
Gestores de bases de datos cuadros comparativos
Gestores de bases de datos cuadros comparativosGestores de bases de datos cuadros comparativos
Gestores de bases de datos cuadros comparativos
 
Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
 
Fase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónFase de implementación de sistemas de información
Fase de implementación de sistemas de información
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
Sistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosSistema De Gestión De Base De Datos
Sistema De Gestión De Base De Datos
 
Modelamiento software
Modelamiento softwareModelamiento software
Modelamiento software
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Estrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasEstrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemas
 
7.modelado de los requerimientos escenarios y clases
7.modelado de los requerimientos  escenarios y clases7.modelado de los requerimientos  escenarios y clases
7.modelado de los requerimientos escenarios y clases
 

Destacado

Operadores en el lenguaje sql
Operadores en el lenguaje sqlOperadores en el lenguaje sql
Operadores en el lenguaje sqlEdgar Morales
 
Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Ronald Huere Arias
 
Codigo para crear la base de datos
Codigo para crear la base de datosCodigo para crear la base de datos
Codigo para crear la base de datosAlvaro Cardona
 
Introducción a la Ingeniria del Software
Introducción a la Ingeniria del SoftwareIntroducción a la Ingeniria del Software
Introducción a la Ingeniria del SoftwareEdit Lopez Veloz
 
Tipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServerTipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServerjcalvopa
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQLAngel Vazquez
 
Tipos de datos en sql
Tipos de datos en sqlTipos de datos en sql
Tipos de datos en sqlIker Garcia
 
Diseño y programación de bases de datos con sql server 2008
Diseño y programación de bases de datos con sql server 2008 Diseño y programación de bases de datos con sql server 2008
Diseño y programación de bases de datos con sql server 2008 Israel Hernandez
 
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...Guillermo Taylor
 
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1Guillermo Taylor
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidosTensor
 
SQL Server - Como se Almacenan los Datos
SQL Server - Como se Almacenan los DatosSQL Server - Como se Almacenan los Datos
SQL Server - Como se Almacenan los Datosbrobelo
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerJoseph Lopez
 

Destacado (20)

Operadores en el lenguaje sql
Operadores en el lenguaje sqlOperadores en el lenguaje sql
Operadores en el lenguaje sql
 
Sql Server
Sql ServerSql Server
Sql Server
 
Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)Administración de bases de datos con sql server 2008 (ejemplo)
Administración de bases de datos con sql server 2008 (ejemplo)
 
Codigo para crear la base de datos
Codigo para crear la base de datosCodigo para crear la base de datos
Codigo para crear la base de datos
 
Introducción a la Ingeniria del Software
Introducción a la Ingeniria del SoftwareIntroducción a la Ingeniria del Software
Introducción a la Ingeniria del Software
 
Tipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServerTipos de datos. Ejercicios en SQLServer
Tipos de datos. Ejercicios en SQLServer
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQL
 
Tipos de datos en sql
Tipos de datos en sqlTipos de datos en sql
Tipos de datos en sql
 
Diapositivas de sql server 2012
Diapositivas de sql server 2012Diapositivas de sql server 2012
Diapositivas de sql server 2012
 
Introducción a sql server
Introducción a sql serverIntroducción a sql server
Introducción a sql server
 
Diseño y programación de bases de datos con sql server 2008
Diseño y programación de bases de datos con sql server 2008 Diseño y programación de bases de datos con sql server 2008
Diseño y programación de bases de datos con sql server 2008
 
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...
Analytics SaaS - Power BI & Power BI Desktop: Generalidades, particularidades...
 
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1
SQL Server 2012 para No DBAs - Aspectos esenciales de SQL Server, parte 1
 
Diapositivas sql.
Diapositivas sql.Diapositivas sql.
Diapositivas sql.
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
SQL Server - Como se Almacenan los Datos
SQL Server - Como se Almacenan los DatosSQL Server - Como se Almacenan los Datos
SQL Server - Como se Almacenan los Datos
 
Replicación con sql server
Replicación con sql serverReplicación con sql server
Replicación con sql server
 
Funciones de bd
Funciones de bdFunciones de bd
Funciones de bd
 
Sql
SqlSql
Sql
 
Entendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL ServerEntendiendo el sistema de almacenamiento de datos y SQL Server
Entendiendo el sistema de almacenamiento de datos y SQL Server
 

Similar a sql server (20)

Bases de datos
Bases de datosBases de datos
Bases de datos
 
Que es una base de datos
Que es una base de datosQue es una base de datos
Que es una base de datos
 
Base de Datos - Daniela Monsalve
Base de Datos - Daniela MonsalveBase de Datos - Daniela Monsalve
Base de Datos - Daniela Monsalve
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Trabajo de informatica 2
Trabajo de informatica 2Trabajo de informatica 2
Trabajo de informatica 2
 
Base de datos.
Base de datos.Base de datos.
Base de datos.
 
Basesdedatos smbd final
Basesdedatos smbd finalBasesdedatos smbd final
Basesdedatos smbd final
 
Actividad 4 presentacion escobar
Actividad 4 presentacion escobarActividad 4 presentacion escobar
Actividad 4 presentacion escobar
 
Bases de datos Actuales
Bases de datos ActualesBases de datos Actuales
Bases de datos Actuales
 
Conceptos y motores
Conceptos y motoresConceptos y motores
Conceptos y motores
 
Ensayo cientifico
Ensayo cientificoEnsayo cientifico
Ensayo cientifico
 
Dbms Existentes
Dbms ExistentesDbms Existentes
Dbms Existentes
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Continuacion Tallere.
Continuacion Tallere.Continuacion Tallere.
Continuacion Tallere.
 
Modulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddlModulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddl
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
base de datos
base de datos base de datos
base de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Características de las 5 Base de Datos más importantes
Características de las 5 Base de Datos más importantesCaracterísticas de las 5 Base de Datos más importantes
Características de las 5 Base de Datos más importantes
 

Último

CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxChristopherOlave2
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 

Último (20)

CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptx
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 

sql server

  • 1. 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Ù
  • 2. 2 INDICE 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 Server……………………………………………………………………………………..10 2.1.4. Características……………………………………………………………………………………………………..11 2.1.5. Ventaja SQL Server…………………………………………………………………………………………….14 2.1.6. Desventajas SQL Server…………………………………………………………………………………….14 2.2.Modelamiento de Base de Datos en SQL Server……………………………….14 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 – SQL………………………………………………………………………………………..37 2.4.1. Definición de Transact - SQL…………………………………………………………………………..37 2.4.2. Sintaxis…………………………………………………………………………………………………………………..38 2.4.3. Ejercicios de Lenguaje T – SQL………………………………………………………………………..39 3. CONCLUSIONES BIBLIOGRAFÍA
  • 3. 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 administrativa y académica, cuyas condiciones han favorecido superar nuestras limitaciones y asimilar nuevas experiencias académicas y en el futuro ser profesionales.
  • 4. 4 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 profesionales en el futuro.
  • 5. 5 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 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.
  • 6. 6 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. 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.
  • 7. 7 1.2. Justificaciónde 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 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. 8
  • 9. 9 2. MARCO TEÓRICO 2.1. Gestor De Base De Datos MicrosoftSQL 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. 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
  • 10. 10 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 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
  • 11. 11 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  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
  • 12. 12 • 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. • 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
  • 13. 13 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:  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.
  • 14. 14  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.  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.DesventajasSQL 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
  • 15. 15 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 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
  • 16. 16 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 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:
  • 17. 17 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 ...] [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:
  • 18. 18 SELECT PNAME, PRICE FROM PART WHERE PRICE > 10; En este caso el resultado es: PNAME | PRICE ------------+-------- Cerrojos | 15 Levas | 25 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
  • 19. 19 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. 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). SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO;
  • 20. 20 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 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: Si queremos conocer cuántos artículos se recogen en la tabla PART, utilizaremos la instrucción: 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 AVG_PRICE ----------- 14.5 SELECT COUNT(PNO) FROM PART;
  • 21. 21 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 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. 22 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. 23 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. 24 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 FROM SUPPLIER S
  • 25. 25 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:
  • 26. 26 SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris 3 | Adams | Vienna 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 CREATE TABLE SUPPLIER (SNO INTEGER, SNAME VARCHAR(20), CITY VARCHAR(20));
  • 27. 27 A continuación sigue una lista de algunos tipos de datos soportados por SQL:  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. 28 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 ): CREATE INDEX I ON SUPPLIER (SNAME); CREATE VIEW view_name AS select_stmt
  • 29. 29 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. 30 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. 31 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 UPDATE PART SET PRICE = 15 WHERE PNAME = 'Tornillos';
  • 32. 32 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.Ejerciciosde 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 Tipode datos Nulos Descripción Idpais char(3) No NULL Identificador de país. Clave primaria Nombre Pais Varchar(40) No NULL Nombre del país.  Tabla Categorías
  • 33. 33 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 NombreCateg oria 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 Tipode 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 Tipode datos Nulos Descripción
  • 34. 34 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 Tipode 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 PrecioUnida d decimal(10, 2) No NULL Precio por unidad del producto UniEnExiste ncia smallint No NULL Unidades en existencia o stock del producto
  • 35. 35 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 Tipode datos Nulos Descripción IdCargo Int No NULL Identificador de cargo. Clave primaria Descargo varchar(3 0) 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 Tipode 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. 36 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 Tipode 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 FechaEntreg a Datetime No NULL Fecha de entrega del pedido FechaEnvio Datetime No NULL Fecha de envío del pedido
  • 37. 37 enviopedido char(1) No NULL Indica si el pedido ha sido o no entregado Destinatari o varchar(60) No NULL Nombre del destinatario Dirdestinat ario 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 IdProduct o Int No NULL Identificador del producto. Clave externa de producto PrecioUni dad 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. 38  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. 39 2.4.3.Ejerciciosde Lenguaje T – SQL 1) Usar GROUP BY con una expresión En 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 BY En 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 HAVING En 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 menos. En el segundo ejemplo se muestra una cláusula HAVING sin funciones de agregado.
  • 40. 40 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 SELECT ProductID FROM Sales.SalesOrderDetail WHERE UnitPrice < 25.00 GROUP BY ProductID
  • 41. 41 HAVING AVG(OrderQty) > 5 ORDER BY ProductID; GO 5) Usar HAVING con SUM y AVG En 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 sugerenciadeloptimizadorINDEX En 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)) JOIN Person.Person AS pp on e.BusinessEntityID = pp.BusinessEntityID WHERE LastName = 'Johnson'; GO
  • 42. 42 -- 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 OPTIONy las sugerenciasGROUP 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 sugerenciade 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 SELECT BusinessEntityID, JobTitle, HireDate, VacationHours, SickLeaveHours FROM HumanResources.Employee AS e2 OPTION (MERGE UNION); GO
  • 43. 43 9) Usar una instrucción UNION simple En 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. 44 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.