Base de Datosuntbdatos.weebly.com/uploads/5/5/5/0/5550176/bdatos_tema6_2016.… · ... lenguaje de...

48
Docente: Ing. Francisco Rodríguez Base de Datos BASE DATOS Resultados Requerimientos Internet UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING. INDUSTRIAL

Transcript of Base de Datosuntbdatos.weebly.com/uploads/5/5/5/0/5550176/bdatos_tema6_2016.… · ... lenguaje de...

Docente:

Ing. Francisco Rodríguez

Base de Datos

BASE

DATOS

Resultados

RequerimientosInternet

UNIVERSIDAD NACIONAL DE TRUJILLO

ESCUELA DE ING. INDUSTRIAL

Base de Datos

Tema 6:

El Lenguaje Estándar SQL

Temario:

• Introducción

• Sublenguaje de Definición de Datos

• Sublenguaje de Manipulación de Datos

Introducción I

• SQL: Structured Query Language

– 1ª Versión: SEQUEL (Structured English QUEry Language) para SYSTEM R

– Actualmente: lenguaje de bases de datos relacional estándar

• Primeras versiones ANSI en 1986 y 1989 (SQL 89)

• SQL-2 ó SQL 92 (1992). Desarrollado por el comité técnico NCITS H2

• SQL-3 (1999) SQL-4 (2004)

– Utiliza una mezcla de estructuras del álgebra relacional y del cálculo relacional

Introducción I

• Características más 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)

– Optimización

Introducción II

• Las sentencias SQL pueden dividirse en tres tipos:

– Sublenguaje de definición de datos (DDL): proporciona órdenes para definir esquemas de relación, eliminar relaciones, crear índices y modificar esquemas de relación

– Sublenguaje de manipulación de datos (DML):

– Sublenguaje de control de datos (DCL): incluye órdenes que permiten especificar controles de seguridad a los datos almacenados como especificación de privilegios de acceso y control de concurrencia.

– Lenguaje procedural (PL) para la creación de procedimientos almacenados

Introducción III

Sublenguaje de Definición de Datos

Definición de una relación:

CREATE TABLE R(A1 D1, A2 D2, ..., An Dn)

donde R: nombre de la relación

Ai: nombre de un atributo del esquema de relación

Di: tipo de datos de los valores en el dominio del atributo Ai

La especificación de un esquema de relación también puede incluir:

el conjunto de índices que se va a mantener para cada relación

la información de seguridad y autorización para cada relación

ciertos límites de integridad

la estructura física de almacenamiento de cada relación

Eliminación de una relación: DROP TABLE R

Adición de nuevos atributos a una relación:ALTER TABLE R ADD A D

Creación de tablas

• Tipos de Datos

– Carácter: char(n), varchar(n)

