domingo, 17 de mayo de 2009

LENGUAJE DE CONSULTA ESTRUCTURADA (SQL).








ANTECEDENTES HISTÓRICOS:


La historia de SQL (que se pronuncia deletreando en inglés las letras que lo componen, es decir "ese-cu-ele" y no "siquel" como se oye a menudo) empieza en 1974 con la definición, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigación de IBM, de un lenguaje para la especificación de las características de las bases de datos que adoptaban el modelo relacional.


Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implementó en un prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a una revisión del lenguaje (SEQUEL/2), que a partir de ese momento cambió de nombre por motivos legales, convirtiéndose en SQL.


El prototipo (System R), basado en este lenguaje, se adoptó y utilizó internamente en IBM y lo adoptaron algunos de sus clientes elegidos. Gracias al éxito de este sistema, que no estaba todavía comercializado, también otras compañías empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981, IBM comenzó a entregar sus productos relacionales y en 1983 empezó a vender DB2. En el curso de los años ochenta, numerosas compañías (por ejemplo Oracle y Sybase, sólo por citar algunos) comercializaron productos basados en SQL, que se convierte en el estándar industrial de hecho por lo que respecta a las bases de datos relacionales.


LENGUAJE DE DEFINICIÓN DE DATOS:


Un lenguaje de definición de datos (Data Definition Language, DDL por sus siglas en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de los procedimientos o funciones que permitan consultarlos.


LENGUAJE DE MANIPULACIÓN DE DATOS:

Un Lenguaje de Manipulación de Datos (Data Manipulation Language (DML) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.

El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras.

LENGUAJE DE CONTROL DE DATOS:


Un Lenguaje de Control de Datos (DCL por sus siglas en inglés: Data Control Language) es un lenguaje proporcionado por el sistema de gestión de base de datos que incluye una serie de comandos SQL que permiten al administrador controlar el acceso a los datos contenidos en la base de datos.

Algunos ejemplos de comandos incluídos en el DCL son los siguientes:

  • GRANT: Permite dar permisos a uno o varios usuarios o roles para realizar tareas determinadas.

  • REVOKE: Permite eliminar permisos que previamente se han concedido con GRANT.

Las tareas sobre las que se pueden conceder o denegar permisos son las siguientes:

  • CONNECT
  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • USAGE


CREACION DE VISTAS:


Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla.


Dos son las principales razones por las que podemos crear vistas.


  • Seguridad, nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla.


  • Comodidad, como hemos dicho el modelo relacional no es el más comodo para visualizar los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea.


Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista.

CREACIÓN DE VISTAS:

Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida.



CREATE VIEW

AS
();

Ejemplo:Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y apellidos del cliente en lugar de su código.



CREATE VIEW vAlquileres
AS
(
SELECT nombre,
apellidos,
matricula
FROM tAlquileres,
tClientes
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo )
)

Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo haciamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista.



ALTER VIEW vAlquileres
AS
(
SELECT nombre,
apellidos,
matricula,
fx_alquiler,
fx_devolucion
FROM tAlquileres,
tClientes
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo )
)

Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se uitlizaría:


DROP VIEW
vAlquileres;

Una vista se consulta como si fuese una tabla.

FUNCIONES DE AGRUPAMIENTO:

Función

Cometido

Ejemplo

COUNT(col)

Cuenta el número de filas agrupadas.

select count(nombre),oficio from emp group by oficio;

AVG(col)

Calcula el valor medio de todos los valores de la columna col.

select avg(salario),oficio from emp group by oficio;

MAX(col)

Calcula el valor máximo de todos los valores de la columna col.

select max(salario),oficio from emp group by oficio;

MIN(col)

Calcula el valor mínimo de todos los valores de la columna col.

select min(salario),oficio from emp group by oficio;

SUM(col)

Calcula la suma de los valores de la columna col.

select sum(salario), oficio from emp group by oficio;

STDDEV(col)

Calcula la desviación típica de los valores de la columna col sin tener en cuenta los valores nulos.

select stddev(salario), oficio from emp group by oficio;

VARIANCE(col)

Calcula la varianza de los valores de la columna col sin tener en cuenta los valores nulos.

