0% encontró este documento útil (0 votos)
91 vistas17 páginas

Base de Datos Unidad3

Este documento presenta una introducción al lenguaje de consultas estructuradas SQL. Explica conceptos clave como tablas, filas, columnas, esquemas, tipos de datos, y comandos como CREATE TABLE y ALTER TABLE. También cubre consultas básicas en SQL, incluyendo la estructura SELECT-FROM-WHERE y funciones agregadas. Finalmente, discute sentencias DDL como INSERT, DELETE y UPDATE, así como características avanzadas como vistas y restricciones.

Cargado por

Mayrín
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas17 páginas

Base de Datos Unidad3

Este documento presenta una introducción al lenguaje de consultas estructuradas SQL. Explica conceptos clave como tablas, filas, columnas, esquemas, tipos de datos, y comandos como CREATE TABLE y ALTER TABLE. También cubre consultas básicas en SQL, incluyendo la estructura SELECT-FROM-WHERE y funciones agregadas. Finalmente, discute sentencias DDL como INSERT, DELETE y UPDATE, así como características avanzadas como vistas y restricciones.

Cargado por

Mayrín
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

UNIVERSIDAD AUTONOMA DE SANTO DOMINGO

UASD

FACULTAD DE CIENCIAS
ESCUELA DE INFORMATICA

BASE DE DATOS I-INF4200-3


Asignatura

RAFAEL FERNANDEZ RODRIGUEZ


Profesor

 SQL (Structured Query Language) 


Tema

MAYRIN BORBON BONIFACIO


Estudiante

100477414
Matricula

20 de septiembre del 2021


MAO, VALVERDE, REPUBLICA DOMINICANA

1
INDICE GENERAL
INTRODUCCIÓN…………………………………………………………………………………………………………………………3

SQL……………………………………………………………………………………………………………………………………………4

DEFINICIÓN DE DATOS Y TIPOS DE DATOS DE SQL………………………………………………………………..….4

CONCEPTOS DE ESQUEMA Y CATÁLOGO EN SQL……………………………………………………………………..4

EL COMANDO CREATE TABLE DE SQL…………………………………………………………………………………………4

TIPOS DE DATOS Y DOMINIOS EN SQL……………………………………………………………………………………….5

SENTENCIAS DE SQL PARA CAMBIAR EL ESQUEMA……………………………………………………………………5

CONSULTAS BÁSICAS EN SQL…………………………………………………………………………………….…………….6

ESTRUCTURA SELECT-FROM-WHERE DE LAS CONSULTAS BÁSICAS DE SQL……………………………….6

NOMBRES DE ATRIBUTO AMBIGUOS, ALIAS Y VARIABLES DE TUPLA…………………………………………6

CLÁUSULA WHERE NO ESPECIFICADA Y USO DEL ASTERISCO…………………………………………………..6

TABLAS COMO CONJUNTOS EN SQL…………………………………………………………………………………………7

COMPARACIÓN DE SUBCADENAS Y OPERADORES ARITMÉTICOS………………………………………………7

ORDENACIÓN DEL RESULTADO DE UNA CONSULTA………………………………………………………………….8

COMPARACIONES CON VALORES NULL Y LÓGICA DE TRES VALORES………………………..………………8

CONSULTAS ANIDADAS, TUPLAS Y COMPARACIONES CONJUNTO/MULTICONJUNTO……………...8

TABLAS CONCATENADAS EN SQL Y CONCATENACIONES EXTERIORES………………………………………9

CONSULTAS ANIDADAS CORRELACIONADAS……………………………………………………………………………9

LAS FUNCIONES EXISTS Y UNIQUE EN SQL……………………………………………………………………………….9

LAS FUNCIONES EXISTS Y UNIQUE EN SQL……………………………………………………………………………….9

TABLAS CONCATENADAS EN SQL Y CONCATENACIONES EXTERIORES…………………………………..10

FUNCIONES AGREGADAS EN SQL………………………………………………….……………………………………..11

AGRUPAMIENTO: LAS CLÁUSULAS GROUP BY Y HAVING……………………………………………………..11

SENTENCIAS INSERT, DELETE Y UPDATE DE SQL……………………………………………………………………12

RESTRICCIONES COMO ASERCIONES Y TRIGGERS…………………………………………………………………13

VISTAS (TABLAS VIRTUALES) EN SQL……………………………………………………………………………………14


CONCEPTO DE VISTA EN SQL………………………………………………………………………………………………14

ESPECIFICACIÓN DE VISTAS EN SQL…………………………………………………………………………………….15

Implementación y actualización de vistas…………………………………………………………………………..15

CARACTERÍSTICAS ADICIONALES DE SQL………………………………………………………………………...16

2
INTRODUCCION
Debido a la diversidad de lenguajes y bases de datos existentes, la manera de "hablar" entre sí
a menudo puede ser complicado y difícil, por suerte para nosotros, la presencia de los
estándares que nos permiten realizar los procedimientos habituales a través de una forma muy
extendida hace que este confuso trabajo más sencillo.
Eso es lo que Structured Query Language (SQL) se centra en el, que resulta ser nada más que un
lenguaje estándar internacional de comunicación dentro de las bases de datos. Por eso, el
Lenguaje de consulta estructurado (SQL) es verdaderamente un lenguaje estandarizado que
permite a todos nosotros a poner en práctica cualquier idioma, por ejemplo ASP o PHP, en
combinación con cualquier base de datos específica, por ejemplo MySQL, SQL Server, MS
Access.
Hoy en día SQL, es un aspecto clave en cualquier empresa, este es un lenguaje de consulta
estructurado que permite interactuar con una base de datos y es el lenguaje de base de datos
más utilizado, pues permite recuperar y organizar informacion de forma sencilla de una base de
datos.

