viernes, 15 de mayo de 2009

¿QUE ES SQL?

SQL es el lenguaje de consulta universal para bases de datos.

Los mandatos de SQL se dividen en tres grandes grupos diferenciados, los cuales serán tratados por separado y que unicamente se presentan aqui a modo introductorio.
DDL(Data Definition Language), es el encargado de la definición de Bases de Datos, tablas, vistas e índices entre otros.

Son comandos propios de este lenguaje:CREATE TABLECREATE INDEXCREATE VIEWCREATE SYNONYM
DML(Data Manipulation Language), cuya misión es la manipulación de datos. A través de él podemos seleccionar, insertar, eliminar y actualizar datos. Es la parte que más frecuentemente utilizaremos, y que con ella se construyen las consultas.
Son comandos propios de este lenguaje:SELECTUPDATEINSERTINSERT INTODELETE FROM
DCL (Data Control Laguage), encargado de la seguridad de la base de datos, en todo lo referente al control de accesos y privilegios entre los usuarios.
Son comandos propios de este lenguaje:GRANTREVOKE

Selección de Datos

El proceso más importate que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada serviría una base de datos si no puedieramos consultarla. Es además la operación que efectuaremos con mayor frecuencia.
Para consultar la información SQL pone a nuestra disposición la sentencia SELECT.[arriba]
La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos.
El formato de la sentencia select es:

Actualización de datos.

La sentencia UPDATE.
Para la actualización de datos SQL dispone de la sentencia UPDATE. La sentencia UPDATE permite la actualización de uno o varios registros de una única tabla. La sintaxis de la sentencia UPDATE es la siguiente
UPDATE SET = {[, = ,..., = ]}[ WHERE ];
Las siguientes sentencias actualizan los datos de la tabla tCoches con los valores de la tabla tMarca obtenidos anteriormente en la página dedicada a la inserción de datos.
UPDATE tCochesSET marca = '1'WHERE marca = 'FORD'; UPDATE tCochesSET marca = '2'WHERE marca = 'RENAULT'; UPDATE tCochesSET marca = '3'WHERE marca = 'SEAT';
Notese que los valores para el campo marca aparecen entrecomillados, ya que es un campo de tipo varchar. Los valores con los que actualicemos los datos deben ser del tipo del campo.
Un aspecto a tener en cuenta es que los campos que forman la primary key de una tabla sólo se podrán modificar si los registros no están referenciados en ninguna otra tabla. En nuestro caso sólo podremos modificar la matrícula de un coche si no tiene registros asociados en la tabla tAlquileres.

Borrado de Datos

La sentencia DELETE.
Para borrar datos de una tabla, debemos utilizar la sentencia DELETE.
La sintaxis de la sentencia DELETE es la siguiente:
DELETE FROM [ WHERE ];
El siguiente ejemplo ilustra el uso de la sentencia DELETE. Es buena idea especificar en la sentencia WHERE los campos que forman la clave primaria de la tabla para evitar borrar datos que no queramos eliminar.
DELETE FROM tCochesWHERE marca = 'SEAT';La sintaxis de DELETE varia en Access, siendo necesario el uso del comodín *. DELETE * FROM
Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las siguientes consideraciones:
Solo podemos borrar datos de una única tabla.
Cuando borramos datos de una vista, los estamos borrando también de la tabla. Las vistas son solo una forma de ver los datos, no una copia.
Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la sentencia DELETE fallará.

Insertar Datos

La inserción de nuevos datos en una tabla se realiza añadiendo filas enteras a la tabla, la sentencia SQL que lo permite es la orden INSERT INTO.
La inserción se puede realizar de una fila o de varias filas de golpe, veremos las dos opciones por separado y empezaremos por la inserción de una fila.
La sintaxis es la siguiente:

Esta sintaxis se utiliza para insertar una sola fila cuyos valores indicamos después de la palabra reservada VALUES. En castellano la sentencia se leería: INSERTA EN destino...VALORES ....
Los registros se agregan siempre al final de la tabla.
Destino es el nombre de la tabla donde vamos a insertar la fila también se puede utilizar un nombre de consulta, consulta que tenga como origen de datos una única tabla. Al nombre de la tabla se le puede añadir la cláusula IN si la tabla se encuentra en otra base de datos (en una base de datos externa).
La palabra reservada VALUES se puede sustituir por la palabra SELECT ( en otros SQLs se emplea únicamente VALUES).
A continuación de la palabra VALUES, entre paréntesis se escriben los valores que queremos añadir. Estos valores se tienen que escribir de acuerdo al tipo de dato de la columna donde se van a insertar (encerrados entre comillas simples ' ' para valores de tipo texto, entre # # para valores de fecha...) la asignación de valores se realiza por posición, el primer valor lo asigna a la primera columna, el segundo valor a la segunda columna, así sucesivamente...
Cuando la tabla tiene una columna de tipo contador (AutoNumber), lo normal es no asignar valor a esa columna para que el sistema le asigne el valor que le toque según el contador, si por el contrario queremos que la columna tenga un valor concreto, lo indicamos en la lista de valores.
Cuando no se indica ninguna lista de columnas después del destino, se asume por defecto todas las columnas de la tabla, en este caso, los valores se tienen que especificar en el mismo orden en que aparecen las columnas en la ventana de diseño de dicha tabla, y se tiene que utilizar el valor NULL para rellenar las columnas de las cuales no tenemos valores.
Ejemplo:
INSERT INTO empleados VALUES (200, 'Juan López', 30, NULL, 'rep ventas', #06/23/01#, NULL, 350000, 0)
Observar en el ejemplo que los valores de tipo texto se encierran entre comillas simples ' ' (también se pueden emplear las comillas dobles " ") y que la fecha de contrato se encierra entre almohadillas # # con el formato mes/dia/año. Como no tenemos valor para los campos oficina y director (a este nuevo empleado todavía no se le ha asignado director ni oficina) utilizamos la palabra reservada NULL. Los valores numéricos se escriben tal cual, para separar la parte entera de la parte decimal hay que utilizar siempre el punto independientemente de la configuración que tengamos.

DDL - Lenguaje de definición de datos

Hasta ahora hemos estudiado las sentencias que forman parte del DML (Data Management Language) lenguaje de manipulación de datos, todas esas sentencias sirven para recuperar, insertar, borrar, modificar los datos almacenados en la base de datos; lo que veremos en este tema son las sentencias que afectan a la estructura de los datos.
El DDL (Data Definition Language) lenguaje de definición de datos es la parte del SQL que más varía de un sistema a otro ya que esa area tiene que ver con cómo se organizan internamente los datos y eso, cada sistema lo hace de una manera u otra.
Así como el DML de Microsoft Jet incluye todas las sentencias DML que nos podemos encontrar en otros SQLs (o casi todas), el DDL de Microsoft Jet en cambio contiene menos instrucciones que otros sistemas.