Sunteți pe pagina 1din 56

APUNTES DE TALLER DE BD

SILVIA METLICH MEDLICH

UNIDAD I. LENGUAJE DE DEFINICIÓN DE DATOS.

Un sistema gestor de base de datos (SGBD) es un conjunto de programas que


permiten el almacenamiento, modificación y extracción de la información en
una base de datos. Además de proporcionar herramientas para añadir, borrar,
modificar y analizar los datos. Los usuarios pueden acceder a la información
usando herramientas específicas de consulta y de generación de informes, o bien
mediante aplicaciones al efecto.
Estos sistemas también proporcionan métodos para mantener la integridad de
los datos, para administrar el acceso de usuarios a los datos y para recuperar la
información si el sistema se corrompe. Permiten presentar la información de la
base de datos en variados formatos. La mayoría incluyen un generador de
informes. También pueden incluir un módulo gráfico que permita presentar la
información con gráficos y tablas.
Generalmente se accede a los datos mediante lenguajes de consulta, lenguajes
de alto nivel que simplifican la tarea de construir las aplicaciones. También
simplifican las consultas y la presentación de la información. Un SGBD permite
controlar el acceso a los datos, asegurar su integridad, gestionar el acceso
concurrente a ellos, recuperar los datos tras un fallo del sistema y hacer copias
de seguridad. Las bases de datos y los sistemas para su gestión son esenciales
para cualquier área de negocio, y deben ser gestionados con esmero.

Las bases de datos generalmente funcionan en computadoras que se dedican a


forma exclusiva a este campo. Por las prestaciones requeridas, generalmente
funcionan en computadoras multiprocesador con abundante memoria.
Para el almacenamiento de los datos puede contar con sistemas de disco propio
o almacenamiento de conexión directa (DAS), puede conectarse a una red de
almacenamiento (SAN) o conectarse a un sistema de almacenamiento en red
(NAS).
Existen aceleradores hardware, usados en grandes sistemas de proceso de
transacciones. Los SGBD se encuentran en el corazón de toda aplicación que
maneje datos. Los SGBD se basan en sistemas operativos estándar para efectuar
dichas funciones.

Estructura relacional
Ejemplo de tablas y relaciones.

La estructura relacional es la más extendida hoy en día. Se usa en mainframes,


computadoras medias y microcomputadoras. Almacena los datos en filas
(tuplas) y columnas (atributos). Estas tablas pueden estar conectadas entre sí
por claves comunes. Mientras trabajaba en IBM en 1972, E. F. Codd concibió
esta estructura. El modelo no resulta sencillo de consultar por el usuario ya que
puede requerir una compleja combinación de tablas.

Estructura multidimensional

Cubos representando 4 dimensiones en base de datos multidimensional.

La estructura multidimensional tiene parecidos a la del modelo relacional, pero


en vez de las dos dimensiones filas-columnas, tiene N dimensiones. Esta
estructura ofrece el aspecto de una hoja de cálculo. Es fácil de mantener y
entender ya que los registros se almacenan del mismo modo como se ven. Sus
altas prestaciones han hecho de ella la base de datos más popular para el proceso
analítico de transacciones en línea (OLAP).
Estructura orientada a objetos

Ejemplo de base de datos conteniendo objetos y herencias.

La estructura orientada a objetos está diseñada siguiendo el paradigma de los


lenguajes orientados a objetos. De este modo soporta los tipos de datos gráficos,
imágenes, voz y texto de manera natural. Esta estructura tiene gran difusión en
aplicaciones web para aplicaciones multimedia.
Antes de la implantación de los SGBD con estructura orientada a objetos, el
almacenamiento de datos multimedia se basaba en el sistema de ficheros para
organizar, almacenar y procesar los datos. El proceso de ficheros es engorroso,
costoso e inflexible. La redundancia de los datos es un inconveniente del
proceso de ficheros ya que los ficheros independientes producen ficheros
duplicados con su implicación en el espacio necesario. Otro inconveniente es la
falta de integración, y la dificultad de mantenimiento. Esto fue encaminado
aplicando la orientación a objetos a los datos.
ARQUITECTURA.
La arquitectura de un SGBD especifica sus componentes (incluyendo su
descripción funcional) y sus interfaces. Trata de conceptos distintos que la
arquitectura de la base de datos. Los componentes principales de un SGBD son:

• Interfaces externas: medios para comunicarse con el SGDB en ambos


sentidos (E/S) y explotar a todas sus funciones. Pueden afectar a la BD o a
la operación del SGBD, por ejemplo:
• operaciones directas con la base de datos: definición de tipos, asignación
de niveles de seguridad, actualización de datos, consulta de la base de
datos...
• operaciones relativas a la operación del SGBD: copia de seguridad y
restauración, recuperación tras una caída, monitoreo de seguridad, gestión
del almacenamiento, reserva de espacio, monitoreo de la configuración,
monitoreo de prestaciones, afinado...
• las interfaces externas bien pueden ser utilizadas por usuarios (p. e.
administradores) o bien por programas que se comunican a través de una
API.
• Intérprete o procesador del lenguaje: la mayor parte de las operaciones se
efectúan mediante un lenguaje de base de datos. Existen lenguajes para
definición de datos, manipulación de datos (p. e. SQL), para especificar
aspectos de la seguridad y más. Las sentencias en ese lenguaje se introducen
en el SGBD mediante la interfaz adecuada. Se procesan las expresiones en
dicho lenguaje (ya sea compilado o interpretado) para extraer las operaciones
de modo que puedan ser ejecutadas por el SGBD.
• Optimizador de consultas: realiza la optimización de cada pregunta y
escoge el plan de actuación más eficiente para ejecutarlo.
• Motor de la base de datos: realiza las operaciones requeridas sobre la base
de datos, típicamente representándolo a alto nivel.
• Mecanismo de almacenamiento: traduce las operaciones a lenguaje de bajo
nivel para acceder a los datos. En algunas arquitecturas el mecanismo de
almacenamiento está integrado en el motor de la base de datos.
• Motor de transacciones: para conseguir corrección y fiabilidad, la mayoría
de las operaciones internas del SGBD, se realizan encapsuladas dentro de
transacciones. Las transacciones pueden ser especificadas externamente al
SGBD para encapsular un grupo de operaciones. El motor de transacciones
sigue la ejecución de las transacciones y gestiona su ejecución de acuerdo
con las reglas que tiene establecidas (p. e., control de concurrencia y su
ejecución o cancelación).
• Gestión y operación de SGBD: comprende muchos otros componentes que
tratan de aspectos de gestión y operativos del SGBD como monitoreo de
prestaciones, gestión del almacenamiento, mapas de almacenamiento.

