You are on page 1of 35

STUCTURED QUERY

LANGUAGE
D ata D efinition L anguage

SQL
Es de eso de lo que trata el Structured Query Language, que no es mas que un lenguaje estndar de comunicacin con bases de datos. El hecho de que sea estndar no quiere decir que sea idntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones especficas que no tienen necesariamente que funcionar en otras. El lenguaje SQL ha sido creado en un principio como un mecanismo optimizado para que la obtencin o extraccin de datos sea rpida y eficiente.

Elementos del SQL


Comandos Distintas instrucciones que pueden realizar SQL. Pueden ser: DQL (data query Language) permite realizar consultas a la base de datos. SELECT DML (data manipulation Language) modifica filas registros- de la base de datos. INSERT UPDATE MERGE DELETE DDL (data definition Language) modifican la estructura de las tablas de la base de datos. CREATE ALTER DROP RENAME TRUNCATE DCL (data control language) administran derechos y restricciones de los usuarios. GRANT REVOKE DTL (instrucciones de control de transacciones) administran las modificaciones creadas por instrucciones DML. ROLLBACK COMMIT SAVEPOINT.

Clausulas Son palabras especiales que permiten modificar el funcionamiento de un comando (where, order by, etc) Operadores Permiten crear expresiones complejas. Son aritmticos (+ * - /) o lgicos (<> = <> and or) Funciones Para conseguir valores completos sum() date() Constantes Valores literales para consultas, nmeros, textos, caracteres, Datos Obtenidos de la propia base de datos

Normas de escritura
No se distinguen minsculas de maysculas Finalizan con punto y coma Los comandos SQL pueden ser partidos por espacios o saltos de lnea antes de finalizar la instruccin. Los comentarios empiezan por /* y terminan con */

En Resumen
SQL: Structured Query Language o Lenguaje de Consultas Estructurado. Es el lenguaje que permite la comunicacin con el Sistema Gestor de Bases de Datos. El SQL es un lenguaje unificado. Lo utilizan todo tipo de usuarios, desde el administrador de la base de datos, DBA, hasta el usuario final. El SQL es un lenguaje no procedimental. El usuario especifica Qu quiere, no Cmo ni Dnde conseguirlo.

DDL (Data Definition Language) Lenguaje de Definicin de Datos


El DDL es la parte del Lenguaje SQL que realiza la funcin de definicin de datos del SGBD (sistema de gestin de base de datos). Fundamentalmente se encarga de la creacin, modificacin y eliminacin de los objetos de la base de datos. Por supuesto es el encargado de la creacin de las tablas. Cada usuario de una base de datos posee un esquema. El esquema suele tener el mismo nombre que el usuario y sirve para almacenar los objetos de esquema, es decir los objetos que posee el usuario. Estos objetos pueden ser: tablas, vistas ndices y otros objetos relacionados con la definicin de la base de datos. Los objetos son manipulados y creados por los mismos usuarios. Las instrucciones DDL generan acciones que no se pueden deshacer.

CREACION DE BD
Esta es una tarea administrativa. Implica indicar archivos y ubicaciones que se utilizarn para la base de datos, adems de otras indicaciones tcnicas y administrativas. Solo se puede crear una base de datos si se tienen los privilegios DBA database administrator). El comando SQL de creacin de una base de datos es CREATE DATABASE. Ejemplo:

CREATE DATABASE prueba;

OBJETOS DE LA BASE DE DATOS


Segn los estndares actuales, una base de datos es un conjunto de objetos pensados para gestionar los datos. Estos objetos estn contenidos en esquemas, los esquemas suelen estar asociados al perfil de un usuario en particular. En el estndar SQL existe el concepto de catlogo que sirve para almacenar esquemas. As el nombre completo de un objeto vendra dado por: Catlogo.esquema.objeto Si no se indica el catlogo se toma el catlogo por defecto. Si no se indica el esquema se entiende que el objeto est en el esquema actual.

Nombre de tablas
Deben cumplir las siguientes reglas: Deben comenzar con una letra No deben tener mas de 30 caracteres Solo se permiten usar letras del alfabeto ingls, nmeros o el signo de subrayado $ y # pero esos se utilizan de manera especial. No pueden haber dos tablas con el mismo nombre para el mismo esquema (pueden coincidir si estn en distintos esquemas) No pueden coincidir con el nombre de una tabla reservada para SQL por ejemplo SELECT En el caso de que el nombre tenga espacios en blanco o caracteres nacionales (en algunas Base de Datos) entonces se suele entrecomillar con comillas dobles.

Orden CREATE TABLE


Es la orden SQL que permite crear una tabla. Por defecto ser almacenada en el espacio y esquema del usuario que crea una tabla. Sintaxis: CREATE TABLE proveedores (nombre VARCHAR2(25)); Aqu se crea una tabla con solo un campo de tipo VARCHAR2. Solo se podr crear la tabla si el usuario posee los permisos necesarios para ello. Si la tabla pertenece a otro esquema (suponiendo que el usuario tenga permiso para grabar tablas en ese otro esquema), se antepone al nombre de la tabla, el nombre del esquema. CREATE TABLE otroUsuario.proveedores (nombre VARCHAR2(25));

Consultar el diccionario de datos


Todas las bases de datos poseen un diccionario de datos que contiene la lista de tablas. En cada sistema de base de datos se accede a estos datos de una forma. En el caso de Oracle, hay una tabla en el diccionario de datos que se llamar USER_TABLES que contiene una lista de tablas del usuario actual. Asi para sacar una lista de las tablas del esquema actual se usa: SELECT * FROM USER_TABLES; Hay diversas columnas que muestran datos sobre cada tabla, entre ellas la columna TABLES_NAME muestra el nombre de cada tabla del usuario; el resto muestra informacin sobre el almacenamiento de la tabla. La tabla ALL_TALBES mostrar la lista de todas las tablas visibles para el usuario. Finalmente DBA_TABLES es una tabla que contiene todas las tablas del sistema; esto es accesible solo por el DBA.

Orden describe
El comando DESCRIBE, permite obtener toda la estructura de una tabla. Ejemplo: DESCRIBE proveedores; Y aparecern los campos de la tabla proveedores. Es resultado sera:

BORRAR TABLAS
La orden DROP TABLE seguida del nombre de la tabla, permite eliminar la tabla en cuestin. Al borrar una tabla: desaparecen todos los datos cualquier vista y sinnimo referente a la tabla seguir existiendo, pero ya no funcionar (conviene eliminarlos) Las transacciones pendientes son aceptadas. solo se puede eliminar una tabla si se tiene los permisos necesarios. El borrado de una tabla es irreversible.

Cambiar nombre
La orden RENAME permite el cambio de nombre de cualquier objeto. RENAME nombreViejo TO nombreNuevo;

Borrar contenido de tablas


La orden TRUNCATE TABLE seguida del nombre de una tabla, hace que se elimine el contenido de la tabla, pero no la tabla en s. Incluso borra del archivo de datos el espacio ocupado por la tabla.

AADIR COLUMNAS
La verstil instruccin ALTER TALBE permite hacer cambios en la escritura de una tabla Permite aadir nuevas columnas a la tabla. Se deben indicar su tipo de datos y sus propiedades si es necesario. Las nuevas columnas se aaden al final, no se puede indicar otra posicin. El orden de las columnas no importa. ALTER TABLE facturas ADD (fecha DATE);

BORRAR COLUMNAS
Elimina la columna indicada de manera irreversible e incluyendo los datos que contena. No se puede eliminar la ltima columna (habr que usar DROP TABLE) ALTER TABLE facturas DROP (fecha);

MODIFICAR COLUMNAS
Permite cambiar el tipo de datos y propiedades de una determinada columna. ALTER TABLE facturas MODIFY (fecha TIMESTAMP)

COLUMNAS
Esto permite cambiar el nombre de una columna. ALTER TABLE facturas RENAME fecha TO fechaYhora;

VALOR POR DEFECTO


A cada columna se le puede asignar un valor por defecto durante su creacin mediante la propiedad DEFAULT. Se puede poner esta propiedad durante la creacin o modificacin de la tabla, aadiendo la palabra default tras el tipo de datos del campo y colocando detrs el valor que se desea por defecto. CREATE TABLE articulo (cod NUMBER(7) , nombre VARCHAR2(25), precio NUMBER(11,2) DEFAULT 3.5); La palabra DEFAULT se puede aadir durante la creacin o la modificacin de la tabla (comanda ALTER TABLE).

Un sinnimo es un nombre que se asigna a un objeto cualquiera. Normalmente es un nombre menos descriptivo que el original a fin de facilitar la escritura del nombre del objeto en diversas expresiones.

Creacin
Sintaxis: CREATE [PUBLIC] SYNONYM nombre FOR objeto; Objeto es el objeto que se referir el sinnimo. La clausula PUBLIC hace que el sinnimo est disponible para cualquier usuario.

Borrado
DROP SYNONYM nombre

Lista de sinnimos
La vista USER_SYNONYMS permite observar la lista de sinnimos del usuario, la vista ALL_SYNONYMS permite mostrar la lista completa de sinnimos.

Una secuencia sirve para generar automticamente nmero distintos. Se utilizan para generar valores para campos que se utilizan como clave forzada (claves cuyo valor no interesa, solo sirven para identificar registros de una tabla). Es decir se utilizan en los identificadores de las tablas (campos que comienzan con la palabra id), siempre y cuando no importe qu numero se asigna a cada fila. Es una rutina interna de la base de datos que realiza la funcin de generar un numero distinto cada vez. Las secuencias almacenan independientemente de la tabla, por lo que la misma sentencia puede utilizar para diversas tablas.

Creacin de secuencias
CREATE SEQUENCE numeroPlanta INCREMENT 100 STARTS WITH 100 MAXVALUE 2000; Donde: o Increment by indica cunto se incrementa la secuencia cada vez que se usa. Por defecto se incrementa de uno en uno. o Starts with indica el valor incial (por defecto es uno) o MAXVALUE es el maximo valor de la secuencia. Si no se toma NOMAXVALUE que permite llegar hasta 10 27

Ver lista de secuencias


USER_SEQUENCES muestra la lista de secuencias actuales. La columna LAST_NUMBER muestra el siguiente numero de secuencia disponible.

Una restriccin es una condicin de obligado cumplimiento para una o mas columnas de la tabla. A cada restriccin se le pone un nombre. Los nombres de las restricciones no se pueden repetir para el mismo esquema, por lo que es buena idea incluir de algn modo el nombre de la tabla, los campos involucrados y el tipo de restriccin en el nombre de la misma. Pieza_id_pk podra indicar que el campo id de la tabla pieza tiene una clave principal (Primary Key). Los tipos de restriccin son: NOT NULL PRIMARY KEY UNIQUE FOREIGN KEY CHECK

Prohibir nulos
La restriccin NOT NULL permite prohibir los nulos en una determinada tabla. Eso obliga a que la columna tenga que tener obligatoriamente un valor para que sea almacenado en el registro. Se puede colocar mediante la creacin o modificacin del campo aadiendo la palabra NOT NULL tras el tipo: CREATE TABLE cliente (dni VARCHAR2(9) NOT NULL); No es recomendable no poner nombre a las restricciones para controlarlar mejor. Para poner el nombre se usa: CREATE TABLE cliente (dni VARCHAR2(9) CONSTRAINT cli_dni_nn NOT NULL); El NOT NULL se puede aplicar a un campo a la vez.

Valores nicos
Las restricciones de tipo UNIQUE obligan a que el contenido de una o ms columnas no puedan repetir valores. Nuevamente hay dos formas de colocar esta restriccin: CREATE TABLE cliente (dni VARCHAR2(9) UNIQUE); La otra forma colocando el nombre CREATE TABLE cliente (dni VARCHAR2(9) CONSTRAINT dni_u UNIQUE); Si la repeticin de valores se refiere a varios campos entonces sera: CREATE TABLE alquiler (dni VARCHAR2(9), cod_pelicula NUMBER(5) , CONSTRAINT alquiler_uk UNIQUE(dni, cod_pelicula)); La coma tras la definicin del campo cod_pelicula hace que la restriccin sea independiente de ese campo. Eso obliga a que, tras UNIQUE se indique la lista de campos. Incluso para un solo campo se puede colocar la restriccin al final de la lista.

