- El DLL2 donde el usuario define los datos que van a manipularse.
- La DML donde el usuario manipula los datos que están almacenados.
Componentes del lenguaje SQL
- Lenguaje de definición de datos (LDD): Proporciona comandos para la definición de esquemas de relación, borrado de relaciones y modificaciones de los esquemas de relación.
- Lenguaje interactivo de manipulación de datos (LMD): Incluye un lenguaje de consultas que se basa tanto en el álgebra relacional como en el cálculo relacional de tuplas. Contiene comandos para insertar, borrar y modificar tuplas.
- Integridad: El LDD de SQL incluye comandos que permiten especificar las restricciones de integridad que deben cumplir los datos almacenados en la base de datos. Las actualizaciones que violan las restricciones de integridad son rechazadas.
- Definición de vistas: El LDD de SQL incluye comandos para la definición de vistas.
- Control de transacciones: SQL incluye comandos que se usan para especificar el comienzo y final de las transacciones.
- SQL incorporado y SQL dinámico: Definen cómo se pueden incorporar instrucciones de SQL en lenguajes de programación de propósito general como C, C++, Java, PL/I, Cobol, Pascal y Fortran.
- Autorización: El LDD de SQL incluye comandos para especificar los derechos de acceso a las relaciones y las vistas.
Definición de Datos
- El esquema de cada relación.
- El dominio de valores asociado a cada atributo.
- Las restricciones de integridad.
- El conjunto de índices que se deben mantener para cada relación.
- La información de seguridad y autorización de cada relación.
- La estructura de almacenamiento físico de cada relación en el disco.
Tipos Básicos de Dominio
La norma SQL soporta una gran variedad de tipos de dominio, entre ellos tenemos:
- char(n): Una cadena de caracteres de longitud fija, con una longitud n que es definida por el usuario. También podemos usar la palabra completa character.
- varchar(n): Es una cadena de caracteres de longitud variable con una longitud máxima n que es especificada por el usuario. Se puede usar la palabra completa character varying.
- int: Un entero (un subconjunto finito de enteros dependiente de la máquina). Se puede usar la palabra completa integer.
- smallint: Un entero pequeño (un subconjunto dependiente de la máquina del tipo de dominio entero).
- numeric(p,d): Un número de coma fija, cuya precisión es definida por el usuario. El número está formado por p dígitos (más el signo), y de estos p dígitos, d pertenecen a la parte decimal.
- real, double precision: Números de coma flotante y números de coma flotante de doble precisión, con precisión dependiente de la máquina.
- float(n): Un número de coma flotante cuya precisión es, al menos, de n dígitos.
Definición Básica de Esquemas en SQL
Las relaciones se definen por medio del comando create table:
Donde r es el nombre de la relación, cada Ai es el nombre de un atributo del esquema de la relación r y Di es el tipo de dominio de los valores del dominio del atributo Ai. Hay varias restricciones de integridad válidas.
En este apartado sólo se estudiarán las de clave primaria (primary key), que adopta la forma:
- primary key (Aj1, Aj2, ..., Ajm). La especificación de clave primaria determina que los atributos Aj1, Aj2, ..., Ajm forman la clave primaria de la relación. Los atributos de la clave primaria tienen que ser no nulos y únicos; es decir, ninguna tupla puede tener un valor nulo para un atributo de la clave primaria y ningún par de tuplas de la relación puede ser igual en todos los atributos de la clave primaria1. Aunque la especificación de clave primaria es opcional, suele ser una buena idea especificar una clave primaria para cada relación.
La clave primaria es aquella que selecciona el administrador de la base de datos para identificar univocamente los registros. Una base de datos puede tener muchas claves primarias pero sólo pueda haber una clave primaria por tabla. En algunos casos una tabla puede poseer un conjunto de atributos que identifican sin ambigüedad los registros de una tabla y se les denominan claves candidatas. De esos atributos el administrador de base de datos puede elegir cual de estos atributos sería la clave primaria, y al seleccionarla el resto de los atributos que identifican sin ambigüedad los registros de la tabla se denominan claves secundarias.
Aquí podemos notar que esta tabla contiene 3 atributos de los cuales el id_autor es el atributo que identifica sin ambigüedades los registros de una tabla, es decir, que lo representa univocamente por lo tanto se selecciona como la llave primaria.
Los valores se especifican en el orden en que se relacionan los atributos correspondientes en el esquema de la relación. Los datos que son tipo char son escritos dentro de comillas simples (' ').
Se puede utilizar el comando delete para borrar tuplas de una relación. El comando
Esto borraría todas las tuplas de la relación cuenta. Otras formas del comando delete permiten borrar sólo tuplas concretas. Para eliminar una relación de una base de datos SQL se utiliza el comando drop table. Este comando elimina de la base de datos toda la información de la relación. La instrucción drop table r es una acción más drástica que delete from r.
La última conserva la relación r, pero borra todas sus tuplas. La primera no sólo borra todas las tuplas de la relación r, sino que también elimina su esquema. Una vez eliminada r, no se puede insertar ninguna tupla en dicha relación, a menos que se vuelva a crear con la instrucción create table.
El comando alter table se utiliza para añadir atributos a una relación existente. Se asigna a todas las tuplas de la relación un valor nulo como valor del atributo nuevo. La forma del comando alter table es
Estructura básicas de las consultas SQL
- La cláusula select se corresponde con la operación proyección del álgebra relacional. Es usada para obtener una relación de los atributos deseados en el resultado de una consulta.
- La cláusula from se corresponde con la operación producto cartesiano del álgebra relacional. Genera una lista de las relaciones que deben ser analizadas en la evaluación de la expresión.
- La cláusula where se corresponde con el predicado selección del álgebra relacional. Es un predicado que engloba a los atributos de las relaciones que aparecen en la cláusula from.
A continuación se explicará de una mejor forma estas 3 cláusulas:
La cláusula Select:
En esta consulta estamos buscando los registros de un atributo específico, si quisiéramos buscar los registros de todos los atributos de la tabla pondríamos después del select un asterisco (*).
La cláusula from:
La cláusula Where:
A continuación se presenta un ejemplo de estas condiciones:
Como podemos observar estamos mostrando todos los datos de los registros mientras que el id_autor esté entre 15 y 26.
- Libro: Fundamentos de Base de Datos 5ta Edición. ABRAHAM SILBERSCHATZ, HENRY F. KORTH, S. SUDARSHAN.
- Libro: Introducción al SQL Teoría y Práctica. Olinto Rodríguez.
Buen post, el SQL es el estándar de las bases de datos relacionales y lo bueno es que conociéndolo podemos trabajar con casi todos los manejadores de bases de datos, por lo cual su aprendizaje es altamente recomendado para los que estamos interesados en desarrollar sistemas de información.
Muchas gracias por el comentario, llevo poco tiempo usando el lenguaje pero desde que empece a aprenderlo me engancho, me gusta mucho. Saludos.
Muy completo el post, la verdad es que había experimentado con esta herramienta pero muy por encimita, voy a investigar más acerca de ello , pero estos tipos de post valen la pena te felicito por ello.
Muchas gracias @greylml me alegra que te haya gustado el contenido, este tema a mi me resulta muy fascinante y me gusta mucho, espero que también puedas aprender mucho sobre esto, un saludo.