Escolar Documentos
Profissional Documentos
Cultura Documentos
Base de Datos
18
Tablas. Las tablas se pueden definir como una coleccin de registros. El diseo de
tablas consiste en el diseo de campos necesarios para almacenar correctamente la
informacin.
Consultas. Operaciones que pueden realizarse sobre los datos de las tablas:
seleccin de datos, insercin, modificacin, eliminacin, entre otros.
Formularios. Pantallas que se presentan a los usuarios de una BD para que tengan
un acceso amigable a los datos y operaciones.
Base de Datos
19
El archivo de una Base de Datos Access tiene la extensin MDB (Microsoft DataBase).
Adems de este archivo, puede existir otro con la extensin LDB. Este ltimo contiene
informacin de bloqueo de registros, que permite el acceso seguro de mltiples usuarios
de forma concurrente. El archivo de la BD permanece abierto mientras se trabaja con la
BD, y nicamente se cierra cuando la BD es cerrada de forma explcita, con la opcin
correspondiente. Si por cualquier problema la BD no se cierra correctamente, sta podra
daarse.
MANEJO DE TABLAS
Introduccin
Las tablas son las estructuras que permiten almacenar los datos en la BD.
Una tabla es un conjunto de registros. Cada registro estar compuesto por una coleccin
de campos. Cada campo tendr un tipo que indica la clase de datos que puede
almacenar. Y cada tipo tendr ciertos atributos que limitan el dominio de los valores
permitidos, as como una serie de restricciones y normas.
Base de Datos
20
A manera de ilustracin, se puede tener una tabla para almacenar datos sobre los
alumnos registrados en determinada asignatura. La tabla puede denominarse Alumnos y
estar compuesta de registros con los siguientes campos:
Campo
Descripcin
Matricula
Nombre
AP
Apellido paterno
AM
Apellido materno
Edad
Edad
Parcial1
Parcial2
Practicas
Base de Datos
21
campos y sus caractersticas. En la opcin de Asistenta para Tablas (create table by using
wizard), un programa gua al usuario automticamente en la creacin de los campos de la
tabla; y la opcin Vista Hoja de Datos (create table by entering data), permite introducir los
datos directamente.
Para cada campo que se defina, se le deber asignar un nombre, un tipo y una
descripcin. Adems, para cada tipo existen una serie de atributos que permiten describir
con precisin el dominio de valores aceptados por el campo.
Base de Datos
22
Tipos de Datos
Los principales tipos de datos disponibles para las bases de datos son:
Base de Datos
23
Smbolo
Significado
(space)
Despliega un espacio
ABC
[color]
Base de Datos
24
Ejemplos:
El ejemplo, utiliza un formato personalizado para desplegar la fecha. El formato con el que
se despliega la fecha es el siguiente: Jan 1995.
Carcter
Descripcin
&
.,:;-/
Separadores
Base de Datos
25
<
>
Ejemplo:
Mascara
Ejemplo
(000)000-0000
(206) 555-0248
(000)AAA-AAAA
(206) 555-TELE
LLLL000000AAA
ROGA431009-T52
Validation Rule (regla de validacin). Una condicin que debe cumplir el dato
introducido para que sea aceptado. Por ejemplo, para un campo edad se puede obligar a
que el valor introducido est comprendido entre 18 y 65 aos con una expresin como
sigue >=18 AND <=65.
Base de Datos
26
Campo
Tipo
Descripcin
Otros atributos
Requerido, indexado sin repeticin,
Matricula
Cadena (7)
Matrcula
Base de Datos
27
Nombre
Cadena (40)
Nombre completo
requerido
AP
Cadena (25)
Apellido Paterno
requerido
AM
Cadena (25)
Apellido Materno
requerido
Edad
Numrico
Calificacin
simple
primer parcial
AND <=10
Numrico
Calificacin
simple
segundo parcial
AND <=10
Edad
Parcial1
Parcial2
Practicas
Numrico
byte
Numrico
simple
Calificacin
obtenida en las
prcticas
Introduccin de Datos
El modo de Ver Datos (view)
Antes de salir de un campo, se verifican las reglas de validacin del mismo, de manera
que no se acepta el cambio hasta que todas las reglas asociadas al campo son
cumplidas. As mismo, antes de abandonar un registro se comprobarn las reglas
asociadas al mismo, y no se grabarn los datos mientras no se cumpla alguna.
Base de Datos
28
Integridad Referencial
La integridad referencial es un sistema de reglas que utilizan la mayora de las BD
relacionales para asegurarse que los registros de tablas relacionadas sean validos y que
no se borren o cambien datos relacionados de forma accidental dando como resultado
errores de integridad.
Tipos de Relaciones
Entre dos tablas de cualquier BD relacional, puede haber dos tipos de relaciones: uno a
uno y uno a muchos.
Relacin uno a uno. Cuando un registro de una tabla slo puede estar relacionado
con un nico registro de otra tabla y viceversa.
Por ejemplo: tenemos dos tablas, una de maestros y otra de departamentos, queremos
saber que maestro es jefe de que departamento, tenemos una relacin uno a uno entre
las dos tablas, ya que un departamento tiene un slo jefe y un maestro, puede ser jefe de
un slo departamento.
Relacin uno a muchos. Cuando un registro de una tabla (tabla secundaria) slo
puede estar relacionado con un nico registro de otra tabla (tabla principal) y un registro
de la tabla principal, puede tener ms de un registro relacionado en la tabla secundaria,
en este caso se suele hacer referencia a la tabla principal como tabla padre, y a la tabla
secundaria como tabla hijo, entonces la regla se convierte en un padre puede tener
varios hijos, pero un hijo slo tiene un padre.
Por ejemplo: tenemos dos tablas, una con los datos de diferentes poblaciones y otra con
los habitantes, una poblacin puede tener ms de un habitante, pero un habitante
pertenecer a una poblacin nica. En este caso la tabla principal, ser la de poblaciones
y la tabla secundaria ser la de habitantes. Una poblacin puede tener varios habitantes,
pero un habitante pertenece a una sola poblacin. Esta relacin se representa incluyendo
en la tabla hijo una columna que corresponde con la clave principal de la tabla padre,
esta columna es lo que se denomina llave fornea (clave fornea o clave externa).
Base de Datos
29
Una llave fornea, es pues, un campo de una tabla que contiene una referencia a un
registro de otra tabla. Siguiendo el ejemplo de la tabla habitantes, se tiene una columna
poblacin que contiene el cdigo de la poblacin en la que est empadronado el
habitante, esta columna es la llave fornea de la tabla habitante, y en la tabla poblaciones,
se tiene una columna cdigo de poblacin como llave primaria.
Relacin varios a varios: Cuando un registro de una tabla puede estar relacionada con
ms de un registro de la otra tabla y viceversa, en este caso las dos tablas no pueden
estar relacionadas directamente, se tiene que aadir una tercera tabla entre las dos que
incluyan los pares de valores relacionados entre s.
Por ejemplo: se tienen dos tablas, una con los datos de clientes y otra con los artculos
que se venden en una empresa, un cliente podr realizar un pedido con varios artculos y
un artculo podr ser vendido a varios clientes.
No se puede definir entre clientes y artculos, hace falta otra tabla (por ejemplo una tabla
de pedidos) relacionada con clientes y artculos. La tabla pedidos, estar relacionada con
clientes por una relacin uno a muchos y tambin estar relacionada con artculos por una
relacin uno a muchos.
Base de Datos
30
Aparece una ventana con las tablas que estn disponibles en la BD, ah se debern
seleccionar las tablas que se desean relacionar.
Una vez seleccionadas las tablas, se debern definir los campos a relacionar:
Base de Datos
31
Empresa
Direccin
Email1
Email2
Anglica
ABC
abc@abc.com
ange@abc.com
Base de Datos
32
Vctor
XYZ
Punta Banda 32
xyz@uni.home.com
vic@uni.home.com
Usuarios
ID
Nombre
Empresa
Direccion
Anglica
ABC
abc@abc.com
Anglica
ABC
ange@abc.com
Base de Datos
33
Vctor
XYZ
Punta Banda 32
xyz@uni.home.com
Vctor
XYZ
Punta Banda 32
vic@uni.home.com
Crear tablas separadas para aquellos grupos de datos que se aplican a varios
registros.
Relacionar estas tablas mediante una llave externa. Se ha separado el campo Email
en otra tabla, de forma que sea posible introducir tantos correos como el usuario
proporcione sin tener que duplicar los dems datos del usuario. Por ltimo, ser necesario
utilizar la llave primaria para relacionar estos campos:
Usuarios
ID
Nombre
empresa
direccion_empresa
Anglica
ABC
Victor
XYZ
Punta Banda 32
Base de Datos
34
Emails
EID
relID
abc@abc.com
ange@abc.com
xyz@uni.home.com
vic@uni.home.com
Ahora, existen dos tablas separadas, donde la llave primaria en la tabla Usuarios (ID),
est relacionada con la llave externa en la tabla Emails (relID). Sin embargo todava surge
un problema, ya que al tratar de aadir nuevos empleados que pertenecen a una misma
empresa, se estara duplicando la informacin de sta (direccin y nombre). Tambin en
este caso, se corre el riesgo de introducir datos diferentes de una misma empresa.
Por lo tanto, el siguiente paso es aplicar la Tercera Forma Normal.
Tercera Forma Normal 3FN
Usuarios
Base de Datos
ID
Nombre
relEmpresaID
Angelica
Victor
35
Empresas
empID
Empresa
Direccion_empresa
ABC
XYZ
Punta Banda 32
EID
relID
abc@abc.com
ange@abc.com
xyz@uni.home.com
vic@uni.home.com
Emails
El resultado es, que ahora la llave primaria empID en la tabla Empresas est relacionada
con la llave externa relEmpresaID en la tabla Usuarios, de manera que es posible aadir
200 (o ms) usuarios a la empresa ABC, y slo aadir una vez la informacin de dicha
empresa. Como consecuencia, las tablas de Usuarios y Emails pueden crecer, sin correr
el riesgo de la duplicidad o corrupcin de datos.
Cuarta Forma Normal 4FN
La Cuarta Forma Normal se aplica cuando existe una relacin varios-a-varios entre dos
tablas y, consiste en crear una tercera tabla que relacione las llaves primarias de las dos
tablas originales, donde el resultado son dos relaciones una-a-varios. En el ejemplo
anterior no se present la necesidad de aplicar la cuarta forma normal.
Quinta Forma Normal 5FN
Existe un ltimo nivel de normalizacin que se aplica en ciertas ocasiones, an cuando en
la mayora de los casos no resulta necesario para obtener la mejor funcionalidad de la
estructura de datos. El principio de la Quinta Forma Normal sugiere que:
Base de Datos
36
La tabla original debe ser reconstruida desde las tablas resultantes en las cuales fue
separada.
Los beneficios de aplicar sta ltima regla asegurarn que no se ha creado ninguna
columna extraa en las tablas y que la estructura de las tablas que se han creado es de
tamao justo.
CONSULTAS
Introduccin
Las consultas son operaciones que se realizan sobre los datos de una BD. Estas
operaciones pueden ser de diversos tipos:
Base de Datos
37
Introduccin al SQL
Una consulta SQL est compuesta por una instruccin SQL que la define. Se trata de un
comando que puede ocupar cuanta lnea de texto se desee, terminado en (;).
SQL, como cualquier otro lenguaje, tambin cuenta con algunas palabras reservadas,
como son: SELECT, INSERT, DELETE, UPDATE, SET, WHERE, IN, DISTINCT, GROUP,
ORDER BY, etctera.
Componentes SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores, expresiones y
funciones de agregado. Estos elementos se combinan en las instrucciones para crear,
actualizar, y manipular las BD.
Comandos
Existen dos tipos de comandos SQL:
Los DLL que permiten crear y definir nuevas BD, campos e ndices.
Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la BD.
COMANDOS DLL
Comando
Descripcin
CREATE
DROP
ALTER
Base de Datos
38
COMANDOS DML
Comando
SELECT
INSERT
UPDATE
DELETE
Descripcin
Utilizado para consultar registros de la base de datos
que cumplan un criterio determinado
Utilizado para cargar lotes de datos en la base de datos
en una operacin nica
Utilizado para modificar los valores de los campos y
registros especificados
Utilizado para eliminar registros de una tabla de una
base de datos
Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que se
desean seleccionar o manipular.
Clusula
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Base de Datos
Descripcin
Se utiliza para especificar la tabla de la cual se van a
seleccionar los registros
Se utiliza para especificar las condiciones que deben
reunir los registros que se van a seleccionar
Se utiliza para separar los registros seleccionados en
grupos especficos
Se utiliza para expresar la condicin que debe satisfacer
cada grupo
Se utiliza para ordenar los registros seleccionados de
acuerdo con un orden especfico
39
Operadores Lgicos
Operador
AND
OR
NOT
Descripcin
Es el "y" lgico. Evala dos condiciones y devuelve un
valor de verdad slo si ambas son ciertas
Es el "o" lgico. Evala dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta
Negacin lgica. Devuelve el valor contrario de la
expresin
Operadores de Comparacin
Operador
Descripcin
<
Menor que
>
Mayor que
<>
Distinto de
<=
>=
Igual que
BETWEEN
LIKE
IN
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.
Base de Datos
40
Funcin
Descripcin
Utilizada para calcular el promedio de los valores de un
AVG
campo determinado
COUNT
SUM
campo determinado
Utilizada para devolver el valor ms alto de un campo
MAX
especificado
Utilizada para devolver el valor ms bajo de un campo
MIN
especificado
Esta instruccin recupera ciertos campos de los registros de una tabla que cumplen una
condicin. La clusula WHERE es opcional. Si se omite, se seleccionan todos los
registros (se supone que la condicin es siempre verdadera).
Sintaxis:
Base de Datos
41
Si nos interesan todos los campos, se puede utilizar el signo de comodn (*) para
identificar la lista completa.
Sintaxis:
Consulta
SQL
SELECT *
25 aos
FROM Alumnos
WHERE Edad>=25;
que
han
aprobado
los
dos
parciales
(Parcial1>=6)
AND
(Parcial2>=6);
Generar un listado con los nombres y
apellidos
de los
calificaciones
alumnos
y sus
Base de Datos
42
Es posible consultar, desde una BD, una tabla que pertenezca a otra BD. La clusula IN
permite especificar otra BD como origen de la tabla.
Sintaxis:
Consulta
SQL
SELECT *
FROM Alumnos
est
IN C:\colegio\registro.mdb
en
otra
BD
que
se
llama
C:\colegio\registro.mdb
Alias - AS
Se pueden generar consultas en las que aparezcan nuevos campos. Por ejemplo, si se
desea realizar una consulta en la que se muestre la nota media obtenida por los alumnos.
En tal caso se puede utilizar la sintaxis <expresin> AS <nombre campo> para cada
columna como si se tratara de un campo ms de la tabla.
Sintaxis:
Consulta
SQL
FROM Alumnos;
Base de Datos
43
SELECT Nombre & " " & AP & " " &
AM AS NombreCompleto, Matricula
FROM Alumnos;
Expresiones
Las expresiones en SQL son semejantes a las utilizadas en la mayora de los lenguajes,
entre las principales se encuentran:
Operador
Significado
Comparador con valor nulo. Indica si un valor se ha dejado en
IS NULL
IS NOT NULL
edad no se desconoce:
SELECT * FROM Alumnos WHERE Edad IS NOT NULL;
Comparador de semejanza. Permite realizar una comparacin
de cadenas utilizando caracteres comodines:
? = Un carcter cualquiera
LIKE
BETWEEN..AND
SELECT * FROM Alumnos WHERE Edad BETWEEN 18 AND
20;
Base de Datos
44
[]
Alumnos Nuevos:
SELECT * FROM [Alumnos Nuevos];
Ordenacin de Registros
SQL permite especificar que los registros seleccionados se muestren ordenados de forma
ascendente o descendente, de acuerdo a alguno o algunos de los campos seleccionados.
Para ello se dispone de la palabra reservada ORDER BY, con el siguiente formato:
Sintaxis:
Consulta
Obtener
SQL
un
listado
de
alumnos
SELECT *
FROM Alumnos
ORDER BY AP, AM, Nombre;
Base de Datos
45
SELECT *
FROM Alumnos
mejores notas
FROM Alumnos
AP, AM;
Agrupamiento de Datos
SQL permite definir consultas en las que se ofrecen registros que se obtienen como
resultado del agrupamiento de varios registros. Por ejemplo, valor promedio de un campo,
mximo, mnimo, cuenta, etctera.
Para este tipo de consultas se proporcionan los siguientes operadores, conocidos tambin
como funciones de agregado.
Operador
COUNT
(<campo>)
Significado
Nmero de registros seleccionados (excepto los que contienen
valor nulo para el campo). S <campo> es una lista de campos
(separados por un &) o *, el registro se cuenta si alguno de los
campos que intervienen es no nulo
SUM (<campo>)
AVG (<campo>)
MAX (<campo>)
Base de Datos
46
MIN (<campo>)
SELECT
COUNT/SUM/AVG/MAX/MIN
<campo>
AS
<nombre>
Consulta
SQL
FROM Alumnos;
SELECT
MAX
(Parcial1
Parcial2)/2
AS
MedMax,
MIN (Parcial1 + Parcial2)/2 AS MEdMin
FROM Alumnos;
SELECT MAX (Parcial1) AS MaxP1
FROM Alumnos
WHERE Practicas <> 0;
FROM Alumnos
parcial
WHERE Parcial1>=6;
En todas las consultas vistas hasta ahora, las funciones de agregado se aplican sobre el
conjunto total de registros de una tabla (excepto los que no cumplen la clusula WHERE
que son descartados), y el resultado de tales consultas es un nico valor.
Base de Datos
47
SQL permite crear grupos de registros sobre las cuales aplicar las funciones de agregado,
de manera que el resultado es un conjunto de registros para cada uno de los cuales se ha
calculado el valor de agregado. Los grupos se componen de varios registros que
contienen el mismo valor para un campo o conjunto de campos.
Sintaxis:
SELECT
<agregado>
AS
<nombre>
FROM
<tabla>
De esta forma, para cada valor distinto de la <lista de campos> suministrada, se calcula la
funcin de agregado correspondiente, slo con el conjunto de registros con dicho valor en
los campos (los registros que no cumplan la condicin WHERE no se toman en cuenta).
Ejemplos:
Consulta
SQL
SELECT
Cuantos
cada
FROM Alumnos
nombre
diferente
(cuntos
Nombre,
COUNT
GROUP BY Nombre;
SELECT
FROM Alumnos
el
nmero
de
alumnos
de
forma
INT
(Parcial1)
AS
(*)
AS
Nota,
descendente
El agrupamiento de filas impone limitaciones obvias sobre los campos que pueden ser
seleccionados, de manera que slo puedan obtenerse campos como resultado de una
funcin de agregado o la combinacin de campos que aparezcan en la clusula GROUP
Base de Datos
48
BY, y nunca otros campos de la tabla origen. Por ejemplo, la siguiente consulta sera
incorrecta:
La razn de que sea incorrecta es trivial: Qu nombre (de los varios posibles) se
seleccionara para cada grupo de AP?. Se debe tener en cuenta que para cada grupo
generado con GROUP BY, slo se muestra una fila como resultado de la consulta.
Filtrado de Registros de Salida
En estas consultas puede aparecer una condicin WHERE que permite descartar los
registros que no deben ser tomados en cuenta a la hora de calcular las funciones de
agregado. Sin embargo, la clusula WHERE no permite descartar registros utilizando
como condicin el resultado de la funcin de agregado.
Por ejemplo, supngase la siguiente consulta: seleccionar los nombres de alumnos para
los que haya ms de dos alumnos con el mismo nombre (3 Pedros, 4 Juanes,..).
Intuitivamente se podra pensar en la siguiente consulta:
Ejemplo:
SELECT
<agregado>
AS
<nombre>
FROM
<tabla>
Base de Datos
49
SELECT
Nombre,
COUNT
(*)
FROM
Alumnos
En otras palabras, la clusula WHERE selecciona los registros que intervienen para
calcular las funciones de agregado; mientras que la clusula HAVING, selecciona los
registros que se muestran teniendo en cuenta los resultados de las funciones de
agregado.
En todos los casos, la clusula ORDER BY puede ser incluida. Evidentemente esta
clusula afectar nicamente el orden en que se muestran los registros resultado, y no el
clculo de las funciones de agregado. Los campos por los cuales puede efectuarse la
ordenacin slo pueden ser aquellos susceptibles de ser mostrados; es decir, que los
campos admisibles en la clusula ORDER BY son los mismos que se encuentran en la
clusula SELECT: funciones de agregado y la combinacin de campos que aparezcan en
GROUP BY.
El formato de una instruccin de seleccin SQL con todas las opciones vistas hasta ahora
es la siguiente:
Sintaxis:
Base de Datos
50
Almacenes
Existencias
ID
Ciudad
Almacn
Tipo
Cantidad
Tipo
Nombre
Ensenada
100
Circuitera
Mexicali
30
TRC
Tijuana
200
Altavoz
Rosarito
50
Carcasa
10
200
100
Base de Datos
Piezas
51
Almacenes.ID
Almacenes.Ciudad
Existencias.
Existencias.Tipo
Almacn
Existencias.
Cantidad
Ensenada
100
Ensenada
30
Ensenada
200
Ensenada
50
Ensenada
10
Ensenada
200
Ensenada
100
Mexicali
100
Mexicali
30
Mexicali
200
Mexicali
50
Mexicali
10
Mexicali
200
Mexicali
100
Tijuana
100
Tijuana
30
Tijuana
200
Tijuana
50
Tijuana
10
Tijuana
200
Tijuana
100
Rosarito
100
Rosarito
30
Rosarito
200
Rosarito
50
Base de Datos
52
Rosarito
10
Rosarito
200
Rosarito
100
La lista de campos vlidos es ahora cualquiera de los de las tablas utilizadas, como si se
tratara de una nica tabla en la que existen todos los campos de todas las tablas. Puesto
que es posible que existan campos con el mismo nombre en las diferentes tablas, a la
hora de nombrar los campos ser necesario especificar a qu tabla pertenecen con el
formato "<tabla>.<campo>".
As, la tabla generada en el ejemplo anterior (producto cartesiano) se obtiene con la
siguiente instruccin SQL:
Ejemplo:
Existencias
Piezas
Almacn
Tipo
ID
Base de Datos
53
Ciudad
Tipo
Nombre
Cantidad
Las llaves externas permiten enlazar la informacin relacionada entre diferentes tablas. Es
decir, si se desea relacionar las existencias en un almacn con el nombre de la ciudad
donde se ubica ste, se puede calcular el producto cartesiano de Almacenes y
Existencias, y descartar aquellos registros para los cuales no coincidan los campos
Almacenes.ID y Existencias.Almacn.
Ejemplo:
SELECT
Almacenes.Ciudad,
FROM
Existencias.Tipo,
Existencias.Cantidad
Almacenes,
Existencias
Almacenes.Ciudad
Existencias.Tipo
Existencias.Cantidad
Ensenada
100
Base de Datos
54
Ensenada
30
Mexicali
50
Tijuana
200
Rosarito
10
Rosarito
200
Rosarito
100
Tijuana
200
De la misma forma se podran enlazar las tres tablas mediante la siguiente consulta:
Ejemplo:
Almacenes.Ciudad
Piezas.Nombre
Existencias.Cantidad
Ensenada
Circuitera
100
Ensenada
TRC
30
Tijuana
Carcasa
200
Mexicali
Circuitera
50
Rosarito
Circuitera
10
Rosarito
TRC
200
Rosarito
Altavoz
100
Base de Datos
55
Uniones - Joins
La operacin de unin- Join, es un mecanismo ms adecuado para enlazar tablas.
La operacin de unin bsicamente obtiene el mismo resultado que un producto
cartesiano filtrado, para que slo se muestren los registros en los que coincida la llave
externa (condicin de join). La diferencia con el producto cartesiano es que se va a
emplear una clusula especfica para definir la operacin, en lugar de la genrica
WHERE, lo que permitir al SGBD (Sistema Gestor de Base de Datos) identificar el tipo
de operacin y proporcionar algunas ventajas sobre el resultado.
Sintaxis:
<tabla1>,
<tabla2>
WHERE
<tabla1>.<campo1>=<tabla2>.<campo2>;
En general, para cualquier nmero de tablas la unin se realiza anidando las uniones. La
sintaxis para tres tablas sera como sigue:
Base de Datos
56
Consultas de Insercin
Las consultas de insercin permiten aadir registros a una tabla, para este tipo de
consultas se requiere:
1.
2.
Una consulta de la que obtener los datos que se aaden; o bien, una lista de los
valores a insertar.
El formato SQL de una consulta de insercin de datos utilizando una consulta de
seleccin como origen de los datos es:
Sintaxis:
La lista de campos destino, es una lista de campos separados por comas; la lista de
campos origen es una lista como la que se utiliza en una consulta de seleccin cualquiera.
Cada campo de la lista origen debe corresponder con otro en la lista destino, en el mismo
orden, de manera que los registros obtenidos en la consulta se aadan a la tabla destino.
Los campos no especificados sern llenados con los valores predeterminados, a menos
que no se tengan ninguno, en ste caso quedarn vacos.
La parte de la consulta de seleccin puede contener todas las opciones vistas al
momento: funciones de agregado, ordenamiento por registros, condiciones de filtrado,
etctera.
La siguiente sintaxis, se utiliza para aadir datos a una tabla sin utilizar a otra tabla o
consulta como origen de datos.
Base de Datos
57
Sintaxis:
En el caso anterior, debe existir una correspondencia y compatibilidad exacta entre la lista
de campos origen y la lista de campos destino.
Ejemplos:
Consulta
SQL
INSERT
INTO
Personas
(nombre,
se
almacena
informacin
sobre
el
al
alumno
Francisco
Prez
de alumnos
Consultas de Actualizacin
Las consultas de actualizacin de datos, permiten modificar los datos almacenados en
una tabla. Se trata de modificar los valores de determinados campos en los registros que
cumplan una determinada condicin.
Base de Datos
58
Sintaxis:
UPDATE
<tabla>
SET
<campo>=<nuevo
valor>,
Ejemplos:
Consulta
SQL
WHERE
(Parcial1<=5)
AND
(Parcial2>=6);
Poner un 1 en las prcticas a todos los
WHERE
(Parcial2>=6)
(Practicas =0);
(Parcial1>=6)
AND
matrcula 3/01621
WHERE Matricula=3/01621;
UPDATE Alumnos
Base de Datos
59
Predicado
Descripcin
ALL
TOP
DISTINCT
DISTINCTROW
ALL
Si no se incluye ninguno de los predicados se asume ALL, por omisin. El motor de BD
selecciona todos los registros que cumplen las condiciones de la instruccin SQL. No es
conveniente abusar de este predicado, ya que obligamos al motor de la BD a analizar la
estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido
indicar el listado de campos deseados.
Ejemplo:
TOP
Devuelve un cierto nmero de registros que entran entre el principio o el final de un rango
determinado por una clusula ORDER BY. Suponga que se desean recuperar los
nombres de los 25 primeros estudiantes con una calificacin mayor a 7 en el parcial 1. La
consulta sera:
Base de Datos
60
DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados. Para
que los valores de cada campo listado en la instruccin SELECT se incluyan en la
consulta, deben ser nicos. Por ejemplo, varios alumnos listados en la tabla Alumnos
pueden tener el mismo apellido. Si dos registros contienen Lpez en el campo AP, la
siguiente instruccin SQL devolvera un nico registro:
Ejemplo:
Base de Datos
61
Si la tabla empleada contiene dos registros: Antonio Lpez y Martha Lpez, el ejemplo del
predicado DISTINCT devuelve un nico registro con el valor Lpez en el campo AP, ya
que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con
el valor Lpez en el apellido, ya que busca no duplicados en el registro completo.
Consultas de Borrado
Las consultas de borrado de datos permiten eliminar registros de una tabla de forma
selectiva, esto es, los registros que cumplan una determinada condicin. Para este tipo de
consulta se tiene:
Sintaxis:
Base de Datos
62
Ejemplos:
Consulta
Eliminar
SQL
los
alumnos
que
hayan
aprobado todo
DELETE
FROM
Alumnos
WHERE
Consultas Anidadas
SQL permite el anidamiento de consultas. La forma habitual de utilizar este mecanismo es
emplear el resultado de una consulta para seleccionar valores de otra. Por ejemplo, la
consulta tomar de la tabla de Alumnos aquellos primeros apellidos que tambin se
utilizan como segundos apellidos, se escribe en SQL como sigue:
Ejemplo:
La subconsulta se cierra entre parntesis. Se pueden anidar tantas consultas como sean
necesarias.
Las clusulas que permiten enlazar la consulta principal y las subconsultas, son las
siguientes:
Cualquier comparador (>, >, =, etc.). En este caso, la subconsulta debe proporcionar
un resultado nico con el cual realizar la comparacin.
Base de Datos
63
Consulta
Seleccionar
SQL
los
alumnos
cuya
WHERE
Parcial1>=
(SELECT
AVG(Parcial1)
FROM Alumnos);
Indicar
cuantos
Base de Datos
alumnos
tienen
la
64
MAX
(Parcial2)
FROM
Alumnos
Base de Datos
65
En donde:
Campo1, Campo2. Son el nombre de los campos que se van a crear en la tabla
nueva. La nueva tabla debe contener al menos un campo.
Tamao. Es el tamao del campo y slo se aplica a los campos de tipo texto.
ndice1, ndice2. Es una clusula CONSTRAINT que define el tipo de ndice a crear.
Esta clusula es opcional.
El ejemplo anterior crea una nueva tabla llamada Empleados con dos campos, uno
llamado Nombre de tipo texto con longitud 25, y otro llamado Apellidos con longitud 50.
Ejemplo:
El ejemplo anterior, crea una nueva tabla llamada Empleados con un campo Nombre tipo
texto de longitud 10, otro campo llamado Apellidos tipo texto de longitud 50, y uno ms
llamado Fecha_nacimiento de tipo Fecha/Hora. Tambin crea un ndice nico (no permite
valores repetidos) formado por los tres campos.
Base de Datos
66
Ejemplo:
En este ejemplo, se crea una tabla llamada Empleados con un campo de tipo texto con
longitud predeterminada (50) llamado Nombre, otro igual llamado Apellidos, otro campo
llamado Fecha_nacimiento de tipo Fecha/Hora y el campo ID de tipo entero al que
establece como llave principal.
Clusula CONSTRAINT
Se utiliza la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE
TABLE para crear o eliminar ndices. Existen dos sintaxis para esta clusula, dependiendo
si desea crear o eliminar un ndice de un nico campo o si se trata de un ndice
multicampo.
Sintaxis para ndices de un nico campo:
CONSTRAINT <Nombre> {
PRIMARY KEY <primario1> [,<primario2>[, .. ]]) |
UNIQUE (<nico1> [,<nico2>[, ..]])|
FOREING KEY (<ref1>[,<ref2>[, ..]]) REFERENCES <Tabla externa>
[(<campoexterno1>,[<campoexterno2>[,..]])]}
Base de Datos
67
En donde:
primarioN. Es el nombre del campo o los campos que forman el ndice primario.
nicoN. Es el nombre del campo o de los campos que forman el ndice de clave
nica.
refN. Es el nombre del campo o de los campos que forman el ndice externo (hacen
referencia a campos de otra tabla).
CREATE
[UNIQUE]
INDEX
<ndice>
ON
<tabla>
(<campo>[ASC|DESC][,<campo>[ASC|DESC],..])[WITH{PRIMARY|DISALLOW
NULL|IGNORE NULL}];
En donde:
Base de Datos
68
IGNORE NULL. Excluye del ndice los valores nulos incluidos en los campos que lo
componen.
PRIMARY. Asigna al ndice la categora de llave principal, el cada tabla slo puede
existir un nico ndice que sea llave principal. Si un ndice es llave principal, implica que
no puede contener valores nulos ni duplicados.
Tipo de ndice
Descripcin
Se genera un ndice de clave nica. Lo que implica que los
UNIQUE
PRIMARY KEY
FOREIGN KEY
Base de Datos
69
Sintaxis:
ALTER TABLE <tabla> {
ADD {
{COLUMN <campo> <tipo> [<tamao>][CONSTRAINT
<ndice> <tipo>]} |
{CONSTRAINT <ndice> <tipo> (<campo1>, <campo2>,...,
<campoN>)}
}|
DROP{
{COLUMN <campo>} |
{CONSTRAINT <ndice>}
}
}
En donde:
ndice. Es el nombre del ndice del campo (cuando se crean campos) o el nombre del
ndice de la tabla que se desea eliminar.
ndice multicampo. Es el nombre del ndice del campo multicampo (cuando se crean
campos) o el nombre del ndice de la tabla que se desea eliminar.
Se pueden realizar distintas operaciones para modificar las columnas e ndices.
Operacin
Descripcin
Se utiliza para aadir un nuevo campo a la tabla, indicando el
ADD COLUMN
ADD
CONSTRAINT
campo
Base de Datos
70
DROP COLUMN
DROP
CONSTRAINT
CONSTRAINT
Ejemplos:
Consulta
Agregar
SQL
un
campo
Salario
de
tipo
Empleados
PRIMARY KEY;
ALTER
tabla Empleados
CONSTRAINT IndicePrimario;
ALTER
CONSTRAINT
tabla Empleados.
KEY (ID);
TABLE
Empleados
TABLE
DROP
Empleados
IndicePrimario
ADD
PRIMARY
ID_Empleado
Empleados.
En
este
de
la
ejmplo
tabla
no
es
Base de Datos
71
Elimina
el
ndice
externo
ALTER
TABLE
Pedidos
DROP
CONSTRAINT RelacionPedidos;
ADD
Nombre,Apellidos y Fecha_Nacimiento
UNIQUE
de la tabla Empleados.
Nombre,Apellidos,Fecha_Nacimiento);
ALTER
CONSTRAINT IndiceGeneral;
CONSTRAINT
TABLE
IndiceGeneral
Empleados
DROP
CREACIN DE VISTAS
El lenguaje SQL tambin pone a disposicin la posibilidad de definir tablas virtuales, las
vistas, calculadas a partir de otras tablas. Son virtuales en el sentido de que no ocupan
espacio en el disco, pero son el resultado de consultas sobre otras tablas y, por lo tanto,
siempre estn alineadas con los valores obtenidos en dichas tablas.
Una vista se puede presentar a casi todos los efectos de la misma forma que una tabla.
Se pueden hacer consultas sobre consultas, aadir, modificar o eliminar datos sobre la
presentacin del resultado de una consulta, crear formularios e informes sobre vistas,
etctera.
Sin embargo, existe una limitacin: determinadas operaciones no se permiten sobre
determinadas consultas empleadas como vistas.
La instruccin SQL para definir una vista es la siguiente:
Sintaxis:
La consulta anterior crea una vista llamada <nombre vista> definida por la <expresin
tabla>. Tpicamente, <expresin tabla> es una instruccin SELECT que producir la tabla
que interesa. <lista de campos> se puede usar para asignar nombres a las columnas de
Base de Datos
72
la vista. Esto es til en el caso en que las columnas que derivan de <expresin tabla>
sean resultado de un clculo (por ejemplo, COUNT (<campo>) y por ello no tengan un
nombre explcito. Una vez creada, una vista se puede utilizar como una tabla normal. Las
nicas limitaciones se refieren a las operaciones que cambian los datos contenidos en
ella. En efecto, no todas las vistas pueden actualizarse.
Tambin se pueden crear vistas haciendo una consulta sobre varias tablas, introduciendo
diferentes condiciones o haciendo que el resultado se ordene segn una columna
concreta de la vista.
CREACIN DE TRIGGERS (DISPARADORES)
Los triggers (disparadores) son procedimientos que se ejecutan cuando se produce un
suceso de BD determinado en una tabla especfica. Pueden utilizarse para aumentar la
integridad referencial, conseguir una seguridad adicional o mejorar las opciones de
auditoria disponibles.
Existen dos tipos de disparadores:
Disparadores de fila. Se activan una vez por cada fila de una tabla afectada por las
instrucciones.
Para cada uno de ellos puede crearse un disparador BEFORE (antes) y otro AFTER
(despus). Entre los sucesos de disparo se encuentran las operaciones INSERT, DELETE
o UPDATE.
Los disparadores de instruccin son tiles si el cdigo del disparador no depende de los
datos afectados. Por ejemplo, se puede crear un disparador de instruccin BEFORE
INSERT en una tabla, para pedir que se efecte una operacin de insercin en dicha
tabla, excepto en determinados perodos de tiempo. Los disparadores de fila son tiles si
la accin del disparador depende de los datos afectados por la transaccin, por ejemplo,
puede crearse un disparador de fila AFTER INSERT que introduzca filas nuevas en una
tabla de auditoria, as como en la tabla base del disparador. Para crear un disparador se
tiene:
Base de Datos
73
Sintaxis:
CREATE
TRIGGER
<nombre
<INSERT|DELETE|UPDATE>
ON
trigger>
<nombre
<BEFORE|AFTER>
relacin>
FOR
EACH
El nombre del trigger se usar s se desea eliminar el trigger. Se usa como argumento
del comando DROP TRIGGER.
El siguiente elemento del comando determina en que evento o eventos ser llamada
la funcin. Es posible especificar mltiples eventos utilizando el operador OR.
La instruccin FOR EACH determina si el trigger se ejecutar para cada fila afectada,
o bien, antes o despus de que la secuencia se halla completado.
Base de Datos
74
El disparador anterior utiliza la palabra clave NEW para hacer referencia a los valores de
la fila que acaba de ser insertada en la tabla local Alumnos.
CREACIN DE PROCEDIMIENTOS
Un procedimiento es un bloque de instrucciones PL/SQL que se almacenan en el
diccionario de la BD y al que pueden llamar las aplicaciones. Los procedimientos permiten
almacenar dentro de la BD la lgica de las aplicaciones que se emplean con ms
frecuencia. Cuando se ejecuta el procedimiento, sus instrucciones se ejecutan como una
unidad. Los procedimientos no devuelven ningn valor al programa que los llama. Los
procedimientos permiten que la aplicacin que los invoca pueda proveer parmetros de
entrada. Los procedimientos permiten tambin, combinar la flexibilidad y facilidad del SQL
con la funcionalidad procedural de un lenguaje de programacin estructurado.
Por ejemplo, el siguiente cdigo crea el procedimiento Cuenta_Credito, el cual acredita
una cantidad monetaria a una cuenta bancaria:
Ejemplo:
Base de Datos
75
Base de Datos
76
Nombre completo
Direccin
Telfono
RUC
Numero de factura
Detalle de la compra:
o
Descripcin
Cantidad
Monto
Desgloce de igv
Monto total
Base de Datos
77
Base de Datos
78