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 SEQUENCE
s (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 aON DELETE
(CASCADE
,SET NULL
,RESTRICT
/NO ACTION
).