Fundamentos de SQL: Definición de Datos, Tipos y Conceptos Esenciales

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 9,54 KB

Introducción a SQL para Definición de Datos

SQL (Structured Query Language): A diferencia de muchos lenguajes de descripción de datos, SQL utiliza una acción de verbos imperativos cuyo efecto es modificar el esquema de la base de datos, añadiendo, cambiando o eliminando las definiciones de tablas y otros objetos.

Sentencias DDL (Lenguaje de Definición de Datos)

Sentencia CREATE

La sentencia CREATE sirve para crear una nueva base de datos, tabla, índice o procedimiento almacenado. Una sentencia CREATE en SQL crea un objeto dentro de un Sistema de Gestión de Bases de Datos Relacionales (RDBMS).

Sentencia CREATE TABLE

Un comando CREATE muy común es el CREATE TABLE. El uso típico es:

CREATE TABLE nombre_de_la_tabla (
  definiciones_de_columna
) [parámetros_de_la_tabla];

Sentencia DROP

La sentencia DROP sirve para eliminar objetos dentro del Sistema de Gestión de Bases de Datos (SGBD), como por ejemplo bases de datos, tablas o índices. Su sintaxis general es:

DROP tipo_objeto nombre_objeto;

Ejemplos:

DROP TABLE myTable;
DROP SEQUENCE mySequence;
DROP INDEX myIndex;

Sentencia ALTER

La sentencia ALTER TABLE se utiliza para agregar, borrar o modificar columnas en una tabla existente.

Para añadir una columna:

ALTER TABLE nombre_tabla
ADD nombre_columna tipo_datos;

Tipos de Datos en SQL

Tipo Numérico

Ejemplo de definición y uso de un tipo numérico:

-- Crear tabla con columna numérica (precisión 10, 5 decimales)
CREATE TABLE dbo.MyTable (
  MyNumericColumn NUMERIC(10, 5)
);
GO

-- Insertar un valor
INSERT INTO dbo.MyTable (MyNumericColumn) VALUES (123.45678);
GO

-- Seleccionar el valor
SELECT MyNumericColumn
FROM dbo.MyTable;
GO

Tipo de Fecha/Hora

Ejemplo de manejo de tipos de fecha y hora:

DECLARE @date DATE = '2025-12-10';
DECLARE @datetime DATETIME = @date;

SELECT @date AS '@date', @datetime AS '@datetime';

Tipo Alfanumérico (Cadenas de Caracteres)

Ejemplo de declaración de variables de tipo cadena:

DECLARE @myVariable AS VARCHAR(10) = 'abc';
DECLARE @myNextVariable AS CHAR(3) = 'abc';

Herramientas de Gestión de Bases de Datos

Las herramientas gráficas ayudan al informático a gestionar los componentes de una base de datos. Sin embargo, un buen administrador debe conocer los comandos necesarios para realizar las tareas administrativas. Entre las herramientas gráficas que dispone el mercado, se encuentran:

  • PhpMyAdmin: Para MySQL y MariaDB.
  • Oracle Enterprise Manager / SQL Developer: Para Oracle Database.
  • SQL Server Management Studio (SSMS): Para Microsoft SQL Server.
  • pgAdmin: Para PostgreSQL.

Vistas del Diccionario de Datos

Las vistas del diccionario de datos que comienzan con el prefijo DBA_ (en Oracle, por ejemplo) son generalmente accesibles solo por los administradores de bases de datos (DBA) y muestran información sobre todos los objetos de la base de datos.

Ejemplos Prácticos de Sentencias SQL

Ejemplo 1: Creación de Tabla alumnos

CREATE TABLE alumnos (
  NombreAlumno VARCHAR(40),
  Edad NUMERIC(3),
  DNI VARCHAR(10) PRIMARY KEY, -- Se asume DNI como clave primaria para el ejemplo de FK
  Direccion VARCHAR(255),
  Pais VARCHAR(40)
);

Ejemplo 2: Modificación de Tabla alumnos

Añadir una columna de tipo fecha y hora:

ALTER TABLE alumnos
ADD COLUMN FechaRegistro DATETIME;

Ejemplo 3: Creación y Modificación de Tabla notas con Clave Foránea

Primero, creamos la tabla notas, incluyendo una columna para la clave foránea:

CREATE TABLE notas (
  Nombre VARCHAR(40),
  Apellido VARCHAR(40),
  Nota VARCHAR(2), -- Considerar usar un tipo numérico para las notas
  Asignatura VARCHAR(40),
  Clase VARCHAR(2),
  DNI_Alumno VARCHAR(10) -- Columna para la clave foránea
);

