SQL
5 minutos Publicado el 15/01/2026Creación y Organización de Bases de Datos en T-SQL
Creación de Bases de Datos: CREATE DATABASE
La sentencia CREATE DATABASE forma parte de las instrucciones DDL (Data Definition Language) de SQL. Su función principal es asignar el espacio físico en disco e inicializar los archivos del motor para dar de alta una nueva base de datos operativa.
Sintaxis
CREATE DATABASE <nombre_base_de_datos>;
Desglose de elementos
CREATE DATABASE: Comando DDL obligatorio que instruye al motor a instanciar la base de datos.<nombre_base_de_datos>: Identificador asignado a la base de datos en el servidor. Debe cumplir con las reglas de identificadores de Transact-SQL: no contener espacios ni caracteres especiales (salvo el guion bajo_) y no coincidir con palabras reservadas del lenguaje.
Ejemplo práctico
CREATE DATABASE EmpresaDB;
-- Salida esperada:
-- Commands completed successfully.
Contexto de Ejecución: Comando USE
La instrucción USE cambia el contexto de la sesión actual del cliente a la base de datos especificada. Es indispensable para asegurar que las operaciones posteriores sobre objetos (tablas, vistas, procedimientos) se ejecuten en la base correcta y no sobre la base por defecto del usuario (como master).
Sintaxis
USE <nombre_base_de_datos>;
Desglose de elementos
USE: Instrucción de control de contexto de sesión.<nombre_base_de_datos>: Nombre de una base de datos existente en la que se situará la conexión activa.
Ejemplo práctico concreto
USE EmpresaDB;
-- Salida esperada:
-- Changed database context to 'EmpresaDB'.
Separación de Lotes: Comando GO
GO no es una instrucción del estándar T-SQL ni se envía al motor relacional; es un comando interpretado directamente por los clientes de Microsoft (como SQL Server Management Studio, Azure Data Studio o la utilidad sqlcmd). Su propósito es delimitar lotes (batches), enviando al servidor las instrucciones acumuladas hasta esa línea para su compilación y ejecución independiente.
Sintaxis canónica
<instrucciones_lote_1>
GO [repeticiones]
<instrucciones_lote_2>
GO
Desglose de elementos
GO: Señal de corte de lote enviada a la herramienta cliente.[repeticiones]: Parámetro entero opcional. Si se especifica un número (por ejemplo,GO 5), el cliente enviará el lote precedente al servidor esa cantidad consecutiva de veces.
Ejemplo práctico
CREATE DATABASE FacturacionDB;
GO
USE FacturacionDB;
GO
-- Salida esperada:
-- Commands completed successfully.
-- Changed database context to 'FacturacionDB'.
Reglas de comportamiento del lote
| Escenario | Comportamiento con GO |
|---|---|
| Dependencia temporal DDL | Impide que el analizador intente usar una base de datos antes de que el motor concluya su creación física. |
| Alcance de variables | Las variables locales (DECLARE @var) solo residen dentro de su lote; al encontrar un GO, se destruyen y pierden visibilidad. |
| Primer enunciado DDL | Instrucciones como CREATE VIEW, CREATE PROCEDURE, CREATE FUNCTION y CREATE TRIGGER exigen ser la primera sentencia de un lote. Sin un GO previo, el script arroja un error de compilación. |
| Aislamiento de errores | Si un lote falla durante la ejecución, el procesamiento de lotes posteriores separados por GO puede continuar, aislando el fallo. |
⚠️ Atención: Si declarás variables de sesión o tablas temporales en memoria dentro de un bloque y colocás un
GOintermedio, perderás el acceso a esos datos locales en las instrucciones siguientes.
Esquemas: CREATE SCHEMA
Un esquema (schema) es un contenedor lógico y de seguridad dentro de una base de datos que agrupa objetos relacionados (tablas, vistas, procedimientos). Permite organizar los módulos del sistema, simplificar la administración de permisos a nivel grupal y evitar colisiones de nombres de tablas.
Sintaxis
CREATE SCHEMA <nombre_esquema> [AUTHORIZATION <nombre_propietario>];
Desglose de elementos
CREATE SCHEMA: Enunciado DDL que crea el espacio de nombres en la base de datos actual.<nombre_esquema>: Identificador del nuevo esquema.AUTHORIZATION <nombre_propietario>: Cláusula opcional que asigna un usuario o rol de base de datos específico como propietario del esquema. Si se omite, el propietario es el usuario que ejecuta la instrucción.
Ejemplo práctico
USE EmpresaDB;
GO
CREATE SCHEMA Ventas;
GO
CREATE TABLE Ventas.Facturas (
FacturaID INT PRIMARY KEY IDENTITY(1,1),
Fecha DATETIME DEFAULT GETDATE(),
Total DECIMAL(10,2) NOT NULL
);
GO
-- Salida esperada:
-- Commands completed successfully.
💡 Tip: Si no especificás un esquema al crear o consultar un objeto (por ejemplo,
CREATE TABLE Clientes), el motor utilizará por defecto el esquema configurado para tu usuario (generalmentedbo). Explicitá siempre el esquema (Ventas.Clientes,dbo.Clientes) para optimizar la resolución de nombres del optimizador de consultas y evitar ambigüedades.