select variance(salario), oficio from emp group by oficio;


ACTIVIDADES PARA EL APRENDIZAJE:


DEFINA LOS SIGUIENTES COMANDOS Y SUS RESPECTIVAS CLÁSULAS:


UPDATE: Actualiza columnas en registros de tabla existentes con nuevos valores.

DELETE: Borra los registros de tbl_name que satisfacen la condición dada por where_definition y retorna el número de registros borrados.

Si realiza un comando DELETE sin cláusula WHERE se borran todos los registros. Una forma más rápida de hacerlo, cuando no quiere saber el número de registros borrados, se usa TRUNCATE TABLE.

INSERT: Inserta nuevos registros en una tabla existente. Las formas INSERT... VALUES y INSERT SET del comando insertan registros basados en valores explícitamente especificados.


GRANT Y REVOKE: Los comandos GRANT y REVOKE permiten a los administradores de sistemas crear cuentas de usuario MySQL, darles permisos y quitarlos de las cuentas.


DROP TABLE: Borra una o más tablas. Debe tener el permiso DROP para cada tabla. Todos los datos de la definición de tabla son borrados, así que tenga cuidado con este comando!


ALTER TABLE: Permite cambiar la estructura de una tabla existente. Por ejemplo, puede añadir o borrar columnas, crear o destruir índices, cambiar el tipo de columnas existentes, o renombrar columnas o la misma tabla. Puede cambiar el comentario de la tabla y su tipo.


CREATE TABLE: Crea una tabla con el nombre dado. Debe tener el permiso CREATE para la tabla.


ROLLBACK: Es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Ellas son cruciales para la recuperación de crashes de un servidor de base de datos; realizando rollback(devuelto) cualquier transacción que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente.


SELECT: Especifica los campos, constantes y expresiones que se mostrarán en el resultado de la consulta.


Una instrucción SELECT es utilizada para recuperar o mostrar datos de una tabla de la base de datos. Debe contener una cláusula FROM. Por ejemplo para obtener todas las columnas de una tabla:


select * from dept;

INVESTIGUE Y DEFINA LOS SIGUIENTES OPERADORES SQL:

OPERADORES ARITMETICOS:


+

Sumar

-

Restar

*

multiplicar

/

dividir

% (Módulo)

Devuelve el resto entero de una división. Por ejemplo, 12 % 5 = 2 porque el resto de 12 dividido entre 5 es 2.

OPERADORES LÓGICOS:

ALL

TRUE si el conjunto completo de comparaciones es TRUE.

AND

TRUE si ambas expresiones booleanas son TRUE.

ANY

TRUE si cualquier miembro del conjunto de comparaciones es TRUE.

BETWEEN

TRUE si el operando está dentro de un intervalo.

EXISTS

TRUE si una subconsulta contiene cualquiera de las filas.

IN

TRUE si el operando es igual a uno de la lista de expresiones.

LIKE

TRUE si el operando coincide con un patrón.

NOT

Invierte el valor de cualquier otro operador booleano.

OR

TRUE si cualquiera de las dos expresiones booleanas es TRUE.

SOME

TRUE si alguna de las comparaciones de un conjunto es TRUE.

OPERADORES DE RELACIÓN:

=

Igual a

<>

Distinto de

>

Mayor que

>=

Mayor o igual que

<

Menor que

<=

Menor o igual que

Like

Coincidencia con un patrón

Not Like

No coincidencia con un patrón

Is Null

Igual a nulo (vacío)

Is Not Null

No es nulo (no está vacío)

Between

Rango de valores entre una cota inferior y otra superior

In

Pertenencia a un conjunto de valores o ser miembro de una subconsulta.

Exist

Cierto si una subconsulta devuelve como mínimo un registro

Any

Compara un valor con cada valor devuelto por una subconsulta retornando cierto si uno cualquiera de ellos cumple la condición. Any debe ir precedido de =, <>, <, >, >= o >=. = Any es equivalente a In.

All

Compara un valor con cada valor devuelto por una subconsulta retornando cierto si todos ellos cumplen la condición. All debe ir precedido de =, <>, <, >, >= o >=.

No hay comentarios:

Publicar un comentario