CREACIÓN DEL ESQUEMA DE LA BASE DE DATOS


El esquema de una base de datos (en inglés, database schema) describe la
estructura de una base de datos, en un lenguaje formal soportado por un sistema
de gestión de base de datos (DBMS). En una base de datos relacional, el
esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada
campo y cada tabla.
El esquema es generalmente almacenado en un diccionario de datos. Aunque
generalmente el esquema es definido en un lenguaje de base de datos, el término
se usa a menudo para referirse a una representación gráfica de la estructura de
base de datos.

ESQUEMAS

• Esquema conceptual un mapa de conceptos y sus relaciones:

Un esquema conceptual es la representación gráfica o simbólica de un


concepto. Se trata de un gráfico, en el cual, se colocan los principales
elementos de lo que se quiere representar. Colocando en cuadrados una
palabra, oración o frase que represente una idea, y entrelazándola con
flechas, con otros conceptos también representados en una frase y colocados
en otro cuadrado. La unión de las flechas entre dos conceptos distintos marca
la relación entre esas ideas distintas, pero similares en algún aspecto que
comparten entre sí.
• Esquema lógico un mapa de las entidades y sus atributos y las relaciones.
• Esquema físico una aplicación de un esquema lógico.
• Esquema objeto base de datos Oracle Objeto.

SISTEMAS GESTORES DE BASES DE DATOS MAS UTILIZADOS:

MYSQL

Es un sistema de gestión de base de datos relacional, multihilo y multiusuario


seguramente el más usado en aplicaciones creadas como software libre.

Por un lado, ofrece bajo la GNU GPL, pero, empresas que quieran incorporarlo
en productos privativos pueden comprar a la empresa una licencia que les
permita ese uso.

Ventajas:

▪ Velocidad al realizar las operaciones


▪ Bajo costo en requerimientos para la elaboración de bases de datos
▪ Facilidad de configuración e instalación.

MICROSOFT SQL SERVER

Es un sistema de gestión de bases de datos relacionales basado en el lenguaje


Transact-SQL, capaz de poner a disposición de muchos usuarios grandes
cantidades de datos de manera simultánea.

Es un sistema propietario de Microsoft. Sus principales características son:

▪ Soporte de transacciones.
▪ Escalabilidad, estabilidad y seguridad.
▪ Soporta procedimientos almacenados.
▪ Incluye también un potente entorno gráfico de administración, que permite
el uso de comandos DDL y DML gráficamente.
▪ Permite trabajar en modo cliente-servidor donde la información y datos se
alojan en el servidor y las terminales o clientes de la red sólo acceden a la
información.
▪ Además, permite administrar información de otros servidores de datos
Su principal desventaja es el precio, aunque cuenta con una versión EXPRESS
que permite usarlo en entornos pequeños. (Aprox. unos 4GB de información y
varios millones de registros por tabla).

ORACLE

Es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo


en inglés de Relational Data Base Management System), fabricado por Oracle
Corporation.

Tradicionalmente Oracle ha sido el SGBS por excelencia, considerado siempre


como el más completo y robusto, destacando por:

▪ Soporte de transacciones.
▪ Estabilidad.
▪ Escalabilidad.
▪ Es multiplataforma.
También siempre ha sido considerado de los más caros, por lo que no se ha
estandarizado su uso como otras aplicaciones.

Al igual que SQL Server, Oracle cuenta con una versión EXPRESS gratis para
pequeñas instalaciones o usuarios personales.

MICROSOFT ACCESS
Es un sistema de gestión de bases de datos Relacional creado por Microsoft
(DBMS) para uso personal de pequeñas organizaciones.

Se ha ofrecido siempre como un componente de la suite Microsoft Office


aunque no se incluye en el paquete “básico”.

Una posibilidad adicional es la de crear ficheros con bases de datos que pueden
ser consultados por otros programas.

Entre las principales funcionalidades reseñables podemos indicar que:

▪ Permite crear tablas de datos indexadas.


▪ Modificar tablas de datos.
▪ Relaciones entre tablas (creación de bases de datos relacionales).
▪ Creación de consultas y vistas.
▪ Consultas referencias cruzadas.
▪ Consultas de acción (INSERT, DELETE, UPDATE).
▪ Formularios.
▪ Informes.
▪ Entorno de programación a través de VBA
▪ Llamadas a la API de Windows.

POSTGRE SQL

Es un sistema de gestión de base de datos relacional orientada a objetos y libre,


publicado bajo la licencia BSD.

Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL


no es manejado por una empresa y/o persona, sino que es dirigido por una
comunidad de desarrolladores que trabajan de forma desinteresada, altruista,
libre y/o apoyada por organizaciones comerciales. La comunidad PostgreSQL
se denominada el PGDG (PostgreSQL Global Development Group).
Sus principales características son:

▪ Alta concurrencia: mediante un sistema denominado MVCC (Acceso


concurrente multiversión, por sus siglas en inglés)
▪ Amplia variedad de tipos nativos: provee nativamente varios soportes
▪ Ahorros considerables de costos de operación
▪ Estabilidad y confiabilidad

DB2

Este SGBD es propiedad de IBM, bajo la cual se comercializa el sistema de


gestión de base de datos. Utiliza XML como motor, además el modelo que
utiliza es el jerárquico en lugar del modelo relacional que utilizan otros gestores
de bases de datos.

Sus características más importantes son:

▪ Permite el manejo de objetos grandes (hasta 2 GB)


▪ La definición de datos y funciones por parte del usuario, el chequeo de
integridad referencial,
▪ SQL recursivo, soporte multimedia: texto, imágenes, video, audio; queries
paralelos, commit de dos fases, backup/recuperación on−line y offline.
▪ Permite agilizar el tiempo de respuestas de esta consulta
▪ Recuperación utilizando accesos de sólo índices.
▪ Predicados correlacionados.
▪ Tablas de resumen
▪ Tablas replicadas
▪ Uniones hash
Su principal desventaja es el precio, está dirigido solo a grandes empresas con
necesidades de almacenamiento y procesamiento muy altas.
Al igual que SQL Server y Oracle dispone de una versión EXPRESS gratis pero
no de libre distribución.

