[Powered by Google Translate] [SQL]
[Christopher BARTHOLOMEW] [Inivèsite Harvard]
[SA A SE CS50] [CS50 televizyon]
Se konsa, pwogramasyon itilize baz done kòm yon zouti nan magazen ak òganize
done ki pèsistan nou nan tablo yo.
Sa vle di ke se done ou ki estoke sou ki pa temèt mitan lari tankou yon kondwi difisil,
e menm lè òdinatè a se koupe, done yo se toujou intact.
Epi, menm jan pwogramasyon, pwogram nou an itilize baz done pou senaryo tankou estoke
enfòmasyon itilizatè soti nan fòm entènèt, leve je l 'envantè,
oswa mete ajou enfòmasyon sou sa sit montre.
Men, ki jan nou aktyèlman kominike avèk baz done nou an,
oswa sa nou itilize li, sere, efase,
epi mete ajou done nou an ki nan tablo sa yo baz done?
Oke, repons lan se ke nou itilize yon kalite espesyal nan lang baz done
ki reyaji dirèkteman ak tab baz done nou an.
Se non li nan estriktire Lang rekèt,
[Estriktire Lang rekèt]
oswa ki sa mwen, al gade nan kòm SQL.
>> Koulye a, [Se-kèl], oswa SQL, se pa yon lang pwogramasyon,
men olye, li nan yon lang ki bay yon seri estanda nan kòmandman
rekipere ak manipile done ki sòti nan yon varyete de sistèm jesyon baz done.
Nan bi pou yo CS50, nou pral ale sou kat kòmandman debaz:
chwazi, insert, mete ajou, epi efase.
Anplis de sa, nou pral itilize yon koòdone wèb baz done yo rele fpmyadmen,
ki enstale sou aparèy la yo ekri deklarasyon SQL nou an.
Se konsa, ede ou sonje sa yo kòmandman,
Mwen te mennen kèk gato nan yon kofr ede ak senaryo nou an.
Di ou gen baz done yon kupkèyk a,
ki kote ou mete tout enfòmasyon sou gato ou.
Koulye a, bazdone kapab genyen tab anpil
ak tablo yo yo tèt yo kapab genyen kolòn anpil.
Anndan baz done kupkèyk nou an, nou gen yon tab rele cupcake_cupboard.
Tablo sa a pral dwe itilize nan magazen tout enfòmasyon sou gato
ki se, byen, nan kofr ou a.
Kolòn yo ki andedan tab ou reprezante atribi sa yo nan yon kupkèyk.
Pou egzanp, kolòn cupcake_cupboard la yo se
Gato ID, CakeType, CakeColor, ak CakeIsNice.
Sa a se kolòn Boolean-tape itilize detèmine si gato a se bèl oswa ou pa bèl.
Nou pwal kòmanse avèk ekri yon deklarasyon ki chwazi.
Deklarasyon Chwazi yo itilize rekipere done nan yon tablo baz done an patikilye.
Nan scénario sa a, nou vle konnen tout bagay
sou tout gato ki egziste nan kofr nou an.
Sentaks la fè sa a se "Chwazi" Star espas, oswa *, espas nan lespas tab nou an,
ki se cupcake_cupboard.
Se pou nou ale pi devan epi egzekite sa.
>> Jan nou kapab wè, sa yo se tout gato yo nan kofr nou an.
Li enpòtan sonje ke *, oswa asterisk, se yon karaktè kat sovaj
ki vle di rasanbleman nan tout kolòn yo nan kèk tab.
Nòmalman, nou ka gen aksè a yon kolòn espesifik oswa kolòn
pa ranplase * ak non an kolòn aktyèl.
Si nou vle kolòn miltip, men se pa tout, nou ka reyalize sa a
pa ekri non yo kolòn délimitation chak kolòn pa yon vigil.
Pou egzanp, kite a sèlman rekipere CakeId la ak CakeType nan tablo a cupcake_cupboard.
Sentaks la fè sa a se: espas chwazi CakeID vigil
CakeType espas soti nan cupcake_cupboard tab nou an,.
Se pou nou ale pi devan epi egzekite sa a.
Ak isit la, nou kounye a sèlman gen pou chak kolòn ki de nou espesifye
pou chak kupkèyk nan kofr nou an.
Nou kapab tou amelyore rezilta rechèch nou yo nan di egzakteman kisa
"Kote" kloz la jis apre non an tab.
Pou egzanp, gen sanble se yon kupkèyk nan kofr nou
ki se, byen, pa konsa nice kap.
Se pou nou konnen ki tout gato yo nan kofr nou ke yo, byen, pa konsa nice kap
lè l sèvi avèk "Ki kote nan" kloz.
Sentaks la fè sa a se: espas Chwazi * espas KI SOTI NAN cupcake_cupboard espas
espas KI KOTE espas kolòn kondisyonèl nou an, nan ka sa a CakeIsNice =,
ak valè a Boolean nan Fo.
Li se enpòtan sonje ke si w ap sèvi ak strings, ou dwe fèmen l 'nan quotes sèl.
Sa a se vre pou tout strings nan SQL, oswa, nan SQL tèm baz done karaktè, Variant
ke yo rekonèt kòm varchar datatip.
Nan ka sa a, nou ap itilize vrè oswa fo, ki se yon valè Boolean epi yo pa yon kòd.
Se pou nou ale pi devan epi egzekite lòd sa a.
>> Lo li wè, li se ka a ke nou gen 1 chokola
pa konsa nice kupkèyk nan kofr nou an.
Apre sa, n ap ale nan ekri yon deklarasyon insert.
Deklarasyon insert yo itilize insert oswa ajoute
ranje plis done an tab baz done ou.
Rvizite scénario nou an, kite a sipoze ke nou te jis te fè yon mak nouvo kupkèyk.
Depi nou yo trè òganize kupkèyk Manjè, nou ap ale nan gen insert sa a kupkèyk nouvo
nan tablo cupcake_cupboard nou an.
Sentaks la fè sa a se sa a: Antre espas nan espas tab nou an,
cupcake_cupboard, espas (,
ak isit la nou presize non yo kolòn, séparer pa yon vigil,
CakeType vigil CakeColor vigil CakeIsNice) espas.
Apre sa, nou ekri mo VALÈ espas ki la (, ak isit la
nou antre nan valè a pou chak kolòn, respektivman, tou séparer pa yon vigil.
Single quote, yo paske yo te tout valè varchar nou pral antoure yo nan quotes sèl,
Vigil BROWN limyè 'vigil' manba 'manti.
Koulye a, li enpòtan bay chak ranje yon nimewo inik yo idantifye tèt li.
Autoincrementing yon kolòn bay sa a kòm
"Non de idantite yo menm ka janm egziste nan tablo sa a."
Se pou nou ale pi devan epi egzekite.
Gen n 'al jwenn yo, tout òganize.
>> Pwochen SQL deklarasyon sa yo ke nou ap ekri a se yon deklarasyon ki mizajou a.
Ka deklarasyon an update dwe itilize li modifye done ki nan yon kolòn
pou nenpòt ki ranje ki deja egziste nan tablo baz done ou.
Byen bonè nan senaryo nou an, lè l sèvi avèk yon deklarasyon chwazi, nou idantifye yon kupkèyk
nan tab cupcake_cupboard nou an CakeIsNice valè ki gen te Fo.
Ann asime ke pandan ke kupkèyk manba nou an te nan dife pou chofe fou a,
nou te fè kupkèyk pa-konsa-bèl nou an trè bèl.
Yo te tèlman eksepsyonèlman òganize, nou vle kupkèyk nou yo reflete sa a valè
nan tablo cupcake_cupboard nou an.
Se poutèt sa, kite la mete ajou kupkèyk chokola nou yo nan baz done a reflete sa a.
Sentaks la se: MIZAJOU espas tab nou an, cupcake_cupboard, espas mete espas
kolòn nan ke nou vle chanje, CakeIsNice =.
Lè sa a, isit la nou mete nouvo valè nou Vrè espas.
Koulye a, paske nou pa vle mete ajou tout ranje ak sa a valè,
nou vle bay yon "Kote" kloz ki pral sible nou
ranje a egzak ke nou vle modifye.
Nan ka sa a, nou konnen ke gen yon sèl kupkèyk
ki gen yon valè CakeIsNice nan Fo.
Anplis de sa, nou va asire tou ke nou ap mete ajou ranje ki kòrèk la
lè l sèvi avèk "ak" kloz a.
Nou itilize "ak" kloz a yo defini rechèch nou an pi lwen.
Nan ka sa a, paske nou konnen ke kupkèyk a se chokola,
nou pral sèvi ak sa a kolòn CakeType.
KI KOTE espas kondisyonèl nou an espas kolòn CakeIsNice espas = Fo,
ak espas CakeType = 'chokola.
Se konsa, mete li tout ansanm, deklarasyon sa a update di
jwenn tout gato yo nan kofr kupkèyk nou an,
ak si gen yon kupkèyk ki gen kolòn CakeIsNice gen valè a Fo
ak CakeType gen chokola a valè,
nou vle mete ajou espesifik ranje valè a CakeIsNice Vrè.
Se konsa, kite a ale pi devan epi egzekite deklarasyon an.
Epi, koulye a, nou ap òganize.
>> Te tout bagay sa a pale nan gato fè m 'yon ti jan grangou.
Mwen panse mwen ta dwe ede tèt mwen nan yon sèl.
Men, si mwen aktyèlman manje sa a kupkèyk, m 'ta dwe omwen tou retire egzistans li
soti bò tab cupcake_cupboard nou an.
Pou fè sa, nou pral sèvi ak "Delete" deklarasyon an.
Kapab "Delete" deklarasyon an dwe itilize yo retire tout oswa kèk ranje nan tablo an.
Si ou ta vle retire kèk ranje espesifik yo, nan tablo a,
Lè sa a, ou dwe bay yon "Kote" kloz, konsa pou w yon kolòn
ki ta dwe inik nan ranje a konnen ou vle yo retire.
Sa a se sentaks la: efase espas nan lespas tab nou an, cupcake_cupboard, espas.
Koulye a, nan pwen sa a, nenpòt lè ou se sa a byen lwen nan deklarasyon Delete ou
ou vle dwe pran anpil prekosyon.
Pou egzanp, si mwen vle kouri sa a sijè rechèch kòm se san bay kèk "Kote" kloz
Mwen ta pèdi tout done ki nan tablo sa a cupcake_cupboard,
Men, paske mwen deja konnen ke idantifikasyon gato m ', se inik, mwen pral sèvi ak
Wouj gato velours ID a pou kloz mwen "Kote".
KI KOTE espas kolòn nou an, CakeID = 1.
Paske sa se yon valè nonb antye relatif pa gen okenn bezwen antoure l 'nan quotes sèl.
Se konsa, kite a egzekite deklarasyon an.
Oke, kounye a ke nou te siye egzistans la nan sa a kupkèyk
soti bò tab cupcake_cupboard nou yo, nou gen sèlman yon sèl bagay gòch:
Fè li disparèt.
Mwen Christopher Batèlmi. Sa a se CS50.