Fundamentos de SQL: Consultas, DDL, DML, DCL y Agrupamiento de Datos
Introducción a SQL
La consulta es la petición que el usuario realiza a un intérprete de SQL, que comprueba si su sintaxis es correcta y solicita los datos para el usuario. La sentencia SELECT sirve para seleccionar registros.
SQL es un lenguaje estándar utilizado por los SGBD que implementa las siguientes funciones:
- DDL (Lenguaje de Definición de Datos): permite especificar las definiciones de dominios de tablas, de vistas y de integridad.
- DML (Lenguaje de Manipulación de Datos): permite realizar consultas, insertar y modificar tuplas.
- DCL (Control de Datos): permite gestionar privilegios, autorizaciones y permisos.
Elementos para crear sentencias
Los elementos que permiten crear consultas y modificar una base de datos son:
- Comandos: palabras clave que indican la acción a realizar. Pertenecen a DDL (
CREATE,DROP,ALTER) o a DML (SELECT,INSERT,UPDATE). - Cláusulas: condicionan los datos a manipular (
FROM,WHERE,ORDER BY). - Operadores: especifican características y enlazan condiciones (
LIKE,IN,OR,>,<,=).
Operadores lógicos
- AND: une dos condiciones y solo selecciona los registros que cumplen ambas.
- OR: une dos condiciones y selecciona los registros que cumplen una o las dos condiciones.
- NOT: negación lógica; especifica que no se debe cumplir la condición que hay tras NOT.
Funciones de agregado
Las funciones de agregado se usan dentro de SELECT para resumir los resultados de la consulta:
- SUM(): suma los valores numéricos del campo.
- AVG(): media aritmética del campo numérico.
- COUNT(): cuenta el número de registros agrupados.
- MIN(): valor mínimo.
- MAX(): valor máximo.
Agrupamiento
El agrupamiento es el tratamiento único de varios registros que poseen el mismo valor de campo. Al agruparlos, se puede aplicar a cada grupo una determinada operación.
GROUP BY y HAVING
- GROUP BY: define grupos de filas de una tabla con el mismo valor en el campo por el que se agrupa. Es opcional dentro de SELECT.
- HAVING: va siempre con SELECT y con GROUP BY, y define una condición para la función de agrupamiento.
Consultas multitabla
Una consulta multitabla establece una relación entre dos tablas (por ejemplo, mediante INNER JOIN).
Restricciones de DROP TABLE
No se puede eliminar una tabla con DROP TABLE si la tabla está abierta o si se infringen reglas de integridad referencial.
Vistas
Una vista es una tabla virtual que recoge información de otras tablas. Sus ventajas son:
- Seguridad y confidencialidad, ya que se accede solo a una selección de datos.
- Ocultación de la complejidad de los datos.
- Distintos puntos de vista según las necesidades de cada usuario.
Gestión de privilegios
Los privilegios dan la capacidad para realizar ciertas tareas:
- De sistema: permiten realizar acciones sobre objetos genéricos.
- Sobre objetos: permiten acceder y modificar los datos de otros usuarios. Son
SELECT,INSERT,UPDATEyDELETE.
Sintaxis de referencia
- Inserción:
INSERT INTO tabla(col1,col2) VALUES (val1,val2)eINSERT INTO tabla(col1,col2) SELECT c1,c2 FROM torigen. - Selección con destino:
SELECT cal1,cal2 INTO tb_dest FROM tb_orig WHERE cond. - Actualización:
UPDATE tabla SET campo=valor WHERE .... - Borrado:
DELETE FROM tabla WHERE condición. - Creación de tabla:
CREATE TABLE nombre_tabla (campo tipo NOT NULL, CONSTRAINT nombre PRIMARY KEY (campo), CONSTRAINT nombre FOREIGN KEY (campo) REFERENCES tabla2(campo) ON UPDATE CASCADE ON DELETE SET NULL RESTRICT). - Modificación de tabla:
ALTER TABLE tabla ADD COLUMN columna tipo_datos,ADD CONSTRAINT,DROP COLUMN,DROP PRIMARY KEYoDROP FOREIGN KEY nombre_restriccion. - Eliminación de tabla:
DROP TABLE nombre_tabla. - Vistas:
CREATE OR REPLACE VIEW nombre [c1,cn] AS SELECT ... WITH READ ONLY WITH CHECK OPTION. - Usuarios:
CREATE USER nombre IDENTIFIED BY "passwd"yDROP USER nombre CASCADE. - Privilegios:
GRANT privilegio1, privilegio2 ON *.* TO usuarioyREVOKE privilegio FROM usuario.