3
1. SQL
El nombre SQL significa Lenguaje de consulta estructurado (Structured Que/)I Langllage).
Originalmente,SQL se denominaba SEQUEL (Stl'uctllred English QUE/)I Language) y fue
diseñado e implementado porIBM Research a modo de interfaz para un sistema de base de
datos relacional conocido como SYSTEM R.SQL es ahora el lenguaje estándar de los DBMSs
relacionales comerciales. Un esfuerzo conjunto llevado acabo por el Instituto nacional
americano de normalización (ANSI, American National Standal'ds lnstitute) yla Organizacón
internacional para la normalización (ISO, lnternational Standal'ds Ol'ganization) llevó a una
versión estándar de SQL (ANSI 1986), denominada SQL-86 o SQL1. A continuación se desarrolló
un estándar revisado y mucho más amplio, SQL2 (también conocido como SQL-92). El siguiente
estándar fue SQL99. Se han propuesto otros estándares, como SQL3, pero no han gozado de
suficiente respaldo por parte de la industria. Intentaremos cubrir en lo posible la última versión
de SQL.
1.1 DEFINICIÓN DE DATOS Y TIPOS DE DATOS DE SQL
SQL utiliza los términos tabla, fila y columna para los términos relación, tupla y atributo del
modelo relacional formal, respectivamente. Utilizaremos todos estos términos indistintamente.
El principal comando de SQL para definir datos es la sentencia CREATE, que se utiliza para crear
esquemas, tablas (relaciones) y dominios (así como otras estructuras, como vistas, aserciones y
triggers).
1.2 CONCEPTOS DE ESQUEMA Y CATÁLOGO EN SQL
Las versiones anteriores de SQL no incluían el concepto de esquema de base de datos
relacional; todas las tablas (relaciones) estaban consideradas como parte del mismo esquema.
El concepto de esquema SQL se incorporó por primera vez en SQL2 para agrupar las tablas y
otras estructuras pertenecientes a la misma aplicación de base de datos. Un esquema SQL se
identifica con un nombre de esquema e incluye un identificador de autorización para indicar el
usuario o la cuenta propietaria del esquema, así como unos descriptores para cada elemento.
Los elementos del esquema son las tablas, las restricciones, las vistas, los dominios y otras
estructuras (como la concesión de autorización), que describen el esquema. El esquema se crea
con la sentencia CREATE SCHEMA, que puede incluir las definiciones de todos sus elementos.
CREATE SCHEMA EMPRESA AUTHORIZATION. En general, no todos los usuarios están
autorizados a crear esquemas y elementos de esquema. El privilegio de crear esquemas, tablas
y otras estructuras debe ser otorgado explícitamente por el administrador del sistema o DBA a
las cuentas de usuario pertinentes.
1.3 EL COMANDO CREATE TABLE DE SQL
El comando CREATE TABLE se utiliza para especificar una nueva relación, asignándole a esta
última un nombre y sus atributos y restricciones iniciales. Primero se especifican los atributos, a
cada uno de los cuales se le asigna un nombre, un tipo de datos para especificar su dominio de
valores, y cualesquiera restricciones de atributo, como NOT NULL. Las restricciones de clave,
integridad de entidad e integridad referencial, pueden especificarse con la sentencia CREATE

4
TABLE después de haber declarado los atributos, o pueden añadirse más tarde con el comando
ALTER TABLE.
1.4 TIPOS DE DATOS Y DOMINIOS EN SQL
Los tipos de datos básicos disponibles para los atributos son numéricos, cadena de caracteres,
cadena de bits, booleano, fecha y hora.

 El tipo de datos numéricos incluye los números enteros de varios tamaños (lNTEGER o
INT, Y SMALLlNT) así como los números en coma flotante (reales) de distintas
precisiones (FLOAT o REAL, Y DOUBLE PRECISION)
 El tipo de datos cadena de caracteres puede ser de longitud fija o de longitud variable.
 El tipo de datos cadena de bits es de longitud fija o de longitud variable.
 Un tipo de datos booleano tiene los valores tradicionales TRUE o FALSE.
 fecha y hora. El tipo de datos DATE tiene diez posiciones y sus componentes son año,
mes y día.
1.5 ESPECIFICACIÓN DE RESTRICCIONES EN SQL
Entre ellas podemos citar las restricciones de clave y de integridad referencial, así como las
restricciones en los dominios de atributo y NULLs y en las tuplas individuales dentro de una
relación.
2. Sentencias de SQL para cambiar el esquema.
Los comandos de evolución del esquema de SQL son utilizados para alterar un esquema
añadiendo o eliminando tablas, atributos, restricciones y otros elementos del esquema.
Comando DROP
El comando DROP se puede utilizar para eliminar los elementos con nombre del esquema,
como tablas, dominios o restricciones. También puede eliminar un esquema. Por ejemplo, si ya
no se necesita un esquema entero, se puede utilizar el comando DROP SCHEMA. Hay dos
opciones de comportamiento para estas eliminaciones: CASCADE y RESTRICT. Por ejemplo, para
eliminar el esquema de la base de datos EMPRESA y todas sus tablas, dominios y otros
elementos, se utiliza la opción CASCADE.
Comando ALTER
La definición de una tabla base o de otros elementos con nombre del esquema se puede
cambiar con el comando ALTER. Para las tablas base, las posibles acciones de alteración
incluyen la adición o eliminación de una columna (atributo), el cambio de la definición de una
columna, y la adición o eliminación de restricciones.

5
3. Consultas básicas en SQL
SQL permite que una tabla (relación) tenga dos o más tuplas idénticas en todos sus valores de
atributo. Por tanto, en general, una tabla SQL no es un conjunto de tuplas, porque un conjunto
no permite dos miembros idénticos; en su lugar, es un multiconjunto (a veces conocido como
bolsa) de tuplas. Algunas relaciones SQL están restringidas a ser conjuntos porque se ha
declarado una restricción de clave o porque se ha utilizado la opción DISTINCT con la sentencia
SELECT
3.1 Estructura SELECT-FROM-WHERE de las consultas básicas de SQL
La forma básica de la sentencia SELECT, denominada en ocasiones mapeado o bloque SELECT-
FROM-WHERE, está formada por las cláusulas SELECT, FROM y WHERE y tiene la siguiente
forma:
SELECT lista de atributos

FROM lista de tablas

WHERE condición

lista de atributos: Es una lista de los atributos cuyos valores serán recuperados por la consulta.

Lista de tablas: Es una lista de las relaciones necesarias para procesar la consulta.

Condición: es una expresión condicional.

3.2 NOMBRES DE ATRIBUTO AMBIGUOS, ALIAS Y VARIABLES DE TUPLA


En SQL el mismo nombre se puede utilizar para dos (o más) atributos, siempre y cuando los
atributos se encuentren en relaciones diferentes. Si es el caso, y una consulta se refiere a dos o
más atributos que tienen el mismo nombre, debemos calificar el nombre del atributo con el
nombre de la relación a fin de evitar la ambigüedad. Esto se consigue colocando como prefijo el
nombre de la relación al nombre del atributo, y separando los dos nombres con un punto.

3.3 Cláusula WHERE no especificada y uso del asterisco


Vamos a ver dos características más de SQL. La ausencia de una cláusula WHERE indica que no
hay una condición en la selección de tuplas; por tanto, todas las tuplas de la relación
especificada en la cláusula FROM se califican y seleccionan para la consulta resultante. Si en la
cláusula FROM se especifica más de una relación y no hay una cláusula WHERE, entonces se
selecciona el PRODUCTO CRUZADO (todas las posibles combinaciones de tuplas) de esas
relaciones. Es extremadamente importante especificar todas las selecciones y condiciones de
concatenación en la cláusula WHERE; si se omite cualquiera de esas condiciones, pueden
obtenerse relaciones incorrectas y muy grandes.
Para recuperar todos los valores de atributo de las tuplas seleccionadas, no tenemos que listar
explícitamente los nombres de los atributos en SQL; podemos escribir un asterisco (*), que
tiene el significado de todos los atributos.

6
3.4 Tablas como conjuntos en SQL
Como mencionamos anteriormente, SQL trata normalmente a una tabla no como un conjunto,
sino como un multiconjunto; las tuplas duplicadas pueden aparecer más de una vez en una
tabla, y en el resultado de una consulta. SQL no elimina automáticamente las tuplas duplicadas
en los resultados de las consultas, por las siguientes razones:

 La eliminación de duplicados es una operación muy costosa. Una forma de


implementarla consiste en ordenar primero las tuplas y después eliminar los duplicados.
 El usuario puede querer ver las tuplas duplicadas en el resultado de una consulta.
 Cuando se aplica una función de agregación a las tuplas, en la mayoría de los casos no
queremos eliminar los duplicados.

4. COMPARACIÓN DE SUBCADENAS Y OPERADORES ARITMÉTICOS

Operador de comparación LlKE se puede utilizar para la comparación de patrones. Las cadenas
parciales se especifican mediante dos caracteres reservados: % sustituye una cantidad
arbitraria de caracteres (de cero o más caracteres), y el guion de subrayado U reemplaza un
solo carácter. Por ejemplo.

Recuperar todos los empleados cuya dirección se encuentra en Madrid.


SELECT Nombre, Apellido

FROM EMPLEADO

WHERE Dirección LlKE '%Madrid%;

Si hay necesidad de utilizar el carácter % o el guion bajo como carácter literal en la cadena, hay
que precederlo por un carácter de escape, que se especifica después de la cadena mediante la
palabra clave ESCAPE. Por ejemplo, 'AB\ _CD\ %EF' ESCAPE '\ ' representa la cadena literal
'AB_CD%EF' porque se ha especificado el carácter \ como carácter de escape. Como carácter de
escape se puede utilizar cualquier carácter que no se utilice en la cadena. Además, necesitamos
una regla para especificar los apóstrofes o comillas simples (' ') en caso de tener que incluirlas
en una cadena porque se utilicen para empezar o terminar cadenas. Si necesitamos un
apóstrofe n, hay que representarlo como dos apóstrofes consecutivos (H), para que no sea
interpretado como final de la cadena.

Otra característica permite utilizar la aritmética en las consultas. Los operadores aritméticos
estándar para la suma (+), la diferencia (-), la multiplicación (*) y la división (/) se pueden aplicar
a valores o atributos numéricos con dominios numéricos.
En las cadenas es posible utilizar el operador de concatenación para añadir dos valores de
cadena. En el caso de fechas, horas, marcas de tiempo e intervalos, los operadores suponen

7
incrementar (+) o descrementar (-) una fecha, una hora o una marca de tiempo según un
intervalo. Además, un valor de intervalo es el resultado de la diferencia entre dos valores de
fecha, hora o marca de tiempo. Otro operador de comparación que se puede utilizar es
BETWEEN, ejemplo:
Recuperar todos los empleados del departamento 5 cuyo salario esté entre 30.000 y 40.000.
SELECT *
FROM EMPLEADO
WHERE (Sueldo BETWEEN 30000 AND 40000) AND Dno = 5;

La condición (Sueldo BETWEEN 30000 AND 40000) es equivalente a la condición ((Sueldo


>=30000) AND (Sueldo <= 40000)).

5. ORDENACIÓN DEL RESULTADO DE UNA CONSULTA


SQL permite ordenar las tuplas del resultado de una consulta por los valores de uno o más
atributos, utilizándola cláusula ORDER BY. EJEMPLO:

Recuperar una lista de empleados y de los proyectos en los que trabajan, ordenada por el
departamento. Dentro de cada departamento, ordenar alfabéticamente los empleados por su
primer apellido y su nombre. Ejemplo

SELECT NombreDpto, Apellid01, Nombre, NombreProyecto

FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO

WHERE NumeroDpto=Dno AND Dni=DniEmpleado AND NumProy=NumProyecto

ORDER BY NombreDpto, Apellid01, Nombre;

6. COMPARACIONES CON VALORES NULL Y LÓGICA DE TRES VALORES

SQL tiene varias reglas para tratar con los valores NULL, NULL se utiliza para representar la
ausencia de un valor, aunque normalmente tiene una de tres interpretaciones diferentes: valor
desconocido (existe, pero no se conoce), valor no disponible (existe, pero no se especifica a
propósito), o atributo no aplicable (no definido para esta tupla). Considere los siguientes
ejemplos para ilustrar cada uno de los significados de NULL.

1. Valor desconocido. Una persona en particular tiene una fecha de nacimiento, pero
no la conocemos, por lo que la representamos con NULL en la base de datos.
2. Valor no disponible o no especificado. Una persona tiene un teléfono en casa, pero
no quiere que aparezca listado, por lo que se impide su visualización y se representa
como NULL en la base de datos.
3. Atributo no aplicable. Un atributo ÚltimoGrado sería NULL para una persona que no
tiene una licenciatura, algo que no es aplicable para esa persona.

8
7. CONSULTAS ANIDADAS, TUPLAS Y COMPARACIONES CONJUNTO/MULTICONJUNTO

Algunas consultas requieren obtener valores existentes en la base de datos para usarlos
después en una condición de comparación. Dichas consultas se pueden formular
convenientemente mediante consultas anidadas, que son bloques select-from-where
completos dentro de la cláusula WHERE de otra consulta. Esa otra consulta es la que se conoce
como consulta externa.

8. CONSULTAS ANIDADAS CORRELACIONADAS

siempre que una condición de la cláusula where de una consulta anidada se refiera a algún
atributo de una relación declarada en la consulta exterior, se dice que las dos consultas son
correlacionadas. podemos entender mejor una consulta correlacionada teniendo en cuenta que
la consulta anidada se evalúa una vez por cada tupla (o combinación de tuplas) en la consulta
exterior.

por ejemplo, podemos imaginar c16 de este modo:por cada tupla empleado, evaluar la consulta
anidada, que recupera los valores dniempleado para todas las tuplas subordinado que tienen el
mismo sexo y nombre que la tupla de empleado; si el valor de DNI dela tupla empleado se
encuentra en el resultado de la consulta anidada, entonces seleccionar esa tupla empleado.

En general, una consulta escrita con bloques select-from-where anidados y utilizando los
operadores de comparación= o IN siempre se expresa como una consulta de un solo bloque.
Por ejemplo:
SELECT E.Nombre, E.Apellido1

FROM EMPLEADO AS E, SUBORDINADO AS D

WHERE E.Dni=D.DniEmpleado ANO E.Sexo=D.Sexo AND E.Nombre=D.NombSubordinado;

La implementación SQL original en SYSTEM R también tenía un operador de comparación


CONTAINS, que se utilizaba para comparar dos conjuntos o multiconjuntos. Este operador se
fue eliminando progresivamente del lenguaje, posiblemente debido a la complejidad de
implementarlo eficazmente. La mayoría de las implementaciones comerciales de SQL no tienen
este operador. El operador CONTAINS compara dos conjuntos de valores y devuelve TRUE si un
conjunto contiene todos los valores del otro conjunto.

9. LAS FUNCIONES EXISTS Y UNIQUE EN SQL

La función EXISTS de SQL se utiliza para comprobar si el resultado de una consulta anidada
correlacionada está vacío (no contiene tuplas) o no. El resultado de EXISTS es un valor
booleano, TRUE o FALSE. EXISTS Y NOT EXISTS normalmente se utilizan en combinación con
una consulta anidada correlacionada.

9
10. CONJUNTOS EXPLÍCITOS Y RENOMBRADO DE ATRIBUTOS EN SQL

Hemos visto varias consultas con una consulta anidada en la cláusula WHERE. También es
posible utilizar un conjunto explícito de valores en dicha cláusula, en lugar de una consulta
anidada. El conjunto debe ir entre paréntesis. Ejemplo:

Recuperar los números del documento nacional de identidad de todos los empleados
que trabajan en los proyectos 1, 2 ó 3.
SELECT DISTINCT DniEmpleado
FROM TRABAJA_EN
WHERE NumProy IN (1, 2, 3);

En SQL, es posible renombrar cualquier atributo que aparezca en el resultado de una consulta
añadiendo el calificador AS seguido por el nombre nuevo deseado. Por tanto, la estructura AS
se puede utilizar para asignar alias a los nombres de atributos y relaciones, y tanto en la
cláusula SELECT como en la cláusula FROM. Ejemplo:

SELECT E.Apellid01 AS NombreDeEmpleado, S.Apellid01 AS NombreDeSupervisor

FROM EMPLEADO AS E, EMPLEADO AS S

WHERE E.SuperDni=S.Dni;

11. TABLAS CONCATENADAS EN SQL Y CONCATENACIONES EXTERIORES

El concepto de tabla concatenada (o relación concatenada) se incorporó a SQL para poder


especificar una tabla como resultado de una operación de concatenación en la cláusula from de
una consulta. Esta estructura es más fácil que mezclar todas las condiciones de selección y
concatenación en la cláusula WHERE. Por ejemplo, considere la consulta C 1, que recupera el
nombre y la dirección de los empleados que trabajan para el departamento 'Investigación'.
Puede ser más fácil especificar primero la concatenación de las relaciones EMPLEADO y
DEPARTAMENTO, Y después seleccionar las tuplas y los atributos deseados. Esto se puede
escribir en SQL como en C lA:

C1A:
SELECT Nombre, Apellid01, Dirección

FROM (EMPLEADO JOIN DEPARTAMENTO ON Dno=NumeroDpto)

WHERE NombreDpto='lnvestigación';
La cláusula FROM de CIA contiene una sola tabla concatenada. Los atributos de dicha tabla son
todos los atributos de la primera tabla, EMPLEADO, seguidos por todos los atributos de la
segunda tabla, DEPARTAMENTO. El concepto de tabla concatenada también permite
especificar tipos diferentes de concatenación, como NATURAL JOIN y varios tipos de OUTER
JOIN. En una concatenación natural (NATURAL JOIN) sobre las relaciones R y S, no se
especifica condición de concatenación alguna; se crea una condición EQUIJOIN implícita para
cada par de atributos con el mismo nombre que en R y S. Cada par de atributos se incluye
unasola vez en la relación resultante

10
Si los nombres de los atributos de concatenación no coinciden con los de las relaciones base,
es posible renombrarlos para que coincidan, y después aplicar NATURAL JOIN. En este caso, se
puede utilizar la estructura AS para renombrar una relación y todos sus atributos en la cláusula
FROM.
Las opciones disponibles para especificar las tablas concatenadas en SQL son INNER JOIN (igual
que JOIN), LEFT OUTER JOIN, RIGHT OUTER JOIN y FULL OUTER JOIN. En las tres últimas
opciones puede omitirse la palabra clave OUTER. Si los atributos de concatenación tienen el
mismo nombre, también se puede especificar la variación de concatenación natural de las
concatenaciones externas utilizando la palabra clave NATURAL antes que la operación (por
ejemplo, NATURAL LEFT OUTER JOIN). La palabra clave CROSS JOIN se utiliza para especificar la
operación PRODUCTO CARTESIANO. Aunque esto sólo debe usarse con sumo cuidado, porque
genera todas las posibles combinaciones de tuplas. También se pueden anidar especificaciones
de concatenación; es decir, una de las tablas de una concatenación puede ser una tabla
concatenada.

No todas las implementaciones de SQL han implementado la sintaxis nueva de las tablas
concatenadas. En algunos sistemas, se utiliza una sintaxis diferente para las concatenaciones
externas, utilizando unos operadores de comparación diferentes ( + =, = + y + = +)para la
concatenación externa izquierda, derecha y completa, respectivamente) al especificar la
condición de concatenación.

12. FUNCIONES AGREGADAS EN SQL

SQL dispone de funciones que incorporan estos conceptos: COUNT, SUM, MAX, MIN y AVG. La
función COUNT devuelve el número de tuplas o valores especificados en una consulta. Las
funciones SUM, MAX, MIN y AVG se aplican a un conjunto o multiconjunto de valores
numéricos y devuelven, respectivamente, la suma, el valor máximo, el valor mínimo y el
promedio de esos valores. Estas funciones se pueden utilizar en la cláusula SELECT o en una
cláusula HAVING. Las funciones MAX y MIN también se pueden utilizar con atributos que tienen
dominios no numéricos si los valores del dominio tienen una ordenación total entre sí.

Ejemplo: Visualizar la suma de los salarios de todos los empleados, el salario más alto, el salario
más bajo y el sueldo medio.
SELECT SUM (Sueldo), MAX (Sueldo), MIN (Sueldo), AVG (Sueldo)

FROM EMPLEADO;

13. AGRUPAMIENTO: LAS CLÁUSULAS GROUP BY Y HAVING

En muchos casos queremos aplicar las funciones agregadas a subgrupos de tuplas de una
relación, estando los subgrupos basados en algunos valores de atributo. Por ejemplo, vamos a
suponer que queremos saber el sueldo medio de los empleados de cada departamento o el
número de empleados que trabajan en cada proyecto. En estos casos, tenemos que dividir la
relación en subconjuntos no solapados (o grupos) de tuplas. Cada campo (partición) estará
compuesto por las tuplas que tienen el mismo valor para algún(os) atributo(s),

11
denominado(s) atributo(s) de agrupamiento. Después podemos aplicar la función
independientemente a cada campo. SQL tiene una cláusula GROUP BY para este propósito.
Esta cláusula especifica los atributos de agrupamiento, que también deben aparecer en la cláusula
SELECT, por lo que el valor resultante de aplicar la función de agregación a un campo de rupias
aparece junto con el valor de los atributos de agrupamiento.

Por cada departamento, recuperar el número de departamento, el número de empleados


del mismo y el sueldo medio.

C24:
SELECT Dno, COUNT (*), AVG (Sueldo

FROM EMPLEADO

EMPLEADO GROUP BY Dno

Una consulta de recuperación de SQL puede constar de hasta seis cláusulas, pero sólo las dos
primeras, SELECT y FROM, son obligatorias. Las cláusulas se especifican en el siguiente orden
(las que aparecen entre corchetes son opcionales):

SELECT <lista de atributos y funciones>


FROM <lista de tablas>
[ WHERE <condición>]
[ GROUP BY <atributo(s) de agrupamiento>]
[ HAVING <condición de agrupamiento>]
[ OROER BY <lista de atributos>];

La cláusula SELECT lista los atributos o funciones que se recuperarán. La cláusula FROM
especifica todas las relaciones (tablas) que se necesitan en la consulta, incluyendo las relaciones
concatenadas, pero no las que están en las consultas anidades. La cláusula WHERE especifica
las condiciones de selección de tuplas para esas relaciones, incluyendo, si es necesario, las
condiciones de concatenación. GROUP BY especifica los atributos de agrupamiento, mientras
que HAVING especifica una condición en los grupos que se están seleccionando,más que en las
tuplas individuales. Las funciones agregadas integradas COUNT, SUM, MIN, MAX Y AVG se
utilizan en combinación con el agrupamiento, pero también se pueden aplicar a todas las tuplas
seleccionadas en una consulta sin una cláusula GROUP BY. Por último, ORDER BY especifica un
orden para la visualización del resultado de la consulta.

14. SENTENCIAS INSERT, DELETE Y UPDATE DE SQL


En SQL se pueden utilizar tres comandos para modificar la base de datos: INSERT, DELETE y
UPDATE.

En su formato más sencillo, INSERT se utiliza para añadir una sola tupla a una relación.
Debemos especificar el nombre de la relación y una lista de valores para la tupla. Los valores
deben suministrarse en el mismo orden en el que se especificaron los atributos
correspondientes en el comando CREATE TABLE. Por ejemplo, para
añadir una tupla nueva a la relación EMPLEADO y especificada con el comando CREATETABLE
EMPLEADO. Ejemplo:

12
Una segunda forma de la sentencia INSERT permite especificar explícitamente los nombres de
los atributos que se corresponden con los valores suministrados en el comando INSERT. Esto
resulta útil si la relación tiene muchos atributos y sólo vamos a asignar valores a unos cuantos
en la tupla nueva. Sin embargo, los valores deben incluir todos los atributos con la
especificación NOT NULL y ningún valor predeterminado. Los atributos
que permiten los valores NULL o DEFAULT son los que se pueden omitir.

Un DBMS que implementa completamente SQL-99 debe soportar e implementar todas las
restricciones de integridad que se pueden especificar en el DDL. Sin embargo, algunos DBMS no
incorporan todas las restricciones, al objeto de mantener toda la eficacia del DBMS y debido a
la complejidad de implementar todas las restricciones. Si un sistema no soporta alguna
restricción (por ejemplo, la integridad referencial), el usuario o el programador tendrá que
implementar la restricción.

Una variación del comando INSERT inserta varias tuplas en una relación, en combinación con la
creación y la carga de la relación con el resultado de una consulta. Por ejemplo, para crear una
tabla temporal con el nombre, el número de empleados y el total de sueldos por cada
departamento, podemos escribir las sentencias de U3A y U3B :
U3A:
CREATE TABLE INFO_DEPTS
( NombreDeDpto VARCHAR(15),
NumDeEmpleados INTEGER,
TotalSueldos INTEGER );

U3B:
INSERT INTO INFO_DEPTS ( NombreDeDpto, NumDeEmpleados, TotalSueldos )
SELECT NombreDpto, COUNT (*), SUM (Sueldo)
GROUP BY NombreDpto;

El comando DELETE elimina tuplas de una relación. Incluye una cláusula WHERE, parecida a la
que se utiliza en una consulta SQL, para seleccionar las tuplas que se van a eliminar. Las tuplas
se eliminan explícitamente sólo de una tabla a la vez. Sin embargo, la eliminación se puede
propagar a tuplas de otras relaciones si se han especificado acciones de activación referencial
en las restricciones de integridad referencial del DDL. En función del número de tuplas
seleccionadas por la condición de la cláusula WHERE, ninguna, una o varias tuplas pueden ser
eliminadas por un solo comando DELETE. La ausencia de una cláusula WHERE significa que se
borrarán todas las tuplas de la relación; sin embargo, la tabla permanece en la base de datos,
pero vacía. Debemos utilizar el comando DROP TABLE para eliminar la definición de la tabla.

El comando UPDATE se utiliza para modificar los valores de atributo de una o más tuplas
seleccionadas. Como en el comando DELETE, una cláusula WHERE en el comando UPDATE
selecciona las tuplas de una relación que se van a modificar. No obstante, la actualización del
valor de una clave principal puede propagarse a los valores de la foreign key de las tuplas de
otras relaciones en caso de haberse especificado una acción de activación referencial en las
restricciones de integridad referencial del DDL

13
15. RESTRICCIONES COMO ASERCIONES Y TRIGGERS

Mediante aserciones declarativas, utilizando la sentencia CREATE ASSERTION del


DDL. A cada aserción se le asigna un nombre de restricción y se especifica a través de una
condición parecida a la cláusula WHERE de una consulta SQL. Por ejemplo, para especificar en
SQL la restricción de que el sueldo de un empleado no debe ser superior al del director del
departamento para el que trabaja ese empleado, podemos escribir la siguiente aserción:

CREATE ASSERTION RESTR_SUELDO


CHECK (NOT EXISTS ( SELECT *
FROM EMPLEADO E, EMPLEADO M, DEPARTAMENTO D
WHERE E.Sueldo>M.Sueldo
AND E.Dno=D.NumeroDpto
AND D.DniDirector=M.Dni ) );

El nombre de restricción RESTR_SUELDO va seguido por la palabra clave CHECK, que a su vez va
seguida por una condición entre paréntesis que debe ser verdadera en cada estado de la base
de datos para que la aserción sea satisfecha. El nombre de la restricción se puede utilizar más
tarde para referirse a dicha restricción o para modificarla o eliminarla. El DBMS es responsable
de garantizar que no se viole la condición. Se puede utilizar la condición de cualquier cláusula
WHERE, pero pueden especificarse muchas restricciones utilizando el estilo EXISTS y NOT
EXISTS de las condiciones SQL. En cuanto algunas tuplas de la base de datos provocan que la
condición de una sentencia ASSERTION se evalúe como FALSE, la restricción es violada. Por
otro lado, la restricción es satisfecha por un estado de la base de datos si ninguna combinación
de tuplas de dicho estado viola la restricción.

La técnica básica para escribir estas aserciones consiste en especificar una consulta que
seleccione las tuplas que violan la condición deseada. Al incluir esta consulta dentro de una
cláusula NOT EXISTS, la aserción especificará que el resultado de esta consulta debe estar vacío.
De este modo, la aserción es violada si el resultado de la consulta no está vacío. En nuestro
ejemplo, la consulta selecciona todos los empleados cuyo sueldo es mayor que el sueldo del
director de su departamento. Si el resultado de la consulta no está vacío, la aserción
es violada.

La cláusula CHECK y la condición de la restricción también se pueden utilizar para especificar


restricciones en los atributos y las condicione una diferencia más importante entre CREATE
ASSERTION y las otras dos es que las cláusulas CHECK en los atributos, los dominios y las tuplas
se comprueban en SQL sólo cuando se insertan o actualizan las tuplas. Por tanto, la
comprobación de la restricción se puede implementar de forma más eficaz por parte de los
DBMS en estos casos. El diseñador del esquema debe utilizar CHECK en los atributos, los
dominios y las tuplas sólo cuando está seguro de que la restricción sólo puede ser violada por la
inserción o la actualización de tuplas. Por el contrario, el diseñador del esquema debe usar
CREATE ASSERTION sólo en los casos en que no es posible utilizar CHECK en los atributos, los
dominios o las tuplas, para que el DBMS pueda realizar las comprobaciones con más eficacia.

14
16. VISTAS (TABLAS VIRTUALES) EN SQL

En esta sección introducimos el concepto de vista. Veremos cómo se especifican, explicaremos


el problema de actualizar vistas y cómo se pueden implementar en los DBMS .

17. CONCEPTO DE VISTA EN SQL

Una vista en terminología SQL es una tabla que deriva de otras tablas. l7 Esas otras tablas
pueden ser tablas base o vistas definidas anteriormente. Una vista no existe necesariamente en
formato físico; está considerada como una tabla virtual, en oposición a las tablas base, cuyas
tuplas están realmente almacenadas en la base de datos. Esto limita las posibles operaciones
de actualización que pueden aplicarse a las vistas, pero no ofrecen limitación alguna al
consultar una vista. Podemos pensar que una vista es una forma de especificar una tabla a la
que nos referimos con frecuencia, aunque no exista físicamente. Por ejemplo, en la Figura 5.5
podemos emitir consultas frecuentes para recuperar el nombre del empleado y el nombre de
los proyectos en los que trabaja. En lugar de tener que especificar.

18. ESPECIFICACIÓN DE VISTAS EN SQL

En SQL se utiliza el comando CREATE VIEW para especificar una vista. A una vista se le asigna un
nombre de tabla (virtual), o nombre de vista, una lista de nombres de atributos y una consulta
que sirve para especificar el contenido de la vista. Si ninguno de los atributos de la vista resulta
de aplicar funciones u operaciones aritméticas, no tenemos que especificar nombres de
atributos para la vista, puesto que serían idénticos a los de los atributos de las tablas de
definición.

19. Implementación y actualización de vistas

El problema de implementar eficazmente una vista para consultas es complejo. Se han sugerido
dos metodologías principalmente. La denominada modificación de consulta implica modificar
la consulta de la vista para que sea una consulta de las tablas base subyacentes. Por ejemplo, el
DBMS modificaría automáticamente la consulta CVI por la siguiente consulta:
SELECT Nombre, Apellido1

FROM Nombre, Apellido1

WHERE Dni=DniEmpleado AND NumProy=NumProyecto


AND NombreProyecto='ProductoX';

El inconveniente de esta metodología es su ineficacia para las vistas definidas mediante


consultas complejas cuya ejecución lleva mucho tiempo, especialmente si se aplican varias
consultas a la vista dentro de un corto periodo de tiempo. La otra estrategia, denominada
materialización de la vista, implica la creación física de una tabla de vista temporal cuando la
vista es consultada primero y se mantiene esa tabla en la suposición de que en la vista seguirán
otras consultas. En este caso, debe desarrollarse una estrategia eficaz para actualizar
automáticamente la tabla de la vista cuando las tablas base son actualizadas, a fin de mantener
la vista actualizada.

15
Con este propósito se han desarrollado técnicas que utilizan el concepto de actualización
incremental, según las cuales se determinan las tuplas que deben inseliarse, eliminarse o
modificarse en una tabla de vista materializada cuando se introduce un cambio en alguna de las
tablas base de definición. La vista se conserva mientras se esté consultando. Si no se consulta la
vista en un periodo de tiempo determinado, el sistema puede entonces eliminar automáticamente
la tabla de vista fisica y volver a calcularla desde el principio cuando en el futuro alguna consulta
haga referencia a la vista.

En resumen, podemos hacer estas observaciones:

 Una vista con una sola tabla de definición es actualizable si los atributos de la vista
contienen la clave principal de la relación base, así como todos los atributos con la
restricción NOT NULL que no tienen valores predeterminados especificados.
 Las vistas definidas sobre varias tablas y que utilizan concatenaciones normalmente no
son actualizabies.
 Las vistas definidas utilizando funciones de agrupamiento y agregación no son
actualizables.

20. CARACTERÍSTICAS ADICIONALES DE SQL

SQL tiene una serie de características adicionales que no hemos descrito en este capítulo, pero
que explicamos en otra parte del libro. Son las siguientes:

 SQL dispone de varias técnicas diferentes para escribir programas en distintos lenguajes
de programación, en los que se pueden incluir sentencias de SQL para acceder a una o
más bases de datos.
 Cada RDBMS comercial tendrá, además de los comandos SQL, un conjunto de comandos
para especificarlos parámetros de diseño físico de la base de datos, las estructuras de
fichero de las relaciones, y las rutas de acceso, como.
 SQL tiene comandos para controlar las transacciones. Se utilizan para especificar las
unidades de procesamiento de bases de datos al objeto de controlar la concurrencia y la
recuperación.
 SQL tiene estructuras de lenguaje para especificar la concesión y revocación de
privilegios a los usuarios. Los privilegios normalmente corresponden al derecho de
utilizar ciertos comandos SQL para acceder a determinadas relaciones .
 SQL tiene estructuras de lenguaje para cieltos triggers. Normalmente se conocen como
técnicas de base de datos activa, puesto que especifican acciones que son
automáticamente ejecutadas por los eventos.
 SQL ha incorporado muchas características de los modelos orientados a objetos, sobre
todo para mejorar los sistemas relacionales conocidos como de objetos relacionales
(objeto-relacional).

16
CONCLUSION

En resumen, la amplitud y el alcance de los comandos SQL proporcionan la capacidad


para crear y manipular una amplia variedad de objetos de base de uso de los distintos
CREATE, ALTER y DROP, esos objetos de la base de datos se pueden cargar con datos
mediante comandos como INSERT. Los datos pueden ser manipulados utilizando una
amplia variedad de comandos, tales como SELECT, DELETE, y TRUNCATE, así como los
comandos de cursor, DECLARE, OPEN, FETCH, y CLOSE. Las transacciones para manipular
los datos se controlan mediante el SET comando, más los comandos COMMIT y
ROLLBACK. Y finalmente, otros comandos cubiertos en este capítulo incluyen aquellos
que controlan el acceso de un usuario a los recursos de la base de datos a través de
comandos como GRANT y REVOKE.

BIBLIOGRA
1. LIBRO FUNDAMENTOS_DE_SISTEMAS_DE_BASES_DE_DATO
2. https://youtu.be/YOaC_TyOrdk
3. https://youtu.be/j3WrC6zlTV8
4. https://youtu.be/ad5Jx4jbLt4

17

También podría gustarte