Existen muchos más gestores de bases de datos en el mercado, pero estos como
he comentado son los más usados.

Todos son relacionales (a excepción del BD2) y comparten por tanto lenguaje
de consulta (con algunas variantes propias) que es SQL. Es importante por tanto
para cualquiera que desee trabajar con bases de datos comenzar por el estudio
de este lenguaje común y luego estudiar las peculiaridades de la base de datos
en cuestión.

En las empresas o negocios hay que sugerir el que se adapte a las necesidades
de acuerdo a inversión a realizar, volumen de información a almacenar, tipo de
consultas a realizar, etc.
MODIFICACIÓN DEL ESQUEMA DE LA BASE DE DATOS

1.2.1 Modificación del esquema de la base de datos


El termino ALTER TABLE se utiliza para agregar, eliminar o modificar columnas de una tabla existente

Ejemplos:

Agregar el campo trabajo a la tabla Customers.

ALTER TABLE Customers ADD Trabajo nvarchar(15);

Eliminar la columna de Fax de la table Customers.

ALTER TABLE Customers DROP COLUMN Fax;

Cambiar el tipo de dato de la columna Fax de la tabla Customers a int.

ALTER TABLE Customers ALTER COLUMN Fax int;

APLICACIÓN DE CONSTRAINTS

Las limitaciones o (Constraints) de SQL se utilizan para especificar reglas para los datos de una tabla.
Si hay alguna violación entre la restricción y acción de datos, la acción se aborta por la restricción. las
restricciones pueden ser especificadas cuando se crea la tabla (dentro de la instrucción CREATE TABLE)
o después de la tabla se crea (dentro de la instrucción ALTER TABLE).
Algunos contraints:
NOT NULL: Indica que una columna no puede almacenar un valor nulo.
UNIQUE: Asegura que cada fila de una columna debe tener un valor único.
PRIMARY KEY : Una combinación de un valor no nulo y único. Asegura que una columna
(o combinación de dos o más columnas) tienen una identidad única que ayuda a encontrar un registro en
particular en una tabla más fácil y rápidamente.

FOREIGN KEY : Asegurar la integridad referencial de los datos en una tabla para que coincida con
los valores de otra tabla.

CHECK : Asegura que el valor de una columna cumple una condición específica.

DEFAULT : Especifica un valor por defecto para una columna.

Ejemplo: Crear una tabla con una llave primaria con los contraints no nulo, llave primaria y identity.

Create Table Clientes


(
ClientID int primary key not null indentity(1,1), - - Contraints utilizadas
(not null, primary key y identity) Nombre nvarchar(30)
);
Ejemplo: insertar una llave primaria a el campo ClienteID de la tabla cliente.

Alter table Cliente ADD contraint primary key (ClienteID);

ALTER TABLE Products ADD FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)


ALTER TABLE Products ADD FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)
ALTER TABLE Order Details ADD FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
ALTER TABLE Order Details ADD FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
ALTER TABLE Orders ADD FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
ALTER TABLE Orders ADD FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
ALTER TABLE Orders ADD FOREIGN KEY (ShipVia) REFERENCES Shippers(ShippersID)
UNIDAD II. LENGUAJE DE MANIPULACIÓN DE DATOS.
INSERCIÓN, ELIMINACIÓN Y MODIFICACIÓN DE REGISTROS

Insert Into
Esta instrucción se utiliza para insertar nuevos registros en una tabla y existen dos formas de
utilizarla.

Sintaxis
Insert Into nombre_tabla VALUES (value1, value2, value3,...); Sin especificar los campos.
Instert Into table_name (column1, column2, column3,...) VALUES (value1,value2,value3,...)
especificando
EJEMPLO 1:
Insert into Shippers values (1,'FedEx',6194451234);

EJEMPLO 2:
insert into Shippers (ShippperID,CompanyName,Phone) values (1,'FedEx',6194451234);

Delete
La sentencia DELETE se utiliza para eliminar filas en una tabla.

Sintaxis
Delete From table_name where name_column=some_value;
EJEMPLO 1:
Borrar a los empleado que sean de la ciudad de Tijuana.
Delete from Employees
where City ='Tijuana';

EJEMPLO 3:
Eliminar al empleado mas antiguo
Delete from Employees
where EmpliyeeID = (Select max(EmployeID) from Employees);

Update
La instrucción update se utiliza para actualizar los registros existentes en una tabla.
Sintaxis
Update table_name set column1=value1,column2=value2,...
where some_column=some_value;

EJEMPLO1:
Actualizar los cliente de la ciudad de tijuana y asignarlos a san diego.
Update Employees set city ='san diego' where city ='tijuana';
2.2 Consultas

En bases de datos, una consulta es el método para acceder a los datos en las bases de datos.
Con las consultas se puede modificar, borrar, mostrar y agregar datos en una base de datos.
Para esto se utiliza un lenguaje de consultas. El lenguaje de consultas a base de datos más
utilizado es el SQL.

Tipos de consultas

1-Consultas de selección
Una consulta de selección es el tipo de consulta más habitual. Este tipo de consulta obtiene
los datos de una o más tablas y muestra los resultados en una hoja de datos en la que puede
actualizar los registros (con algunas restricciones). También puede utilizar una consulta de
selección para agrupar los registros y calcular sumas, cuentas, promedios y otros tipos de
totales.

2.- Consultas de parámetros


Una consulta de parámetros es una consulta que, cuando se ejecuta, muestra un cuadro de
diálogo propio que solicita información, por ejemplo, criterios para recuperar registros o un
valor que desea insertar en un campo.
Puede diseñar la consulta para que solicite más de un dato; por ejemplo, puede diseñarla
para que solicite dos fechas.

3.- Consultas de tabla de referencias cruzadas


Las consultas de referencias cruzadas se utilizan para calcular y reestructurar datos de
manera que su análisis sea más sencillo. Las consultas de referencias cruzadas calculan una
suma, una media, un recuento u otro tipo de totales de datos, y se agrupan en dos tipos de
información: uno hacia abajo, en el lado izquierdo de la hoja de datos, y otro a lo largo de la
parte superior, es decir, un cuadro de doble entrada.

4.– Consultas de acción


Una consulta de acción es una consulta que realiza cambios o desplazamientos de muchos
registros en una sola operación. Hay cuatro tipos de consultas de acción:

4.1.) Consulta de eliminación


Elimina un grupo de registros de una o más tablas. Por ejemplo, puede utilizar una consulta d
eliminación para quitar productos que ya no se fabrican o de los que no hay pedidos. Con las
consultas de eliminación, siempre se eliminan registros enteros, no sólo campos
seleccionados dentro de los registros.

4.2.) Consulta de actualización


Realiza cambios globales en un grupo de registros de una o más tablas. Por ejemplo, puede
aumentar los precios un 10 por ciento para todos los productos lácteos o bien puede aumentar
los sueldos un 5 por ciento al personal de una determinada categoría. Con una consulta
de actualización, puede cambiar los datos de las tablas existentes.

4.3.) Consulta de datos anexados


Agrega un grupo de registros de una o más tablas al final de una o más tablas. Por ejemplo,
supongamos que consigue nuevos clientes y una base de datos que contiene una tabla con
información acerca de estos
clientes. Para evitar tener que escribir toda esta información en la base de datos, desea anexar
a la tabla Clientes.

4.4.) Consulta de creación de tabla


Crea una tabla nueva a partir de la totalidad o una parte de los datos de una o más tablas. Las
consultas de creación de tabla son útiles para crear una tabla que se desee exportar a otra
base de datos o una tabla histórica que contenga registros antiguos.
2.3 Funciones, conversión, agrupamiento, ordenamiento

AVG
La función AVG () devuelve el valor medio de una columna numérica.
Sintaxis
SELECT AVG(column_name) FROM table_name.

EJEMPLO 1:
Mostar el promedio de costo de todos los productos.
Select AVG(UnitPrice) from Products;

COUNT
La función COUNT (nombre_columna) devuelve el número de valores (valores nulos no
serán contados) de la columna especificada.
Sintaxis
SELECT COUNT(column_name) FROM table_name;
SELECT COUNT(*) FROM table_name;

EJEMPLO 1:
Mostrar ordenes que fueron hechas por un cliente de la ciudad de guadalajara

select City, Count(*) from orders,customers


WHERE OrdersID.CustomerID=Customers.CustomersID
AND City="Guadalajara";
EJEMPLO 2:
Mostar cuantas ordenes se hicieron por ciudad de envió.
select ShipCity , count(*) from Orders
Group by ShipCity;

EJEMPLO 3:
Mostar cuantas ordenes a hecho cada empleado nombre, last, employes id, group by
lastname,firstname desc
select count(*) As orders, Orders.EmployesID, lastName , firstName from Employees,
Orders where Orders.EmployeeID = Employees.EmployeeID
Group by lastName,FirstName,EmployeeID
Order by LastName desc, FirstName desc

EJEMPLO 4:
Contar el numero de empleados.
Select Count(*) from Employees;

EJEMPLO 5:
Mostrar cuantos clientes son de Chihuachua.
Select Count(*) from Clients
where City =" Chihuahua"

MAX
La función MAX () devuelve el mayor valor de la columna seleccionada.
Sintaxis
SELECT MAX(column_name) FROM table_name;

EJEMPLO 1:
Mostrar las ordenes que se han hecho despues
de la ultima orden que hizo el empleado con el # de empleado mas alto
Select * From Orders
Where OrderDate > (Select max(OrderDate) From Orders where EmployeeID
where Orders.EmployeeID < (Select Max(Orders.EmployeeID) From Orders)

EJEMPLO 2:
Mostar el nombre del empleado mas antiguo.
Select Max(EmployeeID) from Employees;

MIN
La función MIN () devuelve el valor más pequeño de la columna seleccionada.
Sintaxis
SELECT MIN(column_name) FROM table_name;

EJEMPLO 1:
Mostar el ultimo cliente registrado
Select Min(ClientID) from Clients;

SUM
La función SUMA () devuelve la suma total de una columna numérica.
Sintaxis
SELECT SUM(column_name) FROM table_name;

ORDER BY
Se utiliza para ordenar el conjunto de resultados de una o más columnas.La palabra clave
ORDER BY ordena los registros en orden ascendente por defecto. Para ordenar los registros
un orden descendente, puede utilizar la palabra clave DESC.
Sintaxis
SELECT column_name, column_name FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;

EJEMPLO 1:
Mostar cuantas ordenes a hecho cada empleado nombre, last, employes id, group by
lastname,firstname desc
select count(*) As orders, Orders.EmployesID, lastName , firstName from Employees,
Orders where Orders.EmployeeID = Employees.EmployeeID
Group by lastName,FirstName,EmployeeID
Order by LastName desc, FirstName desc

GROUP BY
La instrucción GROUP BY se utiliza en conjunción con las funciones de agregación a
agrupar el conjunto de resultados de una o más columnas.
SIntaxis
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

EJEMPLO 1:
Mostrar la cantidad de pedidos hechos por la ciudad de chicago.
Select CompanyName,Count(*) AS Ordenes from Orders,Suppliers,Products,Order Details
where Supplier.SupplierID=Products.SupplierID AND
where Products.ProductID = Order Details.ProductID AND
where Order Details.OderID=Orders.OderID AND
where Orders.CustomerID= Customers.CustomerID AND
where Orders.ShipCity='chicago',
Group by CompanyName,
Order by desc;

EJEMPLO 2:
Mostrar el id del cliente
Select customerID , count(*) q.order
from orders
group by customerID

EJEMPLO 3:
Mostar cuales son los id de los empleados que han hecho una orden
Select Orders.EmployeeID From Orders
Group by EmployeeID

EJEMPLO 4:
Cuál es el precio promedio de cada orden
select OrderID AS Ordenes, avg((unitprice*Quantity*Discount)/100) As Promedio
from OrderDetails
group by OrderID;

EJEMPLO 5:
Mostar el promedio del precio unitario de cada orden donde el promedio del precio unitario
sea mayor a 10
select OrderID, Avg(untiPrice) from Orders_Details
group by OderIDl
Having Avg(unitPrice) > 10;
2.4 JOINS

JOIN: La instrucción JOIN nos permite combinar varias tablas haciendo coincidir los
valores de las columas que nos interesen. Es decir, si tenemos dos tablas A y B que
contienen una (o varias) columnas con el mismo nombre, podemos relacionar ambas tablas
por la columna del mismo nombre.
Por cada registro de la columna en la tabla A que también esté en la columna de la tabla B,
obtendremos una relación. Lo que quiere decir que se produce un producto cartesiano de
cada valor de la columna de la tabla A, por todos los valores coincidentes de la columna en
la tabla B.

EJEMPLO : Ver las ordenes que han hecho los empleados.


SELECT OrderID, LastName, FirstName, City
FROM dbo.Orders O JOIN dbo.Employees E
ON O.EmployeeID = E.EmployeeID
ORDER BY OrderID;

Si queremos saber qué registros de una tabla NO encuentran correspondencia en la otra, es de


no existe valor coincidente en la segunda, necesitamos otro tipo de combinación,
"outer join" (combinación externa).
Las combinaciones externas combinan registros de dos tablas que cumplen la condición,
más los registros de la segunda tabla que no la cumplen; es decir, muestran todos los
registros de las tablas relacionadas aun cuando no haya valores coincidentes entre ellas.
Este tipo de combinación se emplea cuando se necesita una lista completa de los datos de
una de las tablas y la información que cumple con la condición. Las combinaciones externas
realizan solamente entre 2 tablas.
Hay tres tipos de combinaciones externas: "left outer join", "right outer join" y "full outer join
se pueden abreviar con "left join", "right join" y "full join" respectivamente.

LEFT OUTER JOIN: Se emplea una combinación externa izquierda para mostrar todos los
registros de la tabla de la izquierda. Si no encuentra coincidencia con la tabla de la derecha,
el registro muestra los campos de la segunda tabla seteados a "null".

EJEMPLO: Mostrar todos los valores de la tabla IZQ (LEFT), con NULL para la tabla DCH
cuando no hay correspondencia
SELECT ProductID, ProductName, C.CategoryID, CategoryName, C.Description,
UnitPrice, UnitsInStock
FROM dbo.Products P LEFT OUTER JOIN dbo.Categories C
ON P.CategoryID = C.CategoryID

RIGHT OUTER JOIN: Una combinación externa derecha ("right outer join" o "right join") o
del mismo modo sólo que la tabla derecha es la que localiza los registros en la tabla izquierda

EJEMPLO: Mostrar todos los valores de la tabla DCH (RIGHT), con NULL para la tabla
IZQ cuando no hay correspondencia.
select ProductID, ProductName, C.CategoryID, CategoryName, C.Description, UnitPrice,
UnitsInStock
from dbo.Products P right outer join dbo.Categories C
on P.CategoryID = C.CategoryID
FULL OUTER JOIN: Una combinación externa completa ("full outer join" o "full join") reto
todos los registros de ambas tablas. Si un registro de una tabla izquierda no encuentra
coincidencia en la tabla derecha, las columnas correspondientes a campos de la tabla derecha
aparecen seteadas a "null", y si la tabla de la derecha no encuentra correspondencia en la tabl
izquierda, los campos de esta última aparecen conteniendo "null".

EJEMPLO: Mostrar todos los valores de ambas tablas (FULL) con NULL cuando no hay
correspondencia.
SELECT ProductID, ProductName, C.CategoryID, CategoryName, C.Description, UnitPrice
UnitsInStock
FROM dbo.Products P full OUTER JOIN dbo.Categories C
ON P.CategoryID = C.CategoryID

NATURAL JOIN: Es una especialización de la combinación de equivalencia, anteriormente


mencionada. En este caso se comparan todas las columnas que tengan el mismo nombre en am
tablas. La tabla resultante contiene sólo una columna por cada par de columnas con el mismo
nombre.

EJEMPLO:
SELECT * FROM Products NATURAL JOIN Suppliers;

CROSS JOIN: Las combinaciones cruzadas (cross join) muestran todas las combinaciones
de todos los registros de las tablas combinadas. Para este tipo de join no se incluye una condi
de enlace. Se genera el producto cartesiano en el que el número de filas del
resultado es igual al número de registros de la primera tabla multiplicado por el número de
registros de la segunda tabla, es decir, si hay 5 registros en una tabla y 6 en la otra, retorna
30 filas.

EJEMPLO: mostrar los clientes y las ordenes.


SELECT ContactName, CompanyName, City, OrderID, OrderDate, RequiredDate FROM
Customers CROSS JOIN Orders;

SELF JOIN: En casos especiales una tabla puede unirse a sí misma, produciendo una auto-
combinación, SELF-JOIN.

EJEMPLO: Mostrar un reporte de manayer de los empleados.

SELECT COALESCE(m.LastName + ', ' + m.FirstName,'') AS 'Manager', e.LastName


+ ', ' + e.FirstName AS 'Empleado'
FROM Employees AS e LEFT OUTER JOIN Employees AS m ON e.ReportsTo =
m.EmployeeID ORDER BY Manager, Employee;
2.5 Subconsultas

Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT
que llamaremos consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando
que aparece encerrada entre paréntesis.

Sintaxis
SELECT listaCampos FROM nombreTabla
WHERE Condición | HAVING Condición (SELECT listaCampos FROM nombreTabla);

Anidar Subconsultas
Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la cláusula
WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta
principal. En la práctica, una consulta consume mucho más tiempo y memoria cuando se
incrementa el número de niveles de anidamiento. La consulta resulta también más difícil
de leer, comprender y mantener cuando contiene más de uno o dos niveles de subconsultas.

Ejemplo
SELECT numemp, nombre .FROM empleados.
WHERE numemp = (SELECT rep FROM pedidos WHERE clie = (SELECT numclie
FROM clientes WHERE nombre = 'Julia Antequera'));
En este ejemplo, por cada línea de pedido se calcula la subconsulta de clientes, y esto se
repite por cada empleado, en el caso de tener 10 filas de empleados y 200 filas de pedidos
(tablas realmente pequeñas), la subconsulta más interna se ejecutaría 2000 veces (10 x 200)
Subconsultas en la lista de selección
Cuando la subconsulta aparece en la lista de selección de la consulta principal, en este caso
subconsulta, no puede devolver varias filas ni varias columnas, de lo contrario se da un
mensaje de error.

Ejemplo
SELECT numemp, nombre, MIN(fechapedido).FROM empleados LEFT JOIN pedidos
ON empleados.numemp = pedidos.rep.GROUP BY numemp, nombre

Subconsultas en la cláusula WHERE y HAVING


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.
En una cláusula WHERE / HAVING tenemos siempre una condición y la subconsulta
actúa de operando dentro de esa condición.

Ejemplo
SELECT numEmp, nombre. FROM empleados
.WHERE contrato = (SELECT MIN(fechaPedido) FROM pedidos);
En este ejemplo listamos el número y nombre de los empleados cuya fecha de contrato sea
igual a la primera fecha de todos los pedidos de la empresa.
2.6 Operadores set

UNION: Devuelve la suma de todas las filas en ambas columnas pero con valores únicos.
EJEMPLO:
SELECT City FROM dbo.Employees
UNION
SELECT City from dbo.Customers ;

UNION ALL: Devuelve la suma de todas las filas en ambas columnas. Unir (UNION)
todas (ALL) las filas de dos columnas de tablas diferentes.
EJEMPLO:
SELECT City FROM dbo.Employees
UNION ALL
SELECT City FROM dbo.Customers ;

INTERSECT: Devuelve una intersección de todos los valores, es decir, solo los que se
encuentran ambas columnas.
EJEMPLO:
SELECT City FROM dbo.Employees
INTERSECT
SELECT City FROM dbo.Customers;

EXCEPT: Devuelve los valores de la primera consulta que no se encuentran en la segunda.


EJEMPLO:
SELECT City from Employees
EXCEPT
SELECT City from Customers;
2.7 Vistas

View: Una vista guarda una tabla temporal mejor conocida como una consulta mediante la
instrucción SELECT, que arroja una cantidad n de registros de una cantidad m de tablas
conjugadas para proveer información, esta información conforma una tabla nueva, la
llamaremos tabla temporal, esta tabla temporal se puede guardar en una vista para acceder
con mayor facilidad a los datos de la misma sin tener que "recrear" la consulta.

Sintaxis:
CREATE VIEW [Nombre de la Vista] AS [Consulta por guardar en vista –
Tabla Temporal]

Ejemplo:
Create view UnionEmploCusto
AS
SELECT City FROM dbo.Employees
UNION
SELECT City from dbo.Customers ;

Ahora tenemos el view UnionEmploCusto, el cual guarda la consulta hecha previamente,


para acceder a los datos de la misma solo la trataremos como cualquier otra tabla existente,
por ejemplo:

SELECT Count(City) FROM UnionEmploCusto where City = "Tijuana";

Esto arrojara la cantidad de empleados y clientes que son de la ciudad de Tijuana.


(UNION evita redundancia, la consulta puede ser ineficaz)

Exceptions:
No se pueden crear dos vistas con el mismo nombre.
UNIDAD III. CONTROL DE ACCESO.

3.1 Tipos de usuario

Un usuario es un nombre de acceso a la base de datos. Normalmente este va asociado a una


clave.
Los passwords son fijados cuando se crea un usuario y pueden ser alterados por el DBA o
por el usuario mismo. La BD almacena una versión encriptada del password en una tabla
del diccionario llamada dba_users o all_users.

Tipos de usuarios

Usuarios normales. Son usuarios que interactúan con el sistema mediante un programa de
aplicación con una interfaz de formularios, donde puede rellenar los campos apropiados del
formulario. Estos usuarios pueden también simplemente leer informes generados de la base
de datos.

Programadores de aplicaciones. Son profesionales informáticos que escriben los programas


de aplicación, utilizando herramientas para desarrollar interfaces de usuario, que facilitan
crear los formularios e informes sin escribir directamente el programa.

Usuarios sofisticados. Interactúan con el sistema sin programas escritos, usando el lenguaje
de consulta de la base de datos para realizar dichas consultas.
Administradores de la base de datos (ABD). Son las personas que tienen el control central
del SGBD. Entre las funciones del ABD se encuentran:

• Definición del esquema de la base de datos.


• Definición de la estructura y el método de acceso.
• Modificación del esquema.
• Concesión de autorización para el acceso a los datos.
• Mantenimiento rutinario.

Creación de usuarios

Para la creación de un usuario se tiene la sentencia estándar:


CREATE USER user_name IDENTIFIED BY ‘password’ [ OPTIONS ]

Ejemplo:

CREATE USER user_name {IDENTIFIED BY ‘password’ | EXTERNALLY |


GLOBALLY AS globalName}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {quantity [K|M] | UNLIMITED} ON tablespace
[QUOTA {quantity [K|M] | UNLIMITED} ON tablespace [...]]
]
[PASSWORD EXPIRE]
[ACCOUNT {UNLOCK|LOCK}];

