Comandos SQL Esenciales para Crear y Gestionar Bases de Datos Relacionales
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 11,86 KB
Creación de Bases de Datos
Comando para crear una nueva base de datos:
CREATE DATABASE nombre_base_datos;Creación de Tablas (CREATE TABLE)
Comando para crear una nueva tabla dentro de una base de datos:
CREATE TABLE nombre_tabla (
nombre_columna1 TIPO_DE_DATOS(opciones) [restricciones],
nombre_columna2 TIPO_DE_DATOS(opciones) [restricciones],
...
[restricciones_a_nivel_tabla]
);Tipos de Datos Comunes en SQL
Datos Numéricos
INToINTEGER: Números enteros.FLOAT(escala, precision): Números de punto flotante (aproximados).NUMERIC(escala, precision)oDECIMAL(escala, precision): Números de punto fijo (exactos).
Datos Alfanuméricos
CHAR(longitud): Cadenas de caracteres de longitud fija.VARCHAR(longitud): Cadenas de caracteres de longitud variable (hasta la longitud especificada).TEXT: Texto de longitud variable (límite depende del SGBD, ej. ~65KB en MySQL).LONGTEXT: Texto de longitud variable muy grande (límite depende del SGBD, ej. ~4GB en MySQL).
Fechas y Horas
DATE: Almacena año, mes y día (YYYY-MM-DD).DATETIME: Almacena año, mes, día, horas, minutos y segundos.TIME: Almacena horas, minutos y segundos.
Tipos de Restricciones (Constraints)
Las restricciones definen reglas para los datos en una tabla.
Restricciones a Nivel de Columna
Se definen junto a la columna.
NULL / NOT NULL: Especifica si la columna puede contener valores nulos.DEFAULT valor: Asigna un valor por defecto si no se especifica uno al insertar.PRIMARY KEY: Identificador único para cada fila en la tabla (implicaNOT NULLyUNIQUE).FOREIGN KEY REFERENCES tabla_referenciada(columna_referenciada): Asegura la integridad referencial con otra tabla.UNIQUE: Asegura que todos los valores en la columna sean diferentes.CHECK (condicion): Asegura que los valores cumplan una condición específica.AUTO_INCREMENT(o similar, ej.IDENTITYen SQL Server, secuencias en PostgreSQL/Oracle): Genera automáticamente un valor numérico secuencial (usualmente para claves primarias).
Restricciones a Nivel de Tabla
Se definen al final de la declaración de columnas, permitiendo aplicar restricciones a múltiples columnas.
CONSTRAINT nombre_restriccion TIPO_RESTRICCION (columna1, columna2, ...)
[REFERENCES tabla_referenciada(columna1_ref, columna2_ref, ...)]Tipos comunes definidos a nivel de tabla:
PRIMARY KEY (columna1, [columna2, ...]): Para claves primarias simples o compuestas.FOREIGN KEY (columna_local1, ...) REFERENCES tabla_referenciada(columna_ref1, ...): Para claves foráneas simples o compuestas.UNIQUE (columna1, [columna2, ...]): Para asegurar unicidad en una o varias columnas combinadas.CHECK (condicion): Para condiciones que involucran múltiples columnas.
Ejemplo de Creación de Tabla
-- Crear la base de datos si no existe
CREATE DATABASE IF NOT EXISTS ejemplo;
USE ejemplo;
-- Crear la tabla socios
CREATE TABLE socios (
socio_no INT(4) NOT NULL, -- Se recomienda definir explícitamente NOT NULL para PK
Apellidos VARCHAR(20) UNIQUE,
Telefono CHAR(9) NOT NULL,
Fecha_alta DATE DEFAULT '2012-01-01',
Codigo_postal INT(5) CHECK (Codigo_postal BETWEEN 28000 AND 29000),
CONSTRAINT pk_socio_no PRIMARY KEY (socio_no)
);Restricciones Compuestas (Definidas a Nivel de Tabla)
Claves Primarias Compuestas
Se definen obligatoriamente usando la sintaxis CONSTRAINT a nivel de tabla.
CONSTRAINT pk_socio_apellido PRIMARY KEY (socio_no, apellidos)Claves Foráneas Compuestas
Se definen obligatoriamente usando la sintaxis CONSTRAINT a nivel de tabla.
CONSTRAINT fk_dpto_proyecto FOREIGN KEY (dpto_no, proyecto)
REFERENCES Departamentos (dpto_no, proyecto)Restricciones UNIQUE Compuestas
Se definen obligatoriamente usando la sintaxis CONSTRAINT a nivel de tabla.
CONSTRAINT uk_apellidos_nombre UNIQUE (apellidos, nombre)Tipos de Integridad Referencial (Acciones ON DELETE / ON UPDATE)
Estas acciones se definen en las restricciones FOREIGN KEY para especificar qué sucede en la tabla actual cuando la fila referenciada (en la tabla padre) es eliminada o modificada.
CASCADE: Borra o modifica las filas correspondientes en la tabla actual (hija) que contengan esa clave foránea.SET NULL: Al borrar o modificar la fila referenciada, establece aNULLel valor de la clave foránea en las filas correspondientes de la tabla actual. (La columna FK debe permitirNULL).SET DEFAULT: Al borrar o modificar la fila referenciada, establece el valor por defecto definido para la columna de la clave foránea en las filas correspondientes. (La columna FK debe tener unDEFAULTdefinido).NO ACTION/RESTRICT: Impide la eliminación o modificación de la fila referenciada si existen filas dependientes en la tabla actual. (Comportamiento exacto puede variar ligeramente entre SGBD y diferir en el momento de la comprobación).
Ejemplo de Definición de Acciones Referenciales
CONSTRAINT fk_dpto_no FOREIGN KEY (dpto_no)
REFERENCES Departamentos (dpto_no)
ON DELETE SET DEFAULT -- Asumiendo que hay un DEFAULT definido para dpto_no
ON UPDATE CASCADE;Nota: ON DELETE se aplica a operaciones de borrado en la tabla referenciada. ON UPDATE se aplica a modificaciones de la clave primaria/única en la tabla referenciada.
Modificación de Tablas Existentes (ALTER TABLE)
Permite cambiar la estructura de una tabla ya creada.
ALTER TABLE nombre_tabla accion1, accion2, ...;Tipos de Modificaciones Comunes
- Añadir una columna:
ALTER TABLE socios ADD COLUMN direccion_email VARCHAR(30); - Añadir una restricción:
ALTER TABLE socios ADD CONSTRAINT uq_socio_telf UNIQUE(telefono); - Borrar una columna:
ALTER TABLE socios DROP COLUMN Fecha_alta; -- Ejemplo corrigiendo el nombre de columna - Borrar una restricción:
- Borrar Clave Primaria (Sintaxis varía, ejemplo MySQL):
ALTER TABLE socios DROP PRIMARY KEY; - Borrar otra restricción por nombre:
ALTER TABLE socios DROP CONSTRAINT uq_socio_telf; - Borrar índice/key (MySQL):
ALTER TABLE socios DROP INDEX nombre_indice;
- Borrar Clave Primaria (Sintaxis varía, ejemplo MySQL):
- Modificar tipo o restricciones de una columna (Sintaxis varía, ejemplo MySQL
MODIFY):ALTER TABLE socios MODIFY Apellidos VARCHAR(25) NOT NULL; - Modificar el nombre de una columna (Sintaxis varía, ejemplo MySQL
CHANGE):ALTER TABLE socios CHANGE apellidos apellidos_usuario VARCHAR(25) UNIQUE; - Renombrar una tabla:
ALTER TABLE socios RENAME TO socios_biblioteca;
Eliminación de Tablas (DROP TABLE)
Elimina permanentemente una tabla y todos sus datos.
DROP TABLE nombre_tabla;Ejemplo:
DROP TABLE socios;Manipulación de Datos (DML - Data Manipulation Language)
Insertar Datos (INSERT INTO)
Añade nuevas filas a una tabla.
INSERT INTO nombre_tabla (columna1, columna2, ...)
VALUES (valor1, valor2, ...);Modificar Filas (UPDATE)
Cambia los datos en filas existentes que cumplan una condición.
UPDATE nombre_tabla
SET nombre_columna1 = 'nuevo_valor1', nombre_columna2 = nuevo_valor2
WHERE condicion_para_encontrar_filas;Eliminar Filas (DELETE FROM)
Borra filas de una tabla que cumplan una condición.
DELETE FROM nombre_tabla
WHERE condicion_que_deben_cumplir_las_filas;¡Atención! Si se omite la cláusula WHERE, se eliminarán todas las filas de la tabla.
Ejemplo:
DELETE FROM socios WHERE socio_no = 130;Introducción a la Normalización (Ejemplo Simplificado)
La normalización es un proceso para organizar las columnas y tablas de una base de datos relacional para minimizar la redundancia de datos y mejorar la integridad.
Ejemplo de Pasos Básicos (Conceptual):
- Identificar la Entidad y sus Atributos Iniciales:
Tabla inicial:
Empleados(NSS, nombre, apellidos, puesto, salario, email)(AsumiendoNSScomo clave primaria inicial). - Primera Forma Normal (1FN): Eliminar Atributos Multivaluados.
Si un empleado puede tener múltiples emails,
emailes multivaluado. Se crea una tabla separada para los emails.Tabla Empleados:
Empleados(NSS, nombre, apellidos, puesto, salario)Tabla Emails:
EmailsEmpleados(NSS, email)(Clave primaria compuesta porNSSyemail.NSSes clave foránea aEmpleados). - Segunda Forma Normal (2FN): Eliminar Dependencias Parciales.
Asegurar que todos los atributos no clave dependan completamente de la clave primaria completa. (Este paso es relevante principalmente si la tabla original tuviera clave primaria compuesta).
- Tercera Forma Normal (3FN): Eliminar Dependencias Transitivas.
Si un atributo no clave depende de otro atributo no clave, se crea una tabla separada. Por ejemplo, si el
salariodepende delpuesto, y elpuestodepende delNSS(NSS->puesto->salario), existe una dependencia transitiva.Tabla Empleados:
Empleados(NSS, nombre, apellidos, puesto_id)(puesto_ides clave foránea)Tabla Puestos:
Puestos(puesto_id, nombre_puesto, salario)Tabla Emails:
EmailsEmpleados(NSS, email)
Nota: Este es un ejemplo muy simplificado. La normalización puede involucrar formas normales más altas (BCNF, 4FN, 5FN) según la complejidad de los datos.