sábado, 2 de julio de 2016

LENGUAJE TRANSACT SQL

LENGUAJE TRANSACT SQL
DEFINICION
Transact-SQL también es conocido por sus abreviatura como T-SQL, como definición es una extensión del SQL Microsoft junto son Sybase. Lo que conocemos a SQL como el lenguaje de búsqueda estructurado lo que viene hacer T-SQL es expander los estándares de SQL no incluyendo programación procedural, como algunas otras funciones para matemáticas, fechas, etc.  
T-SQL es un lenguaje sumamente potente que nos ayuda a definir tareas mientras trabajamos con bases de datos. Debido a que este lenguaje tiene algunas restricciones en el propio lenguaje casi siempre lo vemos utilizado en la creación de los procedimientos almacenados, funciones de usuario y también en los triggers.  Podemos hacer uso de T-SQL en lenguajes de programación como puede ser Visual Basic. NET, C, Java. También lo podemos ejecutar en un entorno SQL Server Management Studio. Se dice que T-SQL es un lenguaje muy parecido al lenguaje hablado.
COMANDOS
La escritura y ejecución de instrucciones de Transact-SQL es una de las formas en que se puede realizar una consulta en SQL Server. Cuando escriba y ejecute instrucciones de Transact-SQL, utilizará:
Ø Instrucciones del Lenguaje de definición de datos (DDL), que se utilizan para crear objetos en la base de datos.
Ø Instrucciones del Lenguaje de control de datos (DCL), que se utilizan para determinar quién puede ver o modificar los datos.
Ø Instrucciones del Lenguaje de tratamiento de datos (DML), que se utilizan para consultar y modificar los datos.

Instrucciones del Lenguaje de definición de datos (DDL)
Las instrucciones de DDL definen la base de datos mediante la creación de bases de datos, tablas y tipos de datos definidos por el usuario. Las instrucciones de DDL se utilizan también para administrar los objetos de la base de datos. Algunas instrucciones de DDL son:
􀂄 CREATE nombreObjeto
􀂄 ALTER nombreObjeto
􀂄 DROP nombreObjeto

De forma predeterminada, sólo los miembros de la función sysadmin, dbcreator, db_owner o db_ddladmin pueden ejecutar instrucciones de DDL. En general, se recomienda no utilizar otras cuentas para crear objetos de base de datos. Si distintos usuarios crean sus propios objetos en una base de datos, se requiere que el propietario de cada objeto conceda los permisos adecuados a cada usuario de esos objetos. Esto genera trabajo administrativo y debe evitarse. Restringir los permisos de instrucciones a esas funciones también evita los problemas de propiedad de los objetos que se pueden producir cuando el propietario de un objeto se ha quitado de una base de datos o cuando el propietario de un procedimiento almacenado o vista no es propietario de las tablas subyacentes.

Ejemplo

La secuencia de comandos siguiente crea una tabla llamada TbProducto en la base de datos BdTailor. Incluye las columnas CodProducto, NombreProducto, Precio, existencia, FechaIngreso, idMarca y idCategoria


USE BdTailor

Ø  Crear Una Tabla

create table TbProducto
(
CodProducto char(6) NOT NULL,
NombreProducto Varchar(30) NOT NULL,
Precio money NOT NULL,
existencia int NOT NULL,
FechaIngreso datetime NOT NULL,
idMarca char(4) NOT NULL,
idCategoria char(3) NOT NULL
)
Go

Ø  Modificar Una Tabla

alter table TbProducto ADD constraint PK_Producto PRIMARY KEY(CodProducto)
go

Ø  Eliminar Una Tabla

Drop table TbProducto

Instrucciones del Lenguaje de Manipulación de datos (DML)

Las instrucciones de DML funcionan con los datos de la base de datos. Mediante estas instrucciones puede cambiarlos o recuperar información. Las instrucciones de DML incluyen:
􀂄 SELECT
􀂄 INSERT
􀂄 UPDATE
􀂄 DELETE

De forma predeterminada, sólo los miembros de las funciones sysadmin, dbcreator, db_owner o db_datawriter pueden ejecutar instrucciones de DML.

Ejemplo