– Numérico: 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 ( expresión_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 ( expresión_booleana )

Sublenguaje de Definición 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 Manipulación de Datos

• Permite acceder a la información contenida en la base de datos para su consulta y actualización, a través de sus cuatro verbos de manipulación: SELECT, INSERT, UPDATE y DELETE

• La estructura básica de una consulta SQL

–Usa una mezcla de estructuras del álgebra relacional y del cálculo relacional

–Consta de tres cláusulas:

–SELECT: corresponde a la operación de proyección del álgebra relacional. Se utiliza para listar los atributos que se desean en el resultado de una consulta

Sublenguaje de Manipulación de Datos

–SELECT: corresponde a la operación de proyección 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 cláusula from

–FROM: corresponde a la operación de producto

cartesiano del álgebra relacional. Lista las relaciones que

se van a examinar en la evaluación de la expresión

–WHERE: corresponde al predicado de selección del

álgebra relacional. Consta de un predicado que incluye

atributos de las relaciones que aparecen en la cláusula

from

Sublenguaje de Manipulación de Datos

• SQL: lenguaje relacionalmente completo y más

poderoso que el álgebra relacional (posee

capacidades no incluidas en los lenguajes formales:

ordenación, funciones de agregación, etc..)

• Una expresión SQL se puede convertir en una

expresión equivalente de forma que pueda

procesarse mas eficientemente (Optimización)

Sublenguaje de Manipulación de Datos

1. Condiciones o criterios

Por medio de ciertos modificadores, llamados cláusulas, se consigue

generar criterios con el fin de definir los datos que se desea seleccionar

o manipular

Sublenguaje de Manipulación de Datos

2. Operadores Lógicos

Sublenguaje de Manipulación de Datos

3 Operadores de Comparación

Sublenguaje de Manipulación de Datos

4 Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula

SELECT en grupos de registros para devolver un único valor

que se aplica a un grupo de registros

Sublenguaje de Manipulación de Datos

Consultas de Selección (SELECT)

Consultas de selección básicasLa sintaxis más sencilla de una consulta de selección es la siguiente:

SELECT Campos FROM TablaDonde 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 teléfono de la tabla clientes

Consultas de Selección (SELECT)

Ordenar los registros (ORDER BY)

Adicionalmente se puede especificar el orden en que se

desean recuperar los registros de las tablas mediante la

cláusula 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 Selección (SELECT)

Ordenar los registros (ORDER BY)

Se pueden ordenar los registros por más 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 cláusula ASC (valor por defecto) o descendente DESC. Por ejemplo:

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC

Consultas de Selección (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 Selección (SELECT)

ALL / *

Es el valor por defecto. El Motor de base de datos

selecciona todos los registros que cumplen las condiciones

de la instrucción SQL.

SELECT ALL FROM Empleados

SELECT * FROM Empleados

Consultas de Selección (SELECT)

TOP

Devuelve un cierto número de registros que corresponden al principio o al final de un rango especificado por una cláusula 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 Selección (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 cláusula SELECT posean un contenido diferente.

Consultas de Selección (SELECT)

DISTINCTROW

Devuelve los registros diferentes de una tabla; y, a diferencia del predicado anterior que sólo 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 Selección (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 Selección

Operadores Lógicos.Algunos operadores lógicos soportados por SQL son: AND, OR y NOT. Los dos primeros poseen la sintaxis:

<expresión1> operador <expresión2>

En donde expresión1 y expresión2 son las condiciones a evaluar, el resultado de la operación varía en función del operador lógico

Por ejemplo, considérense 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 según el intervalo de valores de un campo emplearemos el operador BETWEEN cuya sintaxis es:

campo [Not] Between valor1 And valor2 (la condición 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 LIKESe utiliza para comparar una expresión de cadena con un modelo en una expresión SQL. Su sintaxis es:

expresión 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 dígitos:

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:

expresión [NOT] IN (valor1, valor2, . . .)

Por ejemplo:

SELECT * FROM Pedidos WHERE Provincia IN (‘Trujillo', 'Chepén', ‘Virú')

El Operador IN

El cuantificador existencial (EXISTS)

La expresión siguiente:

WHERE EXISTS (SELECT …. FROM ....)

es verdadera si y sólo si el resultado de evaluar la consulta especificada por

SELECT …. FROM .... no es el conjunto vacío.

SELECT NOMBREPROPIETARIO, APELLIDOPROPIETARIO FROM PROPIETARIOS_ANTIGÜEDADES WHERE EXISTS (SELECT * FROM ANTIGÜEDADES WHERE PRODUCTO = 'Silla')

La cláusula Where

La cláusula WHEREComo hemos visto, la cláusula WHERE se usa para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. A continuación 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 idénticos, 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 función SQL agregada en la instrucción SELECT. Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados.

SELECT Id_Familia, Sum(Stock)FROM Productos GROUP BY Id_Familia

Lenguaje de Manipulación de Datos

Agrupamiento de Registros y funciones

agregadas

AVG

Calcula la media aritmética 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 número 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 función (la cual puede ser intrínseca 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 mínimo o el máximo 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 cálculo. Expr puede incluir el nombre de un campo de una tabla, una constante o una función

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

SumDevuelve la suma del conjunto de valores contenido en un campo específico de una consulta. Su sintaxis es:

Sum(expr)Donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos.

SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;

Lenguaje de Manipulación de Datos

Lenguaje de Manipulación 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: Modificación 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, descripción, 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 alfabéticamente los nombres de todo el personal de aquellos que ingresaron el año 2015.

3. Obtener (de dos maneras distintas) los datos de los proyectos que se realizaron el mes de Junio del 2016.

4. Obtener el número total de proyectos por tipo.

5. Obtener el número total de personal ingresaron entre los años 2013 al 2015

6. Obtener la suma total de horas que se trabajaron el año 2015

7. Obtener la suma de horas del proyecto de código P07

8. Modificar el nombre del personal de código 345

9. Obtener la suma de horas por proyecto

10. Obtener el nombre del proyecto que tiene la fecha de inicio mas reciente.

FIN