LENGUAJE SQL
Noribell20 de Noviembre de 2013
2.837 Palabras (12 Páginas)716 Visitas
LENGUAJE SQL
El Lenguaje de Consulta Estructurado SQL (Structured Query Language) es un lenguaje de programación diseñado específicamente para el acceso a Sistemas de Gestión de Base de Datos Relacionales (SGBDR). Como la mayor parte de los sistemas actuales son de este tipo, y como el lenguaje SQL es el más ampliamente usado en éstos, se puede decir sin ningún género de dudas que este lenguaje es empleado mayoritariamente en los sistemas existentes hoy en día e indiscutiblemente no tiene rival alguno.
Este lenguaje es empleado en sistemas informáticos que van desde ordenadores personales muy básicos con apenas 64 MB de espacio en memoria central hasta los más potentes multiprocesadores y multicomputadores con decenas de procesadores superescalares de 64 bits.
HISTORIA DEL LENGUAJE SQL
El nombre originario que se le dio a SQL fue SEQUEL y nació como un prototipo de IBM entre los años 1974 y 1975. Se basaba en el modelo racional teórico de Codd.
Posteriormente el lenguaje recibió el nombre de SEQUEL II cuando fueron añadidas nuevas funcionalidades.
En 1979 aparece el primer gestor de base de datos basado en SQL, que lo adopta la compañía de Oracle.
En 1982 el comité de ANSI (American National Standard Institute) presenta un lenguaje estándar basado en el SQL propio de IBM y lo denomina SQL/ANS.
Más tarde en 1989, con nuevas mejoras, el estándar de ANSI pasa a denominarse Addendum.
En 1992 tras incrementos semánticos del lenguaje Addendum, basándose en el esquema racional, se aprueba el estándar ANSI: SQL2. Este estándar es el que utiliza Oracle en su base de datos de la versión 8.
En 1996 ANSI define SQL/PSM como una extensión a SQL para proporcionar programación procedimental (fue la inspiración para la creación de PL/SQL).
La extensión SQL/PSM es definida por ISO/IEC 9075-4:2003. SQL/PSM estandariza extensiones procesales para SQL incluyendo el flujo de control, el manejo de condiciones, declaraciones de variables, cursores y variables locales, y la asignación de expresiones a variables y parámetros. Además SQL/PSM formaliza la declaración y el mantenimiento de rutinas de lenguaje de base de datos persistentes (por ejemplo, procedimientos almacenados).
En 1999 se aprueba una nueva versión oficial estándar de ANSI, conocida como SQL3 o SQL3-PSM, que añade comparación de expresiones regulares, consultas recursivas, Triggers, soporte para almacenamientos, sentencias de control de flujo, tipos de datos no escalares y algunas de las características de la programación orientadas a objetos.
En 2003 se define a SQL 2003, que introduce características del lenguaje XML, secuencias estandarizadas y columnas con valores autogenerados.
En el 2006 se presenta una nueva versión del lenguaje estandarizada por ISO/IEC 9075-14:2006, que define los modos en los que el lenguaje SQL puede ser usado en conjunción con el lenguaje XML. Define modos de importación y almacenamiento de datos XML en una base de datos SQL, manipulación y publicación de los datos en XML y SQL convencional en formularios XML.
En 2008 se realiza una revisión estándar anterior para añadir el uso de la sentencia ORDER BY en la definición de cursores externos, adición de la instrucción INSTEAD OF en los Triggers y adición a la sentencia TRUNCATE. Esta versión del lenguaje SQL es la última que ha aparecido hasta los momentos y es la que se encuentra implementada en la versión 11g de Oracle,
BENEFICIOS DEL LENGUAJE SQL
La creación del Lenguaje SQL ha permitido (con sus distintas estandarizaciones) una serie de beneficios en los accesos a las bases de datos racionales, que se resumen en los siguientes puntos:
Se pueden procesar conjunto de datos como grupos en vez de como unidades individuales.
Se proporcionan mecanismos para la navegación por los datos.
Existen instrucciones muy potentes individualmente que proporcionan tareas variopintas:
o Consulta de datos.
o Inserciones, modificaciones y borrado de filas de una tabla,
o Creación, reemplazo, alteración y borrado de objetos.
o Control de acceso a la base de datos y sus objetos.
o Garantizadores de consistencia e integridad.
Permite el uso de SQL embebido (se puede incluir dentro de otros lenguajes de programación).
CONVEXIONES LÉXICAS
Las convexiones léxicas hacen referencia a la implementación de sentencias SQL.
Las expresiones que se diseñan con instrucciones SQL permiten a parte de las propias palabras reservadas del lenguaje, los siguientes elementos léxicos:
• Tabuladores.
• Retornos de línea.
• Espacios.
• Comentarios.
Por ejemplo, la siguiente instrucción es válida:
SELEC ENAME, SAL 12, MONTHS _BETWEEM (HIREDATE, SYSDATE) FROM EMP
Y la siguiente también, aunque incluya tabuladores, retornos de línea y espacios
SELEC ENAME,
SAL 12,
MONTHS_BETWEEM (HIREDATE, SYSDATE)
FROM
EMP;
CARACTERÍSTICAS GENERALES DEL LENGUAJE SQL
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales y permite así gran variedad de operaciones.
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros (y no a registros individuales) permite una alta productividad en codificación y la orientación a objetos. De esta forma, una sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel orientado a registros. SQL también tiene las siguientes características:
Lenguaje de Definición de Datos: El LDD de SQL 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: El LMD de SQL incluye lenguajes de consultas basado tanto en álgebra relacional como en cálculo relacional de tuplas.
Integridad: El LDD de SQL incluye comandos para especificar las restricciones de integridad que deben cumplir los datos almacenados en la base de datos.
Definición de vistas: El LDD incluye comandos para definir las vistas.
Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de una transacción.
SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar instrucciones de SQL en lenguajes de programación como: C++, C, Java, Cobol, Pascal y Fortran.
Autorización: El LDD incluye comandos para especificar los derechos de acceso a las relaciones y a las vistas.
INYECCIÓN SQL
La inyección directa de comandos SQL o SQL injection es una técnica utilizada por personas maliciosas con el fin de alterar o atacar un sitio o servidor a través de comandos SQL.
Las inyecciones utilizan información de entrada del usuario combinado con comandos SQL para construir una consulta SQL maliciosa. En otras palabras, se "inyecta" un código SQL malicioso para alterar el funcionamiento normal de las consultas SQL programadas por los diseñadores/webmasters. Al no haber seguridad, el código se ejecuta con consecuencias alarmantes.
Con estas inyecciones se pueden obtener datos escondidos, eliminar o sobrescribir datos en la base de datos y hasta lograr ejecutar comandos peligrosos en la máquina donde está la base de datos.
El hecho de que un servidor pueda verse afectado por las inyecciones SQL se debe a la falta de medidas de seguridad por parte de sus diseñadores/programadores, especialmente por una mala filtración de las entradas (por formularios, cookies o parámetros).
COMPONENTES DEL SQL
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
Comandos
Existen dos tipos de comandos SQL:
o DLL que permiten crear y definir nuevas bases de datos, campos e índices.
o DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
Comandos DLL
• CREATE Crea nuevas tablas, campos e índices
• DROP Elimina tablas e índices
• ALTER Modifica las tablas agregando campos o cambiando la definición de los campos.
Comandos DML
• SELECT Consulta registros de la base de datos que satisfagan un criterio determinado
• INSERT Carga lotes de datos en la base de datos en una única operación.
• UPDATE Modifica los valores de los campos y registros especificados
• DELETE Elimina registros de una tabla de una base de datos
Cláusulas
Son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.
Comando Descripción
• FROM Especifica la tabla de la cual se van a seleccionar los registros.
• WHERE Especifica las condiciones que deben reunir los registros que se van a seleccionar.
• GROUP BY Separa los registros seleccionados en grupos específicos.
• HAVING Expresa la condición que debe satisfacer cada grupo.
• ORDER BY Ordena los
...