lunes, 8 de diciembre de 2008

DML

DML – Lenguaje de Manipulación de Datos

El Lenguaje de Manipulación de Datos (DML) es el componente de Transact-SQL más comúnmente utilizado por los desarrolladores. Básicamente es utilizado para recuperar, insertar, modificar y borrar información de las BD:


  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Por consiguiente, cualquier aplicación o cliente que quiera interactuar con SQL Server para recuperar, insertar, modificar o eliminar información, tendrá que hacerlo a través de estas operaciones que comprenden a DML.

Ejemplo:
Uso de DML para interactuar con las BD.

USE Northwind
INSERT INTO Customers (customerid, companyname, contactname, contacttitle)
VALUES ('ACME1','ACME Publishing','Fernando','DBA')

INSERT INTO Customers (customerid, contactname)
VALUES ('ACME2','Juan Paz','DBA')

INSERT INTO Customers (customerid, contactname)
VALUES ('ACME2','Juan Paz')

UPDATE Customers
SET contactname = 'Fernando Gutierrez' WHERE Customerid = 'ACME1'

SELECT customerid, companyname
FROM Customers
WHERE customerid = 'ACME1' DELETE Customers WHERE customerid='ACME1'

Actividad Interactiva:

Algunas de las sentencias darán error. Identificar cuáles y definir la causa del error.

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).

ELEMENTOS DE TRANSACT-SQL

SQL (Structured Query Language) es el lenguaje usado para acceder e interactuar con una BD Relacional. Fue creado por IBM en 1970 y estandarizado por el ANSI (American Nacional Standards Institute) en 1989. ANSI saca una nueva versión del estándar en 1992, conocida como SQL-92 o SQL2.

Todos los sistemas administradores relacionales, incluyendo SQL Server, además de cumplir con los estándares ANSI, proveen extensiones (funcionalidades adicionales) del lenguaje SQL. Si bien con estas extensiones se pierde portabilidad, depende del programador acatar o no con los estándares ANSI.




Transact–SQL es la implementación SQL Server del estándar ANSI SQL-92. Transact-SQL posee extensiones que aumentan las capacidades del lenguaje. Por ejemplo, Transact-SQL añade elementos procedimentales de control de flujo, como IF … ELSE, WHILE, BREAK y CONTINUE.

A diferencia de los lenguajes procedimentales, Transact-SQL es un lenguaje de BD orientado a conjuntos (procesa de a grupos de datos). Como tal, fue diseñada para trabajar eficientemente con un conjunto de operaciones, en lugar de operaciones fila por fila. Es decir, al usar Transact-SQL se especifica qué hacer con un conjunto completo de datos, en vez de indicar qué hacer con cada pieza de dato, o en la terminología de BD, cada fila.

Elementos:

  • DDL – Lenguaje de Definición de Datos
  • DML – Lenguaje de Manipulación de Datos
  • DCL – Lenguaje de Control de Datos
  • Extensiones Transact-SQL (variables, operadores, funciones, instrucciones de control de flujo y comentarios)