Para Modificar un usuario se utiliza la sentencia:


ALTER USER user_name [ OPTIONS ]

Para borrar a un usuario se utiliza la sentencia:


DROP USER user_name [ CASCADE ]

Para ver todos los usuarios se utiliza la sentencia:


DESCRIBE DBA_USERS;
SELECT USERNAME FROM ALL_USERS;

Privilegios a usuarios

Un privilegio es un derecho para ejecutar un tipo particular de sentencia ó para acceder a un o


usuario.
Una vez creados los usuarios será necesario dotarlos de privilegios para que puedan realizar o
específicas en la base de datos. Estos privilegios suelen clasificarse en:
Privilegios del Sistema (System privileges) permisos a niveles de la base de datos como pued
la base de datos, creación de usuarios, limitar cuentas.
Privilegios sobre Objetos (Object privileges) vistas, tablas, secuencias, procedimientos, paque
Para otorgar privilegios utilizamos la sentencia GRANT, para quitar un privilegio o permiso
utilizamos la sentencia REVOKE.

ROLES

Un rol es una colección de privilegios del sistema y de objetos que se otorgan a usuarios y
a otras tareas.
Gracias a los roles se facilita la asignación de privilegios a los usuarios. Un usuario puede
tener asignados varios roles y viceversa.
Oracle dispone de muchos roles predeterminados mientras que MySQL no los soporta.
Para asignar o retirar privilegios de un rol se utiliza una sentencia similar a cuando se desea
asignar o retirar privilegios a un usuario.

CREATE ROLE role;


GRANT SELECT, INSERT, UPDATE, DELETE ON table TO user;

Para asignar un rol a un usuario se utiliza la siguiente sentencia:


GRANT role_name TO user;

Para eliminar un rol se utiliza se utiliza la sentencia:


DROP ROLE role_name;

Debido a que es una estructura definida y uno un dato almacenado se utiliza DROP.
En Oracle, los roles predefinidos y más utilizados son CONNECT, RESOURCE y DBA.
UNIDAD IV CONCURRENCIA.

