Escolar Documentos
Profissional Documentos
Cultura Documentos
ADMINISTRACIÓN DE BASE DE
DATOS II
Presentación
La educación superior se ha convertido hoy día en prioridad para el Gobierno
Nacional y para las universidades públicas, brindado oportunidades de superación
y desarrollo personal y social, sin que la población tenga que abandonar su región
para merecer de este servicio educativo; prueba de ello es el espíritu de las
políticas educativas que se refleja en el proyecto de Decreto Estándares de Calidad
en Programas Académicos de Educación Superior a Distancia de la Presidencia de
la República, el cual define: “Que la Educación Superior a Distancia es aquella que
se caracteriza por diseñar ambientes de aprendizaje en los cuales se hace uso de
mediaciones pedagógicas que permiten crear una ruptura espacio temporal en las
relaciones inmediatas entre la institución de Educación Superior y el estudiante, el
profesor y el estudiante, y los estudiantes entre sí”.
Introducción
Hoy en día la información es el bien inmaterial más importante utilizada ya sea por
empresas o por personas en particular, con un fin común, el de prescindir de esta
información en el momento deseado, con un mínimo costo de recursos y en forma
eficiente. Por ello, surgieron las BD (Bases de Datos, por sus siglas en español) y
los SGBD (Sistemas de Gestión de Bases de Datos, pos sus siglas en español). Las
cuales son vitales en una empresa u organización, ya que almacenan la
información concerniente a los diferentes procesos de funcionamiento críticos, y
controlan el acceso y la manipulación de los datos en está.
Horizontes
1. Utilizar correctamente las instrucciones del SQL, y las funciones para dar
solución a diversos problemas.
El SQL (Structured query language, por sus siglas en inglés), lenguaje de consulta
estructurado, es un lenguaje surgido de un proyecto de investigación de IBM para
el acceso a bases de datos relacionales. El cual se ha convertido en un estándar de
lenguaje de bases de datos, y la gran mayoría de los sistemas de bases de datos lo
soportan, desde sistemas para computadores personales, hasta grandes
computadores.
Como su nombre indica, el SQL nos permite realizar consultas a la base de datos.
Pero el nombre se queda corto ya que SQL además realiza funciones de definición
de la base de datos.
Los SGBDR son aquellos que almacenan y administran de manera lógica los datos
en forma de tablas (o relaciones). Las tablas son la estructura básica donde se
almacena la información en la base de datos. Dado que en la mayoría de los casos,
no hay forma de que el proveedor de base de datos sepa con antelación cuales
son sus necesidades de almacenamiento de datos, es probable que necesite crear
tablas en la base de datos usted mismo. Muchas herramientas de base de datos le
permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los
contenedores de toda la información, es importante incluir la sintaxis SQL en esta
unidad.
Horizontes
Restricciones semánticas.
Base de Datos.
Tablas.
Ejemplos.
Proceso de Información
bases de datos el nombre que se da a cada uno de estos tipos puede variar.
Básicamente tenemos los siguientes tipos de datos.
Tipos Numéricos
Integer
Valores enteros con signo. 4
Int
Tipos Alfanuméricos
varchar(n) Igual que el tipo char, con la salvedad que varchar 0-255
almacena únicamente los bytes que contenga el valor del
campo.
Nota: el tamaño del campo varia en función de cada base de datos, siendo 255 el
valor standart.
Tipos Fecha
Nota: la aparición de los tipos de datos de fecha supuso una autentica revolución
del mundo de la bases de datos, en realidad, la base de datos almacena
internamente números enteros, de hay que el tamaño sea de 4 bytes y 8 bytes (2
enteros), pero aporta la validación del dato introducido.
Tipos Boléanos
Tipo Definición Bytes
Bit Los bit almacena un 0 ó no cero, según las bases de datos será 1
1 ó -1. Se aplica la lógica booleana, 0 es falso y no cero
verdadero.
Boolean Los boolean pueden tener uno de sólo dos estados: “verdadero” 1
o “falso”. Un tercer estado, “desconocido”, se representa por el
SQL el valor nulo.
1.1.2 Operadores
Operadores Lógicos
Operador Significado
AND a b a AND b
TRUE TRUE TRUE
TRUE FALSE FALSE
TRUE NULL NULL
FALSE FALSE FALSE
FALSE NULL FALSE
NULL NULL NULL
OR a b a OR b
TRUE TRUE TRUE
TRUE FALSE TRUE
TRUE NULL TRUE
FALSE FALSE FALSE
FALSE NULL NULL
NULL NULL NULL
NOT a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL
Operadores Relacionales
Los operadores mostrados aquí están definidos para un número de tipos de datos
nativos, que van desde los tipos numéricos hasta los tipos date/time.
= Igual 1=1
1
CASTAÑO, Miguel. Diseño de Base de Datos – Problemas Resueltos. AlfaOmega.
2001. pp. 126 a 129
1.2.2 Unicidad
1.2.3 Obligatoriedad
Esta posibilidad nos permite poner valor de la calve foránea referenciada a NULL
cunado se produce el borrado o modificación de una tupla (o registros) en la
relación padre.
Las opciones de borrado y modificación pueden ser distintas para una determinada
clave foránea de una relación.
1.2.5 Verificación
1.2.6 Disparadores
A veces puede interesar especificar una acción distinta del rechazo cuando no se
cumple una determinada restricción semántica. En ese caso, se recurre al uso de
los disparadores (TRIGGERs) que no permiten además de indicar una acción,
especificar la acción que queremos se lleve a cabo si la condición se hace
verdadera. Los disparadores pueden interpretarse como reglas que especifican
que cuando se produce un evento, si se cumple una condición, entonces se realiza
una determinada acción. Los disparadores no están soportados en el SQL-92; sin
embargo, existen productos relacionales que los soportan aunque con diferencias
en el modo de funcionamiento. Además también son convenientes para mantener
algunas restricciones del Modelo E-R que no tienen contrapartida en el modelo
relacional.
Una base de datos es un conjunto de datos almacenados entre los que existen
relaciones lógicas y ha sido diseñada para satisfacer los requerimientos de
información de una empresa u organización. En una base de datos, además de los
datos, también se almacena su descripción. Esta descripción es lo que se
denomina metadatos, se almacena en el diccionario de datos o catálogo y es lo
que permite que exista independencia de datos lógica-física.
Descripción
CREATE DATABASE
Crea una nueva base de datos. El creador pasa a ser el propietario de la
nueva base de datos.
Estructura
Entradas
name
El nombre de un base de datos para crear.
dbowner
El nombre del usuario de la base de datos quien será el dueño de la nueva
base de datos, opor defecto usará el valor predefinido defecto (a saber, el
usuario que ejecuta la orden).
template
El nombre de la plantilla para crear la nuevo banco de datos, o por defecto
usará la plantilla predefinida.
encoding
Establece la codificación para usar en la nueva base de datos. Especifique
un cadena constante (por ejemplo, ' SQL_ASCII'), o un entero que pone en
código el número, o por defecto usará la codificación predefinida.
Salidas
CREATE DATABASE
Mensaje devuelto si la orden se completa satisfactoriamente.
ERROR
Mensaje devuelto si ocurre un error e indicando el error (No tiene privilegios
para crear la BD, la BD ya existe, entre otros)
Uso
Descripción
DROP DATABASE
Elimina las entradas de catálogo de una base de datos existente y borra el
directorio que contiene los datos. Solamente puede ser ejecutado por el
propietario de la base de datos (normalmente quien la creó).
Estructura
Entradas
name
El nombre de una base de datos existente que se desea eliminar.
Salidas
DROP DATABASE
Mensaje devuelto si la orden se completa satisfactoriamente.
ERROR
Mensaje devuelto si ocurre un error e indicando el error (No tiene privilegios
para borrar la BD, la BD ya no existe, entre otros)
Uso
1.4 TABLAS
Una relación es una tabla con columnas y filas. Un SGBD sólo necesita que el
usuario pueda percibir la base de datos como un conjunto de tablas. Esta
percepción sólo se aplica a la estructura lógica de la base de datos. No se aplica a
la estructura física de la base de datos, que se puede implementar con distintas
estructuras de almacenamiento.
Descripción
CREATE TABLE
Introducirá una nueva clase o tabla en la base de datos actual. La tabla será
poseída por el usuario que introduce la sentencia.
Diagrama
Restricción1
Restricción2
Estructura
y table_constraint_clause es:
[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] ) |
PRIMARY KEY ( column_name [, ... ] ) |
CHECK ( expression ) |
FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn
[, ... ] ) ]
[ ON DELETE action ] [ ON UPDATE action ] }
Entradas
table_name
El nombre de una nueva clase o tabla a crear.
column_name
El nombre de un campo.
data_type
El tipo del campo.
DEFAULT value
Un valor por defecto para el campo.
column_constraint_clause
La cláusula opcional de restricciones (constraint) especifica una lista
de restricciones de integridad o comprueba que las nuevas
inserciones o actualizaciones deben satisfacer para que la inserción o
la actualización tenga éxito.
table_constraint_clause
La cláusula opcional CONSTRAINT especifica una lista de
restricciones de integridad que las nuevas inserciones o las
actualizaciones deberán satisfacer para que una sentencia insert o
update tenga éxito. Cada restricción debe ser evaluada a una
expresión booleana. Se pueden referenciar múltiples campos con una
única restricción. Sólo se puede definir una única cláusula PRIMARY
KEY por tabla; PRIMARY KEY column (una restricción de tabla) and
PRIMARY KEY (una restricción de campo) son mutuamente
excluyentes.
Salidas
CREATE
Mensaje devuelto si la table se ha creado con éxito.
ERROR
Mensaje devuelto si la creación de la tabla falla. Este mensaje viene
normalmente acompañado por algún texto explicativo, como: ERROR:
Relation 'table' already exists que ocurre en tiempo de ejecución, si la
tabla especificada ya existe en la base de datos. ERROR: DEFAULT: type
mismatched Si el tipo de datos o el valor por defecto no corresponde al
tipo de datos de la definición del campo.
Uso
CONVOCATORIA FACTOR X
Para los grupos hay que indicar si son duos, trios, etc, el nombre del grupo.
Además, interesa el nombre de cada uno de sus componentes, así, como el
instrumento que toca (si toca algún instrumento) si fue aceptado o no. En este
sentido es importante tener en cuenta los participantes, entre 16 y 24 años, y
mayores de 24 años. Sin embargo no todos los participantes tienen que pertenecer
a un grupo.
Nota: los tres punto (…) al final de ejercicio indica que es mas largo y sólo se tomo
un fragmento de él.
Notación:
PK PRIMARY KEY, FK FORENIGN KEY, * UNIQUE.
Nota
El atributo pa_codigo por ser clave primaria no acepta valores nulos aunque
no se halla indicado la restricción NOT NULL.
El atributo pa_aceptado por ser de tipo lógico acepta dos valores ‘t’ ó ‘f’ y el
valor null, ya que no tiene ninguna restricción de obligatoriedad.
Nota
En la relación se muestra un ejemplo de integridad referencial con las
relaciones grupo y participante.
Nota
El atributo pe_instrumento no tiene la restricción de obligatoriedad, ya que
en el ejercicio se indica que sólo se debe registrar el instrumento que toca
siempre y cuando toque algún instrumento.
Descripción
ALTER TABLE
Cambia la definición de una tabla existente. Hay varios formas:
ADD COLUMN
Esta forma agrega una nueva columna a la tabla que usa la misma sintaxis
como CREATE TABLE.
DROP COLUMN
Esta forma borra una columna de una tabla. Se dejarán caer
automáticamente también los índices y restricciones de la tabla que
involucran la columna. Usted necesitará decir CASCADE si algo fuera de la
tabla depende de la columna, por ejemplo, referencias de calve foránea.
Diagrama
Restricción1
Restricción2
Estructura
Entradas
name
El nombre (posiblemente esquema-calificado) de una tabla existente para
alterar. Si ONLY se especifica, sólo esa tabla se altera. Si ONLY no se
especifica, la tabla y todas sus tablas descendientes se actualizan.
column
El nombre de una nueva o existente columna.
new_column
El nuevo nombre para una columna existente.
new_name
El nuevo nombre para la tabla.
type
El tipo de dato de la nueva columna, o el nuevo tipo de dato para una
columna existente.
Salidas
ALTER TABLE
Mensaje devuelto si la orden se completa satisfactoriamente.
ERROR
Mensaje devuelto si ocurre un error e indicando el error (El tipo de dato no
existe, el atributo no existe para eliminar, entre otros)
Uso
Descripción
DROP TABLE
Elimina tablas de una base de datos. Solo su propietario (owner) puede
destruir las tablas, tanto los datos como su estructura.
Estructura
Entradas
name
El nombre de una tabla existente que se desea eliminar.
CASCADE
Elimina automáticamente objetos que dependen de la tabla.
RESTRICT
No deja eliminar la tabla si cualquier objeto depende de él. Éste es el valor
por defecto.
Salidas
DROP
El mensaje devuelto si el comando concluyo exitosamente.
Uso
Haga clic sobre el servidor PosgresSQL Database Server 8.0 para conectarse al
servidor
Nota : PostgreSQL utiliza una plantilla para crear las bases de datos.
Solución de Problemas
Caso de Estudio: GESTIÓN DE TRABAJOS DE GRADO DE FIN DE
CARRERA.
Un profesor se define por su DNI, nombre y domicilio; y puesto que los T.G.F.C.
son del área en el que trabaja, NO interesa conocer el T.G.F.C. que dirige sino a
qué estudiante se lo dirige. Un Tribunal está formado por varios profesores y los
profesores pueden formar parte de varios tribunales. Por otra parte, sí es de
interés para el tribunal conocer qué estudiante es el que se presenta, con qué
T.G.F.C. y en qué fecha lo ha defendido. El tribunal se define por un número de
tribunal, lugar de examen y por el número de componentes.
Autoevaluación
MODELO RELACIONAL DE LA BASE DE DATOS BIBLIOTECA
Complete
5. ¿Qué instrucción se debe incluir en la tabla presta para indicar que los atributos
eje_id y lib_contiene_eje son una llave foránea?
6. ¿Qué instrucción que se debe incluir en la tabla ejemplar para indicar que el
atributo eje_disponible es de tipo lógico ( ‘t’ o ‘f’ donde ‘t’ indica que está
disponible y ‘f’ que no esta disponible) y no recibe valores nulos?
7. ¿Qué instrucción se debe incluir en la tabla libro para indicar que el atributo
lib_id es la llave principal?
8. ¿Qué instrucción que se debe incluir en la tabla usuario para indicar que el
atributo usu_fecha_nacimiento es de tipo fecha y recibe valores nulos?
9. ¿Qué instrucción que se debe incluir en la tabla libro para indicar que el atributo
lib_nombre es único?
10. Las relaciones del modelo de la biblioteca se quieren almacenar en una base
de datos llamada biblioteca. ¿Cuál sería la orden para crear la base de datos?
Repaso Significativo
Los SGBDR son aquellos que almacenan y administran de manera lógica los datos
en forma de tablas. Las tablas son la estructura básica donde se almacena la
información en la base de datos. Dado que en la mayoría de los casos, no hay
forma de que el proveedor de base de datos sepa con antelación cuales son sus
necesidades de almacenamiento de datos, es probable que necesite crear tablas
en la base de datos usted mismo.
Una base de datos es un conjunto de datos almacenados entre los que existen
relaciones lógicas y ha sido diseñada para satisfacer los requerimientos de
información de una empresa u organización. En una base de datos, además de los
datos, también se almacena su descripción.
CREATE DATABASE crea una nueva base de datos. El creador pasa a ser el
propietario de la nueva base de datos.
DROP DATABASE elimina las entradas de catálogo de una base de datos existente
y borra el directorio que contiene los datos. Solamente puede ser ejecutado por el
propietario de la base de datos.
CREATE TABLE introducirá una nueva clase o tabla en la base de datos actual. La
tabla será poseída por el usuario que introduce la sentencia.
DROP TABLE elimina tablas de una base de datos. Solo su propietario (owner)
puede destruir las tablas, tanto los datos como su estructura.
Bibliografía Sugerida
Actualmente, está en marcha un proceso de revisión del lenguaje por parte de los
comités ANSI e ISO, que debería terminar en la definición de lo que en este
momento se conoce como SQL3. Las características principales de esta nueva
encarnación de SQL deberían ser su transformación en un lenguaje stand-alone
(mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la
introducción de nuevos tipos de datos más complejos que permitan, por ejemplo,
el tratamiento de datos multimediales.
Todas las sentencias empiezan con un verbo (palabra reservada que indica la
acción a realizar), seguido del resto de cláusulas, algunas obligatorias y otras
opcionales que completan la frase. Todas las sentencias siguen una sintaxis
para que se puedan ejecutar correctamente.
Horizontes
Sentencias de Acción.
Sentencias de Seleccción.
Ejemplos.
Proceso de Información
Una sentencia SQL es como una frase (escrita en inglés) para manipular la
base de datos con la que decimos lo que queremos obtener y de donde
obtenerlo.
Cuando se trabaja con los datos, todas las filas afectadas por los comandos se
tratan como un solo bloque, no son tratadas una por una.
Adicionalmente, SQL permite que los resultados de una consulta sean los datos
de entrada para una nueva
2.1.2 Operadores
Operadores Lógicos
Ya están descritos en la unidad 1. Lenguaje de Definición de datos.
Operador Descripción
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de
AND
verdad sólo si ambas son ciertas.
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de
OR
verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
Operadores Relacionales
Ya están descritos en la unidad 1. Lenguaje de Definición de datos.
Operador Descripción
< Menor que
> Mayor que
<> Distinto de
<= Menor ó Igual que
>= Mayor ó Igual que
= Igual que
Operadores Aritméticos
Operador Descripción
+ Suma
- Resta
* Producto
/ División
** ^ Exponenciación
2.1.3 Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que
desea seleccionar o manipular.
Cláusula Descripción
Utilizada para especificar la tabla de la cual se van a
FROM
seleccionar los registros
Utilizada para especificar las condiciones que deben reunir los
WHERE
registros que se van a seleccionar
Utilizada para ordenar los registros seleccionados de acuerdo
ORDER BY
con un orden específico
2.1.4 Predicados
Los predicados son condiciones que se indican en claúsula WHERE de una consulta
SQL.
Operador Descripción
BETWEEN...AND Comprueba que al valor esta dentro de un intervalo
LIKE Compara un campo con una cadena alfanumérica. LIKE
admite el uso de caracteres comodines
ALL Señala a todos los elementos de la selección de la consulta
ANY Indica que la condición se cumplirá si la comparación es cierta
para al menos un elemento del conjunto.
Operador Descripción
EXISTS Devuelve un valor verdadero si el resultado de una
subconsulta devuelve resultados.
IN Comprueba si un campo se encuentra dentro de un
determinado rango. El rango puede ser una sentencia
SELECT.
2.2.1 Insertar
Descripción
INSERT INTO
Permite la inserción de nuevas filas en una clase o una tabla. Se puede
insertar una fila a la vez o varias como el resultado de una consulta. Las
columnas en el resultado pueden ser listadas en cualquier orden.
Diagrama
Estructura
Entrada
table
El nombre de una tabla existente.
column
El nombre de una columna en table.
expression
Una expresión o un valor válidos a asignar en column.
query
Una consulta válida. Vea la instrucción SELECT para una mejor descripción
de argumentos válidos.
Salida
INSERT oid 1
Mensaje devuelto si solo se ha insertado una fila. oid es el número OID de
la fila insertada.
INSERT 0 #
Mensaje devuelto si se ha insertado más de una fila. # es el número de filas
insertadas.
Uso
Nota
El tipo de datos del atributo pa_aceptado es boolean por lo tanto recibe ‘t’
(´true’) 0 ‘f’ (´´false´) y por no tener la restricción de NOT NULL recibe
también NULL.
2.2.2 Modificar
Descripción
UPDATE
Cambia el valor de la columnas especificadas por todas las filas que
satisfacen la condición dada. Solamente necesita indicar las columnas que
serán modificadas.
Debe tener permiso de escribir en la tabla para poder modificarla, así como
permiso de lectura de cualquier tabla cuyos valores sean mencionados en la
condición WHERE.
Diagrama
Estructura
Entrada
table
El nombre de una tabla existente.
Columna
El nombre de la columna en tabla.
Expresión
Una expresión válida o valor a ser asignado a la columna.
Condición
Consulte la cláusula SELECT para un descripción más extensa de la cláusula
WHERE.
Salida
UPDATE #
Mensaje obtenido si ha habido éxito. El símbolo # representa el número de
filas que han sido actualizadas. Si # es igual a 0, ninguna fila fue
actualizada.
Uso
Tabla Participante
Nota
El tipo de datos del atributo pa_aceptado es boolean por lo tanto recibe ‘t’
(‘true’) 0 ‘f’ (´false´) y por no tener la restricción de NOT NULL recibe
también NULL.
Nota
Si el atributo pa_codigo es de tipo numérico no necesita colocar el código
entre comillas.
2.2.3 Eliminar
Descripción
DELETE
Borra las filas que satisfacen la cláusula WHERE de la tabla especificada.
Diagrama
Estructura
Entrada
table
El nombre de una tabla existente.
condition
Esta es una consulta SQL de selección la cual devuelve las filas a ser
borradas.
Salida
DELETE count
Mensaje devuelto si los items son borrados exitosamente. El valor count es
la cantidad de filas borradas.
Si count es 0, ninguna fila fue borrada.
Uso
Tabla Participante
Nota
Todos los que tienen el valor de true en el atributo pa_aceptado son los
participantes aceptados
Se utilizan para indicar al motor de datos que devuelva información de las bases
de datos, esta información es devuelta en forma de conjunto de registros. Éste
conjunto de registros forma una tabla lógica, porque no se guarda en el disco sino
que está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular.
2.3.1 Select
Descripción
SELECT
Devuelve registros de una o más tablas. Los candidatos a ser seleccionados
son aquellos registros que cumplen la condición especificada con WHERE; si
se omite WHERE, se retornan todos los registros.
Diagrama
Parte Significado
Palabra clave que indica que la sentencia de SQL que queremos
SELECT
ejecutar es de selección.
Indica que queremos seleccionar todos los valores.Es el valor
ALL
por defecto y no suele especificarse casi nunca.
DISTINCT Indica que queremos seleccionar sólo los valores distintos.
Indica la tabla (o tablas) desde la que queremos recuperar los
datos. En el caso de que exista más de una tabla se denomina
FROM a la consulta "consulta combinada" o "join". En las consultas
combinadas es necesario aplicar una condición de combinación
a través de una cláusula WHERE.
Especifica una condición que debe cumplirse para que los datos
WHERE sean devueltos por la consulta. Admite los operadores lógicos
AND y OR.
Especifica la agrupación que se da a los datos. Se usa siempre
GROUP BY
en combinación con funciones agregadas.
Especifica una condición que debe cumplirse para que los datos
sean devueltos por la consulta. Su funcionamiento es similar al
HAVING de WHERE pero aplicado al conjunto de resultados devueltos
por la consulta. Debe aplicarse siempre junto a GROUP BY y la
condición debe estar referida a los campos contenidos en ella.
Presenta el resultado ordenado por las columnas indicadas. El
ORDER BY orden puede expresarse con ASC (orden ascendente) y DESC
(orden descendente). El valor predeterminado es ASC.
Estructura
Entrada
expression
El nombre de una columna de la tabla o una expresión.
name
Especifica otro nombre para una columna o una expresión que utilice la
cláusula AS. Este nombre se utiliza principalmente como etiqueta para la
columna de salida. El nombre puede ser referenciado en cláusulas ORDER
BY.
table
El nombre de una tabla existente a la que se refiere la cláusula FROM.
alias
Un nombre alternativo para la tabla precedente table. Se utiliza para
abreviar o eliminar ambigüedades en uniones dentro de una misma tabla.
condition
Una expresión booleana que da como resultado verdadero o falso (true or
false). Consulte la cláusula WHERE.
column
El nombre de una columna de la tabla.
select
Una declaración de selección (select) exceptuando la cláusula ORDER BY.
Salida
Registros
El conjunto completo de registros (filas) que resultan de la especificación de
la consulta.
count
La cantidad de registros (filas) devueltos por la consulta.
Estructura
La estructura básica de una consulta de selección es la siguiente:
Selección de Columnas
La lista de columnas que queremos que aparezcan en el resultado es lo
que llamamos lista de selección y se especifica delante de la cláusula FROM.
Asterisco (*)
Columnas de la tabla
Las columnas se pueden especificar mediante su nombre simple (nbcol) o
su nombre cualificado (nbtabla.nbcol, el nombre de la columna precedido
del nombre de la tabla que contiene la columna y separados por un punto).
Cláusula FROM
Aliastabla
Uso
Las siguientes consultas son basadas en el presente ejercicio. El cual es un
fragmento del modelo relacional de transporte.
…
La empresa de transporte tiene varias sucursales en el país, distribuidas
geográficamente en departamentos los cuales están conformados por municipios.
De cada municipio se indica la identificación y el nombre, los cuales son únicos por
departamento pero puede existir el mismo nombre de municipio en otro
departamento.
Notación:
PK PRIMARY KEY, FK FORENIGN KEY, * UNIQUE.
Tabla departamento
Dep_id Dep_nombre Dep_extension
d1 Norte de Santander 21658
d2 Santander 30537
d3 Bolivar
d4 Tolima 23562
d5 Antioquia
Tabla municipio
Mun_id Mun_nombre Dep_id
c1_1 Pamplona d1
c2_1 Cúcuta d1
c3_1 Ocaña d1
c1_2 Bucaramanga d2
c2_2 Lebrija d2
c3_2 Barbosa d2
c4_2 Barrancabermeja d2
c1_3 Cartagena d3
c2_3 Magangué d3
c1_5 Barbosa d5
Tabla ruta
Rut_id Rut_salida Rut_llegada Rut_numero_horas
r1_1 C1_1 c2_1 1.75
r2_1 C1_1 c1_2 3.00
r1_2 C2_1 c1_2 5.00
r2_2 C2_1 c1_1 2.00
r3_2 C2_1 c4_2 7.00
r4_2 C2_1 c1_5 9.00
r1_3 C1_2 c4_2 2.00
r2_3 C1_2 c1_1 2.80
Dep_nombre Dep_extension
Norte de Santander 21658
Santander 30537
Bolivar
Tolima 23562
Antioquia
Dep_nombre Dep_extension
Norte de Santander 22091.16
Santander 31147.74
Bolivar
Tolima 24033.24
Antioquia
Estructura
La estructura básica de una consulta de selección es la siguiente:
Cláusula ORDER BY
Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER
BY.
Uso
Mun_nombre Dep_id
Barbosa d2
Barbosa d5
Barrancabermeja d2
Bucaramanga d2
Cartagena d3
Cúcuta d1
Lebrija d2
Magangué d3
Ocaña d1
Pamplona d1
Mun_nombre Dep_id
Barbosa D5
Barbosa D2
Barrancabermeja d2
Bucaramanga d2
Cartagena d3
Cúcuta d1
Lebrija d2
Magangué d3
Ocaña d1
Pamplona d1
Mun_nombre Dep_id
Pamplona d1
Ocaña d1
Magangué d3
Lebrija d2
Cúcuta d1
Cartagena d3
Bucaramanga d2
Barrancabermeja d2
Barbosa d5
Barbosa d2
Estructura
La estructura básica de una consulta de selección es la siguiente:
Predicado DISTINCT
Uso
Mun_nombre
Pamplona
Cúcuta
Ocaña
Bucaramanga
Lebrija
Barbosa
Barrancabermeja
Cartagena
Magangué
Barbosa
Mun_nombre
Barbosa
Barrancabermeja
Bucaramanga
Cartagena
Cúcuta
Lebrija
Magangue
Ocaña
Pamplona
Estructura
La estructura básica de una consulta de selección es la siguiente:
SELECT DISTINCT/ALL Columnas FROM Tabla
WHERE Condición ORDER BY nbcolumnas;
Cláusula WHERE
Uso
Mun_nombre
Bucaramanga
Lebrija
Barbosa
Barrancabermeja
Mun_nombre
Bucaramanga
Lebrija
Barbosa
Barrancabermeja
Cartagena
Magangué
Mun_nombre
Bucaramanga
Lebrija
Barbosa
Barrancabermeja
Cartagena
Magangué
Mun_nombre
Pamplona
Cúcuta
Ocaña
Barbosa
Mun_nombre
Cartagena
Cúcuta
Descripción
Diagrama
nbtabla
puede ser un nombre de tabla o un nombre de consulta.
Hay que tener en cuenta que el producto cartesiano obtiene todas las posibles
combinaciones de filas por lo tanto si tenemos una tabla con 100 registros, otra
tabla con 50 registros el resultado tendrá 100x50 filas, si el producto lo
hacemos de estas dos tablas con una tercera de 20 filas, el resultado tendrá
Uso
Descripción
Es un producto cartesiano seguido de una restricción por igualdad.
Uso
Combinamos todos los municipios con todos los departamentos pero luego
seleccionamos los que cumplan que el dep_id de la tabla municipio sea igual al
Mun_nombre Dep_nombre
Pamplona Norte de Santander
Cúcuta Norte de Santander
Ocaña Norte de Santander
Bucaramanga Santander
Lebrija Santander
Barbosa Santander
Barrancabermeja Santander
Cartagena Bolívar
Magangué Bolívar
Barbosa Antioquia
Mun_nombre Dep_nombre
Barbosa Antioquia
Cartagena Bolívar
Magangué Bolívar
Cúcuta Norte de Santander
Ocaña Norte de Santander
Pamplona Norte de Santander
Barbosa Santander
Barrancabermeja Santander
Bucaramanga Santander
Lebrija Santander
Ó renombrando tablas
Mun_nombre Dep_nombre
Cúcuta Norte de Santander
Ocaña Norte de Santander
Pamplona Norte de Santander
SELECT r.rut_numero,s.mun_nombre,ll.mun_nombre
FROM ruta R,municipio S, municipio LL
WHERE r.rut_salida = s.mun_id AND r.rut_llegada = ll.mun_id;
En este caso se necesita la tabla ruta, y dos tablas municipio. Una de las cuales
se utilizara para sacar el nombre del municipio origen y la otra para sacar el
nombre del municipio destino.
SELECT r.rut_numero,s.mun_nombre,ll.mun_nombre
FROM ruta AS R,municipio AS S, municipio AS LL
WHERE r.rut_salida = s.mun_id AND r.rut_llegada = ll.mun_id;
Descripción
Permite emparejar filas de distintas tablas de forma más eficiente que con el
producto cartesiano cuando una de las columnas de emparejamiento es clave
primaria. Ya que en vez de hacer el producto cartesiano completo y luego
seleccionar la filas que cumplen la condición de emparejamiento, para cada fila
de una de las tablas busca directamente en la otra tabla las filas que cumplen
la condición, con lo cual se emparejan sólo las filas que luego aparecen en el
resultado.
Diagrama
tabla1 y tabla2
son tabla (nombre de tabla con alias o no), de las tablas cuyos registros se
van a combinar.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al
menos un alias de tabla.
col1, col2
son las columnas de emparejamiento.
comp
representa cualquier operador de comparación ( =, <, >, <=, >=, o <> ) y
se utiliza para establecer la condición de emparejamiento.
Se pueden definir varias condiciones de emparejamiento unidas por los
operadores AND y OR poniendo cada condición entre paréntesis
Uso
Descripción
Con una composición interna sólo se obtienen las filas que tienen al menos una
fila de la otra tabla que cumpla la condición. Pues en los casos en que
queremos que también aparezcan las filas que no tienen una fila coincidente en
la otra tabla, utilizaremos el LEFT o RIGHT JOIN.
Esta operación consiste en añadir al resultado del INNER JOIN las filas de la
tabla de la izquierda que no tienen correspondencia en la otra tabla, y rellenar
en esas filas los campos de la tabla de la derecha con valores nulos.
Esta operación consiste en añadir al resultado del INNER JOIN las filas de la
tabla de la derecha que no tienen correspondencia en la otra tabla, y rellenar
en esas filas los campos de la tabla de la izquierda con valores nulos.
Uso
SELECT dep_nombre,mun_nombre
FROM municipio RIGHT JOIN departamento
ON municipio.dep_id = departamento.dep_id;
SELECT dep_nombre,mun_nombre
FROM departamento LEFT JOIN municipio
ON municipio.dep_id = departamento.dep_id;
Dep_nombre Mun_nombre
Norte de Santander Cúcuta
Norte de Santander Ocaña
Norte de Santander Pamplona
Santander Bucaramanga
Santander Lebrija
Santander Barbosa
Santander Barrancabermeja
Bolívar Magangué
Bolívar Cartagena
Tolima
Antioquia Barbosa
Formato Descripción
HH hora del día(01-12)
HH12 hora del día(01-12)
MI minuto (00-59)
SS Segundos (00-59)
SSSS Segundos pasados la medianoche(0-86399)
Y,YYY año(4 o mas dígitos) con coma
YYYY año(4 o mas dígitos)
YYY últimos 3 dígitos del año
YY últimos 2 dígitos del año
Y último dígito del año
Formato Descripción
MONTH nombre completo del mes(9-letras) - todos los caracteres en
mayúsculas
Month nombre completo del mes(9-letras) - el primer carácter en mayúsculas
month nombre completo del mes(9-letras) - todos los caracteres en
minúsculas
MON nombre abreviado del mes(3-letras) -todos los caracteres en
mayúsculas
Mon nombre abreviado del mes(3-letras) - el primer carácter en mayúsculas
mon nombre abreviado del mes(3-letras) - todos los caracteres en
minúsculas
MM mes (01-12)
DAY nombre completo del día(9-letters) - todos los caracteres en
mayúsculas
Day nombre completo del día(9-letters) - el primer carácter en mayúsculas
day nombre completo del día(9-letters) - todos los caracteres en minúsculas
DY nombre abreviado del día(3-letters) - todos los caracteres en
mayúsculas
Dy nombre abreviado del día(3-letters) - el primer carácter en mayúsculas
dy nombre abreviado del día(3-letters) - todos los caracteres en
minúsculas
DDD día del año(001-366)
DD día del mes(01-31)
D día de la semana(1-7; SUN=1)
EJERCICIO
Basado en las restricciones definidas para cada una de las relaciones (Ver el DDL
en la unidad No. 1). Determine:
a. SELECT – FROM
b. SELECT – FROM – ORDER BY
c. SELECT – FROM – WHERE
d. SELECT – FROM – WHERE – ORDER BY
e. SELECT DISTINCT – FROM
f. SELECT DISTINCT – FROM – ORDER BY
g. SELECT DISTINCT – FROM – WHERE
h. SELECT DISTINCT – FROM – WHERE – ORDER BY
i. SELECT – FROM – WHERE. Aplicando el predicado BETWEEN
j. SELECT – FROM – WHERE. Aplicando el predicado IN
k. SELECT – FROM – WHERE. Aplicando el predicado LIKE
l. SELECT – FROM – WHERE. Aplicando el predicado IS NULL
Solución de Problemas
BASE DE DATOS VENTA DE PRODUCTOS
DDL en SQL
create table persona(
pers_identificacion varchar(15),
pers_nombre varchar(20) not null,
pers_apellido varchar(20) not null,
pers_fecha_nacimiento date,
primary key(pers_identificacion)
);
on delete restrict,
foreign key(prod_codigo) references producto(prod_codigo)
on update cascade
on delete restrict );
CONSULTAS
Autoevaluación
9. Predicado para permite evaluar si el atributo esta con datos o sin datos
A. In B. is null
C. where D. not
Repaso Significativo
Todas las sentencias empiezan con un verbo (palabra reservada que indica la
acción a realizar), seguido del resto de cláusulas, algunas obligatorias y otras
opcionales que completan la frase. Todas las sentencias siguen una sintaxis para
que se puedan ejecutar correctamente.
Si queremos añadir en una tabla una fila con valores conocidos utilizamos la
sentencia INSERT INTO tabla VALUES (lista de valores).
Para cambiar los datos contenidos en una tabla, tenemos que actualizar las filas de
dicha tabla con la sentencia UPDATE tabla SET asignación de nuevos valores.
Para eliminar filas de una tabla se utiliza la sentencia DELETE FROM tabla.
Para recuperar los datos contenidos en una tabla o tablas se utiliza la sentencia
SELECT
Con la cláusula FROM podemos indicar que tablas se sacaran los datos para
procesarlos.
Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER BY.
INNER JOIN Permite emparejar filas de distintas tablas de forma más eficiente que
con el producto cartesiano cuando una de las columnas de emparejamiento es
clave primaria.
Bibliografía Sugerida
Esta unidad describe las subconsultas y cómo se utilizan en las cláusulas WHERE y
HAVING de una sentencia SQL.
Horizontes
Identificar claramente los diagramas sintácticos de las consultas agrupadas
y subconsultas.
Subconsulta.
Ejemplo.
Proceso de Información
Una función de columna se aplica a una columna y obtiene un valor que resume el
contenido de la columna.
Descripción
Estructura
COUNT(<expr>)
En 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 (siempre y cuando no sea otras de las funciones de columnas de
SQL). Puede contar cualquier tipo de datos incluso texto.
Uso
Total
5
Nota
En esta consulta no se puede hacer referncia con el atributo dep_extension
dentro de la function count porque solo contaria los que tienen valor.
Total
3
Total
2
Descripción
Estructura
SUM(<expr>)
En donde expr respresenta 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. Los operandos de expr pueden incluir el nombre de un campo
de una tabla, una constante o una función (siempre y cuando no sea otras de
las funciones de columna de SQL).
Uso
Total
75757
Descripción
Estructura
MIN(<expr>)
Uso
Total
21658
Total
1.75
Descripción
Estructura
MAX(<expr>)
Uso
Total
30537
Total
9.0
Descripción
Estructura
AVG(<expr>)
Uso
Total
5.75
Nota
Recuerde cuando hay más de una relación (o tabla) en la cláusula FROM se
debe destruir el producto cartesiano.
Descripción
Estructura
Diagrama
Una consulta con una cláusula GROUP BY se denomina consulta agrupada ya que
agrupa los datos de la tabla origen y produce una única fila resumen por cada
grupo formado. Las columnas indicadas en el GROUP BY se llaman columnas de
agrupación.
Diagrama
Uso
dep_nombre total_muncipios
Antioquia 1
Santander 4
Norte de Santander 3
Bolivar 2
Nota
El atributo dep_nombre que forman parte de la lista de selección está por
fuera de una función agregada por lo tanto, tiene que ir también en la
cláusula GROUP BY.
dep_nombre total_muncipios
Antioquia 1
Santander 4
Tolima 0
Norte de Santander 3
Bolivar 2
Nota
El atributo dep_nombre y dep_municipio que forman parte de la lista de
selección están por fuera de una función agregada por lo tanto, tiene que ir
también en la cláusula GROUP BY.
Diagrama
Uso
Dep_nombre Total_municipios
Santander 4
Norte de Santander 3
Nota
Como la condición depende del número de municipios y los cuales se
obtuvieron por una función agregada, entonces no se puede utilizar WHERE
por que en él no se puede colocar condiciones con funciones agregadas.
Para colocar funciones agregadas en una condición se debe utilizar la
cláusula HAVING.
3.3 SUBCONSULTAS
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia
SELECT que llamaremos consulta principal.
Una subconsulta tiene la misma sintaxis (o estructura) que una sentencia SELECT
normal exceptuando que aparece encerrada entre paréntesis.
Las consultas que utilizan subconsultas suelen ser más fáciles de interpretar por el
usuario.
Uso
SELECT dep_nombre,
(SELECT COUNT(m.dep_id) FROM municipio m
WHERE m.dep_id = d.dep_id) AS total_municipios
FROM departamento d;
Dep_nombre Total_municipios
Norte de Santander 3
Santander 4
Bolivar 2
Tolima 0
Antioquia 1
Nota
La subconsulta aparece en la lista de selección, por lo tanto, solo puede
devolver un único registro. Si llega a devolver más de un registro se
produce un ERROR.
Uso
SELECT d.dep_nombre
FROM departamento d
WHERE d.dep_id IN ( SELECT m.dep_id
FROM municipio m
WHERE m.mun_id IN ( SELECT r.rut_salida
FROM ruta r
)
);
Dep_nombre
Norte de Santander
Santander
Nota
El predicado IN, examina si el valor de la expresión es uno de los valores
incluidos en la lista de valores producida por la subconsulta. La subconsulta
debe generar una única columna y las filas que sean. Si la subconsulta no
produce ninguna fila, el test da falso.
Uso
Rut_numero Rut_numero_horas
r4_2 9.0
Nota
La consulta principal está formada por dos relaciones: ruta la cual esta
renombrada con r y la subconsulta renombrada con valor. Para evitar el
producto cartesiano se destruye en el WHERE, ya que la subconsulta puede
devolver más de una tupla (o resgistro).
Se suele utilizar subconsultas en las cláusulas WHERE o HAVING cuando los datos
que queremos visualizar están en una tabla pero para seleccionar las filas de esa
tabla necesitamos un dato que está en otra tabla.
Uso
Rut_numero Rut_numero_horas
r4_2 9.0
Nota
El test de comparación con subconsulta, es el equivalente al test de
comparación simple. Se utiliza para comparar un valor de la fila que se está
examinado con un único valor producido por la subconsulta. La subconsulta
debe devolver una única columna, sino se produce un error.
SELECT dep_nombre
FROM departamento
WHERE dep_id NOT IN (SELECT dep_id FROM municipio);
Dep_nombre
Tolima
Nota
El predicado IN, examina si el valor de la expresión es uno de los valores
incluidos en la lista de valores producida por la subconsulta. La subconsulta
debe generar una única columna y las filas que sean. Si la subconsulta no
produce ninguna fila, el test da falso.
SELECT dep_nombre
FROM departamento d
WHERE NOT EXISTS (SELECT *
FROM municipio m
WHERE m.dep_id=d.dep_id);
Dep_nombre
Tolima
Nota
El predicado EXISTS, examina si la subconsulta produce alguna fila de
resultados.
Basado en las restricciones definidas para cada una de las relaciones (Ver el DDL
en la unidad No. 1). Determine:
1 Para cada punto plantear una Consulta que utilice la función de columna AVG
ó MIN ó MAX ó SUM ó COUNT dependiendo de la estructura que debe tener y
resolverla.
a. SELECT – FROM
b. SELECT – FROM – ORDER BY
c. SELECT – FROM – WHERE
d. SELECT – FROM – WHERE – ORDER BY
2 Para cada punto plantear una Consulta Sumatoria que utilice la función de
columna AVG ó MIN ó MAX ó SUM ó COUNT dependiendo de la estructura
que debe tener y resolverla.
Solución de Problemas
BASE DE DATOS VENTA DE PRODUCTOS
DDL en SQL
create table persona(
pers_identificacion varchar(15),
pers_nombre varchar(20) not null,
pers_apellido varchar(20) not null,
pers_fecha_nacimiento date,
primary key(pers_identificacion)
);
on update cascade
on delete set null
);
on update cascade
on delete restrict,
foreign key(prod_codigo) references producto(prod_codigo)
on update cascade
on delete restrict );
CONSULTAS
Autoevaluación
Complete
Repaso Significativo
Las consultas sumarias utilizan funciones de columna SQL para condensar una
columna de valores en un único valor que resume la columna.
HAVING, ayudan a seleccionar los grupos de filas que aparecen en los resultados
de la consulta. Las subconsultas proporcionan un modo eficaz y natural de manejar
las peticiones de consultas que se expresan en términos de los resultados de otras
consultas.
Bibliografía Sugerida
BIBLIOGRAFÍA GENERAL
GROFF, James R. , WEINBERG, Paul N. Aplique SQL. McGrawHill. 1991
Date, C.J. Introdución a los sistemas de Base de Datos. Pretice Hall. 2001
Curso de SQL [en línea]. Aula Clic. Abril. 2001. [citado 4 agosto. 2007]. Disponible
en [http://www.aulaclic.es/sql/index.htm]
HERRARTE SÁNCHEZ, Pedro. Tutorial SQL [en línea]. devjoker. Octubre. 2005.
[citado 4 agosto. 2007]. Disponible en
[http://www.devjoker.com/asp/indice_contenido.aspx?co_grupo=csql]
Tutorial de SQL: Guía de Referencia de SQL [en línea]. 1keydata. [citado 4 agosto.
2007]. Disponible en [http://sql.1keydata.com/es/]