En este ejemplo se recupera el identificador de categoría, nombre de producto, identificador de producto y precio por unidad de los productos de la base de datos BdTailor.
Use BdTailor

v Select codProducto,NombreProducto,Precio,existencia from TbProducto
            Go

v  Insert Into TbMarca(CodMarca,NombreMarca) values('M001','SAMSUNG')
Go

v  Update  TbMarca set NombreMarca= 'LG' where CodMarca='M001'
Go

v  Delete TbMarca  where CodMarca='M001'
Go

Instrucciones del Lenguaje de control de datos (DCL)


Las instrucciones de DCL se utilizan para cambiar los permisos asociados con un usuario o función de la base de datos. En la tabla siguiente se describen las instrucciones de DCL.
Instrucción
Descripción
GRANT
Crea una entrada en el sistema de seguridad que permite a un usuario trabajar con datos o ejecutar ciertas instrucciones de Transact-SQL.
DENY
Crea una entrada en el sistema de seguridad que deniega un permiso de una cuenta de seguridad e impide que el usuario, grupo o función herede el permiso a través de su pertenencia a grupos o funciones.
REVOKE
Quita un permiso concedido o denegado previamente.

De forma predeterminada, sólo los miembros de la función sysadmin, dbcreator, db_owner o db_securityadmin pueden ejecutar instrucciones DCL.

Ejemplo

En este ejemplo se concede a la función public el permiso para consultar la tabla TbProducto
USE BdTailor
GRANT SELECT ON TbProducto TO public
GO

1) Autorizaciones
Para autorizar, el SQL dispone de la siguiente sentencia:
Donde tenemos que:
a) privilegios puede ser:
• ALL PRIVILEGES: todos los privilegios sobre el objeto especificado.
• USAGE: utilización del objeto especificado; en este caso el dominio.
• SELECT: consultas.
• INSERT [(columnas)]: inserciones. Se puede concretar de qué columnas.
• UPDATE [(columnas)]: modificaciones. Se puede concretar de qué columnas.
• DELETE: borrados.
• REFERENCES [(columna)]: referencia del objeto en restricciones de integridad.
Se puede concretar de qué columnas.
b) Objeto debe ser:
• DOMAIN: dominio
SET TRANSACTION READ WRITE;
UPDATE empleados SET sueldo = sueldo – 1000 WHERE num_proyec = 3;
UPDATE empleados SET sueldo = sueldo + 1000 WHERE num_proyec = 1;
COMMIT;
GRANT privilegios ON objeto TO usuarios
[WITH GRANT OPTION];
© FUOC • P06/M2109/02149 50 El lenguaje SQL
• TABLE: tabla.
• Vista.
c) Usuarios puede ser todo el mundo: PUBLIC, o bien una lista de los identificadores de los usuarios que queremos autorizar.
d) La opción WITH GRANT OPTION permite que el usuario que autoricemos pueda, a su vez, autorizar a otros usuarios a acceder al objeto con los mismos privilegios con los que ha sido autorizado.
2) Desautorizaciones
Para desautorizar, el SQL dispone de la siguiente sentencia:

Donde tenemos que:
a) privilegios, objeto y usuarios son los mismos que para la sentencia GRANT.
b) La opción GRANT OPTION FOR se utilizaría en el caso de que quisiéramos eliminar el derecho a autorizar (WITH GRANT OPTION).
c) Si un usuario al que hemos autorizado ha autorizado a su vez a otros, que al mismo tiempo pueden haber hecho más autorizaciones, la opción CASCADE hace que queden desautorizados todos a la vez.
d) La opción RESTRICT no nos permite desautorizar a un usuario si éste ha autorizado a otros.

INSTRUCCIONES DEL LENGUAJE DE CONTROL DE FLUJO (CFL)
Disponemos de diferentes elementos para el control de flujo, como pueden ser RETURN, IF... ELSE, WHILE, BREAK, CONTINUE, GO TO, EXECUTE, etc. En los siguientes apartados aprenderemos cómo utilizarlos.
IF… ELSE
Proporciona una ejecución condicional, permite ejecutar o no ciertas instrucciones dependiendo de si se cumple o no una determinada condición.

Si la condición se cumple (da como resultado TRUE) se ejecuta la instrucción SQL o bloque de instrucciones que aparecen a continuación de la condición, si la condición no se cumple se ejecutan las sentencias que aparecen después de la palabra ELSE. El bloque ELSE es opcional.
Ejemplo: Si nos queremos guardar en una consulta todos los ejemplos para probarlos en cualquier momento, es conveniente antes de los CREATE PROCEDURE colocar un DROP PROCEDURE para que la instrucción CREATE no dé error si el procedimiento ya existe, pero la primera vez la instrucción DROP PROC nos dará error porque el procedimiento todavía no existe, así que lo mejor es ejecutar el DROP sólo si el procedimiento existe, utilizando la función object_id(‘nombre_de_objeto’,’tipo de objeto’) que nos devuelve el id del objeto y NULL si el objeto no existe.

Otro ejemplo. Ahora queremos el procedimiento y si no existe se mandará un mensaje "el procedimiento no existe":

Cuando queremos definir un bloque de instrucciones utilizamos los delimitadores BEGIN..END Se pueden anidar varias sentencias IF hasta el límite que permita la memoria.
WHILE - BREAK – CONTINUE
Esta instrucción permite definir un bucle que repite una sentencia o bloque de sentencias mientras se cumpla una determinada condición.
Podemos anidar bucles, colocar un bucle WHILE dentro de otro.
BREAK Produce la salida del bucle WHILE más interno. La instrucción BREAK interna sale al siguiente bucle más externo. Todas las instrucciones que se encuentren después del final del bucle interno se ejecutan primero y después se reinicia el siguiente bucle más externo.
CONTINUE Hace que se reinicie el bucle WHILE y omite las instrucciones que haya después de la palabra clave CONTINUE.
Por ejemplo, tenemos los siguientes bucles anidados:

 
 


LENGUAJE DE CONTROL DE TRANSACCIONES (TCL)

COMMIT: Guarda el trabajo realizado
ROLLBACK: Restaurar la base de datos a la original, hasta el último COMMIT
Transacciones implicitas y explicitas
    Para agrupar varias sentencias Transact SQL en una única transacción, disponemos de los siguientes métodos:
· Transacciones explícitas
Cada transacción se inicia explícitamente con la instrucción BEGIN TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.
· Transacciones implícitas
Se inicia automáticamente una nueva transacción cuando se ejecuta una instrucción que realiza  modificaciones en los datos, pero cada transacción se completa explícitamente con una  instrucción COMMIT o ROLLBACK.
    Para activar-desactivar el modo de transacciones implícitas debemos ejecutar la siguiente Instrucción.

 
 
                           

                                           
 
                                                 
 
 
                                          
Resumen
En este trabajo hemos presentado los comandos más utilizadas del lenguaje Transact sql.
Como ya hemos comentado el Lenguaje Transact SQL es un lenguaje  sumamente potente que nos ayuda a definir tareas mientras trabajamos con base de datos. Debido a que este lenguaje tiene algunas restricciones en el propio lenguaje casi siempre lo vemos utilizado en la creación de los procedimientos almacenados, funciones de usuario y también en los triggers
Recordemos cómo será la creación de una base de datos con SQL:
1)      En primer lugar, tendremos que dar nombre a la base de datos, con la sentencia CREATE DATABASE, si la hay, o con CREATE SCHEMA.
2)      A continuación definiremos las tablas, los dominios, las aserciones y las vistas que formarán nuestra base de datos.
3)      Una vez definidas las tablas, que estarán completamente vacías, se deberán llenar con la sentencia INSERT INTO.
Cuando la base de datos tenga un conjunto de filas, la podremos manipular, ya sea actualizando filas o bien haciendo consultas.
Además, podemos usar todas las sentencias de control que hemos explicado.

