Ilustrēts pašmācības ceļvedis SQL iesācējiem. Kategoriju arhīvs: Grāmatas par SQL Sql programmēšanas valoda manekeniem

No autora: Vai tevi sauc par tējkannu? Nu, tas ir labojams! Katrs samovārs kādreiz bija tējkanna! Vai arī katrs profesionālis kādreiz bija samovārs? Nē, atkal kaut kas nav kārtībā! Kopumā MySQL ir paredzēts iesācējiem.

Kāpēc manekeniem ir nepieciešams MySQL

Ja jūs nopietni gatavojaties saistīt savu dzīvi ar internetu, tad jau ar pirmajiem soļiem "tīmeklī" jūs saskarsities ar šo DBVS. MySQL var droši saukt par "visa interneta" datu bāzes pārvaldības sistēmu. Bez tā nevar iztikt neviens vairāk vai mazāk nopietns resurss, tas atrodas katra hostinga admin panelī. Un lielākā daļa no visiem populārajiem CMS un pat pašizveidotie dzinēji tiek veidoti ar viņas līdzdalību.

Kopumā jūs nevarat iztikt bez šīs platformas. Bet, lai to izpētītu, ir nepieciešama arī pareiza pieeja, pareizie instrumenti un, pats galvenais, vēlme un pacietība. Es ceru, ka jums ir daudz pēdējo. Un esiet gatavi tam, ka smadzenes vārīsies un no galvas izkritīs tvaiki kā no īstas tējkannas

Bet manekeniem MySQL ir tik grūti tikai tad, ja sākat to apgūt nepareizi. Mēs nepieļausim šādu kļūdu, un mēs sāksim savu iepazīšanos ar šo tehnoloģiju no paša sākuma.

Pamatjēdzieni

Vispirms apskatīsim pamatjēdzienus, kurus mēs pieminēsim šajā ziņojumā:

Datu bāze (DB) ir galvenā DBVS sastāvdaļa. Datu bāzē ir iekļautas tabulas, kas sastāv no kolonnām un ierakstiem (rindām). Krustojumā izveidotās šūnas satur noteikta veida strukturētus datus.

DBVS (datu bāzes pārvaldības sistēma) - visu programmatūras moduļu kopums datu bāzes administrēšanai.

SQL ir strukturēta vaicājumu valoda, ar kuras palīdzību izstrādātājs "sazinās" ar DBVS kodolu (serveri). Tāpat kā jebkurai programmēšanas valodai, arī SQL ir sava sintakse, komandu un operatoru kopa, atbalstītie datu tipi.

Es domāju, ka mums ir pietiekami daudz teorētisko zināšanu. Trūkstošās teorijas nepilnības “uzkrāsosim” ar praksi. Tagad atliek tikai izvēlēties pareizo programmatūras rīku.

Pareizā instrumenta atrašana

Diezgan "rakņājot" visu MySQL čaulu klāstu iesācējiem, es sapratu, ka tādas vienkārši neeksistē. Visiem programmatūras produktiem DBVS administrēšanai ir nepieciešams jau instalēts datu bāzes serveris. Kopumā es vēlreiz nolēmu neizgudrot no jauna "skrejriteni", un izvēlējos vietējo Denwer paketi. To var lejupielādēt oficiālajā vietnē.

Tajā jau ir iekļautas visas DBVS sastāvdaļas, ļaujot iesācējam uzsākt praktisku iepazīšanos ar MySQL uzreiz pēc vienkāršas un saprotamas instalēšanas. Turklāt Denwer ietver vairākus citus rīkus, kas nepieciešami iesācēju izstrādātājam: lokālais serveris, PHP.

Pirmie soļi

Neaprakstīšu "džentlmeņu" komplekta uzstādīšanas procesu, jo tur viss notiek automātiski. Pēc instalēšanas palaišanas atliek tikai nospiest nepieciešamos taustiņus. Tieši tas, kas jums nepieciešams MySQL fiktīvajā versijā.

Kad instalēšanas process ir beidzies, startējiet vietējo serveri, pagaidiet dažas sekundes. Pēc tam pārlūkprogrammas adreses joslā ierakstiet localhost.

Lapā "Urā, tas darbojas!" sekojiet vienai no attēlā redzamajām saitēm. Pēc tam tiksiet novirzīts uz phpMyAdmin – čaulu datu bāzes administrēšanai.

Noklikšķinot uz saites http://downloads.mysql.com/docs/world.sql.zip, jūs lejupielādēsiet testa datu bāzes paraugu no oficiālās MySQL vietnes. Atkal dodieties uz phpMyAdmin, galvenajā izvēlnē augšpusē dodieties uz cilni "Importēt". Logā "Importēt uz pašreizējo" pirmajā sadaļā ("Importējamais fails") iestatiet vērtību "Pārlūkot datoru".

Pārlūka logā atlasiet arhīvu ar lejupielādēto datu bāzes piemēru. Neaizmirstiet noklikšķināt uz "Labi" galvenā loga apakšā.

Iesaku pagaidām nemainīt norādītās parametru vērtības. Tas var izraisīt nepareizu importētā avota datu rādīšanu. Ja phpMyAdmin parāda kļūdu, ka nevar atpazīt datu bāzes saspiešanas algoritmu, izpakojiet to un atkārtojiet visu importēšanas procesu no sākuma.

Ja viss noritēja labi, tad augšpusē parādīsies programmas ziņojums, ka importēšana bija veiksmīga, un DB sarakstā kreisajā pusē ir vēl viens (vārds).

Apskatīsim tā uzbūvi no iekšpuses, lai varētu skaidrāk iedomāties, ar ko nāksies saskarties.

Noklikšķiniet uz MySQL datu bāzes iesācējiem nosaukuma. Zem tā tiks parādīts to tabulu saraksts, no kurām tas sastāv. Noklikšķiniet uz vienas no tām. Pēc tam dodieties uz augšējo izvēlnes vienumu "Struktūra". Galvenajā darba apgabalā tiek parādīta tabulas struktūra: visi kolonnu nosaukumi, datu veidi un visi atribūti.

Šī apmācība ir kaut kas līdzīgs "manas atmiņas zīmogam" SQL valodai (DDL, DML), t.i. tā ir informācija, kas uzkrājusies manas profesionālās darbības gaitā un pastāvīgi glabājas manā galvā. Tas man ir pietiekams minimums, ko visbiežāk izmanto darbā ar datu bāzēm. Ja rodas nepieciešamība izmantot pilnīgākas SQL konstrukcijas, tad parasti vēršos pēc palīdzības MSDN bibliotēkā, kas atrodas internetā. Manuprāt, ir ļoti grūti visu paturēt savā galvā, un tas nav īpaši nepieciešams. Bet ir ļoti noderīgi zināt pamatkonstrukcijas, jo tie ir piemērojami gandrīz tādā pašā formā daudzās relāciju datu bāzēs, piemēram, Oracle, MySQL, Firebird. Atšķirības galvenokārt ir datu tipos, kas var atšķirties detaļās. SQL valodas pamata konstrukciju nav tik daudz, un ar pastāvīgu praksi tās ātri atceras. Piemēram, lai izveidotu objektus (tabulas, ierobežojumus, indeksus utt.), pietiek ar vides teksta redaktoru (IDE) darbam ar datu bāzi, un nav nepieciešams pētīt vizuālos rīkus, kas ir uzasināti. darbs ar noteikta veida datu bāzēm (MS SQL, Oracle, MySQL, Firebird, ...). Tas ir ērti arī tāpēc, ka viss teksts ir jūsu acu priekšā, un jums nav nepieciešams palaist cauri daudzām cilnēm, lai izveidotu, piemēram, indeksu vai ierobežojumu. Pastāvīgi strādājot ar datu bāzi, objekta izveide, mainīšana un jo īpaši pārveidošana, izmantojot skriptus, ir daudzkārt ātrāka nekā tad, ja to darītu vizuālā režīmā. Arī skripta režīmā (attiecīgi ar pienācīgu rūpību) ir vieglāk uzstādīt un kontrolēt objektu nosaukšanas noteikumus (mans subjektīvais viedoklis). Turklāt skripti ir ērti lietojami, ja vienā datu bāzē (piemēram, testa) veiktās izmaiņas tādā pašā formā ir jāpārnes uz citu (produktīvu) datu bāzi.

SQL valoda ir sadalīta vairākās daļās, šeit es apspriedīšu 2 vissvarīgākās tās daļas:
  • DML — datu manipulācijas valoda, kas satur šādas konstrukcijas:
    • SELECT - datu atlase
    • INSERT - jaunu datu ievietošana
    • UPDATE - datu atjaunošana
    • DELETE - datu dzēšana
    • MERGE — datu sapludināšana
Jo Esmu praktiķis, šajā apmācībā teorijas kā tādas būs maz, un visas konstrukcijas tiks izskaidrotas ar praktiskiem piemēriem. Turklāt uzskatu, ka programmēšanas valodu un īpaši SQL var apgūt tikai praksē, pašam to izjūtot un saprotot, kas notiek, izpildot to vai citu konstrukciju.

Šī apmācība ir balstīta uz Soli pa solim principa, t.i. tas jālasa secīgi un vēlams uzreiz pēc piemēriem. Bet, ja jums ir nepieciešams uzzināt vairāk par komandu sīkāk, izmantojiet īpašu meklēšanu internetā, piemēram, MSDN bibliotēkā.

Rakstot šo pamācību, tika izmantota MS SQL Server datu bāzes versija 2014, lai izpildītu skriptus, es izmantoju MS SQL Server Management Studio (SSMS).

Īsi par MS SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) ir Microsoft SQL Server utilīta datu bāzes komponentu konfigurēšanai, pārvaldībai un administrēšanai. Šī utilīta satur skriptu redaktoru (ko mēs galvenokārt izmantosim) un grafisko programmu, kas darbojas ar servera objektiem un iestatījumiem. SQL Server Management Studio galvenais rīks ir Object Explorer, kas ļauj lietotājam skatīt, izgūt un manipulēt ar servera objektiem. Šis teksts ir daļēji aizgūts no Vikipēdijas.

Lai izveidotu jaunu skriptu redaktoru, izmantojiet pogu Jauns vaicājums:

Lai mainītu pašreizējo datu bāzi, varat izmantot nolaižamo sarakstu:

Lai izpildītu noteiktu komandu (vai komandu grupu), atlasiet to un nospiediet pogu Izpildīt vai taustiņu F5. Ja šobrīd redaktorā ir tikai viena komanda vai jāizpilda visas komandas, tad nekas nav jāatlasa.

Pēc skriptu, īpaši objektu (tabulu, kolonnu, indeksu) veidojošo skriptu izpildes, lai redzētu izmaiņas, izmantojiet konteksta izvēlnes atjauninājumu, izvēloties atbilstošo grupu (piemēram, Tabulas), pašu tabulu vai tajā esošo grupu Kolonnas.

Patiesībā tas ir viss, kas mums jāzina, lai izpildītu šeit sniegtos piemērus. Pārējo SSMS utilītu ir viegli iemācīties pats.

Mazliet teorijas

Relāciju datu bāze (RDB vai tikai datu bāzes kontekstā) ir savstarpēji savienotu tabulu kolekcija. Aptuveni runājot, datu bāze ir fails, kurā dati tiek glabāti strukturētā formā.

DBVS ir šo datu bāzu pārvaldības sistēma, t.i. tas ir rīku komplekts darbam ar noteikta veida datu bāzēm (MS SQL, Oracle, MySQL, Firebird, ...).

Piezīme
Jo dzīvē sarunvalodā mēs pārsvarā sakām: "Oracle DB", vai pat tikai "Oracle", kas patiesībā nozīmē "Oracle DBMS", tad šīs apmācības kontekstā dažreiz tiks lietots termins DB. No konteksta, manuprāt, būs skaidrs, par ko ir runa.

Tabula ir kolonnu kolekcija. Kolonnas var saukt arī par laukiem vai kolonnām, visi šie vārdi tiks lietoti kā sinonīmi, lai izteiktu vienu un to pašu.

Tabula ir galvenais RDB objekts, visi RDB dati tiek glabāti rinda pa rindiņai tabulas kolonnās. Stīgas, ieraksti arī ir sinonīmi.

Katrai tabulai, kā arī tās kolonnām ir doti nosaukumi, pēc kuriem tām var piekļūt.
Objekta nosaukumam (tabulas nosaukumam, kolonnas nosaukumam, indeksa nosaukumam utt.) MS SQL maksimālais garums var būt 128 rakstzīmes.

Uzziņai- ORACLE datu bāzē objektu nosaukumu maksimālais garums var būt 30 rakstzīmes. Tāpēc konkrētai datu bāzei ir jāizstrādā savi noteikumi objektu nosaukumu piešķiršanai, lai ievērotu rakstzīmju skaita ierobežojumu.

SQL ir valoda, kas ļauj izpildīt vaicājumus datu bāzē, izmantojot DBVS. Konkrētā DBVS SQL valodai var būt noteikta ieviešana (savs dialekts).

DDL un DML ir SQL valodas apakškopa:

  • DDL valoda tiek izmantota, lai izveidotu un modificētu datu bāzes struktūru, t.i. lai izveidotu / modificētu / dzēstu tabulas un saites.
  • DML valoda ļauj manipulēt ar tabulas datiem, t.i. ar viņas līnijām. Tas ļauj atlasīt datus no tabulām, pievienot tabulām jaunus datus, kā arī atjaunināt un dzēst esošos datus.

