¿Cómo crear Schema en SQL Server?

Resumen: en este tutorial, aprenderás a crear un nuevo esquema en una base de datos SQL existente con CREATE SCHEMA
.
¿Qué es un esquema de base de datps en SQL Server?
Un esquema es una colección de objetos de base de datos que incluye tablas, vistas, procedimientos almacenados, índices, etc. Un esquema está asociado con un nombre de usuario que se conoce como propietario del esquema, que es el propietario de los objetos de base de datos relacionados lógicamente.
Un esquema siempre pertenece a una base de datos. Por otro lado, una base de datos puede tener uno o varios esquemas. Por ejemplo, en nuestra base de datos de muestra BikeStores, tenemos dos esquemas: sales
(ventas) y production
(producción). Un objeto dentro de un esquema se califica usando el formato schema_name.object_name
como sales.orders
. Dos tablas en dos esquemas pueden compartir el mismo nombre, por lo que puede tener hr.employees
y sales.employees
.
Esquemas por default en SQL Server
SQL Server nos proporciona algunos esquemas por default que tienen los mismos nombres que los usuarios y roles de la base de datos integrados, por ejemplo: dbo
, guest
, sys
e INFORMATION_SCHEMA
.
Ten en cuenta que SQL Server reserva los esquemas sys e INFORMATION_SCHEMA
para los objetos del sistema, por lo tanto, no puedes crear ni eliminar ningún objeto en estos esquemas.
El esquema por default para una base de datos recién creada es dbo
, que es propiedad de la cuenta de usuario dbo
. De manera predeterminada, cuando creas un nuevo usuario con el comando CREATE USER
, el usuario tomará dbo
como su esquema predeterminado.
Cómo funciona CREATE SCHEMA de SQL Server
La declaración CREATE SCHEMA
te permite crear un nuevo esquema en la base de datos actual.
A continuación se ilustra la versión simplificada de la sentencia CREATE SCHEMA
:
CREATE SCHEMA schema_name
[AUTHORIZATION owner_name]
En la sintaxis anterior se puede observer los iguiente:
- Primero, se especifica el nombre del esquema que deseas crear en con la cláusula
CREATE SCHEMA
. - En segundo lugar, se especifica el propietario del esquema después de la palabra clave
AUTHORIZATION
.
Ejemplos del uso de CREATE SCHEMA de SQL Server
El siguiente ejemplo muestra cómo usar la declaración CREATE SCHEMA
para crear el esquema de customer_services:
CREATE SCHEMA customer_services;
GO
Ten en cuenta que el comando GO
le indica a SQL Server Management Studio
que envíe las instrucciones SQL hasta la instrucción GO
al servidor para que se ejecute.
Una vez que se ejecute la instrucción, puedes encontrar el esquema recién creado dentro de la base de datos, en la opciñon Seguridad > Esquemas o en ingles Security > Schemas.
Si deseas enumerar todos los esquemas en la base de datos actual, puedes consultar esquemas desde sys.schemas
como se muestra en la siguiente consulta:
SELECT
s.name AS schema_name,
u.name AS schema_owner
FROM
sys.schemas s
INNER JOIN sys.sysusers u ON u.uid = s.principal_id
ORDER BY
s.name;
Resultado:
schema_name | schema_owner |
---|---|
customer_services | dbo |
db_accessadmin | db_accessadmin |
db_backupoperator | db_backupoperator |
db_datareader | db_datareader |
db_datawriter | db_datawriter |
db_ddladmin | db_ddladmin |
db_denydatareader | db_denydatareader |
db_denydatawriter | db_denydatawriter |
db_owner | db_owner |
db_securityadmin | db_securityadmin |
dbo | dbo |
guest | guest |
hr | dbo |
INFORMATION_SCHEMA | INFORMATION_SCHEMA |
pm | dbo |
procurement | dbo |
production | dbo |
sales | dbo |
sys | sys |
Después de tener el esquema customer_services
, puedes crear objetos para el esquema. Por ejemplo, la siguiente instrucción crea una nueva tabla denominada jobs
en el esquema customer_services
:
CREATE TABLE customer_services.jobs(
job_id INT PRIMARY KEY IDENTITY,
customer_id INT NOT NULL,
description VARCHAR(200),
created_at DATETIME2 NOT NULL
);
En este tutorial, aprendiste a usar la clausula CREATE SCHEMA
de SQL Server para crear un nuevo esquema en una base de datos existente.