Base de Datos
Base de Datos
Base de Datos
Es decir los datos contemplados son todos los requeridos y se pueden utilizar con diferentes
propósitos y procesos para obtener información que los usuarios requieren de manera particular
en diferentes o similares instancias de tiempo.
Datos
Proceso Información Presentación Reportes
En las etapas de diseño, implementación y su uso las bases de datos estarán conformadas
siempre por una o más tablas.
Tabla
Una tabla es una colección de datos sobre algún tema específico, tal como por ejemplo los
productos o proveedores de un negocio. Al usar una tabla independiente para cada tema, los
datos se almacenan sólo una vez. Esto tiene como resultado una base de datos más eficaz y
menos errores de entrada de datos. Toda tabla está conformada a su vez de un grupo de
registros. El elemento básico en una tabla es el registro.
Registro
El registro agrupa la información asociada a un elemento de un conjunto, y está compuesto por
campos. Así por ejemplo, un registro correspondiente a un libro no es más que un elemento de
un conjunto: bibliotecas, autores, editoriales, etc. A su vez, ese registro contiene toda la
información asociada al libro, clasificada en campos: título, autor, fecha de edición, editorial,
etc.
Campo, es una
columna de la tabla
Registro, es una
fila en una tabla
Campo
Son las propiedades o características, y propiedades secundarias que se hallan en un registro,
según se definan o complementen el elemento representado por el registro.
Por ejemplo, el registro Empleados tiene los siguientes campos: DNI, Nombre, Apellidos, Edad,
Población, Sueldo. Los campos DNI, Nombre y Apellidos son elementos o campos
característicos. Los restantes son secundarios.Un archivo o tabla es un conjunto de registros con
la misma estructura:
El SQL trabaja con estructura cliente/servidor sobre una red de computadores. El cliente es el
equipo de cómputo que inicia la consulta; el servidor es el equipo de cómputo que atiende esa
consulta. El equipo cliente utiliza toda su capacidad de proceso para trabajar; se limita a solicitar
datos al equipo servidor, sin depender para nada más del exterior. Estas peticiones así como las
respuestas son transferencias de textos que cada equipo cliente se encarga de sacar por pantalla,
presentar en informes tabulados, imprimir, guardar, etc., dejando el equipo servidor libre.
El SQL permite:
El usuario accede con alguno de los programas cliente disponible para hacer consultas al motor
de base de datos. En este libro se explica como emplear SQL para:
Por ejemplo se tienen dos tablas: Areas y Empleados, la primera representa las diferentes áreas
dentro de una organización y la segunda a los empleados que laboran en la misma.
CREATE TABLE Area (Area_Codigo Integer, Area_Nombre Char(14), Ubicacion Char (13))
El comando crear tabla (CREATE TABLE) indica al servidor que nombre queremos poner a la
tabla, los nombres de las columnas de la tabla: código de departamento, nombre del
departamento y localidad y el tipo de información que cada columna va a contener.
Se procede de forma análoga con la tabla Empleado con el comando CREATE TABLE:
En este comando, primero se nombra la tabla de la base de datos en la que se quiere hacer la
inserción de los datos (Area), y a continuación la lista de valores que van a ir en cada columna
(10, 'Ventas', 'San Borja').
En este ejemplo se hace mención específica, de los contenidos para cada campo. Lo cual trae
como ventaja, el que no se necesita obligatoriamente indicar los campos en el orden en que esta
diseñada la tabla.
En el ejemplo siguiente no se hace mención a los campos pero si a los datos y se indica
unicamente los datos y el orden que tienen en la estructura de la tabla.
En los siguientes ejemplos se pondrán las instrucciones para insertar registros en la tabla
Empleados:
INSERT INTO Empleado VALUES (1, 'José', 'GERENTE', 0, '20040327', 5000, 0, 10)
INSERT INTO Empleado VALUES (2, 'Allan', 'ANALISTA', 1, '20040327', 2500, 0, 10)
INSERT INTO Empleado VALUES (3, 'Eduardo', 'ANALISTA', 1, '20040327', 3000, 0, 10)
Los cual significa que, todos los registros anteriores corresponden a empleados del área de
Ventas, debido a que se ha puesto el valor 10 en el último campo en los tres registros, el que es
el código del área de Ventas en la tabla Area.
Otra indicación es que los empleados Allan y Eduardo tiene como jefe al empleado José, lo que
se deduce del valor 1 puesto en el orden que corresponde al campo Jefe en las dos últimas
inserciones de los registros.
Búsqueda de información en una tabla
La operación más común en una base de datos es solicitar información, y se conoce como la
búsqueda o Query. El comando SELECT va seguido de FROM y en otros casos seguido de
WHERE. SELECT especifica las columnas, FROM especifica las tablas y con WHERE
especifica las condiciones. Si no hay condiciones de búsqueda se presentarán las columnas
completas, sin restricciones.
Para seleccionar determinados registros o filas de la base de datos, debe añadirse una condición
con el comando WHERE al usar SELECT... FROM:
Lo anterior obtiene todas las filas correspondientes a los empleados cuyo jefe tiene por código
de empleado el número 1. WHERE obliga al motor a buscar en la información de la tabla y
mostrar solo aquellas líneas o registros que cumple la condición.
Para las condiciones alternativas, negativas (excluyentes) se utilizan los comandos OR, y NOT.
Así por ejemplo:
SELECT Empleado_Nombre, Cargo, Sueldo_Basico FROM Empleado
WHERE Cargo = 'GERENTE' OR Sueldo_Basico >=100
pide los datos de empleados con cargo 'GERENTE' o su salario sea mayor que 100:
El siguiente ejemplo pide un listado con los nombres, cargos y número de área de los empleados
cuyo cargo sea 'ANALISTA' y su código de área sea distinto de 10.
Mediante los comandos BEETWEEN y AND pueden pedirse datos comprendidos en algún
rango determinado. El ejemplo siguiente el nombre y el salario de los empleados cuyo salario
esté comprendido entre 800 y 900:
El comando IN permite seleccionar líneas cuyo campo contenga uno de los valores de una lista
especificada entre paréntesis:
En este ejemplo, como la lista está compuesta por sólo 2 valores, podría haberse empleado OR
para realizar la misma búsqueda:
Los operadores BETWEEN, IN y LIKE, pueden ir precedidos por NOT y unidos con AND y
OR, para formar una búsqueda tan completa como se necesite.
Cómo se ordena el resultado de una búsqueda
En todos los ejemplos hasta ahora, las líneas resultado de las búsquedas han estado en un orden
aleatorio, determinado por el motor. Puede controlarse el orden de las líneas seleccionadas
añadiendo la opción ORDER BY al final de nuestro comando SELECT.
Como ejemplo suponga que desea obtener una lista de los empleados que trabajan en el área 10
pero ordenados por su salario. Esta ordenación no está limitada a un orden ascendente o a un
único criterio, así por ejemplo, pueden ordenarse los empleados por puesto de trabajo, y dentro
de esta ordenación (los trabajos) por orden de salarios:
Donde DESC indica orden descendente (de mayor a menor), y cuyo resultado es el siguiente:
Cómo se evitan las líneas repetidas en un listado Supóngase que se desea obtener una lista de
los cargos en la empresa. Si se pide una columna completa
Al no haber ninguna condición en nuestra búsqueda, el motor trae a la pantalla todos los valores
de la columna Cargo. En la lista obtenida hay repeticiones que pueden eliminarse especificando
DISTINCT al escribir la búsqueda:
Se obtiene un listado con una tercera columna que es la suma de salario y comisiones. La
columna de la suma no es una columna real, es decir no está almacenada en nuestra base de
datos, pero se construye dinámicamente como resultado de una búsqueda, y se puede operar con
la columna resultado como si se tratara de una columna real.
El ejemplo siguiente busca en la tabla Empleado los registros cuyo campo Empleado_Nombre
suene parecido a 'Alan':
En el siguiente ejemplo se listan algunos datos de los empleados que trabajan en el Areao 30 y
la fecha en formato DY DD MM YY (día de la semana, día, mes, año):
Además de poder dar formato a la fecha, pueden realizarse operaciones aritméticas en los
campos de fechas:
SELECT GETDATE()
GETDATE( ) siempre nos da la fecha del día (fecha interna del equipo servidor).
Búsquedas anidadas (subqueries)
Supóngase, por ejemplo, que se desea obtener una lista con todos los empleados que tienen el
mismo empleo que KING, puede omitirse el empleo de KING y el motor lo busca, en lo que
constituiría una búsqueda subordinada o subbúsqueda:
El motor realiza las búsquedas anidadas antes, por que necesita el resultado de estas para las
búsquedas.
Como ejemplo adicional puede buscarse el empleado que gana más que la media de todos los
salarios de los empleados:
UPDATE Empleado
SET Sueldo_Basico = Sueldo_Basico + 100
WHERE Cargo = 'ANALISTA'
Un mensaje confirmará que la actualización ha tenido lugar.
¿Cómo insertar nuevos registros en una tabla?
El comando INSERT se ha utilizado hasta ahora para introducir líneas de información, pero una
línea cada vez. Sin embargo, puede usarse este comando para añadir un conjunto de líneas desde
una tabla hacia otra. Puede hacerse esto utilizando una búsqueda para definir el conjunto de
líneas que se van a insertar en la tabla.
Supongamos que en nuestra base de datos tenemos una tercera tabla llamada Promocion, con
algunas de las columnas de la tabla Area y queremos introducir en ella la información de todos
los vendedores que tengan de comisión una cifra superior al 25% de su salario, copiando la
información desde la tabla Empleado:
Cuando el motor ha realizado la orden aparece (1 filas afectadas). Puede pedirse un listado de
todos los departamentos para comprobarlo:
Las condiciones para todos esos comandos demuestran como SQL emplea la misma sintaxis
tanto para las búsquedas como para la manipulación de la información. En los comandos
SELECT, UPDATE, INSERT y DELETE, la condición con WHERE es opcional.
Cambios en la Estructura de una Base de datos
Los motores proporcionan los comandos necesarios que se necesitan para modificar la
estructura de las tablas de una base de datos. En esta sección utiliza SQL para:
Siguiendo con los ejemplos anteriores, se va a agregar una tabla a la base de datos para poder
definir proyectos y se altera la tabla de empleados para asignar a los empleados estos proyectos,
de manera de tener una relación similar a la que hay entre empleados asignados a las áreas. Se
trata en definitiva de crear una nueva tabla (Proyecto) y practicar los comandos ALTER
TABLE en el diseño de empleados (Empleado).
El cambio en la estructura de la base de datos exige varios pasos. Primero, con el comando
CREATE, hay que añadir la tabla proyectos a la base de datos:
Que son los proyectos en curso dentro de la empresa. Los datos introducidos en la nueva tabla,
pueden examinarse con el comando SELECT actuando sobre la nueva tabla proyectos
(Proyecto):
Finalmente para que puedan hacerse búsquedas relacionales sobre las tablas Proyecto y
Empleado, debe añadirse una columna a Empleado denominada número de proyecto
(Proyecto_Codigo), para que las tablas tengan alguna columna en común. Con este fin se utiliza
el comando ALTER TABLE:
A este comando se le indica el nombre de la tabla a modificar, la columna que se quiere añadir,
y el tipo de información y su longitud máxima. Ahora puede seleccionarse la tabla Empleado y
ver que en cada línea hay un campo más.
INSERT INTO Empleado VALUES (4, 'Ana', 'GERENTE', 0, '20040328', 5250, 0, 20, 102)
INSERT INTO Empleado VALUES (5, 'Alicia', 'Contadora', 4, '20040328', 2750, 0, 20, 102)
INSERT INTO Empleado VALUES (6, 'Manuel', 'Contador', 4, '20040328', 2400, 0, 20, 102)
INSERT INTO Empleado VALUES (7, 'Mariella', 'Auxiliar', 5, '20040328', 1600, 0, 20, 102)
Como ejemplo del comando UPDATE, van a reasignarse todos los empleados del Area 20 y
todos los vendedores al proyecto 101:
UPDATE Empleado
SET Proyecto_Codigo = 101
WHERE Area_Codigo = 20 OR Cargo = 'Contador'
(4 filas afectadas)
Puede consultarse la tabla para confirmar la actualización:
Para completar el ejemplo, se asignan el resto de empleados -los que no tienen proyecto
asociado- al proyecto 102:
UPDATE Empleado
SET Proyecto_Codigo=102
UPDATE Proyecto
SET Presupuesto = 105000
WHERE Proyecto_Codigo = 103
El SQL Server notifica un error debido a que esa columna sólo tiene capacidad para 7 dígitos
incluyendo la coma y los dos decimales (7,2). Se necesita modificar la definición de la columna
Presupuesto, manteniendo el tipo de información que contiene pero haciéndola más ancha:
Y aparece:
(3 filas afectadas)
UPDATE Proyecto
SET Presupuesto = 105000
WHERE Proyecto_Codigo = 103