[Powered by Google Translate] [SQL] [Christopher Bartolomé] [Universitato Harvard] [THIS IS CS50] [CS50 TV] Do, programistoj uzas datumbazoj kiel ilo por stoki kaj organizi nia konstanta datumoj ene tabloj. Tio signifas ke via datumoj stokitaj sur ne-volátil medianoj kiel malmola disko, kaj eĉ kiam la komputilo estas malŝaltita, la datumoj estas ankoraŭ nerompita. Kaj, kiel programistoj, niaj programoj uzi datumbazojn por scenejoj kiel provizon uzanto informoj el retejo formoj, rigardante supren inventaro, aŭ ĝisdatigi informojn pri kio lokoj montri. Sed kiel ni efektive interagi kun nia datumbazo, aŭ kion ni uzas por legi, stoki, forigi, kaj ĝisdatigi niaj datumoj ene de ĉi tiuj datumbazo tabloj? Nu, la respondo estas, ke ni uzas specialan tipon de datumbazo lingvo kiuj interagas rekte kun nia datumbazo tabloj. Ĝi estas nomo Strukturita Query Language, [Strukturita Query Language] aŭ kion mi raportas kiel SQL. Nun, [Se-quel], aŭ SQL, ne estas programlingvo, sed anstataŭe, ĝi estas lingvo, kiun havigas normo aron da ordonoj por elsxuti kaj manipuli datumojn de vario de datumbazo mastrumado sistemoj. Por la celo de CS50, ni transiru kvar bazaj komandoj: elektu, enigi, ĝisdatigi kaj forviŝi. Plue, ni uzas datumbazo retejo interfaco nomita phpMyAdmin, kiuj instalita sur la aparaton por skribi nian SQL deklaroj. Do, por helpi vin memori tiujn ordonojn, Mi alportis kelkajn cupcakes en ŝranko por helpi kun niaj scenejoj. Diru vi havas cupcake la datumbazo, kie vi stoki tutan informon pri via cupcakes. Nun, datumbazoj, povas enhavi multaj tabloj kaj la tabloj sin povas enhavi multaj kolumnoj. Ene de nia cupcake la datumbazo, ni havas tabulon nomita cupcake_cupboard. Ĉi tiu tabelo estos uzita por stoki tutan informon pri cupcakes kiuj estas, nu, en via ŝranko. La kolumnoj kiuj estas en via tablo reprezentas la atributoj de cupcake. Ekzemple, la cupcake_cupboard la kolumnoj estas Kuko ID, CakeType, CakeColor, kaj CakeIsNice. Ĉi bulea-tajpitaj kolumno estas uzata por determini se la kuko estas bela aŭ ne bela. Ni tuj komencu per skribado unuaranga komunikaĵo. Elektu deklaroj estas uzataj por elsxuti datumoj de aparta datumbazon tablo. En ĉi tiu scenaro, ni volas scii cxion pri la tuta cupcakes kiuj ekzistas en nia sxranko. La sintakso por fari ĉi tiu estas "Select" spacon stelo, aux *, spaco de spaco nia tablo, kio estas cupcake_cupboard. Ni iru antaŭen kaj ekzekuti tio. Kiel ni povas vidi, tiuj estas ĉiuj cupcakes en nia sxranko. Estas grave noti, ke *, aŭ asterisko, estas ĵokero karaktero ke signifas la renkontiĝo de ĉiuj kolumnoj de iu tablo. Kutime, ni povas aliri specifa kolumno aŭ kolumnoj anstataŭante * kun la efektiva kolumno nomo. Se ni volas multnombraj kolumnoj, sed ne ĉiuj, ni povas atingi tiun skribante la kolumno nomoj limigi ĉiu kolumno de komo. Ekzemple, ni nur elsxuti la CakeId kaj CakeType en la cupcake_cupboard tablo. La sintakso por fari ĉi tio estas: SELECT spaco CakeID komo CakeType spaco de nia tablo, cupcake_cupboard. Ni iru antaŭen kaj ekzekuti ĉi. Kaj tie, ni nun nur havas la du kolumnojn ni specifita por ĉiu cupcake en nia sxranko. Ni povas ankaŭ rafini nia query results erojn specifigante la "Kie" klaŭzon ĝuste post la tablo nomo. Ekzemple, tie ŝajnas esti cupcake en nia sxranko tio estas, nu, ne tiel bela rigardante. Ni kalkuli ĉiujn cupcakes en nia sxranko kiu estas, nu, ne tiel bela rigardis uzante la "Kie" klaŭzon. La sintakso por fari ĉi tio estas: SELECT spaco * spaco EL spaco cupcake_cupboard spaco KIE spaco nia kondiĉa kolumno, en ĉi tiu kazo CakeIsNice =, kaj la bulea valoro de False. Estas grave noti, ke se vi uzas kordojn, vi devas kunsendi ĝin en unuopa citaĵoj. Tio estas vera por ĉiuj kordoj en SQL, aŭ, en SQL datumbazo terminoj, varianto karakteroj konata kiel Varchar Datumtipo. En ĉi tiu kazo, ni uzas Vera aŭ Falsa, kiu estas bulea valoro kaj ne ĉenon. Ni iru antaŭen kaj ekzekuti ĉi komando. Jen kaj jen estas la kazo, ke ni havas 1 ĉokoladon ne tiel bela cupcake en nia sxranko. Poste, ni iras al skribi insert komunikaĵo. Insert deklaroj estas uzataj por enmeti aŭ aldoni pliaj vicoj de datumoj en la datumbazo tabelo. Revizitado nia hipotezo, ni supozu, ke ni ĵus faris tute nova cupcake. Ĉar ni estas tre organizita cupcake manĝoĉambrojn, ni tuj devos enmeti tiun novan cupcake en nia cupcake_cupboard tablo. La sintakso por fari ĉi estas jena: Enmetu spaco enen spaco nia tablo, cupcake_cupboard, spaco (, kaj tie ni indikas la kolumnoj nomoj, limigita de komo, CakeType komo CakeColor komo CakeIsNice) spaco. Post tio, ni skribu la vorton valoroj spaco (kaj ĉi tie ni eniras la valoron por ĉiu kolumno respektive, ankaŭ limigita de komo. Sola citaĵo, ĉar ili ĉiuj estas Varchar valoroj ni ĉirkaŭas ilin en simpla citaĵoj, Peanut butter 'komo' LUMO BRUNA 'komo Vera. Nun, estas grava por doni ĉiu vico unika numero por identigi sin. Autoincrementing kolumnon havigas tion kiel  "Ne du la samajn IDs povas iam ekzisti en ĉi tiu tabulo." Ni iru antaŭen kaj ekzekuti. Tie ni iru, ĉiuj organizitaj. La venonta SQL aserto ke ni skribos estas ĝisdatigo komunikaĵo. La ĝisdatigo deklaro povas esti uzata por modifi datumoj ene de kolumno por ajna ekzistanta vico en via datumbaza tabelo. Pli frue en niaj scenaro, uzante unuaranga deklaro, ni identigis cupcake ene de nia cupcake_cupboard tablo kies CakeIsNice valoro estis Falsa. Ni supozu, ke dum nia mani buteron cupcake estis en la forno, ni faris nian ne tiel agrabla cupcake tre agrabla. Estante tiel escepte organizitaj, ni volas nian cupcake pripensi tiun valoron en nia cupcake_cupboard tablo. Tial, ni ĝisdatigi nian ĉokolado cupcake en la datumbazo por pripensi tion. La sintakso estas: UPDATE spaco nia tablo, cupcake_cupboard, spaco SERIO spaco la kolumno, ke ni deziras ŝanĝi, CakeIsNice =. Tiam jen ni metas nian novan valoron True spaco. Nun, ĉar ni ne volas ĝisdatigi ĉiujn vicojn kun tiu valoro, ni volas proponi "Kie" klaŭzon kiu marki ni al la ĝusta vico ke ni volas modifi. En ĉi tiu kazo, ni scias, ke ekzistas nur unu cupcake kiu havas CakeIsNice valoro de False. Plue, ni ankaŭ certigi ke ni ĝisdatigi la korekta vico uzante la "Kaj" klaŭzon. Ni uzas la "Kaj" klaŭzon por rafini nia query plu. En ĉi tiu kazo, ĉar ni scias ke la cupcake estas ĉokolado, ni uzos ĉi CakeType kolumno. KIE spaco nia kondiĉa kolumna spaco CakeIsNice spaco = False, kaj spaco CakeType = 'CHOCOLATE.' Do, metante ĉion kune, ĉi tiu ĝisdatigo deklaro diras trovi ĉiujn cupcakes en nia cupcake ŝranko, kaj se estas cupcake kies kolumno CakeIsNice enhavas la valoron False kaj CakeType enhavas la valoron CHOCOLATE, ni volas ĝisdatigi la specifa vicoj CakeIsNice valoro al True. Do, ni iru antaŭen kaj ekzekuti la komunikaĵo. Kaj nun, ni organizas. Ĉiuj ĉi diskuto de cupcakes faris min iom malsata. Mi kredas ke mi devus helpi min al unu. Sed se mi vere manĝi ĉi cupcake, mi devus almenaŭ ankaŭ eltiri lian ekziston  de nia cupcake_cupboard tablo. Por fari tion, ni uzos la "Forigi" komunikaĵo. La "Forigi" frazo povas esti uzata por forigi ĉiuj aŭ iu vicoj de la tablo. Se vi volas forigi iun specifan vicon de la tablo, tiam vi devas havigi "Kie" klaŭzo, tiel preciziganta kolumno kiuj devus esti unika al la vico ke vi volas forigi. Ĉi tiu estas la sintakso: DELETE spaco EL spaco nia tablo, cupcake_cupboard, spaco. Nun, je ĉi tiu punkto, kiam ajn vi estas ĉi tie en via delete komunikaĵo volas esti atentema. Ekzemple, se mi volas kuri ĉi query kiel estas sen havigi iujn "Kie" klaŭzo Mi perdus la tutan datumojn en ĉi cupcake_cupboard tablo, sed ĉar mi jam scias, ke mia kuko IDs estas solaj, mi uzas la Ruĝa Veluro kuko ID por mia "Kie" klaŭzon. KIE spaco nia kolumno, CakeID = 1. Ĉar ĉi tio estas entjera valoro ne estas neceso por ĉirkaŭi ĝin en unuopa citaĵoj. Do, ni ekzekuti la komunikaĵo. Nu, nun ke ni viŝis la ekzisto de ĉi cupcake de nia cupcake_cupboard tablo, ni nur havas unu afero maldekstra: Make it malaperi. Mi Christopher Bartolomé. Ĉi tiu estas CS50.