Summary
In this paper we have presented the most commonly used language of Transact-SQL commands.
As mentioned the Transact SQL language is a very powerful language that helps us define tasks while working with database. Because this language has some restrictions on the language itself we see almost always used in the creation of stored procedures, user roles and also in triggers
Remember how will the creation of a database with SQL:
1) First, we have to give a name to the database with the CREATE DATABASE, if any, or CREATE SCHEMA.
2) Then define the tables, domains, assertions and views that form our database.
3) Once you have defined tables, which will be completely empty, they should be filled with the INSERT INTO statement.
When the database has a set of rows, we can manipulate, either updating rows or doing consultations.
In addition, we can use all control statements that we have explained.

Recomendaciones
Al momento de Utilizar el Lenguaje Transact Sql hay que tener algunas consideraciones:
  • No utilizar un SELECT *, y esto más que buena práctica debería ser regla
  • No use la cláusula into nombre de tabla (“SELECT… INTO”). Esto bloqueará mientras se ejecuta la consulta las tablas del sistema. En su lugar cree primero las tablas y luego re-escribe la sentencia como INSERT INTO tabla_name SELECT.
  • Si usa el operador UNION y existe la seguridad de que ambos select NO tienen registros duplicados, entonces es mejor usar UNION ALL, para evitar que implícitamente se haga uso del operador DISTINCT el cual puede requerir que se almacenen todos los datos de salida en una tabla temporal para que luego se reordenen y se filtren los datos duplicados, lo cual aumenta considerablemente el costo de la consulta.
  • Es recomendable usar joins a un subquery.
  • Promover el uso de EXISTS y NOT EXISTS, en lugar de IN y NOT IN.
Conclusiones
El lenguaje Transact sql nos Permite:
§  Definir bloques de instrucciones SQL que se tratan como unidades de ejecución.
§  Realizar ejecuciones Condicionales.
§  Realizar ejecuciones iterativas o repetitivas.
§  Garantizar el tratamiento modular con la declaración de variables locales y el uso de procedimientos almacenados.
§  Manipular tupla a tupla el resultado de una consulta.
Apreciación del Equipo
Transact-SQL es fundamental para trabajar con SQL Server. Ya que todas las aplicaciones que se comunican con SQL Server lo hacen enviando instrucciones Transact-SQL al servidor, independientemente de la interfaz de usuario de la aplicación.

Glosario de términos
SYBASE: fue una compañía dedicada al desarrollo de tecnología de la información

DBCREATOR: Es un tipo de archivo DAO asociado a Third-Party Application desarrollado por DreamMail para el Sistema Operativo de Windows.

CASCADE: Borra o actualiza el registro en la tabla padre y automáticamente borra o actualiza los registros coincidentes en la tabla hija. Tanto ON DELETE CASCADE como ON UPDATE CASCADE están disponibles en MySQL 5.0. Entre dos tablas, no se deberían definir varias cláusulas ON UPDATE CASCADE que actúen en la misma columna en la tabla padre o hija.

SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL.

NO ACTION: En el estándar ANSI SQL-92, NO ACTION significa ninguna acción en el sentido de que unintento de borrar o actualizar un valor de clave primaria no sera permitido si en la tabla referenciada hay una valor de clave foránea relacionado. (Gruber, Mastering SQL, 2000:181). En MySQL 5.0, InnoDB rechaza la operación de eliminación o actualización en la tabla padre.

RESTRICT: Rechaza la operación de eliminación o actualización en la tabla padre. NO ACTION y RESTRICT son similares en tanto omiten la cláusula ON DELETE u ON UPDATE. (Algunos sistemas de bases de datos tienen verificaciones diferidas o retrasadas, una de las cuales es NO ACTION. En MySQL, las restricciones de claves foráneas se verifican inmediatamente, por eso, NO ACTION y RESTRICT son equivalentes.)


SET DEFAULT: Esta acción es reconocida por el procesador de sentencias (parser), pero InnoDB rechaza definiciones de tablas que contengan ON DELETE SET DEFAULT u ON UPDATE SET DEFAULT.

 ROLLBACK (REVERSIÓN): es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas.

Bibliografías y Fuentes de información
https://www.codejobs.biz/es/blog/2014/01/28/que-es-transact-sql


LINK DE DESCAGA SLIDESHARE:          Lenguaje Transact SQL

viernes, 1 de julio de 2016

TABLAS Y TIPOS DE DATOS


TABLAS Y TIPOS DE DATOS
Las tablas son objetos de las bases de datos diseñados para contener los datos. Una tabla está conformada por un conjunto de campos identificados comúnmente como columnas. Los datos a su vez se organizan en las tablas como filas y se conocen como registros, es decir, cada registro está integrado por el número de campos de la tabla constituyéndose un arreglo o matriz.
Cuando queremos crear una tabla es necesario definir qué tipo de valores o de datos será contenido en cada uno de los campos.

TIPOS DE DATOS:

Datos binarios: datos que toman valores uno (1) o cero (0) y componen números hexadecimales, se almacenan utilizando los tipos binary o varbinary e image 
datos carácter: puede contener letras, símbolos y caracteres numéricos, se almacenan utilizando el tipo de datos char, varchar o text.
datos Unicode: cualquier caracter definido por el standard unicode
datos de fecha y hora: combinaciones validas de fecha y hora, se almacena utilizando los tipos de datos datatime y samlldatatime.
datos numéricos: pueden ser números negativos, positivos, decimales, fracciones, y números enteros, los datos enteros se almacenan utilizando el tipo de datos bigint, int, smallint y tinyint, los datos decimales se almacenan utilizando el tipo de datosdecimal o numeric, y los de punto flotante con float o real.
datos de moneda: representa cantidades positivas o negativas de dinero, se almacenan utilizando los tipos de datos money o smallmoney.
datos especiales: no se ajusta a ninguna de las categorías de datos anteriores, los tipos de datos son timestamp o rowversion, bit, uniqueidentifier, sql_variant, table.
datos definidos por el usuario: como su nombre lo indica es un tipo definido por el usuario.
Otro aspecto no menos importante al crear una tabla es el uso de restricciones, valores predeterminados y valores NULL.
 
 
 
 

Creación
La sintaxis básica y general para crear una tabla es la siguiente:
 create table NOMBRETABLA(
  NOMBRECAMPO1 TIPODEDATO,
  ...
  NOMBRECAMPON TIPODEDATO
 );
La tabla debe ser definida con un nombre que la identifique y con el cual accederemos a ella.
Creamos una tabla llamada "usuarios" y entre paréntesis definimos los campos y sus tipos:
 create table usuarios (
  nombre varchar(30),
  clave varchar(10)
 );

Cada campo con su tipo debe separarse con comas de los siguientes, excepto el último.
Cuando se crea una tabla debemos indicar su nombre y definir al menos un campo con su tipo de dato. En esta tabla "usuarios" definimos 2 campos:
nombre: que contendrá una cadena de caracteres de 30 caracteres de longitud, que almacenará el nombre de usuario y
clave: otra cadena de caracteres de 10 de longitud, que guardará la clave de cada usuario.
Cada usuario ocupará un registro de esta tabla, con su respectivo nombre y clave.
Para nombres de tablas, se puede utilizar cualquier caracter permitido para nombres de directorios, el primero debe ser un caracter alfabético y no puede contener espacios. La longitud máxima es de 128 caracteres.
Si intentamos crear una tabla con un nombre ya existente (existe otra tabla con ese nombre), mostrará un mensaje indicando que ya hay un objeto llamado 'usuarios' en la base de datos y la sentencia no se ejecutará. Esto es muy importante ya que cuando haga los ejercicios en este sitio puede haber otra persona que haya creado una tabla con el nombre que usted especifique.
 
 


Eliminación:
Para eliminar una tabla usamos "drop table" junto al nombre de la tabla a eliminar:
 drop table usuarios;
Si intentamos eliminar una tabla que no existe, aparece un mensaje de error indicando tal situación y la sentencia no se ejecuta. Para evitar este mensaje podemos agregar a la instrucción lo siguiente:
 if object_id('usuarios') is not null
  drop table usuarios;
En la sentencia precedente especificamos que elimine la tabla "usuarios" si existe.
 

Modificación
El uso más común de la sentencia ALTER TABLE es añadir una columna a una tabla existente. La cláusula de definición de la columna en la sentencia ALTER TABLE es virtualmente idéntica a la de la sentencia CREATE TABLE y funciona del mismo modo. La nueva columna se añade al final de las definiciones de columna de la tabla y aparece como la columna más a la derecha en consultas posteriores.

