Académique Documents
Professionnel Documents
Culture Documents
Pg. 1 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
CONSULTAS AVANZADAS................................................................... 10
4.1 4.2 4.3 4.4
6 7
Pg. 2 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
Un plan de ejecucin de una consulta es un programa a bajo nivel, generado por el subsistema de proceso de consultas del SGBD relacional. Este plan de acceso contiene el mtodo de acceso a los datos en funcin de la situacin del esquema de la base de datos(esquema interno, donde figuran detalles de ndices, direccionamiento, etc.) y su volumetra (volmenes de datos de las tablas en la base de datos)..
Pg. 3 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
1979 1980 1981 1982 1986 1987 1989 1989 1990 1990 1992 1995 1999
Oracle Ingres SQL DB2 SQL/ ANS SQL ISO (9075) SQL Addendum Manifiesto de los SGBO Modelo Relacional Versin 2 Manifiesto de los SGBO- 3G SQL 92 3er Manifiesto SQL 3
P O S T R E L A C I O N A L
b)
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
c) Los tipos de datos de cadena de bit tienen longitud fija n (BIT(n)) o (BIT VARYING (n)). d) SQL2 cuenta con nuevos tipos de datos para fecha y hora DATE y TIME. Ej. CREATE DOMAIN importes AS DECIMAL(9,4);
3 Consultas simples
La sentencia bsica para recuperar informacin en SQL es la sentencia SELECT. SELECT <lista de atributos> FROM <lista de tablas> WHERE <condicin>
Productos pid P1 P2 P3 P10 P11 pdesc Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 ppeso 27 30 35 12 10 pprecio 56000 78000 97000 112000 142000 pdesc Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 pid P1 P2 P3 P10 P11
a)
b) Piezas (todos los atributos) de peso mayor o igual a 30. pid SELECT * P2 FROM Productos P3 WHERE ppeso 30;
ppeso 30 35
Pg. 5 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
ppeso 27 30 35 12 10
SELECT AE.aid, acant FROM AExistencias AE, Productos P WHERE AE.pid = P.pid AND pdesc = Televisor M2;
AE.aid A2 A4
3.2 EXISTS
La funcin EXISTS sirve para comprobar si el resultado de una consulta anidada contiene tuplas. Rescribiendo la expresin anterior: a) Cdigos de los almacenes que tienen existencias del producto Televisor M2 y cantidad que tienen en stock. SELECT aid, acant FROM AExistencias AE WHERE EXISTS ( SELECT * FROM Productos P WHERE P.pid = AE.pid AND pdesc = Televisor M2 ) ; b) Cdigos de los almacenes que no tienen existencias de productos. SELECT aid FROM Almacenes A WHERE NOT EXISTS ( SELECT * FROM Aexistencias AE WHERE AE.aid = A.aid ) ;
3.3 IN
El operador de comparacin IN permite comparar un valor individual v (generalmente un nombre de atributo) con un conjunto de valores V (generalmente una consulta anidada). Devuelve TRUE si v es uno de los elementos de V. Pg. 6 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
Es posible rescribirla la consulta anterior utilizando el operador de comparacin IN. a) Cdigos de los almacenes que tienen existencias del producto Televisor M2 y cantidad que tienen en stock. SELECT aid, acant FROM AExistencias WHERE pid IN ( SELECT pid FROM Productos WHERE pdesc = Televisor M2 ) ; Tambin es posible utilizar IN con un conjunto explcito de valores: b) Cdigo y peso de los productos cuyo peso sea 10, 12 o 27
ppid P1 P10 P11 ppeso 27 12 10
SELECT ppid, ppeso FROM Productos WHERE ppeso IN (10, 12, 27) ;
SELECT aid, acant FROM AExistencias WHERE pid =ANY ( SELECT pid FROM Productos WHERE pdesc = Televisor M2 ) ; El operador =ALL devuelve TRUE si el valor de v es igual a todos los valores del conjunto V. Otros operadores que se pueden utilizar con ANY y con ALL son >, >=, <, <= y <>. El operador >ALL devuelve TRUE si el valor de v es mayor que todos los valores del conjunto V. b) Descripcin de los productos de precio superior a todos los productos que tiene el almacen A2.
SELECT pdesc FROM Productos WHERE pprecio > ALL ( SELECT pprecio FROM Productos P, Aexistencias AE WHERE P.pid = AE.pid AND aid = A2 ) ; Pg. 7 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
3.5 BETWEEN
c) Cdigo y peso de los productos cuyo peso est entre 10 y 27. SELECT ppid, ppeso FROM Productos WHERE ppeso BETWEEN 10 AND 27;
ppid P1 P10 P11 ppeso 27 12 10
Almacenes aid Adir A2 C/. Baja, 4 A3 Poligono Calonge, N12/a A4 P.I. Armilla, A-45
SELECT DISTINCT A.aid, aloc FROM AExistencias AE, Almacenes A WHERE AE.aid = A.aid;
aid A2 A3 A4
TOP2. Limita el nmero de filas. SELECT TOP N <lista de atributos> limita el nmero de filas a mostrar a N. b) En la consulta anterior obtener slo las dos primeras filas.
SELECT DISTINCT TOP 2 A.aid, aloc FROM AExistencias AE, Almacenes A WHERE AE.aid = A.aid;
aid A2 A3 Aloc Alcal de Guadaira Sevilla
Pg. 8 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
SELECT aid, pid, acant FROM AExistencias WHERE acant BETWEEN 200 AND 2000 ORDER BY aid, acant DESC;
aid A2 A2 A4 A4 A4
Pg. 9 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
4 Consultas avanzadas
4.1 JOIN NATURAL y OUTER JOIN
a) Cdigo de almacn, cdigo y descripcin del producto y cantidad en stock.
acant 156 1234 69 120 345 5000 200 956 134 120 542 AExistencias aid pid A2 P1 A2 P2 A2 P3 A2 P10 A2 P11 A3 P3 A4 P1 A4 P2 A4 P3 A4 P10 A4 P11
Productos pid pdesc P1 Televisor M1 P2 Televisor M2 P3 Televisor M3 P10 Mini TK67 P11 Mini TK68
ppeso 27 30 35 12 10
SELECT aid, AE.pid, pdesc, acant FROM AExistencias AE, Productos P WHERE AE.pid = P.pid; Se puede especificar primero la reunin de las relaciones AExistencias y Productos y seleccionar luego los atributos y tuplas deseadas. La consulta quedara: SELECT aid, AE.pid, pdesc, acant FROM ( AExistencias AS AE JOIN Productos AS P ON AE.pid = P.pid ); (JOIN es equivalente a INNER JOIN) El resultado ser:
Aid A2 A2 A2 A2 A2 A3 A4 A4 A4 A4 A4 AE.pid P1 P2 P3 P10 P11 P3 P1 P2 P3 P10 P11 pdesc Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 Televisor M3 Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 acant 156 1234 69 120 345 5000 200 956 134 120 542
Pg. 10 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
La consulta: SELECT aid, AE.pid, pdesc, acant FROM ( AExistencias AS AE JOIN Productos AS P ON AE.pid = P.pid ); Devuelve el mismo resultado anterior. No se visualiza la tupla nueva ya que no tiene correspondencia en la tabla AExistencias. Para que aparezca dicha tupla se utiliza el join externo por la derecha. SELECT aid, AE.pid, pdesc, acant FROM ( AExistencias AS AE RIGHT JOIN Productos AS P ON AE.pid = P.pid ); El resultado ser:
aid A2 A2 A2 A2 A2 A3 A4 A4 A4 A4 A4 AE.pid P1 P2 P3 P10 P11 P3 P1 P2 P3 P10 P11 pdesc Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 Televisor M3 Televisor M1 Televisor M2 Televisor M3 Mini TK67 Mini TK68 Equipo Nuevo acant 156 1234 69 120 345 5000 200 956 134 120 542
(RIGHT JOIN es equivalente a RIGHT OUTER JOIN) De igual forma para obtener las tuplas de AExistencias que no tengan correspondencias en Productos se utilizara el LEFT JOIN (LEFT JOIN es equivalente a LEFT OUTER JOIN)
Pg. 11 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
b)
aid A2 A2 A2 A2 A2 A3 A4 A4 A4 A4 A4
Calcular la suma de las cantidades, la cantidad mxima, la mnima, la media y contar todos los productos que existen en stock.
pid P1 P2 P3 P10 P11 P3 P1 P2 P3 P10 P11 Acant 156 1234 69 120 345 5000 200 956 134 120 542
c) Contar los productos de los que haya existencia en algn almacn. COUNT (*) SELECT COUNT (DISTINCT pid) 5 FROM AExistencias ;
4.3 GROUP BY
Cuando se quiera aplicar las funciones agregadas a subgrupos de tuplas de una relacin agruparemos las tuplas que tienen el mismo valor para ciertos atributos. Los llamaremos atributos de agrupacin y podremos aplicar las funciones a cada uno de dichos grupos. Para especificar los atributos de agrupacin se utiliza la clusula GROUP BY. Los atributos de agrupacin pueden aparecer en la clusula SELECT. a)
aid A2 A2 A2 A2 A2 A3 A4 A4 A4 A4 A4
Pg. 12 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
HAVING HAVING especifica una condicin sobre el grupo de tuplas asociado a cada valor de los atributos de agrupacin (clases de equivalencia). Slo los grupos que cumplan la condicin entrarn en el resultado de la consulta. b) Para las tiendas que hayan hecho ms de un pedido al mismo almacn calcular la cantidad total pedida. Pedidos
pdid PD10 PD20 PD30 PD40 PD50 PD60 PD70 tid T1 T1 T2 T2 T4 T4 T4 aid A2 A2 A2 A4 A2 A4 A2 pid P1 P2 P10 P11 P10 P11 P11 cant 100 150 50 70 80 25 40 fecha 10/12/03 12/12/03 14/12/03 11/12/03 10/12/03 13/12/03 14/12/03
SELECT tid, aid, SUM(acant) FROM Pedidos GROUP BY aid, tid HAVING COUNT(*) > 1;
tid T1 T4 A2 A2
aid
4.4 EJEMPLO
a)
Almacn con mayor nmero de productos. Utilizando ALL SELECT AE.aid, Sum(AE.acant) FROM AE GROUP BY AE.aid HAVING Sum(AE.acant) >= ALL (SELECT Sum(AE.acant) FROM AE GROUP BY AE.aid); Utilizando TOP SELECT AE.aid, Sum(AE.acant) FROM AE GROUP BY AE.aid HAVING Sum(AE.acant) =
Mediante SELECT anidados SELECT AE.aid, sum(AE.acant) FROM AE GROUP BY AE.aid HAVING sum(acant) = ( SELECT Max(total) FROM ( SELECT Sum(Sx.acant) as total FROM AE GROUP BY AE.aid ) );
Pg. 13 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
Actualizacin de datos
5.1 INSERT
Sirve para aadir tuplas a la BD INSERT INTO Productos VALUES (P20, Cadena A100, 20,200); Se pueden aadir mltiples filas utilizando la clasula SELECT. INSERT INTO SELECT FROM WHERE ProductoPedidos (Pid, Nombre, Precio) Pid, Pdesc, Pprecio Productos pprecio >30;
5.2 DELETE
Elimina tuplas de una relacin. La eliminacin puede propagarse a tuplas de otras relaciones si tal accin est especificada en las restricciones de integridad referencial. DELETE FROM Productos WHERE pprecio >30;
5.3 UPDATE
Modifica los valores de los atributos. UPDATE Productos SET pprecio = 200 WHERE pid = P1; UPDATE SET WHERE Productos pprecio = pprecio * 1.2 pid IN (SELECT pid FROM pedidos) ;
6 Vistas
Una vista es una estructura tabular derivada de otras tablas. Una vista no se materializa en SQL; se genera en el momento de su ejecucin. CREATE VIEW Producto_pedido AS SELECT PD.pdid, PD.pid, P.pdesc, PD.cantidad FROM productos P, pedidos PD WHERE P.pid = PD.pid;
Pg. 14 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
7 Sintaxis SQL-2
7.1 Introduccin
Se presenta un resumen de la sintaxis de SQL segn el estndar ISO 9075 (SQL-92),dividido en: - Lenguaje de Definicin de Datos (LDD), - Lenguaje de Manipulacin de Datos (LMD), y - Lenguaje de Administracin de Datos (LAD). La nomenclatura utilizada es una extensin de la Forma Normal de Backus (BNF) siendo: <> representa los smbolos no terminales del lenguaje ::= es el operador de definicin [] indica elementos opcionales {} agrupa elementos en una frmula | indica una alternativa ... indica repeticin:
Pg. 15 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
<tiempo de verificacin de restriccin> ::= INITIALLY DEFERRED | INITIALLY INMEDIATE <definicin de tabla> ::= CREATE [ {GLOBAL|LOCAL} TEMPORARY ] TABLE <nombre de tabla> <lista de elementos de tabla> <lista de elementos de tabla> ::= <parntesis izq.> <elemento de tabla> [{<coma> <elemento de tabla>} ... ] <parntesisdcho.> <elemento de tabla> ::= <definicin de columna> | <definicin de restriccin de tabla> <definicin de columna> ::= <nombre de columna> { <tipo de datos> | <nombre de dominio>} [ <clasula de defecto> ] [ <definicin de restriccin de columna> .... ] <definicin de restriccin de columna> ::= [ <definicin de nombre de restriccin> ] <restriccin de columna> [ <atributos de restriccin> ] <restriccin de columna> ::= NOT NULL | <especificacin de unicidad> | <especificacin de referencia> | <definicin de restriccin de verificacin> <definicin de restriccin de tabla> ::= [ <nombre de definicin de restriccin> ] <restriccin de tabla> [ <atributos de restriccin> ] <restriccin de tabla> ::= <definicin de restriccin de unicidad> | <definicin de restriccin referencial> | <definicin de restriccin de verificacin> <definicin de restriccin de unicidad> ::= <especificacin de unicidad> <parent. izq.> <lista de columnas nicas> <parent. dcho.> <especificacin de unicidad> ::= UNIQUE | PRIMARY KEY <lista de columnas nicas> ::= <lista de nombre de columnas> <definicin de restriccin referencial> ::= FOREIGN KEY <parent. izq.> <columnas que ref.> <parent. dcho.> <especificacin de la referencia> <especificacin de la referencia> ::= REFERENCES <columnas y tabla referenciadas> [ <accin referencial disparada> ] <columnas que ref.> ::= <lista de columnas de referencia> <columnas y tabla referenciadas> ::= <nombre de tabla> [ <parent. izq.> <lista de columnas de referencia> <parent. dcho.> ] <lista de columnas de referencia> ::= <lista de nombres de columnas> <accin referencial disparada> ::= <regla de modificacin> [ <regla de borrado> ] | <regla de borrado> [regla de modificacin] <regla de modificacin> ::= ON UPDATE <accin referencial> <regla de borrado> ::= ON DELETE <accin referencial>
Pg. 16 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
<accin referencial> ::= CASCADE | SET NULL | SET DEFAULT <definicin de vista> ::= CREATE VIEW <nombre de tabla> [ <parent. izq.> <lista de columnas de vista> <parent. dcho.>] AS <expresin de consulta> [ WITH CHECK OPTION ] <lista de columnas de vista> ::= <lista de nombres de columnas> <definicin de asercin> ::= CREATE ASSERTION <nombre de restriccin> <verificacin de asercin> [ <atributos de restriccin> ] <verificacin de asercin> ::= CHECK <parent. izq.> <condicin de bsqueda> <parent. dcho.>
Pg. 17 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
| <subconsulta de fila> <lista de constructores de valor de fila> ::= <elemento constructor de valor de fila> [ {<coma> <elemento constructor de valor de fila>} ... ] <elemento constructor de valor de fila> ::= <expresin de valor> | <especificacin de nulos> | DEFAULT <especificacin de nulos> ::= NULL <subconsulta de fila> ::= <subconsulta> <subconsulta> ::= <parent. izq.> <expresin de consulta> <parent. dcho.> <especificacin de consulta> ::= SELECT [<cuantificador de conjunto>] <lista de consulta> <expresin de tabla> <lista de consulta> ::= <asterisco> | <sublista de consulta> [{<coma> <sublista de consulta>} ...] <sublista de consulta> ::= <columna derivada> | <calificador> <punto> <asterisco> <columna derivada> ::= <expresin de valor> [<clusula as>] <clusula as> ::= [AS] <nombre de columna> <cuantificador de conjunto> ::= DISTINCT | ALL <expresin de tabla> ::= <clusula from> [ <clusula where> ] [ <clusula group by> ] [ <clusula having>] <clusula from> ::= FROM <referencia a tabla> [ { <coma> <referencia a tabla> } ... ] <referencia a tabla> ::= <nombre de tabla> [ [AS] <nombre de correlacin> [<parent. izq.> <lista de columnas derivadas> <parent. dcho.]] | <tabla derivada> [AS] <nombre de correlacin> [<parent. izq.> <lista de columnas derivadas> <parent. dcho.] | <tabla combinada> <tabla derivada> ::= <subconsulta de tabla> <lista de columnas derivadas> ::= <lista de nombres de columnas> <lista de nombres de columnas> ::= <nombre de columna> [ { <coma> <nombre de columna> } ... ] <nombre de correlacin> ::= <identificador> <calificador> ::= <nombre de tabla> | <nombre de correlacin> <tabla combinada> ::= <combinacin cruzada> | <combinacin calificada> | <parent. izq.> <tabla combinada> <parent. dcho.> <combinacin cruzada> ::= <referencia a tabla> CROSS JOIN <referencia a tabla> <combinacin calificada> ::= <referencia a tabla> [NATURAL] [<tipo de combinacin>] JOIN <referencia a tabla> [<especificacin de combinacin>] <especificacin de combinacin> ::= <condicin de combinacin> | <combinacin de columnas nominadas>
Pg. 18 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
<condicin de combinacin> ::= ON <condicin de bsqueda> <combinacin de columnas nominadas> ::= USING <parent. izq.> <lista de columnas de combinacin> <parent. dcho.> <tipo de combinacin> ::= INNER | <tipo de combinacin externa> [OUTER] | UNION <tipo de combinacin externa> ::= LEFT | RIGHT | FULL <lista de columnas de combinacin> ::= <lista de nombres de columnas> <clusula where> ::= WHERE <condicin de bsqueda> <clusula group by> ::= GROUP BY <lista de referencias a columna de agrupamiento> <lista de referencias a columna de agrupamiento> ::= <referencia a columna de agrupamiento>[{<coma><referencia a columnas de agrupamiento>}...] <referencia a columna de agrupamiento> ::= <referencia a columnas> <referencias a columnas> ::= [ <calificador> <punto> ] <nombre de columnna> <clusula having> ::= HAVING <condicin de bsqueda> <condicin de bsqueda> ::= <trmino booleano> | <condicin de bsqueda> OR <trmino booleano> <trmino booleano> ::= <factor booleano> | <factor booleano> AND <factor booleano> <factor booleano> ::= [ NOT ] <test booleano> <test booleano> ::= <primario booleano> [ IS [ NOT ] <valor lgico> ] <valor lgico> ::= TRUE | FALSE | UNKNOWN <primario booleano> ::= <predicado> | <parent. izq.> <condicin de bsqueda> <parent. dcho.> <predicado> ::= <predicado de comparacin> | <predicado entre> | <predicado en> | <predicado parece> | <predicado de nulidad> | <predicado de comparacin cuantificada> | <predicado existe> | <predicado de unicidad> | <predicado de concordancia> | <predicado de solapamiento> <predicado de comparacin> ::= <constructor de valor de fila> <operacin de comparacin> <constructor de valor de fila> <predicado entre> ::= <constructor de valor de fila> ::= [ NOT ] BETWEEN
Pg. 19 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
<constructor de valor de fila> AND <constructor de valor de fila> <predicado en> ::= <constructor de valor de fila> [ NOT ] IN <valor de predicado en> <valor de predicado en> ::= <subconsulta de tabla> | <parent. izq.> <lista de valores en> <parent. dcho.> <lista de valores en> ::= <expresin de valor> { <coma> <expresin de valor> } ... <predicado parece> ::= valor de concordancia> [ NOT ] LIKE <patrn> <valor de concordancia> ::= <expresin de valores caracter> <patrn> ::= <expresin de valores caracter> <predicado de nulidad> ::= constructor de valor de fila> IS [ NOT ] NULL <predicado de comparacin cuantificada> ::= constructor de valor de fila> <operacin de comparacin> <cuantificador> <subconsulta de tabla> <cuantificador> ::= <todos> | <algunos> <todos> ::= ALL <algunos> ::= SOME | ANY <predicado existe> ::= EXISTS <subconsulta de tabla> <predicado de unicidad> ::= UNIQUE <subconsulta de tabla> <predicado de concordancia> ::= <constructor de valor de fila>MATCH[ UNIQUE ][ PARTIAL | FULL]<subconsulta de tabla> <predicado de solapamiento> ::= <constructor de valor de fila 1> OVERLAPS <constructor de valor de fila 2> <constructor de valor de fila 1> ::= <constructor de valor de fila> <constructor de valor de fila 2> ::= <constructor de valor de fila> Otras sentencias de manipulacin de datos son las siguientes: <sentencia de borrado: con bsqueda> ::= DELETE FROM <nombre de tabla> [WHERE <condicin de bsqueda>] <sentencia de insercin> ::= INSERT INTO <nombre de tabla> <fuente y columnas de insercin> <fuente y columnas de insercin> ::= [ <parent. izq.> <lista de columnas de insercin> <parent. dcho.>] <expresin de consulta> | DEFAULT VALUES <lista de columnas de insercin> ::= <lista de nombres de columnas> <sentencia de modificacin: con bsqueda> ::= UPDATE <nombre de tabla> SET <lista de clusula de conjunto> [WHERE <condicin de bsqueda>] <lista de clusula de conjunto> ::= <clusula de conjunto> [ {<coma> <clusula de conjunto>}...] <clusula de conjunto> ::= <nombre de columna> <operador igual> <fuente de modificacin> <fuente de modificacin> ::= <expresin de valor> | <especificacin de nulos> | DEFAULT
Pg. 20 de 21
Bases de Datos
Sevilla, octubre 2007, V 2007.10.1
SQL
Lenguaje de Administracin de Datos <sentencia de concesin> ::= GRANT <privilegios> ON <nombre de objeto> TO <concedido> [{<coma> <concedido> } ... ] [WITH GRANT OPTION] <nombre de objeto> ::= [ TABLE ] <nombre de tabla> | DOMAIN <nombre de dominio> <sentencia de revocacin> ::= REVOKE [GRANT OPTION FOR ] <privilegios> ON <nombre de objeto> FROM <concedido> [ { <coma> <concedido> } ... ] <comportamiento al borrar> <privilegios> ::= ALL PRIVILEGES | <lista de acciones> <lista de acciones> ::= <accin> [ { <coma> <accin> } ... ] <accin> ::= SELECT | DELETE | INSERT [ <parent. izq.> <lista de nombres de columnas> <parent. dcho.> ] | UPDATE [ <parent. izq.> <lista de nombres de columnas> <parent. dcho.> ] | REFERENCES[ <parent.izq.> <lista de nombresdecolumnas> <parent. dcho.> ] | USAGE <concedido> ::= PUBLIC | <id. de autorizacin de usuario> Anotaciones:
1.- Relativas al <tipo de datos> a) En SQL-92, adems de los tipos de datos del SQL-89 (INTEGER, SMALLINT,CHARACTER, DECIMAL, NUMERIC, REAL, FLOAT y DOUBLE PRECISION) tambin se admiten los siguientes: CHARACTER VARYING, DATE, TIME, BIT, TIMESTAMP,INTERVAL y BIT VARYING. b) Los tipos BIT y BIT VARYING contienen bits pero no son interpretados por el SGBD; INTERVAL expresa la diferencia entre fechas u horas; y TIMESTAMP contiene ao, mes, da, hora, minutos, segundos y, opcionalmente, fracciones de segundo. 2.- Relativas a <expresin de valor> a) Una <expresin de valor> es cualquier expresin que d como resultado un valor numrico,carcter, hora, fecha o intervalo. Puede ser tan simple como un dgito o tan complejo como una subconsulta. 3.- Relativas a la <definicin de restriccin referencial> a) Si <columnas y tabla referenciada> especifica una <lista de columnas de referencia>, sta debe ser idntica a una <lista de columnas nicas> en una <definicin de restriccin de unicidad> de la tabla referenciada. Se puede establecer una restriccin referencial con conjuntos de columnas nicas sin que sean necesariamente la clave primaria. En caso de no especificar la <lista de columnas referencia> se entender que referencia a la clave primaria. b) En caso de no especificar la <accin referencial disparada> se considera que sta es restringida. c) Las propuestas del estndar son ms completas, incluyendo otros aspectos de las restricciones de integridad referencial como el tipo de concordancia (si todos los valores de la columnas que referencian pueden ser nulos o no nulos o ambas cosas) y el modo de restriccin (diferida, si se verifica al finalizar la transaccin o inmediata, si se efecta al finalizar cada sentencia). 4.- Relativas a la <operacin de comparacin>.Las operaciones de comparacin son las usuales: =, >, <, >=, <=, <> . 5.- Relativas a la dinmica. Existen adems operaciones relacionadas con manejo de cursores.
Pg. 21 de 21