Luego, añadimos la restricción de clave foránea (Foreign Key) que referencia a la tabla alumnos:

ALTER TABLE notas
ADD CONSTRAINT fk_alumno_dni
FOREIGN KEY (DNI_Alumno) REFERENCES alumnos(DNI);

Tipos de Datos Específicos por SGBD

  • Oracle: Utiliza tipos como VARCHAR2 (cadenas de longitud variable), NUMBER (números exactos), DATE.
  • MySQL: Utiliza tipos como VARCHAR (cadenas de longitud variable), INT (enteros), DECIMAL (números exactos), DATETIME.
  • SQL Server: Utiliza tipos como VARCHAR, NVARCHAR (Unicode), INT, DECIMAL, DATETIME2.
  • PostgreSQL: Utiliza tipos como VARCHAR, TEXT, INTEGER, NUMERIC, TIMESTAMP.

Nota: Aunque hay estándares SQL, cada SGBD tiene sus propias extensiones y nombres de tipos de datos.

Conceptos Clave en Bases de Datos

Engine (Motor de Almacenamiento)

El Motor de Almacenamiento (Database Engine) es el componente principal del SGBD responsable de almacenar, procesar y proteger los datos. Proporciona acceso controlado y procesamiento de transacciones para gestionar los datos de manera eficiente y segura. Ejemplos: InnoDB, MyISAM (MySQL); Oracle Database Engine; SQL Server Database Engine.

AUTO_INCREMENT / IDENTITY / SEQUENCE

El atributo AUTO_INCREMENT (MySQL), IDENTITY (SQL Server) o el uso de SEQUENCEs (Oracle, PostgreSQL) se utiliza comúnmente para generar automáticamente un valor numérico secuencial único, a menudo empleado como clave primaria (PRIMARY KEY) de una tabla.

Collation (Intercalación)

La intercalación (Collation) define las reglas que utiliza el SGBD para comparar y ordenar cadenas de caracteres. Determina aspectos como la sensibilidad a mayúsculas/minúsculas, acentos y el orden de los caracteres específicos del lenguaje.

Character Set (Conjunto de Caracteres)

El conjunto de caracteres (Character Set) define qué caracteres pueden ser almacenados en un tipo de dato de cadena y cómo se codifican internamente (por ejemplo, UTF-8, Latin1). Es fundamental para el correcto almacenamiento y representación de texto en diferentes idiomas.

Diferencia entre VARCHAR y CHAR

La diferencia principal está en cómo almacenan los datos:

  • CHAR(n): Almacena cadenas de caracteres de longitud fija n. Si la cadena insertada es más corta que n, se rellena con espacios hasta completar la longitud.
  • VARCHAR(n): Almacena cadenas de caracteres de longitud variable, hasta un máximo de n caracteres. Solo ocupa el espacio de los caracteres realmente almacenados más una pequeña sobrecarga para guardar la longitud. Es generalmente más flexible y eficiente en espacio si la longitud de los datos varía significativamente.

Tipos de Datos Numéricos: Enteros vs. Decimales

  • Tipos Enteros (INT, SMALLINT, BIGINT, etc.): Almacenan números enteros (sin parte decimal).
  • Tipos de Punto Flotante (FLOAT, DOUBLE, REAL): Almacenan números con decimales de forma aproximada. Son útiles para cálculos científicos pero pueden tener problemas de precisión.
  • Tipos Decimales Exactos (DECIMAL, NUMERIC, NUMBER): Almacenan números con decimales de forma exacta, con una precisión y escala definidas. Son ideales para valores monetarios y cálculos donde la exactitud es crucial.

Cláusulas de Integridad Referencial

Estas cláusulas se definen al crear claves foráneas (FOREIGN KEY) para mantener la consistencia entre tablas relacionadas:

  • REFERENCES: Parte fundamental de la definición de una clave foránea. Indica la tabla y columna(s) a las que se hace referencia (la tabla padre o referenciada).
    Ejemplo: FOREIGN KEY (DNI_Alumno) REFERENCES alumnos(DNI)
  • ON DELETE: Especifica qué acción realizar en la fila de la tabla hija (la tabla actual) cuando la fila referenciada en la tabla padre es eliminada. Opciones comunes: CASCADE (eliminar también la fila hija), SET NULL (poner a NULL la clave foránea hija), RESTRICT/NO ACTION (impedir la eliminación si hay filas hijas).
  • ON UPDATE: Especifica qué acción realizar en la fila de la tabla hija cuando el valor de la clave referenciada en la tabla padre es actualizado. Opciones similares a ON DELETE (CASCADE, SET NULL, RESTRICT/NO ACTION).

Entradas relacionadas: