2. ¿QUÉ ES SQL?
Un lenguaje estructurado para consultas
Permite acceder y manejar bases de datos
Un Estándar (ANSI American National
Standards Institute)
3. ejecutar consultas obtener datos
insertar , actualizar y
borrar registros
crear vistas
configurar permisos
a tablas,
procedimientos, y
vistas
crear nuevas bases
de datos
crear nuevas tablas
en una base de
datos
crear procedimientos
almacenados(código
almacenado) en una
base de datos
6. SENTENCIA -DINÁMICA
Son generadas durante la
ejecución de un script. Por
ejemplo se puede generar
un store procedure con
variables para construir
una sentencia SELECT que
incorpore esas variables.
Siempre van
acompañadas de la
palabra EXECUTE
(Transact-SQL) con
strings y variables. SQL
determina el valor de las
variables conforme se va
ejecutando el script.
EJEMPLO:
DECLARE @tabla
varchar(20), @bd
varchar(20)
SET @tabla = 'authors'
SET @bd = 'pubs'
EXECUTE ('USE '+ @bd +
'SELECT * FROM ' +
@tabla )
7. SENTENCIA - BATH
Es la ejecución de varias
sentencias juntas.
Cada vez que se ejecuta una
sentencia de SQL
individualmente, el servidor
presenta cierto overhead para su
procesamiento, en cambio si se
ejecuta varias sentencias de SQL
juntas dentro de un batch recibe
un solo overhead para todas las
sentencias ejecutadas dentro del
batch.
Los batches mejoran el
performance de SQL debido a
que compila y ejecuta todo
junto.
Si durante la ejecución del batch
SQL detecta un error de
sintaxis, no se procesa ninguna
sentencia dentro del batch.
Los batch se definen utilizando el
comando GO, este comando no es
una sentencia de SQL es solo una
forma de identificar el final de un
batch a través de las utilerías de SQL
SQL trata a todas las sentencias que
están antes de un GO como un solo
batch.
EJEMPLO:
USE pubs
SELECT MAX(price) AS 'Máximo precio'
FROM titles
PRINT ' '
SELECT MIN(price) AS 'Menor precio'
FROM titles
PRINT ' '
SELECT AVG(price) AS 'Precio promedio'
FROM titles
GO
8. SENTENCIA - TRANSACCIONES
SQL procesa las transacciones
como un batch, pero la
diferencia entre un batch y una
transacción, es que una
transacción permite deshacer
las operaciones que se
realizaron dentro de una
transacción, cosa que no es
posible en un batch.
Permite mantener la integridad
referencial en una base de
datos, ya que se ejecuta
satisfactoriamente toda la
transacción o falla toda la
transacción completa. Dentro de
una sola transacción es posible
definir varios batch.
Para poder marcar el inicio de
una transacción las sentencias
debe de preceder por la palabra
BEGIN TRANSACTION y finalizar
con COMMIT TRANSACTION o
ROLLBACK TRANSACTION. Si
utiliza ROLLBACK
TRANSACCTION SQL deshará la
transacción.
La sintaxis :
BEGIN TRANSACTION
SQL statement #1
SQL statement #2
...
COMMIT TRANSACTION
9. EJEMPLO
TRANSACCION
El ejemplo clásico de
transacción es una
transferencia
bancaria, en la que
quitamos saldo a una
cuenta y lo añadimos
en otra. Si no somos
capaces de abonar el
dinero en la cuenta de
destino, no debemos
quitarlo de la cuenta de
origen.
DECLARE @importe DECIMAL(18,2),
@CuentaOrigen VARCHAR(12),
@CuentaDestino VARCHAR(12)
/* Asignamos el importe de la transferencia
* y las cuentas de origen y destino
*/
SET @importe = 50
SET @CuentaOrigen = '200700000001'
SET @CuentaDestino = '200700000002'
/* Descontamos el importe de la cuenta origen */
UPDATE CUENTAS
SET SALDO = SALDO - @importe
WHERE NUMCUENTA = @CuentaOrigen
/* Registramos el movimiento */
INSERT INTO MOVIMIENTOS
(IDCUENTA, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE,
FXMOVIMIENTO)
SELECT
IDCUENTA, SALDO + @importe, SALDO, @importe, getdate()
FROM CUENTAS
WHERE NUMCUENTA = @CuentaOrigen
/* Incrementamos el importe de la cuenta destino */
UPDATE CUENTAS
SET SALDO = SALDO + @importe
WHERE NUMCUENTA = @CuentaDestino
/* Registramos el movimiento */
INSERT INTO MOVIMIENTOS
(IDCUENTA, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE,
FXMOVIMIENTO)
SELECT
IDCUENTA, SALDO - @importe, SALDO, @importe, getdate()
FROM CUENTAS
WHERE NUMCUENTA = @CuentaDestino
10. SENTENCIA SCRIPTS
Es un archivo de texto que contienen una
serie de comandos SQL. Este archivo se
puede abrir con las utilerías de SQL Server y
ejecutarlo como en el caso de osql.
Pueden ser creados desde cualquier editor de
texto y es recomendable guardarlo con la
extensión .sql para poder distinguirlo de los
demás.
Cuando se generan scripts es recomendable
comentarlos. SQL Server soporta dos tipos de
comentarios, por línea y por bloque.