Download SQL (Structured Query Lenguaje/Lenguaje de Consulta

Document related concepts

SQL wikipedia , lookup

Base de datos relacional wikipedia , lookup

Lenguaje de definición de datos wikipedia , lookup

Mapeo objeto wikipedia , lookup

SQL:1999 wikipedia , lookup

Transcript
SQL (Structured Query Lenguaje/Lenguaje de Consulta Estructurado).
Antecedentes:
Cuando el Dr. Codd introdujo el concepto de Base de Datos Relacional, se diseñó un
sistema real de gestión de bases de datos relacional, System R (diseñado por IBM), el cual
no era más que un prototipo, cuyo propósito era construir un Sistema Relacional utilizable
para solucionar problemas reales. Este sistema incorporaba un sublenguaje de datos que
permitía realizar cualquier acceso a la Base de Datos, que se llamó SEQUEL que
posteriormente se le llamó SQL. Varias modificaciones y adecuaciones se han realizado
hasta la fecha, y durante todo este tiempo ha ganado un reconocimiento por ser el
procedimiento que se estima como más eficiente y rápido para manejo de consultas,
presentando en sus últimas versiones la posibilidad de estructurar ‘disparadores’ o
‘triggers’ para realizar ciertas acciones como respuesta a eventos programados
automáticamente, así como manejo de privilegios, especificar restricciones e implementar
medidas de seguridad en el control de acceso.
SQL-89
En 1986, el Instituto Nacional Norteamericano de Normalización (ANSI) publicó las
primeras normas para la sintaxis y semántica de SQL.
En 1989, el mismo organismo ANSI definió el SQL89, basado en el anterior, pero la
definición de claves primarias, integridad de datos, etc, pero la principal característica de
esta versión fue la poder utilizarse en forma interactiva o dentro del contexto de una
aplicación.
SQL92 o SQL2
En 1992, SQL-92 fue desarrollado por el comité técnico del ANSI: NCITS H2, quien tenía
como responsabilidad el desarrolla de estándares para la sintaxis y semántica de los
lenguajes de bases de datos, mejorando substancialmente las versiones anteriores.
Estandares intermedios:
CLI-95 El estándar SQL/CLI (CLI por Call Level Interface), cuya implementación más
conocida es el estándar ODBC (Open Database Connectivity).
PSM-96 El estándar SQL/PSM (PSM por Persistent Stored Modules), el cual especifica la
sintaxis de la lógica procedimental de los módulos del servidor de SQL.
OLB-98 El estándar SQL/OLB (OLB por Object Language Bindings) provee la habilidad
de incluir comandos de SQL en programas de Java y está basado en el el driver JDBC.
SQL99 o SQL3
Al final de los 90’s, los Sistemas Manejadores de Bases de Datos Orientados a Objetos
OODBMS) y los Sistemas Manejadores de Bases de Datos Relacionales (ORDBMS)
dejaron de estar en conflicto, cuando mejoraron las funciones ofrecidas por los OODBMS y
mejoraron sus facilidades para soportar un lenguaje de consulta declarativo (con la
definición de OQL – Object Query Language, que es muy parecido a SQL-3). Las
principales diferencias en estos productos actualmente se concentran en los siguientes
aspectos:
Los OODBMS proveen persistencia para los objetos creados con los lenguajes OO, como
Java, C++ y Smalltalk; los programadores definen clases y crean objetos de esas clases.
En los ORDBMS se introduce un API separada (basado en SQL) para manipular los datos
almacenados, las definiciones de clase se deben “\mapear" a los tipos de datos soportados
por el sistema de base de datos.
En 1999, después de la secuencia de estándares intermedios mencionados anteriormente, es
aceptado y publicado el SQL3 o SQL:1999, participando en su diseño las dos
organizaciones oficialmente activas en la estandarización de SQL: ANSI e ISO
(International Organization for Standardization).
SQL 2003
En el año 2003 salió un nuevo estandar de SQL, SQL:2003, el cual introduce la noción
de XML y estandariza los generadores de secuencias o valores auto generados, esto incluye
columnas que se utilizan como identificadores. Sql3 incluye PSM (Persistent Stored
Modules).
Algunos lenguajes para bases de datos:
• QBE (Query By Example). Lenguaje de cálculo de dominios.Lenguaje de manipulación
de datos basado en cálculo relacional de dominios.
• Datalog (Database Logic).- es un lenguaje lógico desarrollado para el modelo relacional.
Datalog sin recursión tiene el mismo poder expresivo que el álgebra relacional. Datalog
recursivo permite expresar consultas. Datalog está basado en Prolog, en su sintaxis, pero su
semántica operacional es distinta, ya que requiere de librerías especiales para poder
implementarse.
• SQL (Structured Query Language). Lenguaje relacional estándar de facto superconjunto
del álgebra relacional.
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.
Tipos de Datos:
Referente a los valores lógicos True o False, no son reconocidos en ORACLE, ni en SQLSERVER Existen los campos de tipo "SI/NO" de ACCESS; en estos sistemas se utilizan los
campos BIT que permiten almacenar valores de 0 ó 1. Internamente, ACCESS, almacena
en estos campos valores de 0 ó -1, así que todo se complica bastante, pero aprovechando la
coincidencia del 0 para los valores FALSE, se puede utilizar la sintaxis siguiente que
funciona en todos los casos: si se desea saber si el campo es falso "... CAMPO = 0" y para
saber los verdaderos "CAMPO <> 0"
Tipos de Datos
Sinónimos
BINARY
BIT
LOGICAL
LOGICAL1
YESNO
BYTE
COUNTER
CURRENCY
DATETIME
TIME
TIMESTAMP
SINGLE
IEEESINGLE
REAL
DOUBLE
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
SHORT
SMALLINT
LONG
INTEGER
INTEGER4
LONGBINARY
OLEOBJECT
LONGTEXT
MEMO
NOTE
TEXT
CHAR
CHARACTER
STRING
VARCHAR
VARIANT (No Admitido)
VARBINARY
BOOLEAN
INTEGER1
AUTOINCREMENT
MONEY
DATE
FLOAT4
FLOAT
INTEGER2
INT
GENERAL
LONGCHAR
ALPHANUMERIC
VALUE
Comandos
Existen dos tipos de comandos SQL:
•
Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.
•
Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la
base de datos.
Comandos DLL:
Create
crear
Alter
modificar
Drop
eliminar
Comandos DML:
Select
Consultar
Insert
Agregar registro
Delete
Eliminar registro
Update
Modificar registro
Cláusulas utilizadas en la evaluación de condiciones:
From
(identificación de las tablas que se utilizarán en la expresión)
Where (permite establecer una condicional dentro de una expresión)
Group by (permite agrupar una consulta)
Having (se utiliza con group by para aplicar un filtro en la información agrupada)
Order by (se utiliza para ordenar el resultado de una consulta)
Operadores:
AND
(operador lógico)
OR
(operador lógico)
NOT
(operador lógico)
BETWEEN
(se utiliza para establecer un rango o intervalo de valores)
LIKE
(permite especializar una condición)
IN
(especifica condiciones en registros o se utiliza en subconsultas)
<, >, <>, >=, <=, =
Funciones de agregado o especiales:
AVG
(obtiene el promedio)
COUNT
(obtiene el total de registros de una tabla)
SUM
(obtiene el resultado de la suma de valores de un campo)
MAX
(obtiene el valor más alto del campo especificado)
MIN
(obtiene el valor más bajo del campo especificado)
Predicados de consultas:
ALL
(regresa todos los campos de la tabla especificada)
TOP
(regresa un los primeros n registros de una tabla o de una consulta)
DISTINCT
(Obtiene solamente un registro con el valor especificado en un campo del
registro, omitiendo otras tuplas que contengan el mismo valor en el mismo campo)
DISTINCTROW
(Evita repeticiones tomando en cuenta todos los campos del registro)
Algunas reglas sintácticas básicas de SQL:

Los retornos de carro, tabuladores y espacios en blanco no tienen ningún significado
especial a la hora de la ejecución de sentencias.

Las listas de objetos están delimitados por comas (,) cuando es necesario, y se
pueden utilizar paréntesis para agruparlos.

El Lenguaje de Programación o Sistema Gestor de Base de Datos que permita
implementar el Sql incrustado, respetará la sintaxis de SQL en forma general, pero
pueden presentarse algunas variaciones.

SQL no es sensible a mayúsculas o minúsculas, excepto.en las cadenas que se
almacenen en las tablas como valores, y esto debe tomarse en cuenta al realizar
operaciones de comparación.

En SQL, las columnas definidas como claves primarias no pueden aceptar valores
nulos.