miércoles, 29 de abril de 2020

SCHEMAS (Esquemas) en SQL SERVER

Buenas noches queridos lectores, el día de hoy veremos como trabajar con esquemas en SQL SERVER lo que se conoce como SCHEMA. Vamos a empezar definiendo lo que son esquemas, y después pasaremos a la práctica.

Un esquema es un espacio de nombres de la base de datos, que nos permitirá agrupar los objetos, ya sea por equipo de desarrollo o para poder gestionar mejor sus permisos, no es tema de hoy lo permisos a los esquemas, solamente veremos para que sirven y como crearlos.

Cuando creamos una objeto (Tabla, procedimiento, función, etc.), y no le especificamos un esquema, éste automáticamente le asignará el esquema dbo, esto, debido a que el esquema dbo, es el esquema predeterminado, si quisiéramos crear un objeto en un esquema determinado, tendríamos que especificarlo.

Pero vamos a pasar a la práctica que es como aprendemos y lo que nos gusta.

Primero, vamos a echar un ojo a los esquemas de sistema que están predeterminados y para ello utilizaremos la vista de sistema sys.schemas de la siguiente manera:

use pruebas
go
select * from sys.schemas

El resultado de esa consulta será mas o menos lo que sigue:


Como podemos observar, ya existen algunos schemas predeterminados, que nos ayudarán a gestionar los permisos después, y como también vemos, el primer esquema es el dbo, que como les comentaba es el predeterminado.

Para poder ejemplificar lo dicho, vamos a crear una tabla cualquiera, no especificaremos el esquema y podremos apreciar que se creará en el esquema dbo.

Ejemplo 1: Crear una tabla llamada Pruebas en el esquema dbo

use pruebas
go

create table empleados
(id int primary key identity,
RFC varchar(15),
nombre varchar(100),
apellido varchar(100))

Ya tenemos nuestra tabla, ahora realizaremos una consulta para averiguar las tablas que tienen los esquemas y para eso utilizaremos varias vistas de sistema por ejemplo sys.object y la mencionada sys.schemas:

use pruebas
go

select sc.name, o.name from sys.objects o
join sys.schemas sc on o.schema_id = sc.schema_id
where o.type = 'U'

Como podemos apreciar en la consulta, estamos uniendo mediante JOIN las vistas sys.object y sys.schemas y queremos que nos muestre únicamente las tablas de usuario por eso en la sentencia WHERE utilizamos el type = 'U'. El resultado queda como sigue:


Como muestra el resultado de la consulta, tenemos únicamente una tabla (la que acabamos de crear) en el esquema dbo

Ahora lo que seguirá, será crear el Schema y para eso vamos a utilizar la sentencia CREATE SCHEMA de la siguiente manera:

Ejemplo 2: Crear un esquema llamado EJEMPLOS


use pruebas
go
CREATE SCHEMA EJEMPLOS


Mediante esta sentencia, estamos creando un esquema ya sea para agrupar los objetos o darles permiso posteriormente. Ahora vamos a corroborar que existen más esquemas y repetiremos la consulta:

use pruebas
go
select * from sys.schemas


Como ven, el esquema se ha creado correctamente, pero ¿como creamos objetos en el nuevo esquema?. Pues será muy sencillo, basta con indicarle al nombre del objeto, el esquema, seguido del nombre, como se muestra en el siguiente ejemplo:

Ejemplo 3: Crear una tabla llama Pruebas en el esquema Ejemplos


use PRUEBAS
GO
CREATE TABLE EJEMPLOS.Tabla1
(id int identity,
campo1 varchar(max))


Ahora realizaremos nuevamente la consulta para revisar los objetos y el esquema que tienen:

use pruebas
go

select sc.name, o.name from sys.objects o
join sys.schemas sc on o.schema_id = sc.schema_id
where o.type = 'U'


Como vemos, ya tenemos dos tablas en diferente esquema, para poder llenar la tabla, sería el mismo procedimiento, observemos el siguiente ejemplo.

Ejemplo 4: Llenar la tabla Tabla1, mediante el comando INSERT

use PRUEBAS
go
insert into ejemplos.tabla1 (campo1) values ('Ejercicio SCHEMAS')
go
select * from ejemplos.tabla1

Insertamos el registro y damos un select para comprobar que se ingresó correctamente, como podemos observar, tenemos que anteponer el nombre del schema seguido de un punto y el nombre del objeto.


Hasta aquí el post, espero haya sido de su agrado y de utilidad, cualquier cosa estoy a la órden, no duden en preguntar. Espero compartan, comenten o le den clic a algún anuncio patrocinado.

Muchas Gracias

No hay comentarios.:

Publicar un comentario

Auditoria en SQL SERVER

 Buenas tardes queridos lectores, el día de hoy les traigo la manera de realizar una auditoria en SQL SERVER, imaginemos que hay datos que s...