RESTRICCIONES DE INTEGRIDAD

PRIMARY KEY: una tabla solo puede tener una restricción primary key y la columna o columnas a la(s) que se le aplique esta restricción no puede aceptar valores NULL, cuando está compuesta por más de una columna la combinación de las dos columnas debe ser única dentro de la tabla. Un ejemplo puede ser el número de identificación de un paciente o la combinación de tipo de documento y número de identificación.
 

FOREIGN KEY: esta restricción en una columna de una tabla suele estar asociada a la PRIMARY KEY de otra tabla y exigir un vínculo y se convierte en una clave externa para la segunda tabla, aunque también puede definirse para que haga referencia a las columnas con restricción UNIQUE de otras tablas. Un ejemplo puede ser el número de identificación del paciente en la tabla pacientes como una llave foránea en la tabla de factura
 

UNIQUE: Se puede utilizar esta restricción para asegurar que no se escriban valores duplicados en columnas específicas que no formen parte de una clave principal.

CHECK: esta restricción limita el conjunto de valores que pueden ser capturados e un campo a partir de una expresión lógica. Por ejemplo salario >= 650000 y <= 5000000

DEFAULT: Cada columna debe tener un valor, aunque sea un valor NULL. Por ejemplo para un campo numérico se puede definir el calor por defecto 0, o N/D para un campo string.

NULL: define si una columna o campo de una tabla puede aceptar valores NULL, un valor NULL es diferente de un valor 0, en blanco o una cadena de caracteres de longitud 0. Un campo PRIMARY KEY no puede aceptar valore NULL.
Sintaxis básica de la instrucción CREATE TABLE:

<Definición de columna>

<Restricción de columna>
 



Resumen

Las tablas son objetos de las bases de datos diseñados para contener los datos. Una tabla está conformada por un conjunto de campos identificados comúnmente como columnas. Los datos a su vez se organizan en las tablas como filas y se conocen como registros, es decir, cada registro está integrado por el número de campos de la tabla constituyéndose un arreglo o matriz.
Cuando queremos crear una tabla es necesario definir qué tipo de valores o de datos sera contenido en cada uno de los campos.

Summary

Tables are objects of databases designed to contain the data. A table consists of a set of fields commonly identified as columns. The data in turn are organized in tables as rows and are known as records, ie each record consists of the number of fields in the table constituting an array or matrix. When we want to create a table it is necessary to define what type of values ​​or data will be contained in each of the fields.

Recomendaciones
Antes de Crear una tabla en SQL Server hay que tener en cuenta los tipos de datos que debe contener la tabla, que columnas aceptan valores nulos, si se deben de utilizar restricciones o vales predeterminados y reglas, que columnas son claves principales y claves externas.

Conclusiones
Al conocer los tipos de datos que debes utilizar al momento de crear una tabla, las restricciones que debes tener  en cuenta, Si o si vas a crear una buena tabla y tener una buena  integridad de datos. Ya que Gracias a foreign key el servidor garantiza que no metes en un campo un valor que no existe en otro sitio donde obligatoriamente debería existir. Por ejemplo, si tienes una tabla de Pedidos puedes establecer un Foreign Key a la tabla de Clientes, de forma que el código de cliente que se introduce en el pedido siempre sea el de un cliente existente. Así garantizas que con independencia de los errores que puedan existir en uno o varios de los programas cliente que acceden a la base de datos, nunca podrá ocurrir que se grabe un pedido cuyo cliente no existe.
Apreciación del Equipo
Es de Gran importación realizar una buena creación de una tabla en SQL Server ya que ello te va a ayudar que tu base de datos este buen estructurada y esto se consigue conociendo los tipos de datos que te brinda SQL Server, las restricciones que debes tener en cuenta al momento de crearlas.

Glosario de términos
Create: crear
Alter:alterar o modificar
Drop: eliminar o soltar
Null: nulo
Not null: no nulo
Primary key: clave primaria
Foring key: clave foránea o externa  

Bibliografías y Fuentes de información

LINK DE DESCARGA SLIDESAHRE:    Tablas y Tipos de Datos