viernes, 6 de abril de 2018

Lenguaje Transact Sql




CARRERA PROFESIONAL DE     : Ingeniería de Sistemas y Telemática

ASIGNATURA                                : Laboratorio de programación III

ESTUDIANTE                                :
ü  CHUQUIZUTA RAMOS, Marleni
ü  HERRERA SILVA, Carlos Jhonatan
CICLO                                              : VII

GRUPO                                            : A


I.              Tema: Lenguaje Transact SQL

1.    Contenido

ü  Definición
Transact-SQL es un lenguaje muy potente que nos ayudará a definir tareas del negocio con la Base de Datos de Microsoft SQL Server. Podremos hacer uso de Transact-SQL en lenguajes de programación como Visual Basic. Net, Java en sus diferentes entonos de programación.
Haciéndonos muy competitivos en el mercado empresarial, gestionando base de datos con procedimientos muy avanzados.



ü  Tipos de Comandos (DDL, DML, etc.)

El DDL (Lenguaje de Descripción de Datos.)
Es la parte del SQL dedicada a la definición de la base de datos, consta de sentencias para definir la estructura de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear índices, definir reglas de validación de datos, relaciones entre las tablas, etc. Permite definir gran parte del nivel interno de la base de datos. Por este motivo estas sentencias serán utilizadas normalmente por el administrador de la base de datos.
ü  CREATE, se usa para crear una base de datos, tabla, vistas, etc.
ü  ALTER, se utiliza para modificar la estructura, por ejemplo añadir o borrar columnas de una tabla.
ü  DROP, con esta sentencia, podemos eliminar los objetos de la estructura, por ejemplo un índice o una secuencia.

El DCL (Lenguaje de Control de Datos.)
Ejerce un control sobre los datos tal como la asignación de privilegios de acceso a los datos (GRANT/REVOKE), La gestión de transacciones (COMMIT/ROLLBACK).
Una transacción se puede definir como un conjunto de acciones que se tienen que realizar todas o ninguna para preservar la integridad de la base de datos.
Por ejemplo supongamos que tenemos una base de datos para las reservas de avión. Cuando un usuario pide reservar una plaza en un determinado vuelo, el sistema tiene que comprobar que queden plazas libres, si quedan plazas reservará la que quiera el usuario generando un nuevo billete y marcando la plaza como ocupada. Aquí tenemos un proceso que consta de dos operaciones de actualización de la base de datos (crear una nueva fila en la tabla de billetes y actualizar la plaza reservada en el vuelo, poniéndola como ocupada) estas dos operaciones se tienen que ejecutar o todas o ninguna, si después de crear el billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de datos quedaría en un estado inconsistente ya que la plaza constaría como libre cuando realmente habría un billete emitido para esta plaza. En este caso el sistema tiene el mecanismo de transacciones para evitar este error. Las operaciones se incluyen las dos en una misma transacción y así el sistema sabe que las tiene que ejecutar las dos, si por lo que sea no se pueden ejecutar las dos, se encarga de deshacer los cambios que se hubiesen producido para no ejecutar ninguna.
Las instrucciones que gestionan las autorizaciones serán utilizadas normalmente por el administrador mientras que las otras, referentes a proceso de transacciones serán utilizadas también por los programadores.
ü  GRANT, permite otorgar permisos.
ü  REVOKE, elimina los permisos que previamente se han concedido.

El DML (Lenguaje de Manipulación de Datos.)
Se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar datos existentes, para eliminar datos y la más utilizada, para recuperar datos de la base de datos. Veremos que una sola instrucción de recuperación de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar cálculos sobre estos datos y obtener resúmenes.
El DML interactúa con el nivel externo de la base de datos por lo que sus instrucciones son muy parecidas, por no decir casi idénticas, de un sistema a otro, el usuario sólo indica lo que quiere recuperar no cómo se tiene que recuperar, no influye el cómo están almacenados los datos.
Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.
o   SELECT, esta sentencia se utiliza para realizar consultas sobre los datos.
o   INSERT, con esta instrucción podemos insertar los valores en una base de datos.
o   UPDATE, sirve para modificar los valores de uno o varios registros.
o   DELETE, se utiliza para eliminar las finas de una tabla.

ü  Funciones – Identificadores

Funciones:

Funciones en Transact SQL
SQL Server proporciona al usuario la posibilidad de definir sus propias funciones, conocidad como UDF (user defined functions). Exisiten tres tipos de funciones. Estas son:
o   Funciones escalares.
o   Funciones en línea.
o   Funciones en línea de multiples sentencias

Funciones escalares
Las funciones escalares devuelven un único valor de cualquier tipo de los datos tal como int, money, varchar, real, etc.
 
Funciones en línea
Las funciones en línea son las funciones que devuelven un conjunto de resultados correspondientes a la ecuación de una sentencia SELECT.

Funciones en línea de múltiples sentencias
Las funciones en línea de múltiples sentencias son similares a las funciones en línea excepto que el conjunto de resultados que devuelven puede estar compuesto por la ejecución de varias consultas SELECT.
Este tipo de función se usa en situaciones donde se requiere una mayor lógica de proceso.

Identificadores:
Existen dos clases de identificadores:

Identificadores normales
Siguen las reglas de formato de los identificadores. Los identificadores normales no están delimitados cuando se usan en instrucciones Transact-SQL
SELECT *
FROM TableX
WHERE KeyCol = 124  

Identificadores delimitados
Se incluyen entre comillas dobles (") o corchetes ([ ]). Los identificadores que siguen las reglas de formato de los identificadores pueden no estar delimitados. Por ejemplo:
SELECT * FROM [TableX]        
--Delimiter is optional.
WHERE [KeyCol] = 124 
--Delimiter is optional.

Los identificadores que no cumplen las reglas de los identificadores deben estar delimitados en las instrucciones Transact-SQL.  Por ejemplo:
SELECT *
FROM [My Table]--Identifier contains a space and uses a reserved keyword.
WHERE [order] = 10   --Identifier is a reserved keyword.
Ambos identificadores, normales y delimitados, deben tener entre 1 y 128 caracteres. En el caso de las tablas temporales locales, el identificador puede tener un máximo de 116 caracteres.

ü  Tipos de Datos – Palabras Reservadas
Transact SQL proporciona una variedad predefinida de tipos de datos. Casi todos los tipos de datos manejados por Transact SQL son similares a los soportados por SQL.

Tipos de datos numéricos.
SQL Server dispone de varios tipos de datos númericos. Cuanto mayor sea el número que puedan almacenar mayor será en consecuencia el espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo de dato mínimo posible. Todos los datos numéricos admiten el valor NULL.

§  Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de   1 a 0.
§  Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0 a 255.
§  SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -32768 a 32767.
§  Int. Una columna o variable de tipo int puede almacenar el rango de valores -231 a 231-1 .
§  BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -263 a 263-1 .
§  Decimal(p,s). Una columna de tipo decimal puede almacenar datos númericos decimales sin redondear. Donde p es la precision (número total del dígitos) y s la escala (número de valores decimales)
§  Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10308 a 1,79x-10308, , si la definimos con el valor máxmo de precisión. La precisión puede variar entre 1 y 53.
§  Real. Sinónimo de float(24). Puede almacenar el rango de valores -3,4x-1038 a 3,4x-1038,
§  Money. Almacena valores númericos monetarios de -263  a 263-1, con una precisión de hasta diexz milesimas de la unidad monetaria.
§  SmallMoney. Almacena valores númericos monetarios de -214.748,3647 a 214.748,3647, con una precisión de hasta diez milesimas de la unidad monetaria.
    Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos auto numéricos.

Tipos de datos de carácter.
§  Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A    ', ocupando los cinco bytes.
§  Varchar(n).Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un byte bytes.
§  Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
§  Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
§  Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.
§  Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.

Tipos de datos de fecha.
§  Datetime. Almacena fechas con una precision de milisegundo. Debe usarse para fechas muy especificas.
§  SmallDatetime. Almacena fechas con una precision de minuto, por lo que ocupa la mitad de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta.
§  TimeStamp.Se utiliza para marcar un registro con la fecha de inserción - actualización. El tipo timestamp se actualiza automáticamente cada vez que insertamos o modificamos los datos.

Tipos de datos binarios.
§  Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud máxima de 8000 bytes.
§  Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud máxima de 8000 bytes..Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco.
§  Varbinary(max).Igual que  varbinary, pero puede almacenar 231-1 bytes


Tipo de datos XML.
§  XML. Una de las grandes mejoras que incorpora SQL Server 2005 es el soporte nativo para XML. Como podemos deducir, este tipo de datos se utiliza para almacenar XML.

Otros tipos de datos.
§  UniqueIdentifier. Se utiliza para identificadores únicos. Para generar identificadores únicos debemos utilizar la funciónNEWID().
§  Sql_Variant .Permite almacenar valores de diferentes tipos de datos. No puede almacenar varchar(max), xml, timestamp y tipos de datos definidos por el usuario.

Tipos de datos personalizados.
Transact SQL permite la creación de tipos de datos personalizados, a través de la instrucción CREATE TYPE. Personalmente, desaconsejo el uso de tipos de datos personalizados.

Palabras Reservadas

ADD
EXTERNAL
PROCEDURE
ALL
FETCH
PUBLIC
ALTER
FILE
RAISERROR
ANY
FILLFACTOR
READ
AS
FOR
READTEXT
ASC
FOREIGN
RECONFIGURE
AUTHORIZATION
FREETEXT
REFERENCES
BACKUP
FREETEXTTABLE
Replicación
BEGIN
FROM
RESTORE
BETWEEN
FULL
RESTRICT
BREAK
FUNCTION
RETURN
BROWSE
GOTO
REVERT
BULK
GRANT
REVOKE
BY
GROUP
RIGHT
CASCADE
HAVING
ROLLBACK
CASE
HOLDLOCK
ROWCOUNT
CHECK
IDENTITY
ROWGUIDCOL
CHECKPOINT
DENTITY_INSERT
RULE
CLOSE
IF
INNER
CLUSTERED
IN
SELECT
COALESCE
INDEX
SET
CONSTRAINT
INSERT
TABLE
CONTINUE
INTO
INTERSECT
COMPUTE
JOIN
COLUMN
CREATE
KEY
LIKE
CONVERT
LEFT
CURRENT
DELETE
CURSOR
UNIQUE
STATISTICS
DISK
OF
UPDATE
DESC
OPEN
ORDER
DENY
ON
VALUES
UNION
NOT
DROP
DEFAULT
NULLIF
OPTION
OFF
NULL
DOUBLE
DECLARE
TRANSACTION
USE
ELSE
TRIGGER
DISTRIBUTED
END
TRAN
DISTINCT
EXEC
DATABASE
LOAD
THEN
TO

Operadores – Flujos de Control

Operadores

Tipo de Operador
Operadores
Operador de asignación
=
Operadores aritméticos
+ (suma)
- (resta)
* (multiplicación)
/ (división)
** (exponente)
% (modulo)
Operadores relacionales o de comparación
= (igual a)
<> (distinto de)
!=  (distinto de)
< (menor que)
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
!>  (no mayor a)
!<  (no menor a)
Operadores lógicos
AND (y lógico)
NOT (negacion)
OR   (o lógico)
&    (AND a nivel de bit)
|     (OR a nivel de bit)
^     (OR exclusivo a nivel de bit) 
Operador de concatenación
+
Otros
ALL (Devuelve TRUE si el conjunto completo de comparaciones es TRUE)
ANY(Devuelve TRUE si cualquier elemento del conjunto de comparaciones es TRUE)
BETWEEN (Devuelve TRUE si el operando está dentro del intervalo)
EXISTS (TRUE si una sub consulta contiene filas)
IN (TRUE si el operando está en la lista)LIKE (TRUE si el operando coincide con un patrón)
NOT (Invierte el valor de cualquier operador booleano)
SOME(Devuelve TRUE si alguna de las comparaciones de un conjunto es TRUE)


2.    Resumen
           
ü  Definición
Transact-SQL es un lenguaje muy potente que nos ayudará a definir tareas del negocio con la Base de Datos de Microsoft SQL Server

ü  Tipos de Comandos (DDL, DML, etc.)
El DDL (Lenguaje de Descripción de Datos.)
Es la parte del SQL dedicada a la definición de la base de datos, consta de sentencias para definir la estructura de la base de datos
El DCL (Lenguaje de Control de Datos.)
Ejerce un control sobre los datos tal como la asignación de privilegios de acceso a los datos (GRANT/REVOKE), La gestión de transacciones (COMMIT/ROLLBACK).
El DML (Lenguaje de Manipulación de Datos.)
Se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar datos existentes, para eliminar datos y la más utilizada, para recuperar datos de la base de datos.

ü  Funciones – Identificadores

Funciones:

Funciones en Transact SQL
Existen tres tipos de funciones. Estas son:
o   Funciones escalares.
o   Funciones en línea.
o   Funciones en línea de múltiples sentencias

Identificadores:
o   Identificadores normales
o   Identificadores delimitados

ü  Tipos de Datos – Palabras Reservadas

Tipos de Datos
o   Tipos de datos numéricos.
o   Tipos de datos de carácter.
o   Tipos de datos de fecha.
o   Tipos de datos binarios.
o   Tipo de datos XML.
o   Tipos de datos personalizados.

Palabras Reservadas
o   Add
o   All
o   Enter
o   etc


3.    Summary
ü  Definition
Transact-SQL is a very powerful language that will help us define business tasks with the Microsoft SQL Server Database

ü  Command Types (DDL, DML, etc.)
The DDL (Data Description Language)
It is the part of the SQL dedicated to the definition of the database, consists of statements to define the structure of the database
The DCL (Data Control Language.)
It exerts a control on the data such as the assignment of privileges of access to the data (GRANT / REVOKE), the management of transactions (COMMIT / ROLLBACK).
The DML (Data Manipulation Language.)
It consists of the instructions for the handling of the data, to insert new data, modify existing data, to eliminate data and the most used, to recover data from the database.

ü  Functions - Identifiers

Functions:

Functions in Transact SQL
There are three types of functions. These are:
o   Scalar functions.
o   Online functions.
o   Online functions of multiple sentences

Identifiers:
Normal identifiers
Delimited identifiers

ü  Types of Data - Reserved Words

Type of data
o   Numerical data types.
o   Character data types.
o   Date data types.
o   Binary data types.
o   XML data type.
o   Custom data types.

Reserved Words
o   Add
o   All
o   Enter
o   Etc
4.    Recomendaciones
ü  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 reescribe la sentencia como INSERT INTO tabla_name SELECT.
ü  Cuando cree una base de datos, defina el mayor tamaño posible para los archivos de datos según la cantidad de datos máxima prevista para la base datos.
5.    Conclusiones
ü  Se logró el objetivo de conocer como es el manejo adecuado de la herramienta SQL. Teniendo en cuenta el estudio previo y la practica con dicha herramienta.
ü  Con este lenguaje se ha conseguido en gran medida ya que con una sola frase (instrucción) podemos recuperar datos complejos (por ejemplo, datos que se encuentran en varias tablas, combinándolos, calculando resúmenes).
6.    Apreciación del Equipo
ü  Como equipo podemos apreciar que se puede utilizar Transact SQL Server en lenguaje 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.
7.    Glosario de Términos
o   DTL: Lenguaje de Control de Transacciones
o   DDL: Lenguaje de Definición de Datos.
o   DML: Lenguaje de Manipulación de Datos
o   DCL: Lenguaje de Control de Datos.
o   ROLLBACK: Restaura la base de datos al estado original desde el comando COMMIT pasado en las transacciones.
o   WHILE: Establece una condición para la ejecución repetida de una instrucción o bloque de instrucciones SQL. Las instrucciones se ejecutan repetidamente siempre que la condición especificada sea verdadera. Se puede controlar la ejecución de instrucciones en el bucle WHILE con las palabras clave BREAK y CONTINUE.

8.    Bibliografía o Linkografía