Lenguaje de Interrogación SQL
Lenguaje de Interrogación SQL
Lenguaje de Interrogación SQL
Contenidos: Lenguaje
de definición de datos. Lenguaje de manipulación de
datos. Lenguaje de control de datos.
Administradores de BDR.
Programadores.
Usuarios Finales.
Lenguaje no procedimental: Se especifica QUÉ se quiere obtener, sin decir
CÓMO.
Permite especificar cualquier consulta.
Lenguaje de Definición de Datos (DDL)
Tipos básicos de datos
Datos Alfanuméricos o Cadenas de Caracteres:
CHAR(longitud), donde: longitud = número máximo de caracteres del
campo
VARCHAR(longitud)
Datos Numéricos:
SMALLINT, INTEGER
DECIMAL ó DECIMAL(precisión, decimal), donde: precisión =
número de dígitos del número y decimal = número de dígitos decimales
del nº decimal
REAL
FLOAT
Datos tipo fecha y tiempo:
DATE: Se puede elegir entre varios formatos
TIME: También tiene diferentes formatos
TIMESTAMP: Su valor es: fecha + tiempo + nanosegundos
Creación y borrado de bases de datos
Creación de una BD: CREATE DATABASE nombre_base_datos;
Borrado de la BD: DROP DATABASE nombre_base_datos;
Creación, modificación y borrado de tablas
Creación
CREATE TABLE nombre_tabla (
···················································
);
Donde:
Eliminación
DROP TABLE <nombre_tabla>;
Definición de vistas
Una vista es una estructura tabular no física (tabla virtual), que
permite consultar y/o modificar datos de la tabla real.
Creación de vistas:
CREATE VIEW <nombre_vista> [<lista_atributos>)] AS (<cláusula SELECT>);
Las filas de la vista serán aquellas que resulten de ejecutar la
consulta cobre la que está definida.
Eliminación de vistas:
DROP VIEW <nombre_vista>;
Creación de índices:
CREATE [UNIQUE] INDEX <nombre_índice> ON <nombre_tabla> (<lista_atributos>);
Eliminación de índices:
DROP INDEX <nombre_índice>;
Modificación
UPDATE <nombre_tabla>
SET <atributo_1> = <valor_1>,
<atributo_2> = <valor_2>,
............
<atributo_n> = <valor_n>
[WHERE <condición>];
Eliminación
DELETE
FROM <nombre_tabla>
[WHERE <condición>];
Operaciones de consulta
Sintaxis de la sentencia:
SELECT [DISTINCT] <expresión>
FROM <lista_de_tablas>
[WHERE <condicion>]
[GROUP BY <lista_de_atributos>
[HAVING <condición_de_grupo> ]
SELECT: especifica la información que se desea obtener.
DISTINCT: elimina los valores repetidos.
FROM: indica las tablas o vistas en las que se encuentran los atributos
implicados en la consulta.
WHERE: especifica la condición de búsqueda.
GROUP BY: permite agrupar el resultado.
HAVING: especifica una condición de grupo.
ORDER BY: permite ordenar el resultado.
Operadores: Los operadores que se pueden utilizar para expresar
condiciones de fila (cláusula WHERE) o de grupo (cláusula HAVING)
son:
De comparación: <, <=, >, >=, <>, =
Lógicos: AND, OR, NOT
BETWEEN … AND …: establece una comparación dentro de un
intervalo cerrado. También se puede utilizar NOT BETWEEN.
LIKE: establece una comparación entre cadenas de caracteres, también
se puede utilizar NOT LIKE, emplea los siguientes comodines:
%: sustituye a una cadena de caracteres cualquiera.
_: sustituye a un único carácter cualquiera.
IN: comprueba la pertenencia de un valor a un conjunto dado.
IS NULL: comprueba si un valor determinado es nulo (NULL).
También se puede utilizar IS NOT NULL.
Cuantificadores: ANY (alguno), ALL (todos).
Existencial: EXISTS, indica la existencia o no de un conjunto. También
se puede utilizar NOT EXISTS.
Reglas de Evaluación de Operadores: El Orden de Evaluación es el
siguiente:
Operadores de Relación: BETWEEN, IN, LIKE, IS, NULL y después
NOT, AND, OR.
Se pueden utilizar paréntesis para establecer el orden de evaluación
deseado por el usuario.
Consultas con UNION, DIFERENCIA e INTERSECCIÓN:
Unión de conjuntos: operador UNION.
Diferencia de conjuntos: operador MINUS.
Intersección de conjuntos: operador INTERSECT.
Expresiones en la cláusula SELECT: No sólo se pueden seleccionar
atributos, sino expresiones en las que aparezcan atributos y/o constantes y
operadores aritméticos.
Funciones agregadas: Devuelven un valor único, numérico. No se pueden
combinar, con columnas que devuelvan más de un valor, a menos que la
consulta contenga una cláusula GROUP BY.
COUNT (*): contador de tuplas (totalizador)
COUNT (DISTINCT Atributo): contador de tuplas (parcial), no tiene en
cuenta valores nulos ni duplicados.
AVG(Atributo): media aritmética de un atributo numérico.
SUM(Atributo): suma de atributos o expresiones numéricas.
MAX(Atributo): valor máximo de un atributo o expresión numérica.
MIN(Atributo): valor mínimo de un atributo o expresión numérica.
Cláusula GROUP BY: GROUP BY <lista_de_atributos>
Agrupa el resultado, devolviendo una única fila por grupo.
El agrupamiento no se realiza ordenado.
Los atributos que aparezcan en GROUP BY, deben aparecer en la
cláusula SELECT.
Cláusula HAVING: HAVING <condición_de_grupo>
Siempre va acompañada de la cláusula GROUP BY.
Especifica una condición de grupo.
Cláusula ORDER BY: ORDER BY <lista_de_atributos> [ASC | DESC]
El resultado de la consulta se ordena en base a los atributos que se
indiquen en la lista.
Los atributos de ordenación deben aparecer en SELECT.
Lenguaje de Control de Datos (DCL)
Este lenguaje se preocupa principalmente del control de acceso a
los datos (seguridad) y del control de la integridad de los datos.
[ON <lista_de_objetos>]
TO <lista_de_usuarios>
<privilegio_de_acceso>: CONNECT, RESOURCE, DBA, ALL
PRIVILEGES, SELECT, UPDATE, INSERT, DELETE
WITH GRANT OPTION concede permiso para que el usuario a su vez,
conceda esos permisos a otros usuarios.
Nivel de Base de Datos: El SGBDR chequea los privilegios del usuario al
iniciar la sesión. Los posibles privilegios o permisos son:
CONNECT: Conectarse a la BDR.
RESOURCE: Crear objetos.
DBA: Ejecución de comandos restrictivos. Acceso a cualquier objeto.
Privilegio RESOURCE implícito.
Nivel de Tabla: Las tablas son propiedad del usuario que las creó. Los
posibles privilegios o permisos son:
DELETE: Autoriza el borrado de tuplas.
INSERT: Autoriza la inserción de nuevas tuplas.
SELECT: Permite la realización de consultas.
UPDATE: Permite la actualización de tuplas.
ALL PRIVILEGES: Concede todos los privilegios.
Niveles Atributo y Tupla: Se implantan a través de la definición de vistas.
Nivel de Atributo: Se crea una vista sin condiciones. Se establecen los
permisos sobre la vista.
Nivel de Tupla. Se crea una vista con sólo las tuplas permitidas. Se
establecen los permisos sobre la vista.
Revocación de privilegios: Se utiliza para anular privilegios ya concedidos
a los usuarios:
REVOKE <privilegio_de_acceso>
[ON <lista_de_objetos>]
TO <lista_de_usuarios>;
Control de integridad
Este control está asociado al concepto de Transacción. Existen dos
sentencias principales: