Kreado de datumbazoj kaj tabeloj en SQL

Krei la datumbazon

Ĉu vi pretas komenci krei datumbazojn kaj tablojn kun la Strukturita Query-Lingvo ? En ĉi tiu artikolo, ni esploros la procezon krei tabulojn permane kun la KREATA DATABASE kaj KREU TABLE-komandojn. Se vi estas nova al SQL, vi eble volas revizii nian SQL-bazajn artikolojn unue.

Komercaj Postuloj

Antaŭ ol ni sidiĝos ĉe la klavaro, ni devas certigi, ke ni havas solidan komprenon pri la postuloj de la kliento. Kio estas la plej bona maniero por akiri ĉi tiun informon? Parolanta al la kliento, kompreneble! Post sidiĝi kun XYZ's Human Resources Director, ni eksciis, ke ili estas kompanio de veturiloj de fenestraĵoj kaj ĉefe interesiĝas pri spuri informojn pri ilia venda personaro.

XYZ-Korporacio dividas sian vendon en orientajn kaj okcidentajn regionojn, ĉiu el kiuj dividiĝas en multajn teritoriojn kovritajn de individuaj vendaj reprezentantoj. La HR-departamento ŝatus spuri la teritorion kovrita de ĉiu dungito same kiel la salajra informo kaj supervisora ​​strukturo de ĉiu dungito. Por plenumi ĉi tiujn postulojn, ni desegnis datumbazon konsistantan el tri tabloj, montrita en la diagramo de Entity-Relationship en ĉi tiu paĝo.

Elektante Datuman Platformon

Ni decidis uzi datumbazan administradon (aŭ DBMS), kiu estas konstruita sur la Strukturita Query-Lingvo (SQL). Sekve, ĉiuj niaj datumbazoj kaj tablojkribaj komandoj devas esti skribitaj per norma ANSI SQL en menso.

Kiel aldonita profito, uzante ANSI-komplikan SQL certigos, ke ĉi tiuj komandoj funkcios en ajna DBMS, kiu subtenas la SQL-normon , inkluzive de Oracle kaj Microsoft SQL Server. Se vi ankoraŭ ne elektis platformon por via datumbazo, la artikola Datumaro pri Programaro Agordoj trairas vin tra la elekta procezo.

Krei la datumbazon

Nia unua paŝo estas krei la datumbazon mem. Multaj datumbazaj sistemoj proponas serion de ebloj por personecigi datumbazajn parametrojn ĉe ĉi tiu paŝo, sed nia datumbazo nur permesas la simplan kreon de datumbazo. Kiel kun ĉiuj niaj ordonoj, vi eble volas konsulti la dokumentadon por via DBMS por determini ĉu iuj progresintaj parametroj subtenataj de via specifa sistemo plenumas viajn bezonojn. Ni uzu la komandon de CREATE DATABASE por agordi nian datumbazon:

KREU DATABASE personaro

Prenu specialan noton pri la kapitaligo uzata en la ekzemplo supre. Ĝi estas komuna praktiko inter SQL-programistoj uzi ĉiujn ĉefurbajn literojn por SQL-ŝlosilvortoj kiel "KREATO" kaj "DATABASE" dum uzado de ĉiuj minusklaj literoj por uzantoj difinitaj de uzantoj kiel la nomo de datumbazo "personaro". Ĉi tiuj konvencioj provizas por facila legebleco.

Daŭrigu legi ĉi tiun lernilon kiel ni kreas tabulojn por nia datumbazo.

Lerni Pli

Se vi ŝatus lerni pli pri la Structurita Query-Lingvo , legu Enkondukon al SQL aŭ enskribiĝu por nia libera lernado SQL-retpoŝto.

Nun, ke ni kreis kaj kreis nian datumbazon, ni pretas komenci krei la tri tabulojn uzitaj por stoki datumojn de XYZ Corporation. Ni efektivigos la tabulojn, kiujn ni desegnis en la antaŭa parto de ĉi tiu lernilo.

Kreante nian unuan tablon

Nia unua tablo konsistas el la personaj datumoj por ĉiu oficisto de nia kompanio. Ni devas inkluzivi la nomon de salajro, ID, kaj direktisto de ĉiu dungito. Ĝi estas bona dezajno praktiki disigi la lastajn kaj unuajn nomojn en apartajn kampojn por simpligi datumserĉadon kaj ordigon en la estonteco. Ankaŭ, ni konservos aŭtoveturejon de la administranto de ĉiu dungito per enigo de referenco al la dungito-ID de la administranto en ĉiu dungista rekordo. Ni unue rigardu la deziratan dungitan tablon.

La atributo de Raportoj stokas la direktiston-ID por ĉiu dungito. De la specimaj rekordoj montritaj, ni povas determini ke Sue Scampi estas la administranto de Tom Kendall kaj John Smith. Tamen, la administranto de Sue ne ekzistas informo en la datumbazo, kiel indikis la eniro de NULL en sia vico.

Nun ni povas uzi SQL por krei la tablon en nia dungitaro de datumbazo. Antaŭ ol ni faru tion, ni certigu, ke ni estas en la ĝusta datumaro per emisión de USE-komando:

Dungitaro;

Alternative, la "DATABASE-dungitaro"; komando plenumus la saman funkcion. Nun ni povas rigardi la SQL-komandon uzatan por krei nian dungitan tablon:

KREBLAS TABLE- dungitoj (oficisto INTEGER NOT NULL, familinomo VARCHAR (25) NOT NULL, unua nomo VARCHAR (25) NOT NULL, reportsto INTEGER NULL);

Kiel kun la supra ekzemplo, rimarku, ke programado-konvencio diktas, ke ni uzu ĉiujn ĉefurbojn por SQL-ŝlosilvortoj kaj minusklaj literoj por uzataj nomitaj kolumnoj kaj tabloj. La komando supre ŝajnas konfuzi unue, sed fakte estas simpla strukturo malantaŭ ĝi. Jen ĝeneraligita vidpunkto, kiu povus klari aferojn iomete:

KREU TABLO table_name (atribuajnajn datumpecajn eblojn, ..., atribuojnnomon-datumpecojn);

Atributoj kaj Datumoj-Tipoj

En la antaŭa ekzemplo, la tabla nomo estas dungita kaj ni inkluzivas kvar atributojn: oficisto, nomo, unua nomo kaj raporto. La datumpo indikas la tipon de informoj, kiujn ni deziras stoki en ĉiu kampo. La dungita ID estas simpla nombra nombro, do ni uzos la INTEGER-datumaron por la dungita kampo kaj la raporta kampo. La nomitaj nomoj estos karakterizaj ŝnuroj de ŝanĝiĝema longo kaj ni ne atendas ke iu dungito havu unuan aŭ lastan nomon pli ol 25 karakterojn. Sekve, ni uzos la VARCHAR (25) tipo por ĉi tiuj kampoj.

NULL Valoroj

Ni ankaŭ povas specifi aŭ NULL aŭ NOT NULL en la elekta kampo de la KREK-aserto. Ĉi simple diras al la datumbazo ĉu NULL (aŭ malplenaj) valoroj estas permesitaj por tiu atributo aldoninte vicojn al la datumbazo. En nia ekzemplo, la HR-fako postulas ke dungito-ID kaj kompleta nomo estu konservitaj por ĉiu dungito. Tamen, ne ĉiu dungito havas administranton - la CEO raportas al neniu! - do ni permesas NULL enirojn en tiu kampo. Notu, ke NULL estas la defaŭlta valoro kaj preterlasante ĉi tiun opcion implicite permesos NULL valorojn por atributo.

Konstruanta La Restanta Tabulojn

Nun rigardu la teritorion tablo. Ekrigardante ĉi tiun datumon, ŝajnas, ke ni devas stoki entjeron kaj du variajn longajn kordoj. Kiel kun nia antaŭa ekzemplo, ni ne atendas, ke la ID-regiono konsumas pli ol 25 karakterojn. Tamen iuj el niaj teritorioj havas pli longajn nomojn, do ni ekspansiiĝos la longan permeson de tiu atributo al 40 karakteroj. Ni rigardu la respondan SQL:

KREUBLOJ-teritorioj (teritoria INTEGERO NOT NULL, teritorio Priskribo VARCHAR (40) NOT NULL, regiona VARCHAR (25) NOT NULL);

Finfine ni uzos la Tablon de Dungitoj por stoki la rilatojn inter dungitoj kaj teritorioj. Detalaj informoj pri ĉiu dungito kaj teritorio estas konservitaj en niaj antaŭaj du tabloj. Sekve, ni nur devas stoki la du entjerajn identajn nombrojn en ĉi tiu tablo. Se ni devas ekspansiiĝi ​​ĉi tiun informon, ni povas uzi JOIN en niaj datumaj komandoj por akiri informojn de pluraj tabloj. Ĉi tiu metodo de stokado de datumoj reduktas redundon en nia datumbazo kaj certigas la plej bonan uzon de spaco en niaj stokaj diskoj. Ni kovros la komandon JOIN en profundo en estonta lernilo. Jen la SQL-kodo por implementi nian finan tablon:

KREUBLOJ laborajterioj (oficisto INTEGER NOT NULL, teritoria INTEGERO NOT NULL);

La Mekanismo SQL Provizas Alter la Strukturon de Datumaro Post Kreo

Se vi estas precipe ruza hodiaŭ, vi eble rimarkis, ke ni "hazarde" preterlasis unu el la dezajnaj postuloj kiam efektivigis niajn datumbazajn tabelojn. La Direktoro de HR de XYZ Corporation petis, ke la datumbaza trako de dungitaraj informoj kaj ni rifuzis provizi por tio en la datumbazoj, kiujn ni kreis.

Tamen, ĉio ne perdiĝas. Ni povas uzi la komandon ALTER TABLE por aldoni ĉi tiun atributon al nia ekzistanta datumbazo. Ni volas konservi la salajron kiel entjera valoro. La sintakso estas tre simila al tiu de la komando de CREATE TABLE, jen ĝi estas:

ALTO TABLE-dungitoj Aldonu salajron INTEGER NULL;

Rimarku, ke ni specifis, ke NULLvaloroj estas permesitaj por ĉi tiu atributo. Plejofte, ne ekzistas opcio aldoninte kolumon al ekzistanta tablo. Ĉi tio estas pro la fakto, ke la tablo jam enhavas vicojn sen eniro por ĉi tiu atributo. Sekve, la DBMS aŭtomate enmetas NULL-valoron por plenigi la malplenan.

Kaj tio ŝprucas nian rigardon al la SQL-datumbazo kaj tablo-kreado. Kontrolu ofte por novaj interkonsentoj en nia SQL-tutoria serio. Se vi ŝatus retmesaĝon de retpoŝtaĵoj kiam novaj artikoloj estas aldonitaj al la retejo pri Datumbazoj, vi nepre subscribos nian informilon!