9/ /4,:.(;4 012 4- ,+ #)+547%&4,$(/< 4- 745%)< 4, /(- -4,$4,5%(- -4 %,7%5( =.4 =.4)4&+- 5+,-4:.%) > ,+ 5+&+ /+ $%4,4 =.4 ?(54) 4/ %,$4)#)4$4 #()( 5+,-4:.%)/+@ 9-$+ 4- #.)( $4+)A(< #.4- 4, /( #)B5$%5( ( $+7+- /+- :4-$+)4- 74 012 ?(> =.4 4-#45%C%5() -.- #)+#%+- $).=.%$+- #()( +#$%&%'() 4/ )4,7%&%4,$+@ D+) $(,$+< &.5?(- E454- ,+ F(-$( 5+, 4-#45%C%5() .,( -4,$4,5%( 012 5+))45$(< -%,+ =.4 (74&B-< ?(> =.4 %,7%5()/4 5+&+ $%4,4 =.4 ?(54)/+ -% =.4)4&+- =.4 4/ $%4+ 74 )4-#.4-$( -4( 4/ &A,%&+@ 9, 4-$4 (#()$(7+ E4)4&+- 5+&+ &4;+)() 4/ $%4+ 74 )4-#.4-$( 74 ,.4-$)+ %,$4)#)4$4 (,$4 .,(- 74$4)&%,(7(- -%$.(5%+,4-G
•
•
•
•
Normaliza las tablas, al menos hasta la tercera forma normal, para asegurar que no hay duplicidad de datos y se aprovecha al máximo el almacenamiento en las tablas. Si hay que desnormalizar alguna tabla piensa en la ocupación y en el rendimiento antes de proceder. Los primeros campos de cada tabla deben ser aquellos campos requeridos y dentro de los requeridos primero se definen los de longitud fija y después los de longitud variable. Ajusta al máximo el tamaño de los campos para no desperdiciar espacio. Es muy habitual dejar un campo de texto para observaciones en las tablas. Si este campo se va a utilizar con poca frecuencia o si se ha definido con gran tamaño, por si acaso, es mejor crear una nueva tabla que contenga la clave primaria de la primera y el campo para observaciones.
2+- A,7%54- -+, 5(+- 4/4:%7+- ()F%$)()%(&4,$4 #+) 4/ 5+,-$).5$+) 74 /( F(-4 74 7($+- =.4 #4)&%$4, /( FK-=.47( ( #()$%) 74 7%5?+ 5(+ ( .,( E4/+5%7(7 ,+$(F/4&4,$4 -.#4)%+)@ 0%, 4&F():+< 4-$( E4,$(;( -4 E4 5+,$)())4-$(7( #+) 4/
?45?+ 74 +5.#() &.5?( &B- &4&+)%( L4/ 7+F/4 &B- + &4,+-M > 74 )4=.4)%) #()( -. %,-4)5%8, > (5$.(/%'(5%8, ., $%4+ 74 #)+54-+ -.#4)%+)@ 9E%74,$4&4,$4< ,+ #+74&+- %,74N() $+7+- /+- 5(+- 74 .,( $(F/( 4N$4,-( >( =.4 7+F/(&+- 4/ $(&(I+ 74 /( F(-4 74 7($+-@ 6:.(/&4,$4< $(+5+ -%)E4 74 &.5?+ 4/ %,74N() $+7+- /+- 5(+- 4, .,( $(F/( #4=.4I( >( =.4 /(-4/455%+,4- #.474, 4C45$.()-4 )B#%7(&4,$4 74 $+7+- &+7+-@ O, 5(-+ 4, 4/ =.4 /+- A,7%54- #.474, )4-./$() &.> K$%/4- 4- 5.(,7+ )4(/%'(&+#4$%5%+,4- -%&./$B,4(- -+F)4 E()%(- $(F/(-@ 9, 4-$4 5(-+< 4/ #)+54-+ 74 -4/455%8, #.474 (54/4)()-4 -4,-%F/4&4,$4 -% %,74N(&+- /+- 5(+- =.4 -%)E4, 74 ,4N+ 4,$)4 /(- 7+- $(F/(-@ 2+- A,7%54- #.474, )4-./$() 5+,$)(#)+7.54,$4- -% /+- %,$)+7.5%&+- -+F)4 5(+- $)%E%(/4- ( #()$%) 74 /+- 5.(/4- ,+ -4 )4(/%'( ,%,:K, $%#+ 74 #4$%5%8, >( =.4< (74&B- 74/ #)+F/4&( 74 &4&+)%( >( &4,5%+,(7+< 4-$(&+- )(/4,$%'(,7+ +$)(- $()4(- 74 /( F(-4 74 7($+- 5+&+ -+, /( 47%5%8,< %,-4)5%8, > F+))(7+@ 9#+) 4//+ =.4 E(/4 /( #4,( #4,-()-4/+ 7+- E454- (,$4- 74 %,74N() ., 5(+ =.4 ,+ -%)E4 74 5)%$4)%+ #()( FK-=.47(- + =.4 4- .-(7+ 5+, &.> #+5( C)45.4,5%( #+) )('+,4- 74 &(,$4,%&%4,$+@
•
•
•
•
•
•
•
En la medida de lo posible hay que evitar que las sentencias SQL estén embebidas dentro del código de la aplicación. Es mucho más eficaz usar vistas o procedimientos almacenados por que el gestor los guarda compilados. Si se trata de una sentencia embebida el gestor debe compilarla antes de ejecutarla. Seleccionar exclusivamente aquellos que se necesiten No utilizar nunca SELECT * por que el gestor debe leer primero la estructura de la tabla antes de ejecutar la sentencia Si utilizas varias tablas en la consulta especifica siempre a que tabla pertenece cada campo, le ahorras al gestor el tiempo de localizar a que tabla pertenece el campo. En lugar de SELECT Nombre, Factura FROM Clientes, Facturacion WHERE IdCliente = IdClienteFacturado, usa: SELECT Clientes.Nombre, Facturacion.Factura WHERE Clientes.IdCliente = Facturacion.IdClienteFacturado.
Se procurará elegir en la cláusula WHERE aquellos campos que formen parte de la clave del fichero por el cual interrogamos. Además se especificarán en el mismo orden en el que estén definidos en la clave. Interrogar siempre por campos que sean clave. Si deseamos interrogar por campos pertenecientes a indices compuestos es mejor utilizar todos los campos de todos los indices. Supo ngamos que tenemos un
índice formado por el campo NOMBRE y el campo APELLIDO y otro índice formado por el campo EDAD. La sentencia WHERE NOMBRE='Juan' AND APELLIDO Like '%' AND EDAD = 20 sería más optima que WHERE NOMBRE = 'Juan' AND EDAD = 20 por que el gestor, en este segundo caso, no puede usar el primer índice y ambas sentencias son equivalentes por que la condición APELLIDO Like '%' devolvería todos los registros.
•
Cuando se utilizan varias tablas dentro de la consulta hay que tener cuidado con el orden empleado en la clausula FROM. Si deseamos saber cuantos alumnos se matricularon en el año 1996 y escribimos: FROM Alumnos, Matriculas WHERE Alumno.IdAlumno = Matriculas.IdAlumno AND Matriculas.Año = 1996 el gestor recorrerá todos los alumnos para buscar sus matriculas y devolver las correspondientes. Si escribimos FROM Matriculas, Alumnos WHERE Matriculas.Año = 1996 AND Matriculas.IdAlumno = Alumnos.IdAlumnos, el gestor filtra las matrículas y después selecciona los alumnos, de esta forma tiene que recorrer menos registros.
9/ /4,:.(;4 74 5+,-./$( 4-$).5$.)(7+ L012M 4- ., /4,:.(;4 74 F(-4 74 7($+,+)&(/%'(7+< .$%/%'(7+ #+) /+- 7%C4)4,$4- &+$+)4- 74 F(-4- 74 7($+- #()( )4(/%'() 74$4)&%,(7(- +#4)(5%+,4- -+F)4 /+- 7($+- + -+F)4 /( 4-$).5$.)( 74 /+&%-&+-@ D4)+ 5+&+ -.5474 5+, 5.(/=.%4) -%-$4&( 74 ,+)&(/%'(5%8, ?(> 4N54#5%+,4- #()( 5(-% $+7+T 74 ?45?+< 5(7( &+$+) 74 F(-4- 74 7($+- $%4,4 -.#45./%()%7(74- > /+ ?(54 7%C4)4,$4 74 +$)+ &+$+)< #+) /+ $(,$+< 4/ /4,:.(;4 012
,+)&(/%'(7+ LRU06M ,+ ,+- -4)E%)B #()( )4-+/E4) $+7+- /+- #)+F/4&(-< (.,=.4 -% -4 #.474 (-4:.)() =.4 5.(/=.%4) -4,$4,5%( 4-5)%$( 4, RU06 -4)B %,$4)#)4$(F/4 #+) 5.(/=.%4) &+$+) 74 7($+-@
2( ?%-$+)%( 74 012 L=.4 -4 #)+,.,5%( 74/4$)4(,7+ 4, %,:/W- /(- /4$)(- =.4 /+ 5++,4,< 4- 745%) X4-435.34/4X > ,+ X-%=.4/X 5+&+ -4 +>4 ( &4,.7+M 4%4'( 4, YZ[\ 5+, /( 74C%,%5%8,< #+) #()$4 74 H+,(/7 *?(&F4)/%, > 74 +$)(- #4)-+,(=.4 $)(F(;(F(, 4, /+- /(F+)($+)%+- 74 %,E4-$%:(5%8, 74 6S]< 74 ., /4,:.(;4 #()( /( 4-#45%C%5(5%8, 74 /(- 5()(5$4)A-$%5(- 74 /(- F(-4- 74 7($+- =.4 (7+#$(F(, 4/ &+74/+ )4/(5%+,(/@ 9-$4 /4,:.(;4 -4 //(&(F( 091O92 L0$).5$.)47 9,:/%-? 1.4)> 2(,:.(:4M > -4 %/4&4,$8 4, ., #)+$+$%#+ //(&(7+ 091O923^_] 4,$)4 YZ[\ > YZ[`@ 2(- 4N#4)%&4,$(5%+,4- 5+, 4-4 #)+$+$%#+ 5+,7.;4)+,< 4,$)4 YZ[a > YZ[[< ( .,( )4E%-%8, 74/ /4,:.(;4 L091O92bcM< =.4 ( #()$%) 74 4-4 &+&4,$+ 5(&F%8 74 ,+&F)4 #+) &+$%E+- /4:(/4-< 5+,E%)$%W,7+-4 4, 012@ 9/ #)+$+$%#+ L0>-$4& _M< F(-(7+ 4, 4-$4 /4,:.(;4< -4 (7+#$8 > .$%/%'8 %,$4),(&4,$4 4, 6S] > /+ (7+#$()+, (/:.,+- 74 -.- 5/%4,$4- 4/4:%7+-@ J)(5%(- (/ WN%$+ 74 4-$4 -%-$4&(< =.4 ,+ 4-$(F( $+7(EA( 5+&4)5%(/%'(7+< $(&F%W, +$)(- 5+(IA(4'()+, ( 74-())+//() -.- #)+7.5$+- )4/(5%+,(/4- F(-(7+- 4, 012@ R #()$%) 74 YZdY< 6S] 5+&4,'8 ( 4,$)4:() -.- #)+7.5$+- )4/(5%+,(/4- > 4, YZde 4'8 ( E4,74) HSc@ 9, 4/ 5.)-+ 74 /+- (I+- +5?4,$(< ,.&4)+-(- 5+(IA(L#+) 4;4/+ ")(5/4 > 0>F(-4< -8/+ #+) 5%$() (/:.,+-M 5+&4)5%(/%'()+, #)+7.5$+- F(-(7+- 4, 012< =.4 -4 5+,E%4)$4 4, 4/ 4-$B,7() %,7.-$)%(/ 74 ?45?+ #+) /+ =.4 )4-#45$( ( /(- F(-4- 74 7($+- )4/(5%+,(/4-@ 9, YZda< 4/ RU06 (7+#$8 012 L-.-$(,5%(/&4,$4 (7+#$8 4/ 7%(/45$+ 012 74 6S]M 5+&+ 4-$B,7() #()( /+- /4,:.(;4- )4/(5%+,(/4- > 4, YZd[ -4 $)(,-C+&8 4, 4-$B,7() 60"@ 9-$( E4)-%8, 74/ 4-$B,7() E( 5+, 4/ ,+&F)4 74 012bda@ 9, /+(I+- -%:.%4,$4-< W-$4 ?( -.C)%7+ 7%E4)-(- )4E%-%+,4- =.4 ?(, 5+,7.5%7+ #)%&4)+ ( /( E4)-%8, 012bdZ >< #+-$4)%+)&4,$4< ( /( (5$.(/ 012bZc@ 9/ ?45?+ 74 $4,4) ., 4-$B,7() 74C%,%7+ #+) ., /4,:.(;4 #()( F(-4- 74 7($+)4/(5%+,(/4- (F)4 #+$4,5%(/&4,$4 4/ 5(&%,+ ( /( %,$4)5+&.,%5(F%/%7(7 4,$)4 $+7+- /+- #)+7.5$+- =.4 -4 F(-(, 4, W/@ H4-74 4/ #.,$+ 74 E%-$( #)B5$%5+< #+) 74-:)(5%( /(- 5+-(- C.4)+, 74 +$)+ &+7+@ 9C45$%E(&4,$4< 4, :4,4)(/ 5(7( #)+7.5$+) (7+#$( 4 %/4&4,$( 4, /( #)+#%( F(-4 74 7($+- -8/+ 4/ 5+)('8, 74/ /4,:.(;4 012 L4/ (-A //(&(7+ 9,$)> /4E4/ + (/ &BN%&+ 4/ 6,$4)&47%($4 /4E4/M< 4N$4,7%W,7+/+ 74 &(,4)( %,7%E%7.(/ -4:K, /( #)+#%( E%-%8, =.4 5(7( 5.(/ $4,:( 74/ &.,7+ 74 /(- F(-4- 74 7($+-@ R5$.(/&4,$4< 4-$B 4, &()5?( ., #)+54-+ 74 )4E%-%8, 74/ /4,:.(;4 #+) #()$4 74 /+- 5+&%$W- RU06 4 60"< =.4 74F4)A( $4)&%,() 4, /( 74C%,%5%8, 74 /+ =.4 4, 4-$4
&+&4,$+ -4 5+,+54 5+&+ 012e@ 2(- 5()(5$4)A-$%5(- #)%,5%#(/4- 74 4-$( ,.4E( 4,5(),(5%8, 74 012 74F4)A(, -4) -. $)(,-C+)&(5%8, 4, ., /4,:.(;4 -$(,73 (/+,4 L&%4,$)(- (?+)( -4 .-( 5+&+ /4,:.(;4 ?+-#47(7+ 4, +$)+- /4,:.(;4-M > /( %,$)+7.55%8, 74 ,.4E+- $%#+- 74 7($+- &B- 5+/4;+- =.4 #4)&%$(,< #+) 4;4/+< 4/ $)($(&%4,$+ 74 7($+- &./$%&47%(/4-@
9/ /4,:.(;4 012 4-$B 5+.4-$+ #+) 5+&(,7+-< 5/B.-./(-< +#4)(7+)4- > C.,5%+,4- 74 (:)4:(7+@ 9-$+- 4/4&4,$+- -4 5+&F%,(, 4, /(- %,-$).55%+,4- #()( 5)4()< (5$.(/%'() > &(,%#./() /(- F(-4- 74 7($+-@
9N%-$4, 7+- $%#+- 74 5+&(,7+- 012G o o
DLL que permiten crear y definir nuevas bases de datos, campos e índices. DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Comandos DLL
Comando Descripción
CREATE Utilizado para crear nuevas 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. Comandos DML
Comando Descripción
SELECT
Utilizado para consultar registros de la base de d atos que satisfagan un criterio determinado
INSERT
Utilizado para cargar lotes de datos en la base de datos 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 u na base de datos
2(- 5/B.-./(- -+, 5+,7%5%+,4- 74 &+7%C%5(5%8, .$%/%'(7(- #()( 74C%,%) /+- 7($+=.4 74-4( -4/455%+,() + &(,%#./()@ Cláusula
Descripción
FROM
Utilizada para especificar la tabla de la cual se van a seleccionar los registros
WHERE
Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar
GROUP BY
Utilizada para separar los registros seleccionados en grupos específicos
HAVING
Utilizada para expresar la condición que debe satisfacer cada grupo
ORDER BY
Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico
Operador Uso
AND
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
OR
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.
NOT
Negación lógica. Devuelve el valor contrario de la expresión.
Operador
Uso
<
Menor que
>
Mayor que
<>
Distinto de
<=
Menor o igual que
>=
Mayor o igual que
=
Igual que
BETWEEN
Utilizado para especificar un intervalo de valores.
LIKE
Utilizado en la comparación de un modelo
In
Utilizado para especificar registros de una base de datos
2(- C.,5%+,4- 74 (:)4:(7+ -4 .-(, 74,$)+ 74 .,( 5/B.-./( 0929*Q 4, :).#+74 )4:%-$)+- #()( 74E+/E4) ., K,%5+ E(/+) =.4 -4 (#/%5( ( ., :).#+ 74 )4:%-$)+-@ Funciónn Descripción AVG
Utilizada para calcular el promedio de los valores de un campo determinado
COUNT
Utilizada para devolver el número de registros de la selección
SUM
Utilizada para devolver la suma de todos los valores de un campo determinado
MAX
Utilizada para devolver el valor más alto de un campo especificado
MIN
Utilizada para devolver el valor más bajo de un campo especificado
H(7( .,( -4,$4,5%( 012 74 -4/455%8, =.4 %,5/.>4 $+7(- /(- #+-%F/4- 5/B.-./(-< 4/ +)74, 74 4;45.5%8, 74 /(- &%-&(- 4- 4/ -%:.%4,$4G 1.Cláusula FROM 2.Cláusula WHERE 3.Cláusula GROUP BY 4.Cláusula HAVING 5.Cláusula SELECT 6.Cláusula ORDER BY