lunes, 8 de diciembre de 2008

DDL

DDL – Lenguaje de Definición de Datos

DDL es usado para crear y administrar las BD y sus objetos, como tablas, procedimientos almacenados, funciones definidas por el usuario, disparadores / triggers, vistas, predeterminados / defaults, índices, reglas y estadísticas. Transact-SQL provee las instrucciones CREATE y DROP para todos estos elementos.

Ejemplo:
Creación de una tabla utilizando la instrucción CREATE TABLE

CREATE TABLE empleado (
CodigoEmp INT IDENTITY PRIMARY KEY,
DNI INT UNIQUE,
NombreEmp NVARCHAR(30) NOT NULL,
Direccion NVARCHAR(50) NOT NULL,
);

Además de las instrucciones CREATE y DROP, se utiliza la instrucción ALTER para modificar las propiedades de algunos de estos objetos (BD, tablas, procedimientos almacenados, funciones definidas por el usuario, triggers y vistas).

Ejemplo:
Adición de una columna utilizando la instrucción ALTER TABLE.
ALTER TABLE empleado ADD fecha_nacimiento DATETIME

En SQL Server, los objetos deben ser únicos sin usuarios. Esto permite a dos usuarios ser dueños de un objeto con el mismo nombre.

Ejemplo:

  1. A través del Analizador de Consultas conectase al SQL Server con el login sa y ejecutar el siguiente código que:


    • crea logins para dos usuarios (login01 y login02 con password en blanco),
    • agrega los usuarios (usuario01 y usuario02) a la BD Northwind para estos logins, y
    • les concede permiso para crear BD.

      USE Northwind
      EXEC sp_addlogin 'login01'
      EXEC sp_addlogin 'login02'
      EXEC sp_adduser 'login01', 'usuario01'
      EXEC sp_adduser 'login02', 'usuario02'
      GRANT CREATE TABLE TO usuario01
      GRANT CREATE TABLE TO usuario02
      GO

  2. A través del Analizador de Consultas abrir otra conexión, pero con el login recientemente creado, login01, y ejecutar el siguiente código:

    USE Northwind
    CREATE TABLE tabla00 (columna00 int)
    GO

  3. A través del Analizador de Consultas abrir una tercera conexión, usando el login recientemente creado, login02, y ejecutar el siguiente código

    USE Northwind
    CREATE TABLE tabla00 (columna00 int)
    GO

  4. Finalmente, comprobar que ambas tablas fueron creadas exitosamente. Ejecutar el siguiente código desde la primera conexión (la de login sa).

    USE Northwind
    PRINT 'usuario01'
    SELECT * FROM usuario01.tabla00
    PRINT 'usuario02'
    SELECT * FROM usuario02.tabla00

Nota:
Tener en cuenta que el nombre de las tablas tiene que ser cualificado con el nombre de su dueño /owner.

Un nombre completamente cualificado posee 4 partes:

Servername.databasename.owner.objectname

Las primeras 3 partes pueden omitirse. Si se especifica sólo el nombre del objeto, SQL Server usa el usuario actual, la BD actual y el servidor local. La primer parte, el servidor local, debe especificarse cuando se trabaja con queries (consultas) distribuidos. La segunda parte, el nombre de la BD, debe especificarse cuando se ejecutan queries que atraviesan varias BD.

Ejemplo:
Instrucción SELECT que es ejecutada en la BD Northwind y que consulta una tabla en la BD Pubs.

USE Northwind
SELECT * FROM Pubs.dbo.Jobs

Finalmente, la tercera parte, el dueño / owner, especifica el dueño del objeto. Es útil en casos en los cuales dos o más usuarios son dueños de un objeto con el mismo nombre (ejemplo anterior).

No hay comentarios: