2. • El esfuerzo de estandarización por parte de ANSI
para llevarlo rápidamente a ser el lenguaje estándar
para las bases de datos relacionales.
• Formas básicas para el presente y el futuro en la
unión de esfuerzos para un mejor DBMS.
• Volverse el catalizador en el desarrollo de bases de
datos distribuidas y bases de datos basadas en la
arquitectura cliente/servidor.
Introducción a SQL
3. 3
El lenguaje de consulta estructurado SQL (Structured
Query Language), es un lenguaje de base de datos.
El lenguaje SQL está compuesto por comandos,
cláusulas, operadores y funciones.
Estos elementos se combinan en las instrucciones para
crear, actualizar y manipular las bases de datos.
SQL es el lenguaje ideal para las bases de datos
–Lenguaje para definición de datos
–Lenguaje para manipulación de datos
Introducción a SQL
4. 4
DDL (Data Definition Language)
Permiten crear y definir nuevas bases de datos,
campos e índices.
DML (Data Manipulation Language )
Permiten generar consultas para ordenar, filtrar y
extraer datos de la base de datos.
4
Comandos SQL
5. 5
CREATE: Utilizado para crear tablas, campos e
índices.
DROP: Empleado para eliminar tablas e índices.
ALTER: Utilizado para modificar las tablas
agregando campos o cambiando la definición de los
campos.
5
Comandos DDL
6. 6
SELECT: Utilizado para consultar registros de la BD
que satisfagan un determinado criterio.
INSERT: Utilizado para cargar lotes de datos en la
BD en una única operación.
UPDATE: Utilizado para modificar los valores de los
campos y registros especificados.
DELETE: Utilizado para eliminar registros de una
tabla de una BD.
6
Comandos DML
7. 7
Tipos de Datos
Cada columna de una tabla tiene un dato asignado,
que determina los valores posibles y las operaciones
permitidas sobre esos valores.
•Tipo Numéricos
Existen tipos de datos numéricos, que se pueden
dividir en dos grandes grupos, los que están en coma
flotante (con decimales) y los que no.
TinyInt: es un número entero con o sin signo. Con
signo el rango de valores válidos va desde -128 a 127.
Sin signo, el rango de valores es de 0 a 255
Bit ó Bool: un número entero que puede ser 0 ó 1
8. 8
SmallInt: número entero con o sin signo. Con signo el rango de
valores va desde -32768 a 32767. Sin signo, el rango de valores
es de 0 a 65535.
MediumInt: número entero con o sin signo. Con signo el rango
de valores va desde -8.388.608 a 8.388.607. Sin signo el rango
va desde 0 a16777215.
Integer, Int: número entero con o sin signo. Con signo el rango
de valores va desde -2147483648 a 2147483647. Sin signo el
rango va desde 0 a 429.4967.295
BigInt: número entero con o sin signo. Con signo el rango de
valores va desde -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807. Sin signo el rango va desde 0 a
18.446.744.073.709.551.615.
Tipos de Datos
9. 9
Float: número pequeño en coma flotante de precisión simple. Los
valores válidos van desde -3.402823466E+38 a -1.175494351E-38,
0 y desde 1.175494351E-38 a 3.402823466E+38.
xReal, Double: número en coma flotante de precisión doble. Los
valores permitidos van desde -1.7976931348623157E+308 a -
2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308
a 1.7976931348623157E+308
Decimal, Dec, Numeric: Número en coma flotante
desempaquetado. El número se almacena como una cadena
Tipos de Datos
10. 10
• Tipo Fecha
A la hora de almacenar fechas, hay que tener en cuenta que
Mysql no comprueba de una manera estricta si una fecha es
válida o no. Simplemente comprueba que el mes esta
comprendido entre 0 y 12 y que el día esta comprendido entre
0 y 31.
Date: tipo fecha, almacena una fecha. El rango de valores va
desde el 1 de enero del 1001 al 31 de diciembre de 9999. El
formato de almacenamiento es de año-mes-dia
DateTime: Combinación de fecha y hora. El rango de valores
va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0
segundos al 31 de diciembre del 9999 a las 23 horas, 59
minutos y 59 segundos. El formato de almacenamiento es de
año-mes-dia horas:minutos:segundos
Tipos de Datos
11. 11
• Tipo Cadena
Char(n): almacena una cadena de longitud fija. La cadena
podrá contener desde 0 a 255 caracteres.
VarChar(n): almacena una cadena de longitud variable. La
cadena podrá contener desde 0 a 255 caracteres.
Dentro de los tipos de cadena se pueden distinguir otros dos
subtipos, los tipo Test y los tipo BLOB (Binary large Object)
La diferencia entre un tipo y otro es el tratamiento que reciben
a la hora de realizar ordenamientos y comparaciones. Mientras
que el tipo test se ordena sin tener en cuenta las Mayúsculas y
las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta.
Tipos de Datos
12. 12
Sentencia DDL: CREATE TABLE
Crea la estructura de una tabla.
Formato simplificado:
CREATE TABLE <tabla>
( <definición de columna 1>,
…
<definición de columna n>,
<definición de restricción 1>,
…
<definición de restricción n>)
En la definición del atributo o columna puede aparecer:
<nombre de columna> { <tipo de dato> / <dominio>}
[<restricción de columna> … ]
13. 13
Las restricciones se usan para declarar en el modelo relacional las
condiciones que los datos cumplen en el mundo real.
Pueden ser de un diverso tipo (valor defectivo, valor nulo, clave
primaria, clave foránea, etc.)
•Valor defectivo de una columna. Se expresa con DEFAULT <valor>
•Valor nulo (defectivo) o no nulo de una columna. Se expresa con [NOT]
NULL
Ejemplo:
CREATE TABLE emp1
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4) DEFAULT 7500,
deptno NUMBER(2))
Sentencia DDL: CREATE TABLE
14. 14
Otras restricciones:
•Llave primaria.
Indica la condición de que un conjunto de columnas toma
valores diferentes para cada fila y ninguno de ellos es nulo.
Se expresa mediante PRIMARY KEY
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
PRIMARY KEY (empno))
Sentencia DDL: CREATE TABLE
15. 15
Toda restricción puede nombrarse incluyendo CONSTRAINT
<nombre de restricción>
Aquí sería anteponiendo a PRIMARY KEY
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
CONSTRAINT cp_emp2 PRIMARY KEY (empno))
Sentencia DDL: CREATE TABLE
16. 16
• Valor único
Indica que un conjunto de atributos no puede tener valores
iguales en filas distintas.
Formato:
UNIQUE (<columna 1> [<columna 2>, … >)
CREATE TABLE emp2
(empno NUMBER(4) NOT NULL,
ename VARCHAR2(15),
mgr NUMBER(4),
deptno NUMBER(2),
UNIQUE (empno))
Sentencia DDL: CREATE TABLE
17. 17
• Llave foránea
Un conjunto de atributos es una clave foránea si sus
valores corresponden con los de otro conjunto de atributos
que es una clave candidata en otra relación.
Sentencia DDL: CREATE TABLE
21. Select Sintaxis
SELECT select_list [ INTO new_table ]
FROM table_source
[WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
22. 22
La consulta más sencilla
Consultar a una tabla
Seleccionar solo ciertos campos
SELECT * FROM
Alumnos
SELECT nombre+” “+paterno+” “+materno FROM
Alumnos
23. 23
Filtrando registros con WHERE
• Sin WHERE, se obtienen todos los registros
• Con WHERE se obtienen aquellos registros que cumplan ciertas
condiciones
SELECT * FROM Alumnos
WHERE lugar_nac = ‘Mty’ AND fecha_nac > ‘1990-06-30’
24. Ejemplos de select
• select * from TablaA
• select name from TablaA
• select id from TablaA where name=‘Pirate’
• select * from TablaA where id=1 or name=‘Ninja’
25. Sentencia DML: UPDATE
• UPDATE <tabla>
SET <campo1> = value1, <campo2> = value2
--SIN WHERE se modifican todos los registros
--Con WHERE se modifican sólo los registros que cumplen con
ciertas condiciones
26. • DELETE FROM <tabla>
--SIN WHERE se eliminan todos los registros de la tabla
--Con WHERE se eliminan sólo los registros que cumplen con
ciertas condiciones
Sentencia DML: DELETE
27. Operador DISTINCT
• SELECT DISTINCT "nombre_columna“ FROM "nombre_tabla"
EJEMPLO:
SELECT DISTINCT store_name FROM Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
RESULTADO:
store_name
Los Angeles
San Diego
Boston
28. Claúsula WHERE
• seleccionar todos los negocios con ventas mayores a 1.000€ dólares
estadounidenses en la Tabla Store_Information,
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
Ejemplo:
SELECT store_name FROM Store_Information
WHERE Sales > 1000
RESULTADO:
store_name
Los Angeles
29. Operador AND OR
SELECT "nombre_columna“
FROM "nombre_tabla"
WHERE "condición simple“
{[AND|OR] "condición simple"}+
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
RESULTADO:
store_name
Los Angeles
San Francisco
Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores
a 1000€ dólares estadounidenses o todos los negocios con ventas menores a 500€
dólares estadounidenses pero mayores a 275€ dólares estadounidenses en la
Tabla Store_Information,
{}+ significa que la expresión dentro de las llaves ocurrirá una o más veces.
Note que AND u OR pueden utilizarse indistintamente. Además, podemos
utilizar el símbolo paréntesis () para indicar el orden de la condición.
30. Operador IN
En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél
relacionado con la cláusula WHERE. Cuando se lo utiliza en este contexto,
sabemos exactamente el valor de los valores regresados que deseamos ver
para al menos una de las columnas. La sintaxis para el uso de la palabra clave
IN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1', ''valor2', ...)
El número de valores en los paréntesis pueden ser uno o más, con
cada valor separado por comas. Los valores pueden ser números o
caracteres. Si hay sólo un valor dentro del paréntesis, este comando
es equivalente a
WHERE "nombre_columna" = 'valor1'
31. store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
Ejemplo:
SELECT * FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')
Por ejemplo, podríamos desear seleccionar todos los registros para los negocios
de Los Ángeles y San Diego en la Tabla Store_Information,
Operador IN
RESULTADO:
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
32. Operador in
• El operador in nos permite saber si existe algún valor x en una
lista de elementos.
• Ejemplo:
– select * from TablaA where id in (1, 3, 7)
– select * from TablaA where id=1 or id=3 or id=7
33. 33
IN
• La cláusula IN permite especificar una lista en una cláusula
WHERE
SELECT * FROM Alumnos
WHERE lugar_nac IN (‘Mty’, ‘Apodaca’, ‘Gpe’)
34. SQL BETWEEN
Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de
selección para uno o más valores discretos, la palabra clave BETWEEN permite
la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'
Por ejemplo, podríamos desear seleccionar la visualización de toda la
información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999,
en la Tabla Store_Information,
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
35. SQL BETWEEN
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999'
Tenga en cuenta que la fecha puede almacenarse en diferentes formatos
según las diferentes bases de datos. Esta guía de referencia simplemente
elige uno de los formatos.
RESULTADO:
store_name Sales Date
San Diego 250 € 07-Jan-1999
San Francisco 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
36. SQL LIKE
LIKEes otra palabra clave que se utiliza en la cláusula WHERE. Básicamente,
LIKEle permite hacer una búsqueda basada en un patrón en vez de especificar
exactamente lo que se desea (como en IN) o determinar un rango (como en
BETWEEN). La sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Store_Information
37. SQL LIKE
{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:
•'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por
ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería
(debido a que hay dos caracteres entre A y Z en vez de uno).
•'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y
'ABCABC' ambas deberían satisfacer la condición.
•'%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ'
ambas deberían satisfacer la condición.
•'%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por
ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la
condición.
38. SQL LIKE
Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para
hacerlo, ingresamos,
SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'
RESULTADO:
store_name Sales Date
LOS ANGELES 1500 € 05-Jan-1999
SAN DIEGO 250 € 07-Jan-1999
SAN FRANCISCO 300 € 08-Jan-1999
39. 39
Ordenando
• ORDER BY permite ordenar los registros alfabéticamente por
campos.
SELECT * FROM Alumnos
WHERE lugar_nac = ‘Mty’
AND fecha_nac > ‘1990-06-30’
ORDER BY lugar_nac DESC, paterno, materno, nombre
40. 40
Subconsultas
• Permiten crear una lista para una cláusula IN mediante una
consulta
SELECT * FROM Alumnos
WHERE matricula IN (SELECT matricula
FROM Alumnos
WHERE YEAR(fecha_nac) = 2007)
41. 41
Consultas a dos tablas
• Una consulta a dos tablas da como resultado el producto de
ambas.
• El producto de dos tablas es otra tabla con todos los campos
de las dos tablas, repitiendo la segunda tabla tantas veces
como registros tiene la primera.
• Es necesario filtrar con WHERE por un campo común a ambas
tablas.
43. Funciones agregadas
• COUNT
• Calcula el número de registros devueltos por una consulta.
• No toma en cuenta qué valores se almacenan en los registros.
• No cuenta los registros que tienen campos NULL a menos que
su utilice el carácter comodín asterisco (*).
• Sintaxis:
43
COUNT(Expresion)
* Expresion: nombre del campo que desea contar. Puede
incluir el nombre de un campo de una tabla,una constante
o una función (no funciones agregadas de SQL).
44. Funciones agregadas
• SUM
• Devuelve la suma del conjunto de valores contenido en un
campo específico de una consulta.
• Sintaxis:
44
SUM(Expresion)
* Expresion: campo que contiene los datos que desean sumarse o una expresión
que realiza un cálculo utilizando los datos de dichos campos.
Puede incluir el nombre de un campo de una tabla,
una constante o una función (no funciones agregadas de SQL).
SELECT SUM(PrecioUnidad * Cantidad) AS Total
FROM DetallePedido
45. Funciones agregadas
• AVG
• Calcula el promedio de un conjunto de valores contenidos en
un campo especificado de una consulta.
• Sintaxis:
45
AVG(Expresion)
* Expresion: campo que contiene los datos numéricos para los que se desea
calcular el promedio o una expresión que realiza un cálculo utilizando los
datos de dicho campo.
46. Funciones agregadas
• MAX y MIN
• Devuelven el mínimo o el máximo de un conjunto de valores
contenidos en un campo específico de una consulta.
• Sintaxis:
46
MIN(expresion)
MAX(expresion)
* Expresion: campo sobre el que se desea realizar el
cálculo. Puede incluir el nombre de un campo de una
tabla, una constante o una función (no funciones
agregadas de SQL).
47. Funciones agregadas
• GROUP BY
• Combina los registros con valores idénticos, en la lista de
campos especificados, en un único registro. Para cada registro
se crea un valor si se incluye una función SQL agregada, como
por ejemplo SUM o COUNT, en la instrucción SELECT.
• Sintaxis:
47
SELECT campos FROM tabla WHERE criterio
GROUP BY campos_del_grupo
48. Funciones agregadas
• HAVING
• HAVING es similar a WHERE, determina qué registros se
seleccionan.
• Una vez que los registros se han agrupado utilizando GROUP
BY, HAVING determina cuales de ellos se van a mostrar.
• Sintaxis:
48
SELECT Id_Familia, SUM(Stock) FROM Productos
GROUP BY Id_Familia
HAVING SUM(Stock) > 100
AND NombreProducto LIKE ’BOS%’
50. Funciones de fecha
• getdate()
• DATENAME:(datepart , date)
Devuelve una cadena de caracteres que representa el datepart
especificado de la fecha especificada.
• DATEPART (datepart , date)
Devuelve un entero que representa el datepart especificado del date
especificado.
• DAY (date)
Devuelve un entero que representa la parte del día de date especificado.
• MONTH (date)
Devuelve un entero que representa la parte del mes de un date
especificado.
• YEAR (date)
Devuelve un entero que representa la parte del año de un date
especificado.
51. • DATEDIFF (datepart , startdate , enddate)
Devuelve el número (int) de límites datepart de fecha y hora entre dos fechas
especificadas.
SELECT DATEDIFF(YEAR,hire_date,GETDATE()) FROM employee
• DATEADD (datepart , number , date)
Devuelve un nuevo valor datetime agregando un intervalo al datepart del date
especificado.
El tipo de datos del argumento date.
• ISDATE (expression)
Determina si una expresión de entrada date es un valor de fecha.
52. 52
Ejercicios
• Calcular la edad de los alumnos
• Número de alumnos por lugar de nacimiento
• Promedio de calificaciones por alumno
53. Vistas
• Tiene un comportamiento similar al de una tabla base, excepto
en las limitaciones de actualización.
• Sintaxis
53
CREATE [OR REPLACE]
VIEW <vista> [(columna1, ..., columna n)]
AS <Sentencia SQL>
54. • Una vista es un tipo especial de tabla en la que sus datos se
derivan de otras tablas, mediante la evaluación dinámica de
una consulta.
• Elementos
– Nombre: único en el esquema relacional.
– Atributos: forman las columnas de la vista
– Definición: consiste en una sentencia SELECT sobre otras tablas o vistas.
Vistas (VIEW)
55. Vistas
• Tiene un comportamiento similar al de una tabla base, excepto
en las limitaciones de actualización.
• Sintaxis
CREATE [OR REPLACE] VIEW <vista> [(columna1, ..., columna n)]
AS <Sentencia SQL>
56. Stored Procedures
• Por medio de procedimientos almacenados, Stored Procedures (SP), el
sistema de base de datos es capaz de ejecutar un conjunto de instrucciones
coordinadas entre sí que afectan la información con el fin de lograr un
objetivo dentro del sistema. Los procedimientos se asemejan a
construcciones en otros lenguajes de programación porque pueden:
– Aceptar parámetros de entrada y devolver múltiples valores en forma
de parámetros de salida al programa de llamada.
– Contiene enunciados de programación que realizan operaciones en la
base de datos. Estos incluyen llamar a otros procedimientos.
– Devuelva un valor de estado a un programa de llamada para indicar el
éxito o el fracaso (y el motivo del error).
57. Stored Procedures
Algunos beneficios del uso de procedimientos.
• Reducción del tráfico del servidor / red del cliente.
Los comandos en un procedimiento se ejecutan como un único lote de código. Esto
puede reducir significativamente el tráfico de red entre el servidor y el cliente
porque solo la llamada para ejecutar el procedimiento se envía a través de la red. Sin
la encapsulación de códigos provista por un procedimiento, cada línea individual de
código tendría que cruzar la red.
• Mayor seguridad
Varios usuarios y programas clientes pueden realizar operaciones en objetos de base
de datos subyacentes a través de un procedimiento, incluso si los usuarios y
programas no tienen permisos directos sobre esos objetos subyacentes. El
procedimiento controla qué procesos y actividades se realizan y protege los objetos
de base de datos subyacentes. Esto elimina el requisito de otorgar permisos a nivel
de objeto individual y simplifica las capas de seguridad.
58. Stored Procedures
CREATE [ OR ALTER]PROCEDURE procedure_name
@parameter data_type
AS BEGIN <sql_statement> END
;
EXECUTE PROCEDURE_NAME
EXEC
59. FUNCTION
Una función definida por el usuario es una rutina de SQL
que acepta parámetros, realiza una acción, como un cálculo
complejo, y devuelve el resultado de esa acción como un
valor.
El valor devuelto por una función puede ser un valor escalar
(único) o una tabla.
60. FUNCTION
Sintaxis para funciones escalares:
CREATE FUNCTION [ schema_name. ] function_name
(@parameter_name parameter_data_type, . . . n)
RETURNS return_data_type
AS
BEGIN
function_body
RETURN scalar_expression
END;
61. FUNCTION
Ejemplo: Función que devuelve un valor escalar
CREATE FUNCTION dbo.ordenesEmpleado
(@employeeID int)
RETURNS int
AS
BEGIN
DECLARE @orders int;
SELECT @orders = (
SELECT COUNT(orderID)
FROM Orders
WHERE employeeID = @employeeID
);
RETURN @orders;
END;
62. FUNCTION
Sintaxis para funciones que devuelven una tabla:
CREATE FUNCTION [ schema_name. ]
function_name
(@parameter_name parameter_data_type, . . . n)
RETURNS TABLE
AS
RETURN ( select_stmt )
;
63. Disparador o Desencadenador
(Trigger)
• Es un tipo de procedimiento almacenado que se
ejecuta cuando se intenta modificar los datos de
una tabla (o vista).
• Un trigger se asocia a un evento (inserción,
actualización o borrado) sobre una tabla.
• La diferencia con los procedimientos almacenados
del sistema es que los triggers:
- no pueden ser invocados directamente; al intentar
modificar los datos de una tabla para la que se ha
definido un disparador, el disparador se ejecuta
automáticamente.
- no reciben y retornan parámetros.
- son apropiados para mantener la integridad de los
datos, no para obtener resultados de consultas.
64. Sintaxis:
create trigger NOMBREDISPARADOR
on NOMBRETABLA o vista
for | after -- son equivalentes, momento del disparo
Accion -- insert, update o delete
as SENTENCIAS
create trigger NOMBREDISPARADOR
on NOMBRETABLA o vista
after o instead of -- momento de disparo
Accion -- insert, update o delete
as SENTENCIAS
Disparador o Desencadenador
(Trigger)