4.1 Conceptos

Transaction
Una transacción es una unidad de la ejecución de un programa. Puede consistir en varias
operaciones de acceso a la base de datos. Está delimitada por constructoras como BEGIN
TRANSACTION y END TRANSACTION.

4.2 Propiedades de las transacciones

Atomicidad
Es la propiedad de las transacciones que permite observarlas como operaciones atómicas (o
totalmente o no ocurren).

Consistencia
La ejecución aislada de la transacción conserva la consistencia de la base de datos.

Aislamiento
Es la lógica adicional que se le agrega al programa que accede a los datos para su funcionam

4.3 Grados de consistencia

Consistencia
Es un término más amplio que el de integridad. Podría definirse como la coherencia
entre todos los datos de la base de datos.
Una transacción finalizada (confirmada parcialmente) puede no confirmarse
definitivamente (consistencia).
La ejecución de una transacción debe conducir a un estado de la base de datos consistente
todas las restricciones de integridad definidas).
Si se confirma definitivamente el sistema asegura la persistencia de los cambios que ha efe
base de datos.
Si se anula los cambios que ha efectuado son deshechos.
Una transacción que termina con éxito se dice que está comprometida (commited).
Estados de una transacción
En cualquier momento una transacción sólo puede estar en uno de los siguientes estados.

Activa
El estado inicial, la transacción permanece en este estado durante su ejecución.

Parcialmente comprometida (Uncommited)


Después de ejecutarse la última transacción.

Fallida (Failed)
Tras descubrir que no se puede continuar la ejecución normal.

Abortada (Rolled Back): Después de haber retrocedido la transacción y restablecido la


base de datos a su estado anterior al comienzo de la transacción.

4.4 Niveles de aislamiento


Aislamiento
Es la lógica adicional que se le agrega al programa que accede a los datos para su funcion
correcto.

Niveles de aislamiento
Es el grado en que se aísla una transacción de las modificaciones de recursos o datos rea
otras transacciones.

Antes de entrar a los NIVELES DE AISLAMIENTO debemos comprender lo que son lo


DE LECTURA, estos son casos en donde la transacción A lee datos que
pudieron haber sido modificados por la transacción B, existen 3 tipos diferentes.
Lecturas sucias: Ocurre cuando se le permite a una transacción la lectura de una fila que h
modificada por otra transacción concurrente pero todavía no ha sido cometida.
Lecturas no repetibles: Una lectura no repetible ocurre cuando en el curso de una
transacción una fila se lee dos veces y los valores no coinciden.
Lecturas fantasmas: Ocurre cuando, durante una transacción, se ejecutan dos consultas id
resultados de la segunda son distintos de los de la primera.
Lectura no confirmada: Este es el nivel de aislamiento mas bajo.

Lectura confirmada:
En esta es posible que ocurran LECTURAS NO REPETIBLES y LECTURAS
FANTASMA, pero evita que ocurran LECTURAS SUCIAS.

Lectura repetible:
En esta pueden ocurrir LECTURAS FANTASMA pero evita que ocurran LECTURAS S
LECTURAS NO REPETIBLES.

Serializable:
Este es el nivel de aislamiento mas alto.Evita por completo las LECTURAS SUCIAS,
las LECTURAS NO REPETIBLES y las LECTURAS FANTASMA.
4.5 Commit y rollback

Commit
Esta instrucción de SQL se utiliza para confirmar como permanentes las modificacione
en una transacción.Cuando se produce el COMMIT, se hacen efectivos los cambios en l
de datos (.mdf y .ndf). Mientras no se realiza el COMMIT las sentencias de los cambios
en el log de transacciones (.ldf), que gracias a este es posible revertir los cambios si fues

Transacciones explicitas
Este tipo de transacciones son las que se definen en el código y hay que indicar cuando
BEGIN TRANSACTION y cuando finaliza COMMIT TRANSATION.

Rollback
Es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks
importantes para la integridad de la base de datos, a causa de que significan que la base
puede ser restaurada a una copia limpia incluso después de que se han realizado operaci
erróneas.

EJEMPLO
Guardar los cambias de una transacción si el numero máximo de productos vendidos de
producto es menor que 1600 y si es mayor restablecer.

BEGIN TRANSACTION
if((SELECT SUM([Order Details].Quantity) FROM Products,[Order Details]
WHERE Products.ProductID = [Order Details].ProductID GROUP BY Products.Produc
HAVING SUM([Order Details].Quantity)=(SELECT MAX(QR.Cantidad) FROM
(SELECT Products.ProductName,SUM([Order Details].Quantity) AS Cantidad
FROM Products,[Order Details]
WHERE Products.ProductID = [Order Details].ProductID
GROUP BY Products.ProductName) AS QR))<1600)
COMMIT TRANSACTION
ELSE
ROLLBACK;
UNIDAD V. SQL PROCEDURAL

5.1 Stored Procedures

Un procedimiento almacenado (stored procedure en inglés) es un programa


(o procedimiento) almacenado físicamente en una base de datos. Su implementación
varía de un gestor de bases de datos a otro. La ventaja de un procedimiento
almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es
ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un
servidor separado.
No es nada mas que un código guardado de SQL que puede ser utilizado una y otra
vez.
CREACIÓN:
Se crea con las palabras CREATE PROC y se termina con la palabra END

EJEMPLO:
CREATE PROC Mi_Procedure AS
BEGIN
SELECT Customers.ContactName, Customers.City FROM Customers
ORDER BY ContactName
END

EJECUCIÓN
Para llamar un procedimiento se utiliza la palabra EXCECUTE o EXEC

EJEMPLO:
EXECUTE Mi_Procedure
En caso de que el procedimiento requiera recibir parámetros, estos se anexan en la
sentencia.
EXEC SP_EJEMPLO2 ‘Alejandra Camino','Madrid'

EDITAR:
Para editar un procedimiento se utiliza la misma palabra reservada para editar una
tabla es decir, ALTER.

Ejemplo:
ALTER PROCEDURE procedimiento1
AS
SELECT * FROM Employees WHERE EmployeeID =
(SELECT MAX(EMployeeID) FROM Employees)

ELIMINAR:
Para eliminar se utiliza la sentencia DROP

EJEMPLO:
DROP procedimiento1

5.2 Functions

