Está en la página 1de 48

Docente:

Ing. Francisco Rodrguez


Base de Datos
BASE
DATOS
Resultados
Requerimientos
Internet
UNIVERSIDAD NACIONAL DE TRUJILLO
ESCUELA DE ING. INDUSTRIAL
Base de Datos
Tema 6:
El Lenguaje Estndar SQL
Temario:
Introduccin
Sublenguaje de Definicin de Datos
Sublenguaje de Manipulacin de Datos
Introduccin I
SQL: Structured Query Language
1 Versin: SEQUEL (Structured English QUEry
Language) para SYSTEM R
Actualmente: lenguaje de bases de datos relacional
estndar
Primeras versiones ANSI en 1986 y 1989 (SQL 89)
SQL-2 SQL 92 (1992). Desarrollado por el comit
tcnico NCITS H2
SQL-3 (1999) SQL-4 (2004)
Utiliza una mezcla de estructuras del lgebra relacional
y del clculo relacional
Introduccin I
Caractersticas ms importantes del lenguaje:
Estructuras de datos simples
Operadores potentes
Periodos de aprendizaje inicial cortos
Mejora de la independencia de datos
Modo de uso dual (interactivo o inmerso)
Optimizacin
Introduccin II
Las sentencias SQL pueden dividirse en tres tipos:
Sublenguaje de definicin de datos (DDL): proporciona
rdenes para definir esquemas de relacin, eliminar
relaciones, crear ndices y modificar esquemas de
relacin
Sublenguaje de manipulacin de datos (DML):
Sublenguaje de control de datos (DCL): incluye
rdenes que permiten especificar controles de
seguridad a los datos almacenados como
especificacin de privilegios de acceso y control de
concurrencia.
Lenguaje procedural (PL) para la creacin de
procedimientos almacenados
Introduccin III
Sublenguaje de Definicin de Datos
Definicin de una relacin:
CREATE TABLE R(A1 D1, A2 D2, ..., An Dn)
donde R: nombre de la relacin
Ai: nombre de un atributo del esquema de relacin
Di: tipo de datos de los valores en el dominio del atributo Ai
La especificacin de un esquema de relacin tambin puede incluir:
el conjunto de ndices que se va a mantener para cada relacin
la informacin de seguridad y autorizacin para cada relacin
ciertos lmites de integridad
la estructura fsica de almacenamiento de cada relacin
Eliminacin de una relacin: DROP TABLE R
Adicin de nuevos atributos a una relacin:ALTER TABLE R ADD A D
Creacin de tablas
Tipos de Datos
Carcter: char(n), varchar(n)
Numrico: integer, float, decimal(n,m)
Abstracto: date, money
Condiciones de integridad para columnas (restriccion_columna)
:
UNIQUE
PRIMARY KEY
REFERENCES tabla [( columna )] [ON DELETE opc] [ON
UPDATE opc]
CHECK ( expresin_booleana )
Condiciones de integridad para tablas (restriccion_tabla) :
UNIQUE ( columna { , columna } )
PRIMARY KEY ( columna { , columna } )
FOREIGN KEY ( columna { , columna } )
REFERENCES tabla [( columna { , columna } )]
[ON DELETE opcion] [ON UPDATE opcion]
CHECK ( expresin_booleana )
Sublenguaje de Definicin de Datos
CREATE TABLE Banco (
banco_id int NOT NULL,
razonSocial varchar(20) NOT NULL
)
go
ALTER TABLE Banco
ADD PRIMARY KEY (banco_id)
go
CREATE TABLE Ciudad (
ciudad_id int NOT NULL,
nombre varchar(20) NOT NULL
)
go
ALTER TABLE Ciudad
ADD PRIMARY KEY (ciudad_id)
go
Sublenguaje de Manipulacin de Datos
Permite acceder a la informacin contenida en la base de
datos para su consulta y actualizacin, a travs de sus
cuatro verbos de manipulacin: SELECT, INSERT,
UPDATE y DELETE
La estructura bsica de una consulta SQL
Usa una mezcla de estructuras del lgebra relacional y
del clculo relacional
Consta de tres clusulas:
SELECT: corresponde a la operacin de proyeccin del
lgebra relacional. Se utiliza para listar los atributos que
se desean en el resultado de una consulta
Sublenguaje de Manipulacin de Datos
SELECT: corresponde a la operacin de proyeccin del
lgebra relacional. Se utiliza para listar los atributos que
se desean en el resultado de una consulta
La lista de atributos puede sustituirse por * para
seleccionar todos los atributos de todas las relaciones
que aparecen en la clusula from
FROM: corresponde a la operacin de producto
cartesiano del lgebra relacional. Lista las relaciones que
se van a examinar en la evaluacin de la expresin
WHERE: corresponde al predicado de seleccin del
lgebra relacional. Consta de un predicado que incluye
atributos de las relaciones que aparecen en la clusula
from
Sublenguaje de Manipulacin de Datos
SQL: lenguaje relacionalmente completo y ms
poderoso que el lgebra relacional (posee
capacidades no incluidas en los lenguajes formales:
ordenacin, funciones de agregacin, etc..)
Una expresin SQL se puede convertir en una
expresin equivalente de forma que pueda
procesarse mas eficientemente (Optimizacin)
Sublenguaje de Manipulacin de Datos
1. Condiciones o criterios
Por medio de ciertos modificadores, llamados clusulas, se consigue
generar criterios con el fin de definir los datos que se desea seleccionar
o manipular
Sublenguaje de Manipulacin de Datos
2. Operadores Lgicos
Sublenguaje de Manipulacin de Datos
3 Operadores de Comparacin
Sublenguaje de Manipulacin de Datos
4 Funciones de Agregado
Las funciones de agregado se usan dentro de una clusula
SELECT en grupos de registros para devolver un nico valor
que se aplica a un grupo de registros
Sublenguaje de Manipulacin de Datos
Consultas de Seleccin (SELECT)
Consultas de seleccin bsicas
La sintaxis ms sencilla de una consulta de seleccin es la
siguiente:
SELECT Campos FROM Tabla
Donde campos es la lista de campos que se deseen
recuperar y tabla es el origen de los mismos. Por ejemplo,
la consulta
SELECT Nombre, Telefono FROM Clientes;
devuelve una tabla temporal con los campos nombre y
telfono de la tabla clientes
Consultas de Seleccin (SELECT)
Ordenar los registros (ORDER BY)
Adicionalmente se puede especificar el orden en que se
desean recuperar los registros de las tablas mediante la
clusula ORDER BY Lista-Campos. Donde Lista-campos
representa los campos a ordenar. Por ejemplo, la consulta
SELECT CodigoPostal, Nombre, Telefono FROM Clientes
ORDER BY Nombre
Consultas de Seleccin (SELECT)
Ordenar los registros (ORDER BY)
Se pueden ordenar los registros por ms de un campo. Por
ejemplo:
SELECT CodigoPostal, Nombre, Telefono FROM Clientes
ORDER BY CodigoPostal, Nombre
Incluso se puede especificar el orden de los registros:
ascendente mediante la clusula ASC (valor por defecto) o
descendente DESC. Por ejemplo:
SELECT CodigoPostal, Nombre, Telefono FROM Clientes
ORDER BY CodigoPostal DESC , Nombre ASC
Consultas de Seleccin (SELECT)
Consultas con Predicado (ALL, TOP, DISTINCT)
En cuanto al conjunto de registros seleccionados, estos
modificadores, que se incluyen entre SELECT y el primer nombre
del campo a recuperar, provocan las siguientes acciones:
Consultas de Seleccin (SELECT)
ALL / *
Es el valor por defecto. El Motor de base de datos
selecciona todos los registros que cumplen las condiciones
de la instruccin SQL.
SELECT ALL FROM Empleados
SELECT * FROM Empleados
Consultas de Seleccin (SELECT)
TOP
Devuelve un cierto nmero de registros que corresponden
al principio o al final de un rango especificado por una
clusula ORDER BY.
SELECT TOP 25 Nombre, Apellido FROM Estudiantes
ORDER BY Nota DESC
Supongamos que, en lugar de los 25 primeros estudiantes,
deseamos el 10 por ciento del curso:
SELECT TOP 10 PERCENT Nombre, Apellido FROM
Estudiantes ORDER BY Nota DESC
Consultas de Seleccin (SELECT)
DISTINCT
Omite los registros que contienen datos duplicados en
los campos seleccionados.
SELECT DISTINCT Apellido FROM Empleados;
Con otras palabras, el predicado DISTINCT devuelve
aquellos registros cuyos campos indicados en la
clusula SELECT posean un contenido diferente.
Consultas de Seleccin (SELECT)
DISTINCTROW
Devuelve los registros diferentes de una tabla; y, a
diferencia del predicado anterior que slo se fijaba en el
contenido de los campos seleccionados, ste lo hace
en el contenido del registro completo
SELECT DISTINCTROW Apellido FROM Empleados
Consultas de Seleccin (SELECT)
Alias (AS)
En determinadas circunstancias es necesario asignar
un nombre nuevo a alguna columna determinada de un
conjunto de registros devuelto por una consulta.
SELECT DISTINCTROW Apellido AS Empleado FROM
Empleados;
Criterios de Seleccin
Operadores Lgicos.
Algunos operadores lgicos soportados por SQL son: AND, OR y
NOT. Los dos primeros poseen la sintaxis:
<expresin1> operador <expresin2>
En donde expresin1 y expresin2 son las condiciones a evaluar,
el resultado de la operacin vara en funcin del operador lgico
Por ejemplo, considrense las consultas:
SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50
SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'
SELECT * FROM Empleados WHERE (Sueldo > 100 AND
Sueldo < 500) OR (Provincia = Trujillo' AND Estado = 'Casado')
Intervalos de Valores
Intervalos de Valores (BETWEEN)
Para indicar que deseamos recuperar los registros segn el
intervalo de valores de un campo emplearemos el operador
BETWEEN cuya sintaxis es:
campo [Not] Between valor1 And valor2 (la condicin Not es
opcional)
Por ejemplo:
SELECT * FROM Pedidos WHERE CodPostal BETWEEN
28000 AND 28999;
SELECT * FROM Pedidos WHERE CodPostal NOT BETWEEN
28000 AND 28999;
El Operador Like
El Operador LIKE
Se utiliza para comparar una expresin de cadena con un modelo
en una expresin SQL. Su sintaxis es:
expresin LIKE modelo
Por ejemplo, si se introduce LIKE C% en una consulta SQL, la
consulta devuelve todos los valores de campo que comiencen por
la letra C.
El ejemplo siguiente devuelve los datos que comienzan con la
letra P seguido de cualquier letra entre A y F y de tres dgitos:
LIKE 'P[A-F]___'
Este ejemplo devuelve los campos cuyo contenido empiece con
una letra de la A a la D seguidas de cualquier cadena.
LIKE '[A-D]*'
El Operador IN
El Operador IN
Este operador devuelve los registros cuyo campo indicado
coincide con alguno de los dados en una lista. Su sintaxis es:
expresin [NOT] IN (valor1, valor2, . . .)
Por ejemplo:
SELECT * FROM Pedidos WHERE Provincia IN (Trujillo',
'Chepn', Vir')
El Operador IN
El cuantificador existencial (EXISTS)
La expresin siguiente:
WHERE EXISTS (SELECT . FROM ....)
es verdadera si y slo si el resultado de evaluar la consulta
especificada por
SELECT . FROM .... no es el conjunto vaco.
SELECT NOMBREPROPIETARIO, APELLIDOPROPIETARIO
FROM PROPIETARIOS_ANTIGEDADES
WHERE EXISTS (SELECT * FROM ANTIGEDADES
WHERE PRODUCTO = 'Silla')
La clusula Where
La clusula WHERE
Como hemos visto, la clusula WHERE se usa para
determinar qu registros de las tablas enumeradas en la
clusula FROM aparecern en los resultados de la instruccin
SELECT. A continuacin se listan algunos ejemplos:
SELECT Apellidos, Salario FROM Empleados WHERE Salario > 2100
SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos Like
'S%'
SELECT Apellidos, Salario FROM Empleados WHERE Salario Between
200 And 300
SELECT Apellidos, Salario FROM Empl WHERE Apellidos Between 'Lao
And 'Torres'
SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido
Between 01/01/2008 And 30/06/2008
Agrupamiento de Registros y funciones
agregadas
GROUP BY
Combina los registros con valores idnticos, en la lista de
campos especificados, en un nico registro. Su sintaxis es:
SELECTcampos FROM tabla WHERE criterio GROUP BY
campos del grupo
GROUP BY es opcional. Los valores de resumen se omiten si no
existe una funcin SQL agregada en la instruccin SELECT. Se
utiliza la clusula WHERE para excluir aquellas filas que no
desea agrupar, y la clusula HAVING para filtrar los registros una
vez agrupados.
SELECT Id_Familia, Sum(Stock)FROM Productos GROUP BY
Id_Familia
Lenguaje de Manipulacin de Datos
Agrupamiento de Registros y funciones
agregadas
AVG
Calcula la media aritmtica de un conjunto de
valores contenidos en un campo especificado
de una consulta. Su sintaxis es: Avg(expr)
SELECT Avg(Gastos) AS Promedio FROM
Pedidos WHERE Gastos > 100
Agrupamiento de Registros y funciones
agregadas
Count
Calcula el nmero de registros devueltos por una consulta.
Su sintaxis es la siguiente: Count(expr) .
Donde expr contiene el nombre del campo que desea
contar. Los operandos de expr pueden incluir el nombre
de un campo de una tabla, una constante o una funcin (la
cual puede ser intrnseca o definida por el usuario pero no
otras de las funciones agregadas de SQL). Puede contar
cualquier tipo de datos incluso texto.
SELECT Count(*) AS Total FROM Pedidos
Agrupamiento de Registros y funciones
agregadas
Max, Min
Devuelven el mnimo o el mximo de un conjunto de valores
contenidos en un campo especifico de una consulta. Su
sintaxis es:
Min(expr)
Max(expr)
Donde expr es el campo sobre el que se desea realizar el
clculo. Expr puede incluir el nombre de un campo de una
tabla, una constante o una funcin
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais =
Per'
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais =
Per'
Agrupamiento de Registros y funciones
agregadas
Sum
Devuelve la suma del conjunto de valores contenido en un
campo especfico de una consulta. Su sintaxis es:
Sum(expr)
Donde expr representa el nombre del campo que contiene
los datos que desean sumarse o una expresin que
realiza un clculo utilizando los datos de dichos campos.
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM
DetallePedido;
Lenguaje de Manipulacin de Datos
Lenguaje de Manipulacin de Datos
LMD: Insertar Registros
Ejemplo
Insert into Articulo(codigo,descripcion,stock,pcompra,pventa)
Values (102,Yogurt Gloria 1 litro, 344,3.5,4.4)
LMD: Insertar Registros
LMD: Borrado de Registros
LMD: Modificacin de Registros
Ejercicio 1
Una empresa de plaza posee un sistema para manejar
los proyectos que realiza y el personal asignado a los
mismos. Este sistema usa las siguientes tablas:
PROYECTOS (cod_proy, nom_proy, fecha_inicio, tipo)
PERSONAL (cod_func, nombre, fecha_ingreso)
TAREAS (cod_tarea, descripcin, tipo)
ASIGNACION (cod_func, cod_proy, cod_tarea, fecha,
cant_horas)
Mediante el transact SQL resolver:
Ejercicio 1
Se pide:
1. Insertar 2 registros en cada tabla.
2. Obtener ordenados alfabticamente los nombres de todo el
personal de aquellos que ingresaron el ao 2012.
3. Obtener (de dos maneras distintas) los datos de los proyectos
que se realizaron el mes de Junio del 2013.
4. Obtener el nmero total de proyectos por tipo.
5. Obtener el nmero total de personal ingresaron entre los aos
2010 al 2013
6. Obtener la suma total de horas que se trabajaron el ao 2012
7. Obtener la suma de horas del proyecto de cdigo P07
Modificar el nombre del personal de cdigo 345
8. Obtener la suma de horas por proyecto
9. Obtener el nombre del proyecto que tiene la fecha de inicio mas
reciente.
FIN