SQL var izmantot divu veidu komentārus (vienas rindiņas un vairāku rindiņu):

Komentārs ar vienu rindiņu
un

/ * vairāku rindiņu komentārs * /

Patiesībā teorijai ar to pietiks.

DDL — datu definīcijas valoda

Piemēram, apsveriet tabulu ar datiem par darbiniekiem parastajā formā personai, kas nav programmētājs:

Šajā gadījumā tabulas kolonnām ir šādi nosaukumi: Personāla numurs, pilns vārds, Dzimšanas datums, E-pasts, Amats, Nodaļa.

Katru no šīm kolonnām var raksturot pēc tajā ietverto datu veida:

  • Personāla numurs - vesels skaitlis
  • Pilns vārds - virkne
  • Dzimšanas datums - datums
  • E-pasts - virkne
  • Pozīcija - virkne
  • Nodaļa - stīga
Kolonnas veids ir raksturlielums, kas norāda, kāda veida datus konkrētā kolonna var uzglabāt.

Sākumā pietiks atcerēties tikai šādus MS SQL izmantotos pamata datu tipus:

Nozīme MS SQL apzīmējums Apraksts
Mainīga garuma virkne varčars (N)
un
nvarchar (N)
Ar skaitli N mēs varam norādīt maksimālo iespējamo rindas garumu attiecīgajai kolonnai. Piemēram, ja mēs vēlamies teikt, ka kolonnas "name" vērtība var saturēt ne vairāk kā 30 rakstzīmes, tad mums ir jāiestata veids nvarchar (30).
Atšķirība starp varchar un nvarchar ir tāda, ka varchar saglabā virknes ASCII formātā, kur viena rakstzīme ir 1 baits, savukārt nvarchar glabā virknes Unicode formātā, kur katra rakstzīme ir 2 baiti.
Varchar tips ir jāizmanto tikai tad, ja esat 100% pārliecināts, ka laukā nav jāuzglabā unikoda rakstzīmes. Piemēram, varchar var izmantot e-pasta adrešu saglabāšanai, jo tie parasti satur tikai ASCII rakstzīmes.
Fiksēta garuma aukla ogle (N)
un
nchar (N)
Šis veids atšķiras no mainīga garuma virknes ar to, ka, ja virkne ir mazāka par N rakstzīmēm, tad tā vienmēr tiek polsterēta pa labi līdz N garumam ar atstarpēm un tiek saglabāta datu bāzē šādā formā, t.i. tas aizņem tieši N rakstzīmes datu bāzē (kur viena rakstzīme aizņem 1 baitu char un 2 baitus nchar). Manā praksē šis veids tiek izmantots ļoti reti, un, ja lieto, tad galvenokārt izmanto char (1) formātā, t.i. kad lauks ir definēts ar vienu rakstzīmi.
Vesels skaitlis starpt Šis veids ļauj kolonnā izmantot tikai veselus skaitļus, gan pozitīvus, gan negatīvus. Uzziņai (tagad tas mums nav tik aktuāls) - skaitļu diapazons, ko int veids pieļauj, ir no -2 147 483 648 līdz 2 147 483 647. Parasti tas ir galvenais veids, ko izmanto identifikatoru iestatīšanai.
Reāls vai reāls skaitlis peldēt Vienkārši izsakoties, tie ir skaitļi, kuros var būt decimālpunkts (komats).
datums datums Ja kolonnā ir jāsaglabā tikai datums, kas sastāv no trim komponentiem: numurs, mēnesis un gads. Piemēram, 15.02.2014. (2014. gada 15. februāris). Šo veidu var izmantot ailē "Uzņemšanas datums", "Dzimšanas datums" utt. gadījumos, kad mums ir svarīgi fiksēt tikai datumu, vai kad laika sastāvdaļa mums nav svarīga un to var izmest vai ja tā nav zināma.
Laiks laiks Šo veidu var izmantot, ja kolonnā ir jāuzglabā tikai laika dati, t.i. Stundas, minūtes, sekundes un milisekundes. Piemēram, 17:38: 31.3231603
Piemēram, ikdienas "Lidojuma izlidošanas laiks".
datums un laiks datums Laiks Šis veids ļauj vienlaikus saglabāt gan datumu, gan laiku. Piemēram, 15.02.2014 17:38: 31.323
Piemēram, tas var būt notikuma datums un laiks.
Karogs mazliet Šis veids ir ērts tādu vērtību glabāšanai kā "Jā" / "Nē", kur "Jā" tiks saglabāts kā 1, bet "Nē" tiks saglabāts kā 0.

Tāpat var nenorādīt lauka vērtību, ja tā nav aizliegta, šim nolūkam tiek izmantots NULL atslēgvārds.

Lai palaistu piemērus, izveidosim testa bāzi ar nosaukumu Test.

Vienkāršu datu bāzi (bez papildu parametru norādīšanas) var izveidot, izpildot šādu komandu:

IZVEIDOT DATU BĀZI Tests
Varat izdzēst datu bāzi ar komandu (ar šo komandu jums jābūt ļoti uzmanīgiem):

DROP DATU BĀZES pārbaude
Lai pārslēgtos uz mūsu datu bāzi, varat palaist komandu:

LIETOŠANAS tests
Vai arī SSMS izvēlnes apgabalā nolaižamajā sarakstā atlasiet Pārbaudes datu bāzi. Strādājot es bieži izmantoju šo pārslēgšanās metodi starp bāzēm.

Tagad mūsu datubāzē mēs varam izveidot tabulu, izmantojot tādus aprakstus, kādi tie ir, izmantojot atstarpes un kirilicas rakstzīmes:

IZVEIDOT TABULU [Darbinieki] ([Personāla numurs] int, [Pilns vārds] nvarchar (30), [Dzimšanas datums] datums, nvarchar (30), [Amats] nvarchar (30), [Nodaļa] nvarchar (30))
Šajā gadījumā nosaukumi ir jāliek kvadrātiekavās [..].

Bet datu bāzē lielākas ērtības labad visus objektu nosaukumus labāk norādīt latīņu alfabētā un nosaukumos neizmantot atstarpes. MS SQL parasti šajā gadījumā katrs vārds sākas ar lielo burtu, piemēram, laukam "Personāla numurs" mēs varētu iestatīt nosaukumu PersonnelNumber. Nosaukumā var izmantot arī ciparus, piemēram, TālruņaNumurs1.

Uz piezīmes
Dažās DBVS tālāk norādītais nosaukšanas formāts "PHONE_NUMBER" var būt vēlamāks, piemēram, šis formāts bieži tiek izmantots ORACLE DB. Protams, norādot lauka nosaukumu, vēlams, lai tas nesakristu ar DBVS lietotajiem atslēgvārdiem.

Šī iemesla dēļ varat aizmirst par kvadrātiekavu sintaksi un dzēst tabulu [Darbinieki]:

DROP TABLE [Darbinieki]
Piemēram, tabulu ar darbiniekiem var nosaukt “Darbinieki”, un tās laukus var nosaukt šādi:

  • ID — personāla numurs (darbinieka ID)
  • Vārds - pilns vārds
  • Dzimšanas diena — dzimšanas datums
  • E-pasts - E-pasts
  • Pozīcija - Pozīcija
  • Nodaļa - nodaļa
Ļoti bieži vārds ID tiek izmantots, lai nosauktu identifikatora lauku.

Tagad izveidosim tabulu:

IZVEIDOT TABULU Darbinieki (ID int, vārds nvarchar (30), dzimšanas datums, e-pasts nvarchar (30), amats nvarchar (30), nodaļa nvarchar (30))
Varat izmantot opciju NOT NULL, lai norādītu vajadzīgās kolonnas.

Esošai tabulai laukus var definēt no jauna, izmantojot šādas komandas:

ID lauka ALTER TABLE atjaunināšana Darbinieki ALTER COLUMN ID int NOT NULL — lauka Name atjaunināšana ALTER TABLE Darbinieki ALTER COLUMN Name nvarchar (30) NOT NULL

Uz piezīmes
Vispārējā SQL valodas koncepcija lielākajai daļai DBVS paliek nemainīga (vismaz es to varu spriest pēc DBVS, ar kurām esmu strādājis). Atšķirība starp DDL dažādās DBVS galvenokārt slēpjas datu tipos (šeit var atšķirties ne tikai to nosaukumi, bet arī to ieviešanas detaļās), var nedaudz atšķirties arī SQL valodas ieviešanas specifika (t.i., komandas ir vienādas, taču var būt nelielas atšķirības dialektā, bet nav viena standarta). Zinot SQL pamatus, jūs varat viegli pārslēgties no vienas DBVS uz citu, jo šajā gadījumā jums ir jāsaprot tikai komandu ieviešanas detaļas jaunajā DBVS, t.i. vairumā gadījumu pietiks ar vienkāršu analoģiju.

Izveidot tabulu CREATE TABLE Darbinieki (ID int, - ORACLE, int tips ir līdzvērtīgs (wrapper) numuram (38) Vārds nvarchar2 (30), - nvarchar2 programmā ORACLE ir līdzvērtīgs nvarchar MS SQL Dzimšanas datums, E-pasts nvarchar2 (30) ) , Amats nvarchar2 (30), Nodaļa nvarchar2 (30)); - atjauninot laukus ID un Name (šeit tiek izmantots MODIFY (…), nevis ALTER COLUMN) ALTER TABLE Darbinieki MODIFY (ID int NOT NULL, Name nvarchar2 (30) NOT NULL); - pievienojot PK (šajā gadījumā konstrukcija izskatās kā MS SQL, tas tiks parādīts zemāk) ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY (ID);
ORACLE gadījumā ir atšķirības varchar2 tipa ieviešanas ziņā, tā kodējums ir atkarīgs no datu bāzes iestatījumiem un tekstu var saglabāt, piemēram, UTF-8 kodējumā. Turklāt ORACLE lauka garumu var iestatīt gan baitos, gan rakstzīmēs, šim nolūkam tiek izmantotas papildu opcijas BYTE un CHAR, kuras tiek norādītas aiz lauka garuma, piemēram:

NOSAUKUMS varchar2 (30 BYTE) - lauka ietilpība būs 30 baiti NOSAUKUMS varchar2 (30 CHAR) - lauka ietilpība būs 30 rakstzīmes
Kura opcija tiks izmantota pēc noklusējuma BYTE vai CHAR, vienkāršas varchar2 (30) tipa norādes gadījumā ORACLE ir atkarīgs no datu bāzes iestatījumiem, to dažreiz var iestatīt arī IDE iestatījumos. Kopumā dažreiz jūs varat viegli sajaukt, tāpēc ORACLE gadījumā, ja tiek izmantots tips varchar2 (un tas dažreiz šeit ir pamatots, piemēram, izmantojot UTF-8 kodējumu), es gribētu skaidri rakstīt CHAR ( jo parasti ir ērtāk nolasīt virknes garumu rakstzīmēs ).

Bet šajā gadījumā, ja tabulā jau ir kādi dati, tad veiksmīgai komandu izpildei nepieciešams, lai visās tabulas rindās būtu jāaizpilda lauki ID un Name. Demonstrēsim to ar piemēru, ievietojiet datus tabulā laukos ID, Amats un Nodaļa, to var izdarīt ar šādu skriptu:

IEVIETOT darbinieku (ID, amats, nodaļa) VĒRTĪBAS (1000, N "Direktors", N "Administrācija"), (1001, N "Programmētājs", N "IT"), (1002, N "Grāmatvedis", N "Grāmatvedība" ), (1003, N "vecākais programmētājs", N "IT")
Šajā gadījumā komanda INSERT arī radīs kļūdu, jo ievietojot nenorādījām vajadzīgā lauka Nosaukums vērtību.
Ja mums jau bija šie dati sākotnējā tabulā, tad komanda "ALTER TABLE Employees ALTER COLUMN ID int NOT NULL" būtu veiksmīga, un komanda "ALTER TABLE Employees ALTER COLUMN Name int NOT NULL" sniegtu kļūdas ziņojumu, ka laukā Nosaukums ir NULL (nenorādītas) vērtības.

Pievienojiet vērtības laukam Nosaukums un vēlreiz aizpildiet datus:


Tāpat opciju NOT NULL var izmantot tieši, veidojot jaunu tabulu, t.i. komandas CREATE TABLE kontekstā.

Vispirms izdzēsīsim tabulu, izmantojot komandu:

DROP TABLE Darbinieki
Tagad izveidosim tabulu ar obligātajām kolonnām ID un Name:

IZVEIDOT TABULU Darbinieki (ID int NOT NULL, Vārds nvarchar (30) NOT NULL, Dzimšanas datums, E-pasts nvarchar (30), Amats nvarchar (30), Nodaļa nvarchar (30))
Varat arī rakstīt NULL aiz kolonnas nosaukuma, kas nozīmēs, ka tajā tiks atļautas NULL vērtības (nav norādītas), taču tas nav nepieciešams, jo šis raksturlielums tiek pieņemts pēc noklusējuma.