Funciones: Una función es una rutina almacenada que recibe unos parámetros
escalares de entrada, luego los procesa según el cuerpo definido de la función y por
ultimo retorna en un resultado de un tipo específico que permitirá cumplir un
objetivo.
Existen 3 tipos:

Funciones escalares
Funciones con valores de tabla en linea
Funciones con valores de tabla y múltiples instrucciones

FUNCIONES ESCALARES: Las funciones escalares son aquellas que reciben parám
entrada para ser procesados y al final retornar en un tipo de dato sencillo.

EJEMPLO: Cuantas veces ha viajado un pasajero en un lapso de tiempo.


CREATE FUNCTION cuanto_ha_viajado(@idpasajero INT, @fecha_inicio DATE ,
@fecha_final DATE)
RETURNS INT
AS
BEGIN
DECLARE @cantidad_ocasiones INT;
SELECT @cantidad_ocasiones = COUNT(a.idpasajero)
FROM Aerolinea.Boleto AS a
WHERE a.idpasajero = @idpasajero AND (fecha_compra BETWEEN
@fecha_inicio AND @fecha_final);
IF ( @cantidad_ocasiones IS NULL)
SET @cantidad_ocasiones = 0;
RETURN @cantidad_ocasiones;
END

FUNCIONES CON VALORES DE TABLA EN LINEA: Este tipo de función


tiene la misma sintaxis que una función escalar, la única diferencia está en que
retorna un tipo de dato TABLE, es decir, una tabla compuesta de registros.
EJEMPLO: Ver todas las compras realizadas de un producto especifico.
CREATE FUNCTION ventas_producto(@idproducto INT)
RETURNS TABLE
AS
RETURN(
SELECT C.NOMBRE, F.FECHA, DF.CANTIDAD, DF.PRECIO,P.IDPRODUCTO
FROM
CLIENTE AS C JOIN FACTURA AS F ON C.IDCLIENTE = F.IDCLIENTE
JOIN DETALLEFACTURA AS DF ON DF.IDFACTURA = F.IDFACTURA
JOIN PRODUCTO AS P ON P.IDPRODUCTO = DF.IDPRODUCTO
WHERE P.IDPRODUCTO = @idproducto)
FUNCIONES CON VALORES DE TABLA Y MÚLTIPLES INSTRUCCIONES:
Este tipo de funciones son similares a las funciones de tabla en linea, solo que
incluyen un bloque de sentencias para manipular la información antes de retornar la
tabla.

EJEMPLO: Muestre todos los registros de la tabla EMPLEADO que tengan un


salario mayor o igual a un valor establecido como parámetro.

CREATE FUNCTION reporte1_empleados(@salarioemp INT)


RETURNS @tabla TABLE (
IDEMPLEADO INT PRIMARY KEY NOT NULL IDENTITY,
NOMBRE VARCHAR(200) NOT NULL,
SALARIO INT NOT NULL,
DIASLABORANDO INT NOT NULL)
AS
BEGIN
INSERT @tabla
SELECT E.NOMBRE+' '+E.APELLIDO,E.SALARIO,
DATEDIFF(DAY,E.FECHA_INGRESO,GETDATE())
FROM EMPLEADO AS E
WHERE E.SALARIO >= @salarioemp;
RETURN;
END
5.3 Triggers

Un "trigger" (disparador o desencadenador) es un tipo de procedimiento almacenado


que se ejecuta cuando se intenta modificar los datos de una tabla (o vista). Se definen p
tabla (o vista) específica.
create triggre NOMBREDISPARADOR
on NOMBRETABLA
for EVENTO- insert, update o delete
as
SENTENCIAS
BEFORE|AFTER: Especifica si el Trigger se ejecuta antes o después del evento
DML.

UPDATE|INSERT|DELETE:
Aquí eliges que sentencia usarás para que se ejecute el Trigger.
ON nombre_de_la_tabla:
En esta sección estableces el nombre de la tabla asociada.
FOR EACH ROW: Establece que el Trigger se ejecute por cada fila en la tabla
asociada.
<bloque_de_instrucciones>: Define el bloque de sentencias que el Trigger ejecutará
al ser invocado.

UTILIDAD
Con los Triggers podemos implementar varios casos de uso que mantengan la
integridad de la base de datos, como Validar información, Calcular atributos
derivados, Seguimientos de movimientos en la base de datos, etc.
Cuando surja una necesidad en donde veas que necesitas que se ejecute una acción
implícitamente (sin que la ejecutes manualmente) sobre los registros de una tabla,
entonces puedes considerar el uso de un Trigger.

EJEMPLO 2:
Primero crearemos un trigger con el nombre de GATILLO, este trigger se
accionara cuando se actualice un valor en la tabla de customers y nos mostrara el
nombre de las compañías.
CREATE TRIGGER GATILLO ON CUSTOMERS AFTER UPDATE
AS SELECT Customers.CompanyName From Customers;

Hacemos una modificacion pero hacemos rollback para no guardar las


modificaciones y esto nos despliega como resultado LOL como nombre de todas las co
por que se ejecuto el trigger creado anteriormente.
BEGIN TRANSACTION
Update Customers set CompanyName='LOL'
ROLLBACK;
UNIDAD VI. CONECTIVIDAD DE BASES DE DATOS.

6.1 ODBC, ADO.NET, JDBC

Es la conectividad abierta a la base de datos, es una interfaz estrategia de Microsoft


para obtener acceso a datos en un entorno heterogéneo de sistemas relacionales y
no-relacionales de administración de base de datos. Basado en la especificación de
interfaz de nivel de llamada del grupo de acceso SQL.

ODBC proporciona una manera abierta, independiente del proveedor de acceso de


datos almacenados en una variedad de bases de datos de mainframe,
minicomputadora y propietaria PC.

JDBC por otra parte, es la conectividad a base de datos por JAVA, es una api,
programa de aplicación que permite la ejecución de operaciones sobre bases de
datos que define como un cliente puede tener acceso a la base de datos,
comúnmente se pueden observar en métodos de pagos de algunos programas
informáticos, de tiendas comerciales y compras por Internet.

ADO.NET es un conjunto de componentes de software que suelen ser usados por


los programadores para acceder a los datos y/o servicios de datos necesarios para la
interacción del cliente/administrador con la base de datos, esta es una parte de la
biblioteca de clases incluidas en Microsoft.NET Framework.

S-ar putea să vă placă și