1. ¿Qué es una base de datos
Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. Es un espacio dedicado que sirve para guardar información.
Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila, un registro. La intersección de una columna con una fila, contiene un dato específico, un solo valor.
- Cada registro contiene un dato por cada columna de la tabla.
- Cada campo (columna) debe tener un nombre. El nombre del campo hace referencia a la información que almacenará.
- Cada campo (columna) también debe definir el tipo de dato que almacenará.
Para ver las tablas existentes creadas por los usuarios en una base de datos usamos el procedimiento almacenado sp_tables @table_owner='dbo';
exec sp_tables @table_owner='dbo';
Para ver la estructura de una tabla usamos el procedimiento almacenado sp_columns junto al nombre de la tabla:
exec sp_columns usuarios;
SQL (Structured Query Language)
El lenguaje de consulta estructurado o SQL (Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar de forma sencilla información de interés de bases de datos, así como hacer cambios en ella.
¿Qué es SQL?
- SQL (Structured Query Language) es un lenguaje de programación diseñado para administrar y manipular bases de datos relacionales.
- Gestión de datos.
- Forma estándar de interactuar con sistemas de gestión de bases de datos.
- SQL se utiliza para realizar diversas tareas:
- Creación y modificación de bases de datos,
- Inserción, actualización y eliminación de datos,
- Consulta y recuperación de información.
- Permite a los usuarios definir estructuras de datos, establecer relaciones entre tablas y realizar consultas complejas para obtener resultados específicos.
Enfoque declarativo:
- Usuarios describen qué datos desean obtener o manipular.
- Sistema de gestión de bases de datos se encarga de determinar cómo ejecutar la consulta de la manera más eficiente posible.
- Se compone de diferentes elementos, como:
- Cláusulas, comandos, funciones y operadores
- Cláusulas comunes utilizadas en SQL incluyen SELECT, FROM, WHERE, INSERT, UPDATE, DELETE y JOIN.
- SQL se utiliza para gestionar grandes cantidades de datos y realizar consultas complejas de manera eficiente.
Historia de SQL
- Década de 1970, cuando IBM desarrolló el lenguaje SEQUEL (Structured English Query Language) como parte de su sistema de gestión de bases de datos relacional (RDBMS) llamado System R.
- 1979 fue renombrado a SQL.
- En la década de 1980, se formó el Comité Nacional de Estándares de SQL (ANSI) para establecer un estándar oficial para el lenguaje.
- Hoy en día, SQL sigue siendo uno de los lenguajes de programación más utilizados en el ámbito de la gestión de bases de datos. Es compatible con una amplia gama de SGBD y se utiliza en diversas aplicaciones, desde pequeños proyectos hasta sistemas empresariales de gran escala.
Propósito de SQL
- Gestión de datos estructurados
- Manipulación de datos
- Consultas y recuperación de datos
- Interacción con sistemas de gestión de bases de datos
- Estandarización y escalabilidad
Principales características y capacidades
- Lenguaje declarativo
- Manipulación de datos
- Consultas complejas
- Creación y manipulación de esquemas
- Transacciones y control de concurrencia
- Administración de usuarios y seguridad
- Funciones y procedimientos almacenados
Motores de Bases de Datos
- Gestión de datos empresariales
- Almacenar, organizar y acceder a grandes volúmenes de datos
- Realizar consultas
- Análisis de datos
- Generar informes
- Análisis de tendencias
- Toma de decisiones basadas en datos
- Aplicaciones web
- Análisis de datos
- Business Intelligence (BI)
- Automatización de tareas
- Aplicaciones móviles
Clasifiquemos las instrucciones SQL según su propósito
1. DDL (Data Definition Language) Lenguaje de Definición de Datos: que permiten crear y definir nuevas bases de datos, campos e índices.
Sentencias de DDL (Data Definition Language)
- CREATE: Utilizado para crear nuevas tablas, campos e índices.
- ALTER: Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.
- DROP: Empleado para eliminar tablas e índices.
- TRUNCATE: Empleado para eliminar todos los registros de una tabla.
- COMMENT: Utilizado para agregar comentarios al diccionario de datos.
- RENAME: Tal como su nombre lo indica es utilizado para renombrar objetos.
2. DML (Data Manipulation Language) Lenguaje de Manipulación de Datos: que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Este lenguaje permite realizar diferentes acciones a los datos que se encuentran en una base de datos. Permite recuperar, almacenar, modificar, eliminar, insertar y actualizar datos de una base de datos.
Elementos del DML (Data Manipulation Language)
- SELECT: Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.
- INSERT: Utilizado para cargar de datos en la base de datos en una única operación.
- UPDATE: Utilizado para modificar los valores de los campos y registros especificados
- DELETE: Utilizado para eliminar registros de una tabla de una base de datos.
3. DCL (Data Control Language) Lenguaje de Control de Datos: que se encargan de definir las permisos sobre los datos. Permite crear roles, permisos e integridad referencial, así como el control al acceso a la base de datos.
Elementos del DCL (Data Control Language)
- GRANT: Usado para otorgar privilegios de acceso de usuario a la base de datos.
- REVOKE: Utilizado para retirar privilegios de acceso otorgados con el comando GRANT.
4. TCL (Transactional Control Language) Lenguaje de Control Transaccional: Permite administrar diferentes transacciones que ocurren dentro de una base de datos.
Elementos del TCL (Transactional Control Language)
- COMMIT: Empleado para guardar el trabajo hecho.
- ROLLBACK: Utilizado para deshacer la modificación que hice desde el último COMMIT.
Comandos básicos de SQL
| Categoría | Comandos |
|---|---|
| DDL | CREATE, ALTER, DROP, TRUNCATE, RENAME, COMMENT |
| DML | SELECT, INSERT, UPDATE, DELETE, MERGE, CALL, EXPLAIN PLAN, LOCK TABLE |
| DCL | GRANT, REVOKE, DENY |
| TCL | COMMIT, ROLLBACK |
Sentencias en SQL
A través de sentencias SQL, los desarrolladores pueden:
- realizar consultas,
- insertar, actualizar y eliminar datos,
- administrar la estructura de las tablas y otros objetos de la base de datos.
Estructura Básica
Estas tienen la característica de que todas deben seguir unos simples patrones:
- Se empiezan por un verbo indicando la acción a realizar.
- Continúan completando con un objeto sobre el cual se realiza la acción.
- Se sigue por una serie de cláusulas, obligatorias y opcionales, que especifican a detalle lo que se quiere hacer.
COMANDO [CLAUSULA] [TABLA] [CONDICIONES];
- COMANDO: Es la acción que se realizará en la base de datos, como SELECT, INSERT, UPDATE o DELETE.
- CLAUSULA: Opcionalmente, se pueden utilizar cláusulas para filtrar los resultados o definir condiciones adicionales. Algunas cláusulas comunes son WHERE, GROUP BY, HAVING y ORDER BY.
- TABLA: Es la tabla específica en la que se realizará la operación.
- CONDICIONES: Son condiciones adicionales que se aplican a la operación, como restricciones de búsqueda o actualización
Ejemplos de sentencias SQL
- **SELECT: **Se utiliza para recuperar datos de una o varias tablas.
SELECT columna1, columna2 FROM tabla WHERE condicion; - **INSERT: ** Se utiliza para insertar nuevos registros en una tabla.
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2); - **UPDATE: ** Se utiliza para actualizar registros existentes en una tabla.
UPDATE tabla SET columna = nuevo_valor WHERE condicion; - DELETE: Se utiliza pa ra eliminar registros de una tabla.
DELETE FROM tabla WHERE condicion;
Cláusulas básicas
| Cláusula | Descripción |
|---|---|
| SELECT | Se usa para especificar los nombres de los campos que contienen los datos que quiere usar en una consulta. |
| FROM | Especifica las tablas o consultas que contienen los datos que se usarán en la cláusula SELECT. |
| WHERE | Especifica criterios que tienen que cumplir los valores de campo para que los registros que contienen los valores se incluyan en los resultados de la consulta. |
| ORDER BY | Ordena los registros resultantes de una consulta por un campo o campos especificados en orden ascendente o descendente. |
| LIMIT/TOP | La cláusula "limit“ o “top” se usa para restringir los registros que se retornan en una consulta "select". |
| GROUP BY | Utilizada para separar los registros seleccionados en grupos específicos. |
| HAVING | Utilizada para expresar condición que debe satisfacer cada grupo. |
Modificación de tablas - Comandos clave
| Palabra clave | Uso |
|---|---|
| CREATE | Cree un índice o tabla que aún no existe. |
| ALTER | Modifique una tabla o columna existente. |
| DROP | Eliminar una tabla, columna o restricción existente. |
| ADD | Agregue una columna o una restricción a una tabla. |
| COLUMN | Usar con AGREGAR, ALTER o DROP. |
| CONSTRAINT | Usar con AGREGAR, ALTER o DROP. |
| INDEX | Usar con CREAR. |
| TABLE | Usar con ALTER, CREATE o DROP. |
Comentarios en SQL
- Comentarios de una línea: Se inician con "–" (dos guiones) y todo lo que sigue después de ellos en la misma línea se considera un comentario.
-- Esta es una consulta para obtener los clientes activos - Comentarios multilínea: Se inician con
/*y finalizan con*/. Todo lo que se encuentra entre estos caracteres se trata como un comentario./* Esta es una consulta para obtener información de los pedidos realizados durante el último mes */
Creación de tablas e inserción de datos
- Crear una base de datos
CREATE DATABASE TESTDATA;
- Inserción de datos en una tabla
INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
VALUES (1, 'Clamp', 12.48, 'Workbench clamp’);
- Eliminar todas las filas de la tabla
TRUNCATE TABLE TestData.dbo.Products;
- Inserción de datos en una tabla variando el orden de las columnas
INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
VALUES ('Screwdriver', 50, 3.17, 'Flat head’);
- Inserción de datos en una tabla “Nombres de columnas son opcionales”
INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.’);
- Inserción de datos en una tabla “Nombres de columnas son opcionales excepto que ingresemos valores nulos”
INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52);
Modificación de una tabla
ALTER TABLE table_name predicate;
Donde el predicado puede ser cualquiera de los siguientes:
- ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
- ADD CONSTRAINT multifield_constraint
- ALTER COLUMN field type[(size)]
- DROP COLUMN field
- DROP CONSTRAINT constraint
Ejemplos (w3schools.com)
ALTER TABLE Customers ADD Email varchar(255);
ALTER TABLE Customers DROP COLUMN Email;
ALTER TABLE Customers ALTER COLUMN Email varchar(50);
Importancia de las operaciones de modificación en SQL
- Mantenimiento de Datos Actualizados
- Inserción de Nuevos Datos
- Adaptación a Cambios
- Cumplimiento de Normativas
- Optimización y Rendimiento
- Corrección de Errores
- Consistencia y Confiabilidad
- Migración de Datos
- Personalización y Análisis
- Aseguramiento de la Privacidad
Inserción de datos (INSERT)
- Inserción básica
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
- Inserción de múltiples filas
INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2), (valor3, valor4);
- Inserción con valores nulos
INSERT INTO tabla (columna1, columna2) VALUES (valor1, NULL);
Actualización de datos (UPDATE)
- Actualización de una fila
UPDATE tabla SET columna1 = nuevo_valor WHERE condicion;
- Actualización de múltiples filas
UPDATE tabla SET columna1 = nuevo_valor WHERE condicion;
Eliminación de datos (DELETE)
- Eliminación de una fila
DELETE FROM tabla WHERE condicion;
- Eliminación de múltiples filas
DELETE FROM tabla WHERE condicion;
Consideraciones de seguridad y respaldo
- Hacer copias de respaldo
- Realizar pruebas en entornos de desarrollo
- Entender el impacto
- Uso de transacciones
- Realizar modificaciones incrementales
- Validar y Verificar Condiciones
- Documentar cambios
- Verificar Permisos y Autorizaciones
- Monitorizar y Realizar Auditorías
- Tener un Plan de Contingencia
- Comunicación y Notificaciones
- Seguimiento de Rendimiento
Operadores de Comparación
| Operador | Utilización |
|---|---|
| < | Menor que |
| > | Mayor que |
| <> | Distinto a |
| ≤ | Menor o igual que |
| >= | Mayor o igual que |
| = | Igual que |
| BETWEEN | Para comparar si un valor se encuentra dentro de un rango especificado. |
| LIKE | Para comparar si una cadena de caracteres coincide con un patrón especificado. |
| IN | Para especificar múltiples valores en una consulta y permite seleccionar filas que coincidan con cualquiera de esos valores. |
Operadores Lógicos
| Operador | Utilización |
|---|---|
| AND | Evalúa dos condiciones y devuelve True si ambas son ciertas. |
| OR | Evalúa dos condiciones y devuelve True si al menos una es cierta. |
Comodines de Consulta
| Operador | Utilización |
|---|---|
| % | Se utiliza para representar cero, uno o varios caracteres. |
| _ | Se utiliza para representar un solo carácter. |