Ja, gluži pretēji, esošā kolonna ir jāpadara neobligāta aizpildīšanai, mēs izmantojam šādu komandu sintaksi:

ALTER TABLE Darbinieki ALTER COLUMN Vārds nvarchar (30) NULL
Vai vienkārši:

ALTER TABLE Darbinieki ALTER COLUMN Vārds nvarchar (30)
Turklāt ar šo komandu mēs varam mainīt lauka veidu uz citu saderīgu veidu vai mainīt tā garumu. Piemēram, paplašināsim lauku Nosaukums līdz 50 rakstzīmēm:

ALTER TABLE Darbinieki ALTER COLUMN Vārds nvarchar (50)

Primārā atslēga

Veidojot tabulu, vēlams, lai tai būtu unikāla kolonna vai kolonnu kopa, kas ir unikāla katrai tās rindai - ierakstu var unikāli identificēt pēc šīs unikālās vērtības. Šo vērtību sauc par tabulas primāro atslēgu. Mūsu darbinieku tabulai šāda unikāla vērtība var būt ID kolonna (kurā ir "Darbinieka personāla numurs" - pat ja mūsu gadījumā šī vērtība ir unikāla katram darbiniekam un to nevar atkārtot).

Esošai tabulai varat izveidot primāro atslēgu, izmantojot komandu:

MAINĪT TABULU Darbinieki PIEVIENOT IEROBEŽOJUMU PK_Employees PRIMARY KEY (ID)
Kur “PK_Employees” ir ierobežojuma nosaukums, kas ir atbildīgs par primāro atslēgu. Parasti primārās atslēgas nosaukšanai tiek izmantots prefikss "PK_", kam seko tabulas nosaukums.

Ja primārā atslēga sastāv no vairākiem laukiem, šie lauki ir jānorāda iekavās, atdalot tos ar komatiem:

ALTER TABLE tabulas_nosaukums ADD CONSTRAINT ierobežojuma_nosaukums PRIMĀRĀ ATSLĒGA (lauks1, lauks2, ...)
Ir vērts atzīmēt, ka MS SQL visi lauki, kas ir iekļauti primārajā atslēgā, nedrīkst būt NULL.

Tāpat primāro atslēgu var noteikt tieši, veidojot tabulu, t.i. komandas CREATE TABLE kontekstā. Izdzēsīsim tabulu:

DROP TABLE Darbinieki
Un tad izveidosim to, izmantojot šādu sintaksi:

IZVEIDOT TABULU Darbinieki (ID int NOT NULL, Vārds nvarchar (30) NOT NULL, Dzimšanas datums, E-pasts nvarchar (30), Amats nvarchar (30), Nodaļa nvarchar (30), CONSTRAINT PK_Darbinieki PRIMARY KEY (ID) - galu galā aprakstiet PK lauki kā ierobežojums)
Pēc izveides aizpildiet datus tabulā:

IEVADĪT Darbinieku (ID, Amats, Nodaļa, Vārds) VĒRTĪBAS (1000, N "Direktors", N "Administrācija", N "Ivanov I.I."), (1001, N "Programmētājs", N "IT", N " Petrov PP " ), (1002, N" Grāmatvedis ", N" Grāmatvedība ", N" Sidorovs SS "), (1003, N" Vecākais programmētājs ", N" IT ", N" Andrejevs A. A.")
Ja primārā atslēga tabulā sastāv tikai no vienas kolonnas vērtībām, tad var izmantot šādu sintaksi:

IZVEIDOT TABULU Darbinieki (ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY, - norādiet kā raksturlielumu laukam Name nvarchar (30) NOT NULL, Birthday date, Email nvarchar (30), Position nvarchar (30), Department nvarchar (30))
Faktiski ierobežojuma nosaukums nav jāiestata, un tādā gadījumā tam tiks piešķirts sistēmas nosaukums (piemēram, "PK__Employee__3214EC278DA42077"):

IZVEIDOT TABULU Darbinieki (ID int NOT NULL, Vārds nvarchar (30) NOT NULL, Dzimšanas datums, E-pasts nvarchar (30), Amats nvarchar (30), Nodaļa nvarchar (30), PRIMARY KEY (ID))
Vai:

IZVEIDOT TABULU Darbinieki (ID int NOT NULL PRIMARY KEY, Vārds nvarchar (30) NOT NULL, Dzimšanas datums, E-pasts nvarchar (30), Amats nvarchar (30), Nodaļa nvarchar (30))
Bet es ieteiktu vienmēr skaidri norādīt ierobežojuma nosaukumu pastāvīgām tabulām, jo ar skaidri norādītu un saprotamu nosaukumu, ar to vēlāk būs vieglāk manipulēt, piemēram, varat to izdzēst:

ALTER TABLE Darbinieki DROP CONSTRAINT PK_Employees
Bet tik īsu sintakse, nenorādot ierobežojumu nosaukumus, ir ērti izmantot, veidojot pagaidu datu bāzes tabulas (pagaidu tabulas nosaukums sākas ar # vai ##), kuras pēc lietošanas tiks dzēstas.

Apkoposim

Līdz šim esam aptvēruši šādas komandas:
  • IZVEIDOT TABLU tabulas_nosaukums (lauku un to veidu uzskaitījums, ierobežojumi) - tiek izmantots jaunas tabulas izveidošanai pašreizējā datu bāzē;
  • NOLIETOT TABULU tabulas_nosaukums - kalpo tabulas dzēšanai no pašreizējās datu bāzes;
  • MAINĪT TABLU tabulas_nosaukums ALTER COLUMN kolonnas_nosaukums… - tiek izmantots, lai atjauninātu kolonnas veidu vai mainītu tās iestatījumus (piemēram, lai norādītu NULL vai NOT NULL raksturlielumu);
  • MAINĪT TABLU tabulas_nosaukums PIEVIENOT IEROBEŽOJUMU ierobežojuma_nosaukums PRIMĀRĀ ATSLĒGA(lauks1, lauks2, ...) - primārās atslēgas pievienošana esošai tabulai;
  • MAINĪT TABLU tabulas_nosaukums KRIST IEROBEŽOJUMS ierobežojuma_nosaukums — noņem ierobežojumu no tabulas.

Mazliet par pagaidu galdiem

Fragments no MSDN. MS SQL Server ir divu veidu pagaidu tabulas: lokālās (#) un globālās (##). Vietējās pagaidu tabulas ir redzamas tikai to veidotājiem, līdz beidzas savienojums ar SQL Server gadījumu, tiklīdz tās ir izveidotas. Vietējās pagaidu tabulas tiek automātiski atmestas pēc tam, kad lietotājs atvienojas no SQL Server gadījuma. Globālās pagaidu tabulas ir redzamas visiem lietotājiem jebkurā savienojuma sesijā pēc šo tabulu izveides, un tās tiek atmestas, kad visi lietotāji, kas atsaucas uz šīm tabulām, atvienojas no SQL Server instances.

Tempdb sistēmas datu bāzē tiek veidotas pagaidu tabulas, t.i. tās veidojot, mēs nepiegružam galveno bāzi, pretējā gadījumā pagaidu tabulas ir pilnīgi identiskas parastajām tabulām, tās var arī nomest, izmantojot komandu DROP TABLE. Biežāk tiek izmantotas vietējās (#) pagaidu tabulas.

Lai izveidotu pagaidu tabulu, varat izmantot komandu CREATE TABLE:

IZVEIDOT TABULU #Temp (ID int, Name nvarchar (30))
Tā kā pagaidu tabula MS SQL ir līdzīga parastajai tabulai, varat to arī pats nomest, izmantojot komandu DROP TABLE:

DROPP TABLE #Temp

Arī pagaidu tabulu (tāpat kā parasto tabulu) var izveidot un nekavējoties aizpildīt ar vaicājuma atgrieztajiem datiem, izmantojot sintaksi SELECT ... INTO:

IZVĒLĒTIES ID, Vārds INTO #Temp NO Darbiniekiem

Uz piezīmes
Pagaidu tabulu ieviešana dažādās DBVS var atšķirties. Piemēram, ORACLE un Firebird DBVS pagaidu tabulu struktūra ir iepriekš jādefinē ar komandu CREATE GLOBAL TEMPORARY TABLE norādot tajā datu glabāšanas specifiku, tad lietotājs to var redzēt starp galvenajām tabulām un strādāt ar to kā ar parastu galdu.

Datu bāzes normalizācija - sadalīšana apakštabulās (uzziņu grāmatās) un attiecību noteikšana

Mūsu pašreizējās darbinieku tabulas trūkums ir tāds, ka laukos Amats un Nodaļa lietotājs var ievadīt jebkuru tekstu, kas galvenokārt ir pilns ar kļūdām, jo ​​viens darbinieks var vienkārši norādīt "IT" kā nodaļu, bet otrs darbinieks, piemēram, . ievadiet "IT nodaļa", trešajā "IT". Rezultātā paliks neskaidrs, ko lietotājs ar to domājis, t.i. Vai šie darbinieki ir vienas nodaļas darbinieki, vai arī lietotājs ir aprakstīts pats un tās ir 3 dažādas nodaļas? Turklāt šajā gadījumā mēs nevarēsim pareizi sagrupēt datus kādai atskaitei, kur var būt nepieciešams uzrādīt darbinieku skaitu katras nodaļas kontekstā.

Otrs trūkums ir šīs informācijas uzglabāšanas apjoms un tās dublēšanās, t.i. katram darbiniekam ir norādīts pilns nodaļas nosaukums, kas prasa vietu datu bāzē, lai saglabātu katru rakstzīmi no nodaļas nosaukuma.

Trešais trūkums ir šo lauku atjaunināšanas sarežģītība, ja mainās amata nosaukums, piemēram, ja nepieciešams pārdēvēt amatu “Programmētājs” uz “Jaunākais programmētājs”. Šajā gadījumā mums būs jāveic izmaiņas katrā tabulas rindā, kurā Pozīcija ir vienāda ar "Programmētājs".

Lai izvairītos no šiem trūkumiem, tiek pielietota tā sauktā datu bāzes normalizācija - sadalīšana apakštabulās, atsauces tabulās. Nevajag iedziļināties teorijas džungļos un pētīt, kas ir normālās formas, pietiek saprast normalizācijas būtību.

Izveidosim 2 tabulas "Amati" un "Nodaļas", pirmā sauksies Pozīcijas, bet otrā attiecīgi - Nodaļas:

CREATE TABLE Pozīcijas (ID int IDENTITY (1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar (30) NOT NULL) CREATE TABLE Nodaļas (ID int IDENTITY (1,1) NOT NULL CONSTRAINT PK_Departments ) NAV NULL)
Ņemiet vērā, ka šeit esam izmantojuši jauno IDENTITY opciju, kas saka, ka dati ailē ID tiks numurēti automātiski, sākot no 1, ar soli 1, t.i. pievienojot jaunus ierakstus, tiem secīgi tiks piešķirtas vērtības 1, 2, 3 utt. Šādus laukus parasti sauc par automātisko palielināšanu. Tabulā var definēt tikai vienu lauku ar rekvizītu IDENTITY, un parasti, bet ne obligāti, šāds lauks ir šīs tabulas primārā atslēga.

Uz piezīmes
Dažādās DBVS laukus ar skaitītāju var ieviest savā veidā. Piemēram, MySQL šāds lauks tiek definēts, izmantojot opciju AUTO_INCREMENT. Iepriekš ORACLE un Firebird šo funkcionalitāti varēja emulēt, izmantojot SEQUENCE. Bet, cik es zinu, ORACLE tagad ir pievienojis opciju GENERATED AS IDENTITY.

Aizpildīsim šīs tabulas automātiski, pamatojoties uz aktuālajiem datiem, kas ierakstīti tabulas Darbinieki laukos Amats un Nodaļa:

Aizpildiet tabulas Pozīcijas lauku Nosaukums ar unikālām vērtībām no tabulas Darbinieki lauka Amats INSERT Position (Vārds) IZVĒLĒTIES ATŠĶIRĪGU Amatu NO Darbiniekiem, KURĀ Amats NAV NULL - atmetiet ierakstus, kuru amats nav norādīts.
Darīsim to pašu ar departamentu tabulu:

INSERT nodaļas (nosaukums) IZVĒLĒTIES ATŠĶIRĪTO nodaļu NO Darbiniekiem, KURĀ nodaļa NAV NULL
Ja tagad atveram tabulas Pozīcijas un nodaļas, mēs redzēsim numurētu ID lauka vērtību kopu:

SELECT * FROM pozīcijas

IZVĒLĒTIES * NO nodaļas

Šīs tabulas tagad spēlēs kā atsauces grāmatas amatu un nodaļu piešķiršanai. Tagad mēs atsauksimies uz darba un nodaļu ID. Vispirms tabulā Darbinieki izveidosim jaunus laukus identifikatora datu glabāšanai:

Pievienojiet lauku amata ID ALTER TABLE Darbinieki ADD PositionID int - pievienojiet lauku nodaļas ID ALTER TABLE Darbinieki ADD DepartmentID int
Atsauces lauku veidam jābūt tādam pašam kā atsaucēs, šajā gadījumā tas ir int.

Varat arī pievienot tabulai vairākus laukus vienlaikus ar vienu komandu, norādot laukus atdalot ar komatiem:

ALTER TABLE Darbinieki ADD PositionID int, DepartmentID int
Tagad mēs šiem laukiem rakstīsim saites (atsauces ierobežojumi - ĀRĒJĀ ATSLĒGA), lai lietotājs nevarētu šajos laukos ierakstīt vērtības, kuru nav starp atsauces grāmatās atrodamajām ID vērtībām.

ALTER TABLE Darbinieki ADD CONSTRAINT FK_Employees_PositionID ĀRĒJĀ ATSLĒGA (PositionID) ATSAUCES Amati (ID)
Un mēs darīsim to pašu ar otro lauku:

ALTER TABLE Darbinieki ADD CONSTRAINT FK_Employees_DepartmentID ĀRĒJĀ ATSLĒGA (DepartmentID) ATSAUCES Nodaļas (ID)
Tagad lietotājs šajos laukos varēs ievadīt tikai ID vērtības no atbilstošā direktorija. Attiecīgi, lai izmantotu jaunu nodaļu vai amatu, viņam vispirms būs jāpievieno jauns ieraksts attiecīgajā direktorijā. Jo amati un nodaļas tagad tiek glabātas katalogos vienā eksemplārā, tad, lai mainītu nosaukumu, pietiek ar to mainīt tikai direktorijā.

Atsauces ierobežojuma nosaukums parasti ir salikts, tas sastāv no prefiksa "FK_", tad seko tabulas nosaukums, bet aiz pasvītras ir tā lauka nosaukums, kas attiecas uz atsauces tabulas identifikatoru.

Identifikators (ID) parasti ir iekšēja vērtība, kas tiek izmantota tikai saitēm, un tajā saglabātā vērtība vairumā gadījumu ir absolūti vienaldzīga, tāpēc jums nav jāmēģina atbrīvoties no caurumiem skaitļu secībā, kas rodas. darba laikā ar tabulu, piemēram, pēc ierakstu dzēšanas no uzziņu grāmatas.

ALTER TABLE tabula PIEVIENOT IEROBEŽOJUMU ierobežojuma_nosaukums SVEŠĀ ATSLĒGA (lauks1, lauks2, ...) ATSAUCES atsauces_tabula (lauks1, lauks2, ...)
Šajā gadījumā tabulā "dir_table" primāro atslēgu attēlo vairāku lauku kombinācija (lauks1, lauks2, ...).

Patiesībā tagad atjaunināsim laukus PositionID un DepartmentID ar ID vērtībām no direktorijiem. Šim nolūkam izmantosim komandu DML UPDATE:

UPDATE e SET PositionID = (SELECT ID FROM Position WHERE Name = e.Position), nodaļas ID = (SELECT ID FROM departamenti WHERE Name = e.Department) FROM Darbinieki e
Apskatīsim, kas notika, izpildot vaicājumu:

SELECT * FROM Darbinieki

Tas arī viss, lauki PositionID un DepartmentID tiek aizpildīti atbilstoši amatiem un nodaļām ar identifikatoriem, tabulā Darbinieki nav nepieciešami lauki Amats un Nodaļa, jūs varat dzēst šos laukus:

ALTER TABLE Darbinieki DROP COLUMN Amats, departaments
Tagad tabula ir ieguvusi šādu formu:

SELECT * FROM Darbinieki

ID Vārds Dzimšanas diena E-pasts Pozīcijas ID Nodaļas ID
1000 Ivanovs I.I. NULL NULL 2 1
1001 Petrovs P.P. NULL NULL 3 3
1002 Sidorovs S.S. NULL NULL 1 2
1003 Andrejevs A.A. NULL NULL 4 3

Tie. rezultātā mēs atbrīvojāmies no liekās informācijas uzglabāšanas. Tagad pēc amata un nodaļu numuriem mēs varam unikāli noteikt to nosaukumus, izmantojot atsauces tabulās esošās vērtības:

SELECT e.ID, e.Name, p.Name PositionName, d.Name DepartmentName FROM Darbinieki e LEFT JOIN Nodaļas

Objektu inspektorā mēs varam redzēt visus šai tabulai izveidotos objektus. Šeit jūs varat veikt dažādas manipulācijas ar šiem objektiem - piemēram, pārdēvēt vai dzēst objektus.

Ir arī vērts atzīmēt, ka tabula var attiekties uz sevi, t.i. varat izveidot rekursīvu saiti. Piemēram, savai tabulai ar darbiniekiem pievienosim vēl vienu ManagerID lauku, kas norādīs uz darbinieku, kuram šis darbinieks ir pakļauts. Izveidosim lauku:

ALTER TABLE Darbinieki ADD ManagerID int
Šajā laukā ir atļauts NULL, lauks būs tukšs, ja, piemēram, virs darbinieka nav priekšnieku.

Tagad tabulā Darbinieki izveidosim ĀRZEMES ATSLĒGU:

ALTER TABLE Darbinieki PIEVIENOT IEROBEŽOJUMU FK_Employees_ManagerID ĀRĒJĀ ATSLĒGA (ManagerID) ATSAUCES Darbinieki (ID)
Tagad izveidosim diagrammu un redzēsim, kā tajā izskatās attiecības starp mūsu tabulām:

Rezultātā mums vajadzētu redzēt šādu attēlu (Darbinieku tabula ir saistīta ar amatu un departamentu tabulām, kā arī attiecas uz sevi):

Visbeidzot, jāatzīmē, ka atsauces atslēgas var ietvert papildu opcijas ON DELETE CASCADE un ON UPDATE CASCADE, kas norāda, kā rīkoties, dzēšot vai atjauninot ierakstu, uz kuru ir atsauce atsauces tabulā. Ja šīs opcijas nav norādītas, tad mēs nevaram mainīt ID atsauces tabulā ierakstam, uz kuru ir saites no citas tabulas, kā arī nevarēsim dzēst šādu ierakstu no atsauces, kamēr neizdzēsīsim visas rindas, kas attiecas uz šo ierakstu, vai arī mēs atjaunināsim saites šajās rindās uz citu vērtību.

Piemēram, no jauna izveidosim tabulu ar opciju ON DELETE CASCADE FK_Employees_DepartmentID:

DROP TABLE Darbinieki CREATE TABLE Darbinieki (ID int NOT NULL, Name nvarchar (30), Dzimšanas datums, E-pasts nvarchar (30), PositionID int, DepartmentID int, ManagerID int, CONSTRAINT PK_Employees FREMARY KEY (ID) ) ATSAUKSMES Nodaļas (ID) ON DZĒST KASKĀDI, CONSTRAINT FK_Employees_PositionID FOREIGN KEY (PositionID) REFERENCES Pozīcijas (ID), CONSTRAINT FK_Employees_ManagerID SOREIGN KEY (ManagerID) "19550219", 2,1, NULL), (1001, N "Petrov PP", "19831203", 3,3,1003), (1002 , N "Sidorov SS", "19760607", 1,2,1000) , (1003, N "Andreev AA", "19820417", 4,3,1000)
Izdzēsīsim nodaļu ar ID 3 no nodaļas tabulas:

DZĒST nodaļas, KURĀ ID = 3
Apskatīsim datus tabulā Darbinieki:

SELECT * FROM Darbinieki

ID Vārds Dzimšanas diena E-pasts Pozīcijas ID Nodaļas ID ManagerID
1000 Ivanovs I.I. 1955-02-19 NULL 2 1 NULL
1002 Sidorovs S.S. 1976-06-07 NULL 1 2 1000

Kā redzams, arī 3. nodaļas dati ir izdzēsti no tabulas Darbinieki.

Opcija ON UPDATE CASCADE darbojas līdzīgi, taču tā darbojas, kad tiek atjaunināta ID vērtība uzmeklēšanā. Piemēram, ja mēs mainām amata ID darba direktorijā, departamenta ID tabulā Darbinieki tiks atjaunināts uz jauno ID vērtību, ko norādījām direktorijā. Bet šajā gadījumā to vienkārši nebūs iespējams pierādīt, jo ailē ID tabulā Departamenti ir opcija IDENTITĀTE, kas neļaus mums izpildīt šādu pieprasījumu (mainīt nodaļas ID 3 uz 30):

ATJAUNINĀT nodaļas SET ID = 30 WHERE ID = 3
Galvenais ir saprast šo 2 opciju ON DELETE CASCADE un ON UPDATE CASCADE būtību. Es izmantoju šīs opcijas ļoti retos gadījumos, un iesaku rūpīgi pārdomāt, pirms tās izmantojat atsauces ierobežojumā. ja nejauši izdzēšat ierakstu no uzmeklēšanas tabulas, tas var radīt lielas problēmas un ķēdes reakciju.

Atjaunosim 3. nodaļu:

Piešķiriet atļauju pievienot/mainīt IDENTITY vērtību SET IDENTITY_INSERT Nodaļas IESLĒGTS INSERT nodaļas (ID, nosaukums) VALUES (3, N "IT") - aizliegt pievienot/mainīt IDENTITY vērtību SET IDENTITY_INSERT Nodaļas IZSLĒGTS
Pilnībā iztīrīsim tabulu Darbinieki, izmantojot komandu TRUNCATE TABLE:

TRUNCATE TABLE Darbinieki
Un atkal atkārtoti ielādējiet tajā datus, izmantojot iepriekšējo INSERT komandu:

IEVADĪT Darbinieku (ID, Vārds, Dzimšanas diena, Amata ID, Nodaļas ID, Vadītāja ID) VĒRTĪBAS (1000, N "Ivanov I.I.", "19550219", 2,1, NULL), (1001, N "Petrov P.P." , "19831203", 3 ,3,1003), (1002, N "Sidorov SS", "19760607", 1,2,1000), (1003, N "Andrejevs AA", "19820417" , 4,3,1000)

Apkoposim

Šobrīd mums ir pievienotas vēl dažas DDL komandas:
  • Rekvizīta IDENTITĀTE pievienošana laukam - ļauj iestatīt šo lauku automātiski aizpildītu (skaitītāja lauks) tabulai;
  • MAINĪT TABLU tabulas_nosaukums PIEVIENOT laukumu_saraksts ar_raksturojumiem - ļauj tabulai pievienot jaunus laukus;
  • MAINĪT TABLU tabulas_nosaukums NOLIETOT KOLONNU lauks_saraksts - ļauj dzēst laukus no tabulas;
  • MAINĪT TABLU tabulas_nosaukums PIEVIENOT IEROBEŽOJUMU ierobežojuma_nosaukums SVEŠA ATSLĒGA(lauki) ATSAUCES reference_table (lauki) - ļauj definēt attiecības starp tabulu un atsauces tabulu.

Citi ierobežojumi - UNIKĀLS, NOKLUSĒJUMS, PĀRBAUDE

Izmantojot unikālo ierobežojumu, varat teikt, ka katras rindas vērtībām noteiktā laukā vai lauku kopā ir jābūt unikālām. Tabulas Darbinieki gadījumā šādu ierobežojumu varam noteikt laukam E-pasts. Vienkārši iepriekš aizpildiet e-pastu ar vērtībām, ja tās vēl nav definētas:

ATJAUNINĀT Darbinieki IESTATĪT e-pastu = " [aizsargāts ar e-pastu]"KUR ID = 1000 ATJAUNINĀJUMS Darbinieki SET E-pasts = [aizsargāts ar e-pastu]"KUR ID = 1001 ATJAUNINĀJUMS Darbinieki IESTATĪT e-pastu = [aizsargāts ar e-pastu]"KUR ID = 1002 UPDATE Darbinieki IESTATĪT e-pastu = [aizsargāts ar e-pastu]"KUR ID = 1003
Un tagad šajā laukā varat uzlikt unikalitātes ierobežojumu:

ALTER TABLE Darbinieki ADD CONSTRAINT UQ_Employees_Email UNIQUE (e-pasts)
Tagad lietotājs nevarēs ievadīt vienu un to pašu e-pastu vairākiem darbiniekiem.

Unikalitātes ierobežojumu parasti nosauc šādi – vispirms nāk prefikss "UQ_", tad tabulas nosaukums, un aiz pasvītras ir tā lauka nosaukums, kuram šis ierobežojums tiek piemērots.

Attiecīgi, ja lauku kombinācijai jābūt unikālai tabulas rindu kontekstā, mēs tos uzskaitām atdalot ar komatiem:

ALTER TABLE tabulas_nosaukums ADD CONSTRAINT ierobežojuma_nosaukums UNIKĀLS (lauks1, lauks2, ...)
Pievienojot laukam DEFAULT ierobežojumu, mēs varam iestatīt noklusējuma vērtību, kas tiks aizstāta, ja, ievietojot jaunu ierakstu, šis lauks nav norādīts komandas INSERT lauku sarakstā. Šo ierobežojumu var iestatīt tieši, veidojot tabulu.

Pievienosim jaunu lauku Iecelšanas datums tabulai Darbinieki un piešķirsim tam nosaukumu HireDate un sakām, ka šī lauka noklusējuma vērtība ir pašreizējais datums:

ALTER TABLE Darbinieki ADD HireDate datums NOT NULL NOKLUSĒJUMS SYSDATETIME ()
Vai arī, ja kolonna HireDate jau pastāv, var izmantot šādu sintaksi:

ALTER TABLE Darbinieki PIEVIENOT NOKLUSĒJUMU SYSDATETIME () FOR HireDate
Šeit es nenorādīju ierobežojuma nosaukumu, jo DEFAULT gadījumā man bija viedoklis, ka tas nav tik kritiski. Bet ja dari draudzīgi, tad, manuprāt, nevajag slinkot un iedot normālu vārdu. Tas tiek darīts šādi:

ALTER TABLE Darbinieki ADD CONSTRAINT DF_Employees_HireDate NOKLUSĒJUMS SYSDATETIME () FOR HireDate
Tā kā šī kolonna iepriekš nepastāvēja, tad, kad tā tiek pievienota katram ierakstam, pašreizējā datuma vērtība tiks ievietota laukā HireDate.

Pievienojot jaunu ierakstu, automātiski tiks ievietots arī pašreizējais datums, protams, ja mēs to nepārprotami neuzstādīsim, t.i. kolonnu sarakstā netiks norādīts. Parādīsim to ar piemēru, nenorādot lauku HireDate pievienoto vērtību sarakstā:

IEVIETOT darbinieku (ID, vārds, e-pasts) VĒRTĪBAS (1004, N "Sergeev S.S.", " [aizsargāts ar e-pastu]")
Apskatīsim, kas notika:

SELECT * FROM Darbinieki

ID Vārds Dzimšanas diena E-pasts Pozīcijas ID Nodaļas ID ManagerID HireDate
1000 Ivanovs I.I. 1955-02-19 [aizsargāts ar e-pastu] 2 1 NULL 2015-04-08
1001 Petrovs P.P. 1983-12-03 [aizsargāts ar e-pastu] 3 4 1003 2015-04-08
1002 Sidorovs S.S. 1976-06-07 [aizsargāts ar e-pastu] 1 2 1000 2015-04-08
1003 Andrejevs A.A. 1982-04-17 [aizsargāts ar e-pastu] 4 3 1000 2015-04-08
1004 Sergejevs S.S. NULL [aizsargāts ar e-pastu] NULL NULL NULL 2015-04-08

Ierobežojumu CHECK izmanto, ja nepieciešams pārbaudīt laukā ievietotās vērtības. Piemēram, uzliksim šo ierobežojumu personāla numura laukam, kas ir darbinieka identifikators (ID). Izmantojot šo ierobežojumu, pieņemsim, ka personāla skaita vērtībai ir jābūt no 1000 līdz 1999.

ALTER TABLE Darbinieki PIEVIENOT IEROBEŽOJUMU CK_Employees_ID PĀRBAUDE (ID NO 1000 UN 1999)
Ierobežojumu parasti nosauc vienādi, vispirms nāk prefikss "CK_", tad tabulas nosaukums un tā lauka nosaukums, kuram šis ierobežojums tiek uzlikts.

Mēģināsim ievietot nederīgu ierakstu, lai pārbaudītu, vai ierobežojums darbojas (mums vajadzētu saņemt atbilstošo kļūdu):

IEVIETOT darbinieku (ID, e-pasts) VĒRTĪBAS (2000, " [aizsargāts ar e-pastu]")
Tagad mainīsim ievietoto vērtību uz 1500 un pārliecināsimies, ka ieraksts ir ievietots:

IEVIETOT darbinieku (ID, e-pasts) VĒRTĪBAS (1500, " [aizsargāts ar e-pastu]")
Varat arī izveidot UNIQUE un CHECK ierobežojumus, nenorādot nosaukumu:

ALTER TABLE Darbinieki PIEVIENOT UNIKĀLU (E-pasts) ALTER TABLE Darbinieki PIEVIENOT PĀRBAUDI (ID NO 1000 UN 1999)
Taču tā nav laba prakse, un labāk ir skaidri norādīt ierobežojuma nosaukumu, jo lai vēlāk izdomātu, kas būs grūtāk, būs jāatver objekts un jāskatās, par ko tas ir atbildīgs.

Ar labu nosaukumu daudz informācijas par ierobežojumu var atpazīt tieši pēc tā nosaukuma.

Un attiecīgi visus šos ierobežojumus var izveidot uzreiz, veidojot tabulu, ja tāda vēl nav. Izdzēsīsim tabulu:

DROP TABLE Darbinieki
Un mēs to izveidosim no jauna ar visiem izveidotajiem ierobežojumiem ar vienu komandu CREATE TABLE:

CREATE TABLE Darbinieki (ID int NOT NULL, Name nvarchar (30), Dzimšanas datums, E-pasts nvarchar (30), PositionID int, DepartmentID int, HireDate datums NOT NULL NOKLUSĒJUMS SYSDATETIME (), - noklusējuma gadījumā es izmetīšu CONSTRAINT PK_Employees PRIMARY KEYployees (ID), CONSTRAINT FK_Employees_DepartmentID ĀRĒJĀ ATSLĒGA (DepartmentID) ATSAUCES Nodaļas (ID), CONSTRAINT FK_Employees_PositionID ĀRĒJĀ ATSLĒGA (PositionID) ATSAUKSMES Amati (ID), CONSTRAINT UQ_Employees_E-pasts

IEVIETOT darbinieku (ID, vārds, dzimšanas diena, e-pasts, amata ID, nodaļas ID) VĒRTĪBAS (1000, N "Ivanov I.I.", "19550219", " [aizsargāts ar e-pastu]", 2,1), (1001, N" Petrovs P.P. "," 19831203 "," [aizsargāts ar e-pastu]", 3,3), (1002, N" Sidorov S.S. "," 19760607 "," [aizsargāts ar e-pastu]", 1,2), (1003, N" Andrejevs A.A. "," 19820417 "," [aizsargāts ar e-pastu]",4,3)

Mazliet par indeksiem, kas izveidoti, veidojot PRIMARY KEY un UNIQUE ierobežojumus

Kā redzat iepriekš redzamajā ekrānuzņēmumā, veidojot PRIMARY KEY un UNIQUE ierobežojumus, automātiski tika izveidoti indeksi ar vienādiem nosaukumiem (PK_Employees un UQ_Employees_Email). Pēc noklusējuma primārās atslēgas indekss tiek izveidots kā KLUSTERĒTS, bet visiem pārējiem indeksiem - kā NONCLUSTERED. Jāsaka, ka ne visām DBVS ir klasterizēta indeksa jēdziens. Tabulā var būt tikai viens KLUSTERĒTS indekss. CLUSTERED - nozīmē, ka tabulas ieraksti tiks sakārtoti pēc šī indeksa, var arī teikt, ka šim indeksam ir tieša piekļuve visiem tabulas datiem. Tas, tā sakot, ir tabulas galvenais rādītājs. Aptuveni runājot, tas ir pie galda pieskrūvēts rādītājs. Klasterizētais indekss ir ļoti jaudīgs rīks, kas var palīdzēt optimizēt vaicājumus, tikai paturiet to prātā. Ja vēlamies norādīt klasterēto indeksu izmantot nevis primārajā atslēgā, bet citam indeksam, tad, veidojot primāro atslēgu, jānorāda opcija NONCLUSTERED:

ALTER TABLE tabulas_nosaukums PIEVIENOT IEROBEŽOJUMU ierobežojuma_nosaukums PRIMĀRĀ ATSLĒGA NEKLUSTRĒTA (lauks1, lauks2, ...)
Piemēram, padarīsim ierobežojumu indeksu PK_Employees par negrupētu un UQ_Employees_Email ierobežojumu indeksu grupētu. Pirmkārt, mēs atcelsim šos ierobežojumus:

ALTER TABLE Darbinieki DROP CONSTRAINT PK_Employees ALTER TABLE Darbinieki DROP CONSTRAINT UQ_Employees_Email
Tagad izveidosim tos ar opcijām KLUSTERĒTA un NEKLUSĒTA:

ALTER TABLE Darbinieki ADD CONSTRAINT PK_Employees PRIMARY KEY NONCLUSTERED (ID) ALTER TABLE Darbinieki ADD CONSTRAINT UQ_Employees_Email UNIQUE CLUSTERED (e-pasts)
Tagad, pēc ienešanas no tabulas Darbinieki, mēs varam redzēt, ka ieraksti ir sakārtoti pēc grupētā UQ_Employees_Email indeksa:

SELECT * FROM Darbinieki

ID Vārds Dzimšanas diena E-pasts Pozīcijas ID Nodaļas ID HireDate
1003 Andrejevs A.A. 1982-04-17 [aizsargāts ar e-pastu] 4 3 2015-04-08
1000 Ivanovs I.I. 1955-02-19 [aizsargāts ar e-pastu] 2 1 2015-04-08
1001 Petrovs P.P. 1983-12-03 [aizsargāts ar e-pastu] 3 3 2015-04-08
1002 Sidorovs S.S. 1976-06-07 [aizsargāts ar e-pastu] 1 2 2015-04-08

Pirms tam, kad PK_Employees indekss bija klasterizētais indekss, ieraksti pēc noklusējuma tika kārtoti pēc ID.

Bet šajā gadījumā tas ir tikai piemērs, kas parāda klasterizētā indeksa būtību, kopš visticamāk, vaicājumi tabulā Darbinieki tiks veikti pēc ID lauka, un dažos gadījumos tas var darboties kā atsauces grāmata.

Uzmeklēšanai parasti ir ieteicams grupēto indeksu veidot uz primārās atslēgas, jo pieprasījumos mēs bieži atsaucamies uz direktorija identifikatoru, lai iegūtu, piemēram, nosaukumu (Amats, Nodaļa). Šeit mēs atceramies to, ko es rakstīju iepriekš, ka klasterizētajam indeksam ir tieša piekļuve tabulas rindām, un no tā izriet, ka mēs varam iegūt jebkuras kolonnas vērtību bez papildu izmaksām.

Visbiežāk atlasītajiem laukiem ir izdevīgi piemērot kopu indeksu.

Dažkārt atslēgu tabulās izveido aizstājējlauks, un tādā gadījumā ir lietderīgi saglabāt indeksa opciju CLUSTERED piemērotākam indeksam un, veidojot primāro aizstājējatslēgu, norādīt opciju NONCLUSTERED.

Apkoposim

Šajā posmā mēs iepazināmies ar visu veidu ierobežojumiem to vienkāršākajā formā, kas tiek izveidoti ar komandu formā "ALTER TABLE table_name ADD CONSTRAINT constraint_name ...":
  • PRIMĀRĀ ATSLĒGA- primārā atslēga;
  • SVEŠA ATSLĒGA- saišu izveide un datu atsauces integritātes kontrole;
  • UNIKĀLS- ļauj radīt unikalitāti;
  • PĀRBAUDE- pieļauj ievadīto datu pareizību;
  • NOKLUSĒJUMS- ļauj iestatīt noklusējuma vērtību;
  • Ir arī vērts atzīmēt, ka visus ierobežojumus var noņemt, izmantojot komandu “ MAINĪT TABLU tabulas_nosaukums KRIST IEROBEŽOJUMS ierobežojuma_nosaukums ".
Mēs arī daļēji pieskārāmies indeksu tēmai un analizējām klastera jēdzienu ( KLASTERĒTI) un negrupētu ( NEKLUSTRĒTS) indekss.

Izveidojiet atsevišķus indeksus

Pašpaļāvība šeit attiecas uz indeksiem, kas nav izveidoti PRIMARY KEY vai UNIKĀLA ierobežojuma.

Indeksus pēc lauka vai laukiem var izveidot ar šādu komandu:

CREATE INDEX IDX_Employees_Name ON Employees (vārds)
Arī šeit varat norādīt opcijas KLUSTERĒTS, NEKLUSTRĒTS, UNIKĀLS, kā arī varat norādīt kārtošanas virzienu katram atsevišķam laukam ASC (pēc noklusējuma) vai DESC:

IZVEIDOT UNIKĀLU NEKLUSTERĒTU INDEKSU UQ_Employees_EmailDesc ON Employees (E-pasts DESC)
Veidojot negrupētu indeksu, opciju NONCLUSTERED var atbrīvot, jo tas ir noklusējuma iestatījums, un šeit tiek parādīts vienkārši, lai norādītu opcijas CLUSTERED vai NONCLUSTERED pozīciju komandā.

Indeksu var izdzēst ar šādu komandu:

DROP INDEX IDX_Employees_Name ON Employees
Vienkāršus indeksus, piemēram, ierobežojumus, var izveidot komandas CREATE TABLE kontekstā.

Piemēram, nometīsim tabulu vēlreiz:

DROP TABLE Darbinieki
Un mēs to izveidosim no jauna ar visiem izveidotajiem ierobežojumiem un indeksiem ar vienu komandu CREATE TABLE:

CREATE TABLE Darbinieki (ID int NOT NULL, Name nvarchar (30), Dzimšanas datums, E-pasts nvarchar (30), PositionID int, DepartmentID int, HireDate datums NOT NULL CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATEPKTIME (), PRINSTRĀCIJA nvarchar (30), vadītājs int. CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY (DepartmentID) REFERENCES Departamenti (ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY (PositionID) REFERENCES Amati (ID), CONSTRAINT BINDEployees9 (FK_Employees9 (Darbinieki)9 (Darbinieki9) (Darbinieki9) (Darbinieki9) (Darbinieki9) (Darbinieki9) (ID)
Visbeidzot tabulā ievietosim savus darbiniekus:

IEVIETOT darbinieku (ID, vārds, dzimšanas diena, e-pasts, amata ID, nodaļas ID, vadītāja ID) VĒRTĪBAS (1000, N "Ivanov I.I.", "19550219", " [aizsargāts ar e-pastu]", 2,1, NULL), (1001, N" Petrovs P.P. "," 19831203 "," [aizsargāts ar e-pastu]", 3,3,1003), (1002, N" Sidorov S.S. "," 19760607 "," [aizsargāts ar e-pastu]", 1,2,1000), (1003, N" Andrejevs A.A. "," 19820417 "," [aizsargāts ar e-pastu]",4,3,1000)
Turklāt ir vērts atzīmēt, ka vērtības var iekļaut negrupētā indeksā, norādot tās sadaļā IEKĻAUTS. Tie. šajā gadījumā indekss IEKĻAUTS nedaudz atgādinās klasterizētu indeksu, tikai tagad indekss nav pieskrūvēts pie tabulas, bet indeksam ir pieskrūvētas nepieciešamās vērtības. Attiecīgi šādi indeksi var ievērojami uzlabot atlasīto vaicājumu (SELECT) veiktspēju, ja indeksā ir visi uzskaitītie lauki, tad iespējams, ka jums nemaz nebūs nepieciešams piekļūt tabulai. Bet tas, protams, palielina indeksa lielumu, jo uzskaitīto lauku vērtības tiek dublētas rādītājā.

Fragments no MSDN. Vispārīga komandu sintakse indeksu izveidei

IZVEIDOT [UNIKĀLU] [KLASTERĒTU | NONCLUSTERED] INDEX index_name ON (kolonna [ASC | DESC] [, ... n]) [INCLUDE (kolonnas_nosaukums [, ... n])]

Apkoposim

Indeksi var palielināt datu izguves ātrumu (SELECT), bet indeksi palēnina tabulas datu modifikācijas ātrumu, jo pēc katras modifikācijas sistēmai būs jāpārveido visi indeksi konkrētai tabulai.

Ieteicams katrā gadījumā atrast optimālo risinājumu, zelta vidusceļu, lai gan izlases veiktspēja, gan datu modifikācijas būtu atbilstošā līmenī. Indeksu izveides stratēģija un to skaits var būt atkarīgs no daudziem faktoriem, piemēram, cik bieži mainās tabulas dati.

DDL secinājums

Kā redzat, DDL nav tik sarežģīta, kā varētu šķist no pirmā acu uzmetiena. Šeit es varēju parādīt gandrīz visas tā pamatkonstrukcijas, izmantojot tikai trīs tabulas.

Galvenais ir saprast būtību, un pārējais ir prakses jautājums.

Lai veicas ar šo brīnišķīgo valodu, ko sauc par SQL.

Laipni lūdzam manā emuāra vietnē. Šodien mēs runāsim par sql vaicājumiem iesācējiem. Dažiem tīmekļa pārziņiem var būt jautājums. Kāpēc mācīties sql? Vai tu to nevari?

Izrādās, ka ar to nepietiks, lai izveidotu profesionālu interneta projektu. Sql tiek izmantots darbam ar datu bāzēm un WordPress lietojumprogrammu izveidei. Apskatīsim sīkāk, kā izmantot vaicājumus.

Kas tas ir

SQL ir strukturēta vaicājumu valoda. Paredzēts datu veida noteikšanai, piekļuves nodrošināšanai un informācijas apstrādei īsā laika periodā. Tajā ir aprakstītas sastāvdaļas vai kāda veida rezultāti, kurus vēlaties redzēt interneta projektā.

Vienkārši izsakoties, šī programmēšanas valoda ļauj datubāzē pievienot, modificēt, meklēt un parādīt informāciju. Mysql popularitāte ir saistīta ar to, ka to izmanto, lai izveidotu dinamiskus interneta projektus, kuru pamatā ir datubāze. Tāpēc, lai izstrādātu funkcionālu emuāru, jums ir jāapgūst šī valoda.

Ko var darīt

SQL valoda ļauj:

  • izveidot tabulas;
  • mainīt saņemt un uzglabāt dažādus datus;
  • apvienot informāciju blokos;
  • aizsargāt datus;
  • izveidot piekļuves pieprasījumus.

Svarīgs! Tikuši galā ar SQL, jūs varat rakstīt jebkuras sarežģītības lietojumprogrammas WordPress.

Kāda struktūra

Datu bāze sastāv no tabulām, kuras var attēlot kā Excel failu.

Viņai ir vārds, kolonnas un rinda ar informāciju. Šādas tabulas var izveidot, izmantojot sql vaicājumus.

Kas jums jāzina


Izceļ, apgūstot SQL

Kā minēts iepriekš, vaicājumus izmanto, lai apstrādātu un ievadītu jaunu informāciju datu bāzē, kas sastāv no tabulām. Katra tā rinda ir atsevišķs ieraksts. Tātad, izveidosim datu bāzi. Lai to izdarītu, ierakstiet komandu:

Izveidot datubāzi "bazaname"

Pēdiņās ierakstiet datu bāzes nosaukumu latīņu valodā. Mēģiniet izdomāt viņai jēgpilnu vārdu. Neveidojiet tādu bāzi kā "111", "www" un tamlīdzīgi.

Pēc datu bāzes izveidošanas instalējiet:

Iestatītos nosaukumus “utf-8”

Tas ir nepieciešams, lai vietnes saturs tiktu parādīts pareizi.

Tagad mēs izveidojam tabulu:

IZVEIDOT TABULU 'bazaname'. 'Tabula' (

id INT (8) NOT NULL AUTO_INCREMENT PRIMARY KEY,

žurnāls VARCHAR (10),

iziet VARCHAR (10),

datums DATE

Otrajā rindā mēs esam uzrakstījuši trīs atribūtus. Apskatīsim, ko tie nozīmē:

  • Atribūts NOT NULL nozīmē, ka šūna nebūs tukša (šis lauks ir obligāts);
  • AUTO_INCREMENT vērtība - automātiskā pabeigšana;
  • PRIMARY KEY ir primārā atslēga.

Kā pievienot informāciju

Lai aizpildītu izveidotās tabulas laukus ar vērtībām, izmantojiet priekšrakstu INSERT. Mēs rakstām šādas koda rindas:

INSERT IN 'tabula'

(pieteikšanās, caurlaide, datums) VĒRTĪBAS

('Vasa', '87654321',' 2017-06-21 18:38:44 ');

Iekavās mēs norādām kolonnu nosaukumus, bet nākamajā - vērtības.

Svarīgs! Ievērojiet kolonnu nosaukumu un nozīmju secību.

Kā atjaunināt informāciju

Lai to izdarītu, izmantojiet komandu UPDATE. Apskatīsim, kā nomainīt paroli konkrētam lietotājam. Mēs rakstām šādas koda rindas:

UPDATE “tabula” SET pass = “12345678” WHERE id = “1”

Tagad nomainiet paroli "12345678". Izmaiņas tiek veiktas rindā ar "id" = 1. Ja neierakstiet komandu WHERE, mainīsies visas rindas, nevis konkrēta.

Iesaku iegādāties grāmatu " SQL for Dummies ". Ar tās palīdzību soli pa solim varēsi profesionāli strādāt ar datubāzi. Visa informācija ir strukturēta no vienkāršas līdz sarežģītai, un tā tiks labi uztverta.

Kā izdzēst ierakstu

Ja esat uzrakstījis kaut ko nepareizi, izlabojiet to ar komandu DELETE. Darbojas tāpat kā UPDATE. Mēs rakstām šādu kodu:

DZĒST NO 'tabulas' WHERE id = '1'

Informācijas iegūšana

Lai izgūtu vērtības no datu bāzes, izmantojiet komandu SELECT. Mēs rakstām šādu kodu:

SELECT * FROM “tabula”, WHERE id = “1”

Šajā piemērā mēs atlasām visus tabulas pieejamos laukus. Tas notiek, ja komandā ierakstāt zvaigznīti "*". Ja jums ir jāizvēlas kāda parauga vērtība, mēs rakstām šādi:

SELECT žurnāls, iziet no FROM tabulas WHERE id = '1'

Jāpiebilst, ka ar spēju strādāt ar datu bāzēm nepietiks. Lai izveidotu profesionālu interneta projektu, jums būs jāapgūst, kā lapām pievienot datus no datu bāzes. Lai to izdarītu, iepazīstieties ar php tīmekļa programmēšanas valodu. Tas jums palīdzēs klases kurss Mihails Rusakovs .


Nometot galdu

Notiek ar DROP pieprasījumu. Lai to izdarītu, ierakstiet šādas rindiņas:

DROP TABLE galds;

Ieraksta izvadīšana no tabulas atbilstoši konkrētam nosacījumam

Apsveriet šādu kodu:

IZVĒLĒTIES ID, valsti, pilsētu NO galda KUR cilvēki> 150000000

Tajā tiks parādīti to valstu ieraksti, kurās iedzīvotāju skaits pārsniedz simt piecdesmit miljonus.

Asociācija

Ir iespējams saistīt vairākas tabulas kopā, izmantojot Join. Kā tas darbojas, skatiet šo videoklipu sīkāk:

PHP un MySQL

Vēlreiz gribu uzsvērt, ka uzziņu veikšana, veidojot interneta projektu, ir ierasta lieta. Lai tos izmantotu php dokumentos, rīkojieties šādi:

  • Mēs izveidojam savienojumu ar datu bāzi, izmantojot komandu mysql_connect ();
  • Izmantojot mysql_select_db () atlasiet vajadzīgo datu bāzi;
  • Mēs apstrādājam pieprasījumu, izmantojot mysql_fetch_array ();
  • Mēs aizveram savienojumu ar komandu mysql_close ().

Svarīgs! Darbs ar datu bāzi nav grūts. Galvenais ir pareizi uzrakstīt pieprasījumu.

Iesācēju tīmekļa pārziņi padomās. Ko lasīt par šo tēmu? Es vēlos ieteikt Martina Grēbera grāmatu " SQL vienkāršiem mirstīgajiem ". Uzrakstīts tā, lai iesācējiem viss būtu skaidrs. Izmantojiet to kā atsauces grāmatu.

Bet šī ir teorija. Kāda ir situācija praksē? Realitātē interneta projekts ir ne tikai jāizveido, bet arī jāieved Google un Yandex TOPā. Video kurss " Mājas lapas izveide un popularizēšana ».


Video instrukcija

Vai joprojām ir jautājumi? Noskatieties tiešsaistes video sīkāk.

Secinājums

Tātad SQL vaicājumu rakstīšana nav tik sarežģīta, kā šķiet, taču jebkuram tīmekļa pārzinim tas ir jādara. Tas palīdzēs iepriekš aprakstītajiem video kursiem. Abonēt mana VKontakte grupa lai pirmais uzzina par jaunas interesantas informācijas parādīšanos.

Lielākā daļa mūsdienu tīmekļa lietojumprogrammu mijiedarbojas ar datu bāzēm, parasti izmantojot valodu, ko sauc SQL. Mums par laimi šo valodu ir ļoti viegli iemācīties. Šajā rakstā mēs aplūkosim vienkāršus SQL pieprasījumus un uzziniet, kā tos izmantot mijiedarbībai MySQL datu bāze.

Ko tev vajag?

SQL (strukturētā vaicājuma valoda) valoda, kas īpaši izstrādāta, lai mijiedarbotos ar datu bāzu pārvaldības sistēmām, piemēram, MySQL, Oracle, Sqlite un citi ... Uzstāties SQL pieprasījumus šajā rakstā, iesaku instalēt MySQL uz vietējo datoru. Es arī iesaku lietot phpMyAdmin kā vizuāls interfeiss.

Tas viss ir pieejams ikviena mīļotajā Denverā. Es domāju, ka ikvienam vajadzētu zināt, kas tas ir un kur to dabūt :). Var citādi izmantojiet WAMP vai MAMP.

Denverā ir iebūvēts MySQL konsole. Mēs to izmantosim.

IZVEIDOT DATU BĀZI:datu bāzes izveide

Šis ir mūsu pirmais pieprasījums. Mēs izveidosim savu pirmo datu bāzi turpmākajam darbam.

Pirmkārt, atveriet MySQL konsole un pieteikšanās. Priekš WAMP noklusējuma parole ir tukša. Tas ir, nekas :). Priekš MAMP ir "sakne". Par Denveru jātiek skaidrībā.

Pēc pieteikšanās ievadiet šo rindiņu un noklikšķiniet uz Ievadiet:

IZVEIDOT DATU BĀZI my_first_db;

Ņemiet vērā, ka semikolu (;) pievieno vaicājuma beigās, tāpat kā citās valodās.

Skatiet arī komandas SQL reģistrjutīgs. Mēs tos rakstām ar lieliem burtiem.

Opcija tikai: Rakstzīmju kopaun Salīdzināšana

Ja vēlaties instalēt rakstzīmju kopa un salīdzināšana var būt ierakstiet šādu komandu:

IZVEIDOT DATU BĀZI my_first_db NOKLUSĒJUMA CHARACTER SET utf8 COLLATE utf8_general_ci;

Atrod atbalstīto rakstzīmju kopu sarakstu MySQL.

RĀDĪT DATU BĀZES:uzskaita visas datu bāzes

Šo komandu izmanto, lai parādītu visas pieejamās datu bāzes.

DROP DATU BĀZI:datu bāzes dzēšana

Izmantojot šo vaicājumu, varat atmest esošu DB.

Esiet piesardzīgs ar šo komandu, jo tā darbojas bez brīdinājuma. Ja jūsu datu bāzē ir dati, tie visi tiks dzēsti.

LIETOŠANA:Datu bāzes izvēle

Tehniski tas nav vaicājums, bet gan operators, un beigās nav nepieciešams semikolu.

Tas stāsta MySQL atlasiet pašreizējās sesijas noklusējuma datu bāzi. Tagad esam gatavi veidot tabulas un darīt citas lietas ar datu bāzi.

Kas ir tabula datu bāzē?

Jūs varat attēlot tabulu DB kā Excel fails.

Tāpat kā attēlā, tabulās ir kolonnu nosaukumi, rindas un informācija. Caur SQL vaicājumus, mēs varam izveidot šādas tabulas. Mēs varam arī pievienot, lasīt, atjaunināt un dzēst informāciju.

IZVEIDOT TABULU: Tabulas izveide

C izmantojot šo vaicājumu, mēs varam izveidot tabulas datu bāzē. Atvainojiet, dokumentācija MySQL nav īsti skaidrs iesācējiem šajā jautājumā. Šāda veida vaicājuma struktūra var būt ļoti sarežģīta, taču mēs sāksim ar vienkāršu.

Šis vaicājums izveidos tabulu ar 2 kolonnām.

CREATE TABLE lietotāji (lietotājvārds VARCHAR (20), izveides_datums DATE);

Lūdzu, ņemiet vērā, ka mēs varam rakstīt savus vaicājumus vairākās rindās un ar cilnēm atkāpei.

Pirmā rinda ir vienkārša. Mēs vienkārši izveidojam tabulu ar nosaukumu "lietotāji". Tālāk iekavās, atdalītas ar komatiem, ir visu kolonnu saraksts. Pēc katras kolonnas nosaukuma mums ir informācijas veidi, piemēram, VARCHAR vai DATE.

VARCHAR (20) nozīmē, ka kolonna ir virknes tipa un var būt ne vairāk kā 20 rakstzīmes gara. DATE ir arī informācijas veids, kas tiek izmantots, lai saglabātu datumus šādā formātā: "GGGG - MM-DD".

PRIMĀRĀ ATSLĒGA ( primārā atslēgah)

Pirms nākamā vaicājuma izpildes mums ir jāiekļauj arī sleja "user_id", kas būs mūsu primārā atslēga. Jūs varat uzskatīt PRIMĀRĀ ATSLĒGU kā informāciju, kas tiek izmantota, lai identificētu katru tabulas rindu.

CREATE TABLE lietotāji (lietotāja_id INT AUTO_INCREMENT PRIMARY KEY, lietotājvārds VARCHAR (20), izveides_datums DATE);

INT veido 32 bitu veselu skaitļu tipu (piemēram, skaitļus). AUTOMĀTISKS_INCREMENT automātiski ģenerē jaunu vērtību ID katru reizi, kad pievienojam jaunas informācijas rindas. Tas nav obligāti, taču tas atvieglo visu procesu.

Šai kolonnai nav jābūt veselam skaitlim, taču tā tiek izmantota visbiežāk. Primārās atslēgas klātbūtne arī nav obligāta, taču tā ir ieteicama datu bāzes arhitektūrai un veiktspējai.

Izpildīsim vaicājumu:

RĀDĪT TABULAS:parādīt visas tabulas

Šis vaicājums ļauj iegūt datu bāzē esošo tabulu sarakstu.

IZSKAIDROT:Rādīt tabulas struktūru

Varat izmantot šo vaicājumu, lai parādītu esošas tabulas struktūru.

Kolonnas tiek parādītas ar visiem rekvizītiem.

DROPP TABULA:dzēst tabulu

Tāpat kā DROP DATABASES, šis vaicājums izdzēš tabulu un tās saturu bez brīdinājuma.

MAINĪT TABULU: maiņas galds

Šis vaicājums var ietvert arī sarežģītu struktūru, jo tas tabulā var veikt vairāk izmaiņu. Apskatīsim dažus piemērus.

(ja tabulu izdzēsāt pēdējā darbībā, izveidojiet to vēlreiz testiem)

SLEJAS PIEVIENOŠANA

ALTER TABLE lietotāji PIEVIENOT e-pastu VARCHAR (100) PĒC lietotājvārda;

SQL labās lasāmības dēļ, manuprāt, nav jēgas to sīkāk skaidrot. Mēs pievienojam jaunu kolonnu "e-pasts" aiz "lietotājvārds".

SLEJAS DZĒŠANA

Tas bija arī ļoti viegli. Izmantojiet šo vaicājumu piesardzīgi, jo varat dzēst datus bez brīdinājuma.

Atkopiet tikko noņemto kolonnu, lai veiktu turpmākus eksperimentus.

IZMAIŅU VEIKŠANA KOLONĀ

Dažreiz, iespējams, vēlēsities veikt izmaiņas kolonnas rekvizītos, un tādēļ jums tā nav pilnībā jāizdzēš.

Šis vaicājums pārdēvēja lietotāja kolonnu uz "user_name" un mainīja tās veidu no VARCHAR (20) uz VARCHAR (30). Šādas izmaiņas nedrīkst mainīt tabulas datus.

IEVIETOT: Informācijas pievienošana tabulai

Pievienosim tabulai kādu informāciju, izmantojot šādu vaicājumu.

Kā redzat, VALUES () satur ar komatu atdalītu vērtību sarakstu. Visas vērtības ir atsevišķās kolonnās. Un vērtībām jābūt kolonnu secībā, kas tika noteiktas tabulas izveides laikā.

Ņemiet vērā, ka pirmā NULL vērtība laukam PRIMĀRĀ ATSLĒGA ir nosaukta "user_id". Mēs to darām, lai ID tiktu ģenerēts automātiski, jo kolonnai ir rekvizīts AUTO_INCREMENT. Kad informācija tiek pievienota pirmo reizi, ID būs 1. Nākamā rinda ir 2 un tā tālāk...

ALTERNATĪVA IESPĒJA

Ir vēl viena vaicājuma opcija rindu pievienošanai.

Šoreiz mēs izmantojam atslēgvārdu SET, nevis VALUES, un tam nav iekavu. Ir vairākas nianses:

Kolonnu var izlaist. Piemēram, mēs neesam piešķīruši vērtību “user_id”, kas pēc noklusējuma tiks izmantota tā AUTO_INCREMENT vērtība. Ja izlaidīsit kolonnu VARCHAR, tiks pievienota tukša rinda.

Katra kolonna ir jānosauc ar nosaukumu. Tāpēc atšķirībā no iepriekšējās versijas tos var minēt jebkurā secībā.

2. ALTERNATĪVĀ IESPĒJA

Šeit ir vēl viena iespēja.

Atkal, tā kā ir atsauces uz kolonnas nosaukumu, varat norādīt vērtības jebkurā secībā.

LAST_INSERT_ID ()

Varat izmantot šo pieprasījumu, lai iegūtu ID, kas bija AUTO_INCREMENT pašreizējās sesijas pēdējā rindā.

TAGAD ()

Tagad ir pienācis laiks parādīt, kā varat izmantot MySQL funkciju vaicājumos.

Funkcija TAGAD () parāda pašreizējo datumu. Tātad jūs varat to izmantot, lai automātiski iestatītu kolonnas datumu uz pašreizējo datumu, kad ievietojat jaunu rindu.

Ņemiet vērā, ka mēs saņēmām 1 brīdinājumu, taču ignorējiet to. Iemesls tam ir tas, ka TAGAD () tiek izmantots arī pagaidu informācijas parādīšanai.

ATLASĪT: Datu nolasīšana no tabulas

Ja mēs pievienojam informāciju tabulai, tad būtu loģiski mācīties no turienes to lasīt. Šeit mums palīdzēs vaicājums SELECT.

Šis ir vienkāršākais iespējamais SELECT vaicājums tabulas lasīšanai.

Šajā gadījumā zvaigznīte (*) nozīmē, ka esam pieprasījuši visus tabulas laukus. Ja vēlaties tikai noteiktas kolonnas, vaicājums izskatīsies šādi.

StāvoklisKUR

Visbiežāk mūs interesē ne visas kolonnas, bet tikai dažas. Piemēram, pieņemsim, ka mēs vēlamies e-pasta adresi tikai lietotājam "nettuts".

WHERE ļauj iestatīt nosacījumus vaicājumā un veikt detalizētu atlasi.

Ņemiet vērā, ka vienlīdzībai tiek izmantota viena vienādības zīme (=), nevis divas kā programmēšanā.

Varat arī izmantot salīdzinājumus.

UN vai VAI var izmantot, lai apvienotu nosacījumus:

Ņemiet vērā, ka skaitliskās vērtības nedrīkst norādīt pēdiņās.

IN ()

Tas ir noderīgi, lai ņemtu vairākas vērtības.

PATĪK

Ļauj veikt "aizstājējzīmju" pieprasījumus

Zīme % tiek izmantota kā aizstājējzīme. Tas ir, jebkas var būt savā vietā.

StāvoklisSAKĀRTOT PĒC

Ja vēlaties iegūt rezultātu sakārtotu pēc jebkura kritērija

Noklusējuma secība ir ASC (no zemas uz augstu). Pretējā gadījumā tiek izmantots DESC.

IEROBEŽOJUMS ... OFFSET ...

Jūs varat ierobežot iegūto rezultātu skaitu.

LIMIT 2 ņem tikai pirmos 2 rezultātus. 1. IEROBEŽOJUMA NODEVE 2 iegūst 1 rezultātu pēc pirmajiem 2. LIMIT 2, 1 nozīmē to pašu (tikai pievērsiet uzmanību, vispirms tiek nobīdīts un pēc tam ierobežojums).

ATJAUNINĀT: Veiciet izmaiņas tabulā sniegtajā informācijā

Šis vaicājums tiek izmantots, lai mainītu informāciju tabulā.

Vairumā gadījumu tas tiek izmantots kopā ar WHERE klauzulu, jo jūs, visticamāk, vēlēsities mainīt noteiktas kolonnas. Ja nav WHERE klauzulas, izmaiņas ietekmēs visas rindas.

Varat arī izmantot LIMIT, lai ierobežotu modificējamo rindu skaitu.

DZĒST: Informācijas noņemšana no tabulas

Tāpat kā UPDATE, šis vaicājums tiek izmantots ar WHERE:

Lai izdzēstu tabulas saturu, varat to izdarīt šādi:

DZĒST NO lietotājiem;

Bet labāk to izmantot TRUCĒT

Papildus dzēšanai šis vaicājums arī atiestata vērtības AUTOMĀTISKS_INCREMENT un, pievienojot rindas vēlreiz, skaitīšana sāksies no nulles. DZĒST tā nenotiek, un atpakaļskaitīšana turpinās.

Zemāko vērtību un īpašo vārdu atspējošana

Virknes vērtības

Dažas rakstzīmes ir jāatspējo ( bēgt ), pretējā gadījumā var rasties problēmas.

Šim nolūkam tiek izmantota slīpsvītra.(\).

Īpaši vārdi

Kopš MySQL ir daudz īpašu vārdu ( ATLASĪT vai ATJAUNINĀT ), lai izvairītos no kļūdām to lietošanā, jāizmanto pēdiņas. Bet ne parastie citāti, bet šie(`).

Tas ir, jums būs jāpievieno kolonna ar nosaukumu " dzēst ", tas jādara šādi:

Secinājums

Paldies, ka izlasījāt līdz beigām. Es ceru, ka šis raksts jums bija noderīgs. Tas vēl nav beidzies! Turpinājums sekos:).

Piedāvāju jūsu uzmanībai raksta SQL iesācējiem bezmaksas tulkojumu

Arvien vairāk modernu tīmekļa lietojumprogrammu mijiedarbojas ar datu bāzēm, parasti izmantojot valodu SQL... Par laimi mums šī valoda ir diezgan viegli apgūstama. Šajā rakstā mēs sāksim apgūt SQL vaicājumu pamatus un to mijiedarbību ar datu bāzi. MySQL.

Ko tev vajag

SQL (strukturētā vaicājuma valoda) ir valoda, kas paredzēta mijiedarbībai ar relāciju datu bāzes pārvaldības sistēmām (DBMS), piemēram, MySQL, Oracle, Sqlite un citi. Lai izpildītu šī raksta SQL vaicājumus, es pieņemu, ka esat instalējis MySQL... Iesaku arī lietot phpMyAdmin kā vizuāla displeja rīks MySQL.

Tālāk norādītās lietojumprogrammas atvieglos instalēšanu MySQL un phpMyAdmin uz jūsu datoru:

  • WAMP operētājsistēmai Windows
  • MAMP operētājsistēmai Mac

Sāksim izpildīt vaicājumus komandrindā. WAMP tas jau ir iekļauts konsolē MySQL... Priekš MAMP, iespējams, jums tas būs jāizlasa.

IZVEIDOT DATU BĀZI: izveidojiet datu bāzi

Mūsu pirmais pieprasījums. Mēs izveidosim datu bāzi, ar kuru strādāt.

Pirmkārt, atveriet konsoli MySQL un piesakieties. Priekš WAMP, pēc noklusējuma tiek izmantota tukša parole. Priekš MAMP parolei jābūt "root".

Pēc pieteikšanās ierakstiet šo pieprasījumu un noklikšķiniet uz Ievadiet:

IZVEIDOT DATU BĀZI my_first_db;

Ņemiet vērā, ka semikolu (;) pievieno vaicājuma beigās, tāpat kā koda rindas beigās.

Arī atslēgvārdi IZVEIDOT DATU BĀZI reģistrjutīgi tāpat kā visi atslēgvārdi SQL... Bet mēs tos rakstīsim ar lielajiem burtiem, lai nodrošinātu labāku lasāmību.

Piezīme: rakstzīmju kopa un salīdzināšana

Ja vēlaties iestatīt noklusējuma rakstzīmju kopu un šķirošanas secību, izmantojiet līdzīgu vaicājumu:

IZVEIDOT DATU BĀZI my_first_db NOKLUSĒJUMA CHARACTER SET utf8 COLLATE utf8_general_ci;

Atbalstīto rakstzīmju kopu un salīdzinājumu sarakstu atradīsit vietnē MySQL.

RĀDĪT DATU BĀZES: visu datu bāzu saraksts

Šis vaicājums tiek izmantots, lai parādītu visas datu bāzes.

NOMET DATU BĀZI: atmet datu bāzi

Izmantojot šo vaicājumu, varat atmest esošu datu bāzi.

Esiet piesardzīgs ar šo vaicājumu, jo tas nerāda nekādus brīdinājumus. Kad jūsu datu bāzē ir tabulas un dati, vaicājums tos visus izdzēsīs vienā mirklī.

Tehniski runājot, tas nav pieprasījums. Tas ir "operators", un beigās nav nepieciešams semikolu.

Viņš informē MySQL ka jums ir jāizvēlas noklusējuma datu bāze un jāstrādā ar to līdz sesijas beigām. Tagad esam gatavi izveidot tabulas un pārējo šajā datubāzē.

Kas ir datu bāzes tabula?

Varat uzskatīt tabulu datubāzē kā parastu tabulu vai csv failu, kurā ir strukturēti dati.

Tāpat kā šajā piemērā, tabulā ir rindu nosaukumi un datu kolonnas. Izmantojot SQL vaicājumus, mēs varam izveidot šo tabulu. Mēs varam arī pievienot, lasīt, modificēt un dzēst datus.

IZVEIDOT TABULU: izveidot tabulu

Izmantojot šo vaicājumu, mēs varam izveidot tabulu datu bāzē. Atvainojiet, dokumentācija priekš MySQL nav īpaši draudzīgs jauniem lietotājiem. Šī vaicājuma struktūra var būt ļoti sarežģīta, taču mēs sāksim ar vienkāršu.

Šis vaicājums izveido tabulu ar divām kolonnām.

CREATE TABLE lietotāji (lietotājvārds VARCHAR (20), izveides_datums DATE);

Lūdzu, ņemiet vērā, ka mēs varam uzrakstīt vaicājumu vairākās rindās un izmantot Tab ievilkšanai.

Pirmā rinda ir vienkārša. Mēs izveidojam tabulu ar nosaukumu lietotājiem... Tālāk iekavās ir norādītas tabulas kolonnas, atdalot tās ar komatiem. Piemēram, aiz katras kolonnas nosaukuma ir norādīts datu tips VARCHAR vai DATUMS.

VARCHAR (20) nozīmē, ka kolonna ir virknes tipa un nevar būt garāka par 20 rakstzīmēm. DATUMS- datu tips, kas paredzēts datumu glabāšanai šādā formātā: "GGGG-MM-DD".

Primārā atslēga

Pirms šī vaicājuma izpildes mums ir jāievieto kolonna Lietotāja ID, kas būs PRIMĀRĀ ATSLĒGA. Pārāk neiedziļinoties detaļās, varat iedomāties primāro atslēgu kā veidu, kā atpazīt katru tabulas datu rindu.

Pieprasījums kļūst šāds:

CREATE TABLE lietotāji (lietotāja_id INT AUTO_INCREMENT PRIMARY KEY, lietotājvārds VARCHAR (20), izveides_datums DATE);

INT- 32 bitu vesela skaitļa tips (ciparu). AUTOMĀTISKS_INCREMENT automātiski izveido jaunu ID numuru ikreiz, kad tiek pievienota datu rinda. Tas nav nepieciešams, bet ar to ir ērtāk.

Šī kolonna var nebūt vesels skaitlis, lai gan tas ir visizplatītākais datu veids. Primārās atslēgas kolonna nav obligāta, taču ieteicams to izmantot, lai uzlabotu datu bāzes veiktspēju un arhitektūru.

Izpildīsim vaicājumu:

RĀDĪT TABULAS: visu tabulu saraksts

Vaicājums ļauj iegūt visu pašreizējā datu bāzē esošo tabulu sarakstu.

PASKAIDROT: Parādiet tabulas struktūru

Izmantojiet šo vaicājumu, lai redzētu esošas tabulas struktūru.

Rezultātā tiek parādīti lauki (kolonnas) un to īpašības.

NOmest galdu: nomet galdu

Arī NOMET DATU BĀZES, šis vaicājums izdzēš tabulu un tās saturu bez brīdinājuma.

MAINĪT TABLU: modificēt tabulu

Šāds vaicājums var būt sarežģīts, jo tas var veikt vairākas izmaiņas tabulā. Apskatīsim dažus vienkāršus piemērus.

Pateicoties lasāmībai SQL, šis pieprasījums ir pats par sevi saprotams.

Izņemšana ir tikpat vienkārša. Izmantojiet vaicājumu piesardzīgi, dati tiek dzēsti bez brīdinājuma.

Pievienosim lauku vēlreiz e-pasts, vēlāk tas joprojām būs nepieciešams:

ALTER TABLE lietotāji PIEVIENOT e-pastu VARCHAR (100) PĒC lietotājvārda;

Dažreiz var būt nepieciešams mainīt kolonnas rekvizītus, tā nav jādzēš un jāizveido vēlreiz.

Šis pieprasījums pārdēvē lauku lietotājvārds v lietotājvārds un maina tā veidu no VARCHAR (20) uz VARCHAR (30)... Šādas izmaiņas neietekmē tabulas datus.

INSERT: datu pievienošana tabulai

Pievienosim ierakstus tabulai, izmantojot vaicājumus.

Kā jūs redzat, VĒRTĪBAS () satur ar komatu atdalītu vērtību sarakstu. Virknes vērtības ir ievietotas atsevišķās pēdiņās. Vērtībām jābūt tādā secībā, kāda norādīta tabulas izveides laikā.

Ņemiet vērā, ka pirmā vērtība ir NULL primārajai atslēgai, kuras laukam mēs nosaucām nosaukumu Lietotāja ID... Viss tāpēc, ka lauks ir atzīmēts kā AUTOMĀTISKS_INCREMENT un ID tiek ģenerēts automātiski. Pirmās datu rindas ID būs 1. Nākamā pievienojamā rinda ir 2 utt.

Alternatīva sintakse

Šeit ir vēl viena sintakse virkņu ievietošanai.

Šoreiz izmantojām atslēgvārdu IESTATĪT tā vietā VĒRTĪBAS... Atzīmēsim dažas lietas:

  • Kolonnu var izlaist. Piemēram, mēs laukam nepiešķīrām vērtību Lietotāja ID jo tas ir atzīmēts kā AUTOMĀTISKS_INCREMENT... Ja nepiešķirat vērtību laukam ar tipu VARCHAR, tad pēc noklusējuma tā izmantos tukšas virknes vērtību (ja vien, veidojot tabulu, nav norādīta cita noklusējuma vērtība).
  • Uz katru kolonnu var atsaukties pēc nosaukuma. Tāpēc lauki var būt jebkurā secībā, atšķirībā no iepriekšējās sintakses.

Alternatīvais sintakses numurs 2

Šeit ir vēl viens piemērs.

Tāpat kā iepriekš, varat atsaukties uz laukiem pēc nosaukuma, tie var būt jebkurā secībā.

Izmantojiet šo vaicājumu, lai iegūtu pēdējās ievietotās rindas ID.

TAGAD ()

Ir pienācis laiks parādīt, kā izmantot funkcijas MySQL pieprasījumos.

Funkcija TAGAD () atgriež pašreizējo datumu. Izmantojiet to, lai tipa laukam automātiski pievienotu pašreizējo datumu DATUMS.

Lūdzu, ņemiet vērā, ka esam saņēmuši brīdinājumu no MySQL bet tas nav tik svarīgi. Iemesls ir funkcija TAGAD () faktiski atgriež laika informāciju.

Mēs izveidojām lauku izveides_datums kurā var būt tikai datums, nevis laiks, tāpēc dati ir saīsināti. Tā vietā TAGAD () mēs varētu izmantot KURĀTS () kas atgriež tikai pašreizējo datumu, bet gala rezultāts būtu tāds pats.

SELECT: datu izgūšana no tabulas

Acīmredzot mūsu ierakstītie dati ir bezjēdzīgi, kamēr mēs tos nevaram izlasīt. Palīgā nāk lūgums ATLASĪT.

Vienkāršākais pieprasījuma izmantošanas piemērs ATLASĪT lai nolasītu datus no tabulas:

Zvaigznīte (*) nozīmē, ka mēs vēlamies iegūt visas tabulas kolonnas. Ja jums ir jāiegūst tikai noteiktas kolonnas, izmantojiet kaut ko līdzīgu:

Biežāk mēs vēlamies iegūt tikai noteiktas rindas, nevis visas. Piemēram, iegūsim lietotāja e-pasta adresi nettuts.

Tas ir līdzīgs IF nosacījumam. WHERE ļauj iestatīt nosacījumu vaicājumā un iegūt vēlamo rezultātu.

Vienlīdzības nosacījumam tiek izmantota viena zīme (=), nevis dubultā (==), ko jūs, iespējams, izmantojat programmēšanā.

Varat arī izmantot citus nosacījumus:

UN un VAI tiek izmantoti, lai apvienotu nosacījumus:

Ņemiet vērā, ka skaitliskās vērtības nav jāliek pēdiņās.

IN ()

Izmanto, lai salīdzinātu ar vairākām vērtībām.

PATĪK

Ļauj iestatīt meklēšanas veidni.

Procentu zīme (%) tiek izmantota, lai norādītu modeli.

PASŪTĪT PĒC klauzulas

Izmantojiet šo nosacījumu, ja vēlaties, lai rezultāts tiktu atgriezts sakārtots:

Noklusējuma secība ir ASC(augošā veidā). Pievienot DESC kārtot apgrieztā secībā.

IEROBEŽOJUMS ... OFFSET ...

Varat ierobežot atgriezto rindu skaitu.

2. IEROBEŽOTS aizņem pirmās divas rindiņas. 1. NOROBEŽA 2. IEROBEŽOJUMS aizņem vienu rindiņu pēc pirmajām divām. 2., 1. LIMITĒJUMS nozīmē to pašu, tikai pirmais skaitlis ir nobīde, bet otrais ierobežo rindu skaitu.

UPDATE: datu atjaunināšana tabulā

Šis vaicājums tiek izmantots, lai atjauninātu datus tabulā.

Vairumā gadījumu lieto kopā ar KUR lai atjauninātu noteiktas rindas. Ja nosacījums KUR nav norādīts, izmaiņas tiks piemērotas visām rindām.

Lai ierobežotu mainīgas virknes, varat izmantot LIMIT.

DZĒST: datu dzēšana no tabulas

Arī , šis vaicājums bieži tiek izmantots kopā ar nosacījumu KUR.

ATRUNA TABULA

Lai noņemtu saturu no tabulas, izmantojiet šādu vaicājumu:

DZĒST NO lietotājiem;

Labākai veiktspējai lietošanai .

Atiestata arī lauka skaitītāju AUTOMĀTISKS_INCREMENT, tāpēc tikko pievienotajām rindām id būs vienāds ar 1. Lietojot tas nenotiks un skaitītājs turpinās augt.

Aizbēgšana no virkņu vērtībām un īpašiem vārdiem

Virknes vērtības

Dažas rakstzīmes ir jāaizpilda, pretējā gadījumā var rasties problēmas.

Slīpssvītra (\) tiek izmantota atkāpšanai.

Tas ir ļoti svarīgi drošības apsvērumu dēļ. Jebkādi lietotāja dati ir jāizņem pirms ierakstīšanas datu bāzē. V PHP izmantojiet funkciju mysql_real_escape_string () vai sagatavotus paziņojumus.

Īpaši vārdi

Kopš gada MySQL daudzi atturīgi vārdi, piemēram ATLASĪT vai Lai izvairītos no pārpratumiem, ievietojiet kolonnu un tabulu nosaukumus pēdiņās. Turklāt jums ir jāizmanto nevis parastās pēdiņas, bet gan atzīmes (`).

Pieņemsim, ka kāda iemesla dēļ vēlaties pievienot kolonnu ar nosaukumu :

Secinājums

Paldies, ka izlasījāt rakstu. Es ceru, ka varēju jums parādīt šo valodu SQLļoti funkcionāls un viegli apgūstams.