Kreye baz done ak Tablo nan SQL

Kreye baz done a

Èske ou pare yo kòmanse kreye baz done ak tab yo avèk langaj la estriktire ? Nan atik sa a, nou eksplore pwosesis la pou kreye tab manyèlman ak kòmandman yo CREATE ak CREATE TAB kòm. Si ou nouvo nan SQL, ou ka vle revize atik debaz SQL nou an premye.

Kondisyon biznis

Anvan nou chita nan klavye a, nou bezwen asire ke nou gen yon konpreyansyon solid nan kondisyon kliyan an. Ki sa ki pi bon fason yo jwenn sa a insight? Pale ak kliyan an, nan kou! Apre chita pale ak Direktè Resous Imèn XYZ a, nou te aprann ke yo se yon konpayi lavant widget ak yo prensipalman enterese nan swiv enfòmasyon sou pèsonèl lavant yo.

XYZ Kòporasyon divize fòs lavant yo nan rejyon lès ak lwès yo, chak nan yo divize an anpil teritwa ki kouvri pa reprezantan lavant endividyèl. Depatman HR ta renmen swiv teritwa ki kouvri pa chak anplwaye ansanm ak enfòmasyon salè chak anplwaye ak estrikti sipèvize. Pou satisfè kondisyon sa yo, nou te fèt yon baz done ki fòme ak twa tab, yo montre nan dyagram nan Entity-relasyon nan paj sa a.

Chwazi yon platfòm baz done

Nou te deside sèvi ak yon sistèm jesyon baz done (oswa DBMS) ki konstwi sou lang lan estriktire Query (SQL). Se poutèt sa, tout nan baz done nou yo ak kòmandman kreyasyon tab yo ta dwe ekri ak estanda ANSI SQL nan tèt ou.

Kòm yon benefis ajoute, lè l sèvi avèk SQL ANSI-konfòme pral asire ke kòmandman sa yo ap travay sou nenpòt DBMS ki sipòte estanda a SQL , ki gen ladan Oracle ak Microsoft SQL sèvè. Si ou pa te chwazi yon platfòm pou baz done ou ankò, Opsyon yo Software Opsyon lojisyèl mache ou atravè pwosesis seleksyon an.

Kreye baz done a

Premye etap nou se kreye baz done a tèt li. Anpil sistèm jesyon baz done ofri yon seri de opsyon yo Customize baz done paramèt nan etap sa a, men baz done nou an sèlman pèmèt kreyasyon an senp nan yon baz done. Menm jan ak tout kòmandman nou yo, ou ka vle konsilte dokiman an pou DBMS ou pou detèmine si nenpòt paramèt avanse sipòte pa sistèm espesifik ou satisfè bezwen ou yo. Se pou nou sèvi ak CREAT DATABASE lòd yo mete kanpe baz done nou an:

Kreye anplwaye DATABASE

Pran nòt espesyal nan lèt majiskil yo itilize nan egzanp ki anwo la a. Li nan pratik komen nan mitan SQL pwogramè yo sèvi ak tout lèt majiskil pou mo kle SQL tankou "CREATE" ak "DATABASE" pandan w ap itilize tout lèt miniskil pou itilizatè defini non tankou non an "pèsonèl" baz done. Konvansyon sa yo bay lizibilite fasil.

Kontinye lekti Tutorial sa a jan nou kreye tab pou baz done nou an.

Aprann plis

Si ou ta renmen aprann plis sou Lang la estriktire Query , li Entwodiksyon nan SQL oswa enskri pou kou gratis nou an SQL e-mail.

Koulye a, ke nou te fèt ak kreye baz done nou an, nou pare yo kòmanse kreye twa tab yo itilize nan estoke done pèsonèl XYZ Corporation an. Nou pral aplike tab yo nou fèt nan pòsyon anvan an nan Tutorial sa a.

Kreye premye tab nou an

Tablo premye nou an konsiste de done pèsonèl yo pou chak anplwaye nan konpayi nou an. Nou bezwen enkli non chak anplwaye, salè, ID, ak manadjè. Li bon pratik konsepsyon yo separe non an ak premye nan jaden separe senplifye done chache ak klasman nan tan kap vini an. Epitou, nou pral kenbe tras nan manadjè chak anplwaye a pa mete yon referans a ID anplwaye manadjè a nan chak dosye anplwaye. Ann premye pran yon gade nan tab la anplwaye vle.

Atribi nan ReportsTo estoke ID a manadjè pou chak anplwaye. Soti nan dosye yo echantiyon montre, nou ka detèmine ke Sue Scampi se manadjè a tou de Tom Kendall ak John Smith. Sepandan, pa gen okenn enfòmasyon nan baz done a sou manadjè Sue a, jan sa endike nan antre a NULL nan ranje li.

Koulye a, nou ka itilize SQL yo kreye tab la nan baz done pèsonèl nou an. Anvan nou fè sa, kite la asire ke nou yo nan baz done ki kòrèk la lè yo founi dokiman yo yon lòd USE:

Pèsonèl itilizasyon;

Altènativman, "pèsonèl la DATABASE;" lòd ta fè menm fonksyon an. Koulye a, nou ka pran yon gade nan lòd la SQL itilize yo kreye anplwaye nou an tab:

CREATE TABLE anplwaye (anplwaye INTEGER PA NULL, VARCHAR VÈSÈY (25) PA NULL, PREMYE VARCHAR (25) PA NULL, reportsto INTEGER NULL);

Menm jan ak egzanp ki anwo a, sonje ke konvansyon pwogramasyon dikte ke nou itilize tout lèt majiskil pou mo kle SQL ak lèt ​​miniskil pou kolòn itilizatè yo ak non yo. Kòmandman an pi wo a ka sanble konfizyon nan premye, men gen nan aktyèlman yon estrikti ki senp dèyè li. Isit la nan yon View jeneralize ki ta ka klè bagay sa yo yon ti jan:

CREATE TABLE table_name (opsyon_name datatype opsyon, ..., opsyon_name datatype opsyon);

Atribi ak Done Kalite

Nan egzanp lan anvan, non an tab se anplwaye epi nou gen ladan kat atribi: anplwaye, dènye, premye, ak reportsto. Datatype a endike kalite enfòmasyon nou swete nan magazen nan chak jaden. ID anplwaye a se yon nonb antye ki senp, kidonk nou pral sèvi ak INTEGER datatip la pou toude jaden an anplwaye ak jaden an reportsto. Non anplwaye yo pral strings karaktè nan longè varyab epi nou pa atann nenpòt anplwaye gen yon premye oswa dènye non ki pi long pase 25 karaktè. Se poutèt sa, nou pral itilize kalite a VARCHAR (25) pou sa yo jaden.

Valè NULL

Nou ka presize tou NULL oswa PA NULL nan jaden opsyon deklarasyon CREATE la. Sa a tou senpleman di baz done a si nul (oswa vid) valè yo gen dwa pou sa atribi lè ajoute ranje nan baz done a. Nan egzanp nou an, depatman HR la mande pou yon anplwaye ID ak non konplè dwe estoke pou chak anplwaye. Sepandan, se pa tout anplwaye ki gen yon manadjè - rapò a CEO pèsonn! - Se konsa, nou pèmèt antre NULL nan ki jaden. Remake byen ke NULL se valè a default ak omissions opsyon sa a pral enplisit pèmèt valè NULL pou yon atribi.

Bati Tablo ki rete yo

Koulye a, kite a pran yon gade nan tab yo teritwa. Soti nan yon gade rapid nan done sa a, li parèt ke nou bezwen nan magazen yon nonb antye relatif ak de strings longè varyab. Menm jan ak egzanp anvan nou an, nou pa atann ID Rejyon an konsome plis pase 25 karaktè. Sepandan, kèk nan teritwa nou yo gen ankò non, se konsa nou pral elaji longè a admisib nan sa a atribi a 40 karaktè. Ann gade nan SQL ki koresponn lan:

KREYE TIT teritwa (teritetikid INTEGER PA NULL, teritwa Deskripsyon VARCHAR (40) PA NULL, rejyonid VARCHAR (25) PA NULL);

Finalman, nou pral sèvi ak Tab EmployeeTerritories yo nan magazen relasyon ki genyen ant anplwaye ak teritwa. Se enfòmasyon detaye sou chak anplwaye ak teritwa ki estoke nan de anvan nou tab yo. Se poutèt sa, nou sèlman bezwen magazen nimewo yo nimewo antye non idantifikasyon nan tablo sa a. Si nou bezwen elaji enfòmasyon sa yo nou ka itilize yon JOIN nan kòmandman seleksyon done nou yo pou jwenn enfòmasyon ki soti nan tab miltip. Metòd sa a nan estoke done diminye redondans nan baz done nou an epi asire optimal itilize nan espas sou kondwi depo nou yo. Nou pral kouvri lòd JOIN an pwofondè nan yon leson patikilye nan lavni. Isit la nan kòd la SQL aplike tablo final nou an:

KREYE anplwaye TABLE anplwaye (anplwaye INTEGER PA NULL, teritowid INTEGER PA NULL);

SQL la mekanis bay pou estrikti a nan yon baz done apre kreyasyon

Si w ap patikilyèman rize jodi a, ou ka te remake ke nou "aksidantèlman" omisyon youn nan kondisyon yo ki konsepsyon lè mete ann aplikasyon tab baz done nou an. Direktè HR XYZ Corporation a te mande pou enfòmasyon sou baz enfòmasyon sou salè anplwaye a epi nou neglije bay pou sa nan tab baz done nou kreye yo.

Sepandan, tout pa pèdi. Nou ka itilize kòmandman an TAB ALTER yo ajoute sa a atribi nan baz done ki egziste deja nou an. Nou vle nan magazen salè a kòm yon valè nonb antye relatif. Sentaks la se byen menm jan ak sa a nan lòd la CREYE TABLE, isit la li se:

ALTÈ TAB anplwaye ADD salè INTEGER NULL;

Avi ke nou espesifye ke valè NULL yo pèmèt pou atribi sa a. Nan pifò ka, pa gen okenn opsyon lè ajoute yon kolòn nan yon tab ki egziste deja. Sa a se akòz lefèt ke tab la deja gen ranje ki pa gen okenn antre pou sa a atribi. Se poutèt sa, DBMS yo otomatikman foure yon valè NULL ranpli anile la.

Epi ki vlope moute gade nou nan baz done a SQL ak pwosesis kreyasyon tab. Tcheke tounen souvan pou vèsman nouvo nan seri tutoryèl SQL nou yo. Si ou ta renmen yon rapèl e-mail lè nouvo atik yo ajoute nan sit la sou baz done, asire w ke ou abònman nan bilten nou an!