Clave primaria
La clave primaria de una tabla la forman las columnas que indican a cada registro de la misma. La clave primaria hace que los campos que la forman sean NOT NULL (sin posibilidad de quedar vacos) y que los valores de los campos sean de tipo UNIQUE (sin posibilidad de repeticin). Si la clave est formada por un solo campo basta con: CREATE TABLE cliente ( dni VARCHAR2(9) PRIMARY KEY, nombre VARCHAR2(50)); O poniendo un nombre a la restriccin: CREATE TABLE cliente( dni VARCHAR2(9) CONSTRAINT cliente_pk PRIMARY KEY, nombre VARCHAR(50)); Si la clave est formada por ms de un campo: CREATE TABLE alquiler (dni VARCHAR2(9), cod_pelicula NUMBER (5), CONSTRAINT alquiler_pk PRIMARY KEY (dni, cod_pelicula));

Clave secundaria o fornea


Una clave es secundaria o fornea, es uno o mas campos de la tabla que estn relacionados con la clave principal (o incluso la clave candidata) de otra tabla. La forma de indicar clave fornea (aplicando una restriccin de integridad referencial) es :

Significa esta instruccin (en cuanto a claves forneas) que el campo DNI se relaciona con la columna dni de la tabla clientes. Si el campo al que se hace referencia es la clave principal, se puede obviar el nombre del campo:

En este caso se entiende que los campos hacen referencia a las claves principales de las tablas referenciadas (si la relacin la forma mas un campo, el orden de los campos debe ser el mismo).

Esto forma una relacin entre dichas tablas, que adems obliga al cumplimiento de la integridad referencial. Esta integridad obliga a cualquier dni incluido en la tabla alquiler tenga que estar obligatoriamente en la tabla clientes. De no ser as el registro n ser insertado en la tabla (ocurrir un error). otra forma de crear claves forneas (til para claves formadas por ms de un campo) es:

Si la definicin de la clave secundaria se pone al final hace falta colocar el texto FOREIGN KEY para indicar en qu campos se coloca la restriccin de la clave fornea. En el ejemplo anterior es absolutamente necesario que la clave principal de la tabla piezas a la que hace referencia la clave la formen las columnas tipo y modela y en que estn en ese orden.

Restricciones de validacin
Son restricciones que dictan una condicin que deben cumplir los contenidos de una columna una misma columna puede tener mltiples CHECKS en su definicin ( se pondrn varios CONSTRAINT seguidos y sin comas). Ejemplo:

En este caso la CHECK prohbe aadir datos cuyo importe no est entre 0 y 8000. Para poder hacer referencia a otras columnas hay que construir la restriccin de forma independiente a la columna (es decir al final de la tabla):

Aadir restricciones
Es posible querer aadir restricciones tras haber creado la tabla. Es ese caso se utiliza la siguiente sintaxis: ALTER TABLE tabla ADD [CONSTRAINT nombre] tipoDeRestriccion(columnas); tipoDeRestriccion es el texto CHECK, PRIMARY, o FOREIGN KEY. Las restricciones NOT NULLL deben indicarse mediante ALTER TABLE MODIFY colocando NOT NULL en el campo que se modifica.

Sintaxis ALTER TABLE tabla DROP PRIMARY KEY | UNIQUE (campos) | CONSTRAINT nombreRestriccion [CASCADE] La opcin PRIMARY KEY elimina una clave principal (tambin quitar el ndice UNIQUE sobre los campos que formaban. UNIQUE elimina ndices nicos. La opcin CONSTRAINT elimina la restriccin indicada La opcin CASCADE hace que se eliminen en cascada las restricciones de integridad que dependen de la restriccin eliminada.

Borrar restricciones

Desactivar restricciones
A veces conviene temporalmente desactivar una restriccin para saltarse las reglas que impone. La sintaxis es: ALTER TABLE tabla DISABLE CONSTRAINT nombre [CASCADE] La opcin CASCADE hace que se desactiven tambin las restricciones dependientes de la que se desactiv.

Activar restricciones
Anula la desactivacin. Sintaxis: ALTER TABLE tabla ENSABLE CONSTRAINT nombre [CASCADE] Solo se permite volver a activar si los valores de la tabla cumplen la restriccin que se activa. Si hubo desactivado en cascada, habr que activar cada restriccin individualmente.

Cambiar nombre a las restricciones


Para hacerlo se utiliza el comando: ALTER TABLE table RENAME CONSTRAINT nombreViejo TO nombreNuevo;

GRACIAS!

You might also like