Documente Academic
Documente Profesional
Documente Cultură
Estructura relacional
Ejemplo de tablas y relaciones.
Estructura multidimensional
ESQUEMAS
MYSQL
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:
▪ 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
▪ 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.
Una posibilidad adicional es la de crear ficheros con bases de datos que pueden
ser consultados por otros programas.
POSTGRE SQL
DB2
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
Ejemplos:
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.
Ejemplo: Crear una tabla con una llave primaria con los contraints no nulo, llave primaria y identity.
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.
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
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.
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
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.
SELF JOIN: En casos especiales una tabla puede unirse a sí misma, produciendo una auto-
combinación, SELF-JOIN.
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
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;
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 ;
Exceptions:
No se pueden crear dos vistas con el mismo nombre.
UNIDAD III. CONTROL DE ACCESO.
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.
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:
Creación de usuarios
Ejemplo:
Privilegios a usuarios
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.
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.
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
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.
Fallida (Failed)
Tras descubrir que no se puede continuar la ejecución normal.
Niveles de aislamiento
Es el grado en que se aísla una transacción de las modificaciones de recursos o datos rea
otras transacciones.
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
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.
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;
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.