Transcript
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
1/32
Diseña y Administra Bases de Datos
Avanzadas.
II. El ESTÁNDAR T-SQL
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
2/32
Contenido.
• El estándar T-SQL.
• Comandos de T-SQL.
– Comandos DDL (Lenguaje de defnición
de datos). – Comandos DML (Lenguaje de
maniulación de datos).
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
3/32
C!ANDS DDL "DATA DE#INITINLAN$%A$E&
“Existen herramientas para crear toda clase de objetos, los
datos no son la excepción”
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
4/32
Comandos del Len'(a)e de De*ini+i,nde Datos.
Las sentencias DDL se utili!an ara crear " modifcarla estructura de las ta#las as$ como otros o#jetos dela #ase de datos.
•
CREATE - ara crear o#jetos en la #ase de datos.
• ALTER - modifca la estructura de la #ase de datos.
• DROP - #orra o#jetos de la #ase de datos.
• TRUNCATE - elimina todos los registros de la ta#la%inclu"endo todos los esacios asignados a losregistros.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
5/32
Create Tale
Las ta#las son la estructura #ásica donde se almacena lain&ormación en la #ase de datos.
Dado 'ue en la ma"or$a de los casos% no a" &orma de 'ue elroeedor de #ase de datos sea con antelación cuales son
sus necesidades de almacenamiento de datos% es ro#a#le'ue necesite crear ta#las en la #ase de datos usted mismo.
La sinta*is del resente comando se descri#e a continuación+
CREATE TABLE "nombre_tabla"("columna 1" "tipo_de_datos_para_columna_1","columna 2" "tipo_de_datos_para_columna_2",... )
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
6/32
Create Tale
, artir del ejemlo de comando reiamenteisto% lantearemos el siguiente ejemlodemostratio de como crear una ta#la araalmacenar datos de clientes.
CREATE TABLE Customer(!irst_ame c#ar($%),Last_ame c#ar($%),
Address c#ar($%),Cit& c#ar($%),Countr& c#ar(2$),Birt#_'ate datetime)
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
7/32
Create Tale
En ocasiones será necesario otorgar un alor or de&ault aciertos camos en la ta#la a fn de simlifcar los rocesos decatura ara los usuarios. En el siguiente ejemlo odemoser una demostración+
CREATE TABLE Customer(!irst_ame c#ar($%),Last_ame c#ar($%),Address c#ar($%) deault o Conocido*,Cit& c#ar($%) deault Tampico*,Countr& c#ar(2$),
Birt#_'ate datetime)
ara criterios mas esecifcos de control so#re los camos deuna ta#la% odemos usar un commando denominadoC+TRA-T.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
8/32
Create Tale - CNSTRAINT
uede colocar restricciones ara limitar el tio de dato 'ue uedeingresarse en una ta#la.
Dicas restricciones ueden esecifcarse cuando la ta#la se creaor rimera e! a tras de la instrucción CREATE TABLE% o
luego de crear la ta#la a tras de la instrucción ALTER TABLE.
Los tios comunes de restricciones inclu"en las siguientes+
- +T LL - -/E
- C0EC - Clae primaria - Clae e3terna
Cada uno se descri#e en detalle a continuación.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
9/32
Create Tale - CNSTRAINT
+T LL
En &orma redeterminada% una columna uede ser /0LL. Si nodesea ermitir un alor /0LL en una columna% 'uerrá colocar unarestricción en esta columna esecifcando 'ue /0LL no es aora
un alor ermitido.
or ejemlo% en la siguiente instrucción+
CREATE TABLE Customer(-' inte4er +T LL,
Last_ame arc#ar (5%) +T LL,!irst_ame arc#ar(5%))
Las columnas 1S2D3 " 1Last4/ame3 no inclu"en /0LL% mientras'ue 15irst4/ame3 uede incluir /0LL.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
10/32
Create Tale - CNSTRAINT
-/E
La restricción 0/2Q0E asegura 'ue todos los alores en una columna seandistintos.
or ejemlo% en la siguiente instrucción+
CREATE TABLE Customer(-' inte4er ni6ue,Last_ame arc#ar (5%),!irst_ame arc#ar(5%))
La columna 1S2D3 no uede incluir alores dulicados% mientras dicarestricción no se alica ara columnas 1Last4/ame3 " 15irst4/ame3.
or &aor note 'ue una columna 'ue se esecifca como clae rimariatam#in uede ser 6nica. ,l mismo tiemo% una columna 'ue es 6nicauede o no ser clae rimaria.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
11/32
Create Tale - CNSTRAINT
C0EC
La restricción C7EC8 asegura 'ue todos los alores en unacolumna cumlan ciertas condiciones.
or ejemlo% en la siguiente instrucción+
CREATE TABLE Customer(-' inte4er C0EC (-' 7 %),Last_ame arc#ar (5%),!irst_ame arc#ar(5%))
La columna 1S2D3 sólo de#e incluir enteros ma"ores a 9.
or &aor note 'ue la restricción C0EC no sea ejecutada orM"SQL en este momento.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
12/32
Create Tale - Claves rimarias.
La clae rimaria se utili!a ara identifcar en&orma 6nica cada l$nea en la ta#la. uede serarte de un registro real% o uede ser un camoartifcial (uno 'ue no tiene nada 'ue er con el
registro real). 0na clae rimaria uede consistiren uno o más camos en una ta#la. Cuando seutili!an m6ltiles camos como clae rimaria% selos denomina claes comuestas.
Las claes rimarias ueden esecifcarse cuandose crea la ta#la (utili!ando CREATE TABLE) ocam#iando la estructura e*istente de la ta#la(utili!ando ALTER TABLE).
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
13/32
Create Tale - Claves rimarias.
, continuación se resenta un ejemlo de como se maneja elcomando antes mencionado+
CREATE TABLE Customer(-' inte4er 8R-9AR: E: ,Last_ame arc#ar(5%),
!irst_ame arc#ar(5%))
, continuación se resentan ejemlos ara la esecifcación de unaclae rimaria al modifcar una ta#la+
ALTER TABLE Customer A'' 8R-9AR: E: (-')
ota; ,ntes de utili!ar el comando ,LTE: T,;LE ara agregar unaclae rimaria% necesitará asegurarse de 'ue el camo est defnidocomo
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
14/32
Create Tale - Claves E/ternas.
0na clae e*terna es un camo (o camos) 'ue se>ala la clae rimaria deotra ta#la. El roósito de la clae e*terna es asegurar la integridadre&erencial de los datos. En otras ala#ras% sólo se ermiten los alores 'uese eseran 'ue aare!can en la #ase de datos.
or ejemlo% digamos 'ue tenemos dos ta#las% una ta#la CUSTOMER 'ue
inclu"e todos los datos del CUSTOMER% " la ta#la ORDERS 'ue inclu"e losedidos del CUSTOMER.
La restricción a'u$ es 'ue todos los edidos de#en asociarse con unCUSTOMER 'ue "a se encuentra en la ta#la CUSTOMER.
En este caso% colocaremos una clae e*terna en la ta#la ORDERS " la
relacionaremos con la clae rimaria de la ta#la CUSTOMER. De esta&orma% nos aseguramos 'ue todos los edidos en la ta#la ORDERS estnrelacionadas con un CUSTOMER en la ta#la CUSTOMER.
En otras ala#ras% la ta#la ORDERS no uede contener in&ormación de unCUSTOMER 'ue no se encuentre en la ta#la CUSTOMER.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
15/32
Create Tale - Claves E/ternas.
La estructura de estas dos ta#las será lasiguiente+
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
16/32
Create Tale - Claves E/ternas.
En el ejemlo anterior% la columna Customer4S2D en la ta#la =:DE:S esuna clae e*terna se>alando la columna S2D en la ta#la C0ST=ME:.
, continuación se muestran ejemlos de cómo esecifcar la claee*terna a la ora de crear la ta#la =:DE:S+
CREATE TABLE +R'ER(+rder_-' inte4er 8R-9AR: E:,+rder_'ate datetime,Customer_-' inte4er RE!ERECE CT+9ER (-'),Amount double)
, continuación se resenta un ejemlo ara la esecifcación de una clae
e*terna al modifcar una ta#la+ Esto asume 'ue se a creado la ta#laORDERS% " 'ue la clae e*terna toda$a no se a ingresado+
ALTER TABLE +R'ERA'' !+RE-
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
17/32
Create Tale - 0ndi+es.
Los $ndices nos a"udan a o#tener datos de las ta#las en &ormamás ráida.
0tilicemos un ejemlo ara ilustrar este unto+ Digamos 'ueestamos interesados en leer en un li#ro de jardiner$a acerca de
cómo cultiar imientos.
En e! de leer el li#ro desde el comien!o asta 'ueencontremos una sección so#re imientos% es muco másráido ara nosotros ir a la sección $ndice al fnal del li#ro%u#icar 'u áginas contienen la in&ormación so#re imientos% "
luego dirigirnos a esas áginas directamente.
,l dirigirnos al $ndice rimero aorramos tiemo " seguramentees el mtodo más efciente ara u#icar la in&ormación 'uenecesitamos.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
18/32
Create Tale - 0ndi+es.
El mismo rinciio se alica ara la o#tención de datosdesde una ta#la de #ase de datos.
Sin un $ndice% el sistema de #ase de datos lee a trasde toda la ta#la (este roceso se denomina 1escaneo deta#la3) ara locali!ar la in&ormación deseada.
Con el $ndice correcto en su lugar% el sistema de #ase dedatos uede entonces rimero dirigirse al $ndice araencontrar de dónde o#tener los datos% " luego dirigirse adicas u#icaciones ara o#tener los datos necesarios.
Esto es muco más ráido.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
19/32
Create Tale - 0ndi+es.
or lo tanto% generalmente se recomienda crear $ndices en ta#las. 0n$ndice uede cu#rir una o más columnas.
La sinta*is general ara la creación de un $ndice es+
CREATE -'E= "+9BRE_>'-CE" + "+9BRE_TABLA"
(+9BRE_C+L9A)
Digamos 'ue tenemos la siguiente ta#la+
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
20/32
Create Tale - 0ndi+es.
Si deseamos crear un $ndice tanto en Ciudad como en a$s% ingresar$amos+
CREATE -'E= -'=_CT+9ER_LAT_A9E+ Customer (Last_ame)
ara crear un $ndice 'ue com#ine los camos ciudad " a$s% ingresamos+
CREATE -'E= -'=_CT+9ER_L+CAT-++ Customer (Cit&, Countr&)
/o a" una regla estricta resecto de cómo nom#rar un $ndice. El mtodogeneralmente acetado es colocar un refjo% tal como 12D?43% antes del
nom#re de un $ndice ara eitar la con&usión con otros o#jetos de la #asede datos.
Tam#in es una #uena idea #rindar in&ormación so#re 'u ta#la "columna(s) se utili!ará el $ndice.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
21/32
Alter Tale.
0na e! 'ue se crea la ta#la en la #ase de datos% a" mucas ocasionesdonde uno uede desear cam#iar la estructura de la ta#la. Los casost$icos inclu"en los siguientes+
- ,gregar una columna.- Eliminar una columna.
- Cam#iar el nom#re de una columna.- Cam#iar el tio de datos ara una columna.
or &aor note 'ue lo anterior no es una lista e*austia. 7a" otrasinstancias donde ALTER TABLE se utili!a ara cam#iar la estructura dela ta#la% tales como cam#iar la esecifcación de la clae rimaria oagregar una restricción 6nica ara una columna.
La sinta*is SQL ara ALTER TABLE es+
ALTER TABLE "nombre_tabla"?Especi@cacin de modi@cacin
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
22/32
Alter Tale.
Deende del tio de modifcación 'ue deseamos reali!ar. ara losusos mencionados anteriormente% las instrucciones ?Especi@cacinde modi@cacin son+
• Agregar una columna: ,DD 1columna @3 1tios de datos aracolumna @3
• Eliminar una columna: D:= 1columna @3
• Cambiar el nombre de una columna: C7,/AE 1nom#reantiguo de la columna3 1nueo nom#re de la columna3 1tios dedatos ara la nuea columnaB.
• Cambiar el tipo de datos para una columna: M=D251columna @3 1nueo tio de datos3
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
23/32
Alter Tale.
rimero% deseamos agregar una columna denominada 1Aender3 a esta ta#la. ara acerlo% ingresamos+
ALTER TABLE Customer A''
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
24/32
Alter Tale.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
25/32
Dro1 Tale.
, eces odemos decidir 'ue necesitamos eliminar una ta#la en la#ase de datos or alguna ra!ón. De eco% ser$a ro#lemático si noodemos acerlo "a 'ue esto crear$a una esadilla demantenimiento ara D;,. ,&ortunadamente% SQL nos ermiteacerlo% "a 'ue odemos utili!ar el comando 'R+8 TABLE. Lasinta*is ara 'R+8 TABLE es
'R+8 TABLE "nombre_tabla"
Entonces% si deseamos eliminar una ta#la denominada cliente 'uecreamos en la sección CREATE TABLE% simlemente ingresamos
'R+8 TABLE Customer
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
26/32
C!ANDS D!L "DATA !ANI%LATINLAN$%A$E&
“Después de creada nuestra estructura de datos, sigue elingreso de información; para lo cual, también tenemos
herramientas.”
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
27/32
Insert.
En las secciones anteriores% emos isto cómo o#tener in&ormación de ta#las.ero Cómo se ingresan estas flas de datos en estas ta#las en rimer lugarFEsto es lo 'ue se trata en esta sección% 'ue e*lica la instrucción -ERT% " enla siguiente sección% 'ue e*lica la instrucción 8'ATE.
En SQL% a" &undamental " #ásicamente dos &ormas ara -RER datos enuna ta#la+ 0na es insertar una fla or e!% " la otra es insertar flas m6ltiles
or e!.
La sinta*is ara insertar datos en una ta#la mediante una fla or e! es lasiguiente+
-ERT -T+ "nombre_tabla" ("columna1", "columna2", ...)DALE ("alor1", "alor2", ...)
Ejemlo+
-ERT -T+ tore_-normation (tore_ame, ales, T3n_'ate)DALE (*Los An4eles*, %%, *1%FGanF1*)
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
28/32
Insert.
El segundo tio de -ERT -T+ nos ermite insertar flas m6ltilesen una ta#la. , di&erencia del ejemlo anterior% donde insertamosuna 6nica fla al esecifcar sus alores ara todas las columnas%aora utili!amos la instrucción ELECT ara esecifcar los datos'ue deseamos insertar en la ta#la.
Si está ensando si esto signifca 'ue está utili!ando in&ormación deotra ta#la% está en lo correcto. La sinta*is es la siguiente+
-ERT -T+ "tabla1" ("columna1", "columna2", ...)ELECT "columna5", "columnaH", ...!R+9 "tabla2"
/ote 'ue esta es la &orma más simle. La instrucción entera uedecontener &ácilmente cláusulas I0ERE%
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
29/32
Insert.
Entonces or ejemlo% si deseamos tener una ta#laStore!n"ormation% 'ue recolecte la in&ormación de entas ara ela>o @GGH% " "a conoce en donde reside la &uente de datos en ta#alaSales!n"ormation% ingresaremos+
-ERT -T+ tore_-normation (tore_ame, ales,
T3n_'ate)ELECT tore_ame, ales, T3n_'ate!R+9 ales_-normationI0ERE :ear (T3n_'ate) J 1K
,'u$ emos utili!ado la sinta*is de Seridor SQL ara e*traer la
in&ormación anual or medio de una &eca. =tras #ases de datosrelacionales ueden tener sinta*is di&erentes. or ejemlo% en=racle% utili!ará T+_C0AR (T3n_'ate, *&&&&*) J 1K.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
30/32
%1date.
0na e! 'ue a" datos en la ta#la% odr$amos tener la necesidad demodifcar los mismos. ara acerlo% utili!amos el comando 8'ATE.La sinta*is ara esto es+
8'ATE "nombre_tabla"ET "columna_1" J ?nueo alor
I0ERE "condicin"
0n ejemlo alicado de esta instrucción es el siguiente+
8'ATE tore_-normationET ales J $%%I0ERE tore_ame J *Los An4eles*A' T3n_'ate J *%KFGanF1*
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
31/32
%1date.
Tam#in es osi#le 8'ATE m6ltiles columnas al mismo tiemo.La sinta*is en este caso se er$a como la siguiente+
8'ATE "nombre_tabla"ET column 1 J ??alor1, column 2 J ?alor2I0ERE "condicin"
ota; Se de#e tener esecial cuidado con el criterio utili!ado arala selección de los datos a ser modifcadosI rocurando no manejarcondiciones 'ue sean de un amlio esectro de inclusión.
8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2
32/32
Delete.
, eces odemos desear desacernos de los registros de una ta#la.ara ello% utili!amos el comando 'ELETE !R+9. La sinta*is araesto es+
'ELETE !R+9 "nombre_tabla"I0ERE "condicin"
0n ejemlo alicado de esto seria el siguiente+
'ELETE !R+9 tore_-normationI0ERE tore_ame J *Los An4eles*
top related