Sissejuhatus MS SQL Serverisse ja T-SQL-i

Suhtarvutus domeenides

Relatsioonarvutus numbrite kohta

Väljend relatsiooniarvutuses on selline:

(S | F (S)), kus S- muutujatüüp, F-valem.

Näide: kõik müüjad, kes teenivad rohkem kui 10 000 palka

(S | Müüjad (S) ja S. Palk> 10000)

Valemeid saab luua kasutades loogilised toimingud konjunktsiooni-, disjunktsiooni-, eitus- ja võrdlusoperatsioonid. Kasutatakse olemasolu ja universaalsuse kvantifikaatoreid, näiteks:

Valige kõik Ivanovi pakkumised:

(S | Tehingud (S) & (B) (Müüjad (B) & B.N = S.N_Seller & B.Name = 'Ivanov'))

Väljend näeb välja selline: (d1, d2,…, dn | F (d1, d2,…, dm)); m> = n, kus d1 ... dmulatuse muutujad määratlused (domeen). F- valem, mis võib olla seos või võrdlusavaldus.

Näide: leidke kõigi müüjate numbrid ja nimed, kelle palk on> 10 000.

(N, nimi | (linn, osakond, N_Head) (müüjad (N, nimi, osakond, linn, palk, N_pea) ja (palk> 10000)))

D / Z 5. Näitena relatsiooniandmebaasist D / Z 4 -st, tooge näiteid kõikidest toimingutest, kirjutage päring relatsiooniarvutuste vormis kokku ja nii domeenidele.

Küsimused enesetestimiseks:

1. Milline kolmest matemaatilisest alusest nõuab protseduurilist programmeerimist (st programmeerimist järkjärgulise tulemusega) ja milline-deklaratiivset (st soovitud tulemuse kirjeldamist)?

SQL (Structure Query Language) on deklareeriv keel relatsiooniandmebaasidega töötamiseks, tuginedes suhtlusarvestusele numbrite kohta. Keele deklaratiivne olemus seisneb selles, et erinevalt imperatiivsetest keeltest (näiteks C ++) ei kirjuta programmeerija soovitud tulemuse saamiseks toimingute jada, vaid kirjeldab soovitud tulemus... DBMS ise valib tulemuse leidmise algoritmi vastavalt oma kirjeldusele.

SQL -keel koosneb kolmest allkeelest, mida on kirjeldatud tabelis. kaheksa:

Tab. 8. SQL keele allkeeled

Operaatorid andmete määratlemiseks ja manipuleerimiseks on lihtsad, sageli on need arendaja eest varjatud, kui ta kasutab andmebaasi loomisel nõustajaid. Nende kaalumine jääb selle raamatu raamest välja. Kogu SQL keele rikkus peitub selles Valige avaldus mida kasutatakse tabelis näidatud lisaoperaatoritega. üheksa.

Tab. 9. Abioperaatorid Selectile

Operaatorite rühm Operaatorite kirjeldus
Proovi tüüp Kõik - valige kõik kirjed Eristatav - valige kirjed duplikaatide eemaldamisega
Aretus, sorteerimine ja rühmitamine järjekorras - sorteerimine kasvavas või kahanevas järjekorras, kus - kirjete valimine, rühmitamine rühmade kaupa, omamine - rühmade valik, liitumine ... on - erinevaid sorte liitub tabelitega
Võrdlus- ja Boole -operaatorid =, <>, >, <, >=, <= - операторы сравнения, Or, Аnd, Not – логические И, ИЛИ, отрицание, is null – проверка на (не)пустое значение in, between, like, starting,containing – операторы примерного совпадения полей строковых типов.
Koondoperaatorid Loend - ridade arvu loendamine, summa - summa, keskmine - keskmine väärtus, min - minimaalne väärtus, max - maksimaalne väärtus.
Kvantifikaatorid Kõik - kõik, kõik - kõik, ainsus - ainus, eksisteerib - on olemas.
Määrake toimingud Liit - liit, ristmik - ristmik, välja arvatud - erinevus.

Lause Select süntaks on keeruline, vaatleme seda lihtsate ja keeruliste näidete kaudu, pöörates tähelepanu tüüpilistele vigadele, millega algaja SQL -i programmeerija kokku puutub.

Sissejuhatus SQL -i

Esimesed päringukeeled relatsiooniliste andmebaaside jaoks ilmusid 70ndatel. Sel ajal oli mitu erinevat päringukeelt, mis tekitasid JUD tootjatele teatud ebamugavusi. SQL keele vahetu eelkäija oli SEQUEL keel.

SQL keele standard laieneb pidevalt, nii et praeguseks on mitu ametlikult kinnitatud valikut:

1. SQL-89, esimene mittetäielik versioon, näitas praktika kiiresti, et seda tuleb laiendada.

2. Oluliselt täiustatud versioon SQL-92 (või SQL-2), paljud DBMS-id tagavad nüüd SQL-2 täieliku toe ja hilisemate standardite osalise toe.

3. SQL-99, tutvustati veel mõnda laiendit.

4. SQL-2003, standardi kõige täielikum versioon, mis võtab arvesse paljusid lahendusi, mida DBMS-i arendajad on juba kasutusele võtnud ja muutunud de facto standardiks (näiteks jadaobjekt on standardiseeritud, mis on pikka aega on kasutatud mõnes DBMS-is, näiteks Oracle'is, peaaegu kõik sisseehitatud tüübid on standarditud andmed, mida kasutatakse erinevates DBMS-is).

SQL-2003 stardart sisaldab üsna palju käske, mis hõlmavad IS toimimise erinevaid aspekte ja on jagatud 7 käskude klassi. SQL -keel põhineb aga kahel käskude klassil, mida tavaliselt nimetatakse keelteks: andmete määratluskeel ja andmetöötluskeel. Algselt - DDL (andmete määratluskeel) ja DML (andmetöötluskeel).

Selle õpetuse jaoks kaalume ainult neid kahte klassi (DDL ja DML). Ülejäänud klassid, mis on standardis SQL-92 ühendatud üldnimetusega "andmekontrollikeel" (DCL), käsitletakse osaliselt järgmises õppemoodulis.

Materjali esitamisel juhindume standardist SQL 2003, kuid tuleb arvestada, et käsud, mida kavatseme uurida, pole praktiliselt muutunud alates SQL-92 ajast.

Andmebaasitootjad, toetades üldiselt SQL -i standardit, lubavad siiski mõnikord üksikute käskude väiksemaid süntaksimuudatusi. Peaaegu kõik DBMS -id sisaldavad mõnda või muud SQL -keele laiendit. Seetõttu on SQL -keele õppimine ilma konkreetse DBMS -iga sidumata võimalik ainult puhtalt teoreetiliselt. Kuna selle mooduli eesmärk on omandada pädevusi (st oskust omandatud teadmisi praktikas rakendada), on vaja keskenduda konkreetsele DBMS -ile, mida kasutatakse näidisnäidete ja mooduli praktiliste ülesannete silumiseks.

Selliseks DBMS -iks valiti maailmaturul kõige levinum Oracle. Oracle DBMS -i SQL -murdes on standardist kõrvalekalded minimaalsed. Selle peatüki näiteid siluti Oracle 10g serveri SQL * Plus konsooli kliendi utiliidi abil.

Kõikjal käskude kirjelduses, kus on vähemalt väike kõrvalekalle Oracle'i süntaksist SQL 2003 standardist, mainitakse seda eraldi. Arvestades selliste DBMS -ide nagu Microsoft SQL Server, MySQL ja paljude teiste laialdast levikut, arutatakse mõnikord ka nende DBMS -ide iseärasusi.

SQL avaldused on kirjutatud vabas vormingus. Kõikjal, kus on tühik või kirjavahemärk, saab sisestada suvalise arvu tühikuid või uusi ridu. Konsooli utiliidis SQL * Plus töötades kasutatakse sümbolit; (semikoolon) kui märk päringu lõppemisest - semikooloniga lõpetatud päringu tekst saadetakse kohe serverisse täitmiseks. Kuid semikoolon ei kuulu SQL -i käsku, nii et seda loengute näidetes ei kuvata.

Keelt kirjeldades pidasime võimalikuks mitte anda iga käsu täielikku süntaksit vormilisel kujul (Backus-Nauri vormid või süntaktilised diagrammid), arvestades süntaksi lakoonilisust ja suhtelist lihtsust, aga ka kõrvalekallete olemasolu. standard keele murretes ning standardi enda ja murrete varieeruvus. Käsu süntaksit kirjeldatakse mitteametlikult, jättes välja mõned meie seisukohast ebaolulised konstruktsioonid, kuid üsna rangelt:

· Kõik keele märksõnad on kirjutatud suurte tähtedega ja kasutajate loodud nimed on kirjutatud väiketähtedega, kuigi SQL-i keele leksikoni seisukohast on erinevused märkide puhul tühised;

· Kõik valikulised käsuelemendid on suletud nurksulgudes;

· Juhul kui ruumi saab tõlgendada mitmeti, asendatakse see alajoonega;

· Käsu osa vahelejätmisel kasutatakse ellipsi.

Mitteametliku kirjeldusviisi võimalikud puudused kompenseerivad suur hulk näiteid ja täiendavad suulised kommentaarid.

Mõned DBMS-i lokaliseeritud versioonid võimaldavad kasutajate loodud nimedes kasutada riiklikke tähestikke, kuid soovitame seda funktsiooni kasutada äärmiselt ettevaatlikult. Keele võtmemärke ei saa kasutada nimedena (tabelid, veerud, vaated jne) - enamik neist vigadest avastatakse koostamisel, kuid harvadel juhtudel võivad vead olla ettearvamatud, eriti seoses riiklike tähestike sümbolite kasutamisega. .

SQL (struktureeritud päringukeel) on struktureeritud päringukeele lühinimi, mis võimaldab luua ja töödelda andmeid relatsioonandmebaasides. Selle sõltumatus arvutitehnoloogia eripäradest, samuti SQL -i tugi tööstuse juhtide poolt relatsiooniliste andmebaaside tehnoloogias, on muutnud selle esmaseks standardseks andmebaasikeeleks.

Kõik andmetega manipuleerimise keeled, mis loodi enne relatsiooniandmebaaside tulekut ja mis olid välja töötatud paljude DBMS -ide jaoks, keskendusid toimingutele, mille andmed esitati loogiliste failikirjetena. Loomulikult nõudis see üksikasjalikke teadmisi andmete salvestamise korraldamise kohta ja tõsiseid pingutusi kasutajalt, et täpsustada, milliseid andmeid on vaja, kus need asuvad ja kuidas neid saada. Kõnealune SQL -keel on keskendunud andmeoperatsioonidele. esitatakse loogiliselt omavahel ühendatud tabelite-seoste C-kogude kujul. Selle keele struktuuride kõige olulisem tunnus on keskendumine andmetöötluse lõpptulemusele, mitte selle töötlemise korrale. SQL määrab ise, kus tulemuse saamiseks andmeid, indekseid ja isegi kõige tõhusamat toimingute jada kasutada, seega ei pea te neid üksikasju andmebaasi päringus täpsustama.

Relatsioonandmebaaside teooria tekkimine andis tõuke mitmete päringukeelte väljatöötamisele, mida võib omistada kahele klassile:

algebralised keeled, mis võimaldavad teil päringuid avaldada, kasutades suhetes rakendatud spetsialiseeritud operaatoreid;

predikaatarvutuskeeled, mis on reeglite kogum avaldise kirjutamiseks, mis määratleb olemasoleva seose antud hulgast uue seose. Järelikult on predikaatarvutus meetod seose määramiseks, mille on soovitav saada vastusena päringule andmebaasis juba olemasolevatest seostest.

1987. aastal sai SQL professionaalsete relatsiooniliste andmebaaside haldussüsteemide keelestandardiks ja seda hakati rakendama kõigis peavoolu süsteemides. See on tingitud mitmest järgmisest punktist. Pidev jõudluse kasv ning arvutite energiatarbimise, suuruse ja maksumuse vähenemine on viinud nende müügi võimalike turgude, kasutajate ringi, erinevate tüüpide ja hindade järsu laienemiseni. Loomulikult on nõudlus mitmesuguste tarkvarade järele laienenud. Võitluses ostja pärast hakkasid tarkvaraettevõtted turule tooma üha intelligentsemaid ja seega ka mahukaid tarkvarasüsteeme. Neid ostes. paljud organisatsioonid ja üksikud kasutajad ei suutnud neid sageli oma arvutisse mahutada. Teabevahetuseks ja selle levitamiseks loodi arvutivõrgud, kus hakati üldistavaid programme ja andmeid paigutama spetsiaalsetesse failiserveritesse.


Failiserveritega töötavad DBMS võimaldab mitmel erineva arvuti kasutajal, kes asuvad üksteisest piisavalt kaugel, juurdepääsu samale andmebaasile. See lihtsustab erinevate automatiseeritud juhtimissüsteemide väljatöötamist organisatsioonide, hariduskomplekside, teabe- ja muude süsteemide jaoks, kus paljud töötajad või õpilased peavad kasutama ühiseid andmeid ja vahetama selle käigus loodud teavet. Selle lähenemisviisi korral teostatakse aga kõik programmidest või kasutajaarvutite terminalidest pärinevate päringute töötlemine nendega, seetõttu on isegi lihtsa päringu täitmiseks vaja failiserverist lugeda või serverisse kirjutada terveid faile, ja see toob kaasa konfliktsituatsioone ja võrgu ülekoormust.puudusteks pakuti välja kliendi / serveri tehnoloogiat, kuid serveriga oli vaja ühte suhtluskeelt - ja selle kvaliteediks valiti SQL.

Toimingute kontseptsiooni rakendamine SQL -i tabelite esitamise põhjal võimaldas meil luua väikese avalduste komplektiga kompaktse keele. SQL -i saab kasutada nii päringute täitmiseks kui ka rakendusprogrammide koostamiseks. See sisaldab:

soovitused andmete määratlemiseks - andmebaasi määratlemine ning tabelite ja indeksite määratlemine ja hävitamine;

andmevaliku päringud - klausel SELECT;

andmete muutmise ettepanekud - andmete lisamine, kustutamine ja muutmine;

andmehalduse ettepanekud - andke ja tühistage privileegid andmetele juurdepääsu, tehingute haldamise jt jaoks.

Pealegi. SQL pakub järgmistes punktides täitmist:

Aritmeetilised arvutused, sealhulgas mitmesugused funktsionaalsed teisendused, tekstistringide töötlemine ning aritmeetiliste avaldiste ja tekstide väärtuste võrdlemine;

Ridade või veergude järjestamine tabeli sisu kuvamisel prindi- või kuvaekraanil;

Vaadete loomine, mis võimaldavad kasutajatel andmeid tõlgendada ilma nende mahtu andmebaasis suurendamata;

Soovi korral kuvatava tabeli, mitme tabeli või vaate sisu salvestamine teise tabelisse;

Andmete rühmitamine ja selliste toimingute rakendamine nagu keskmine, summa, maksimum, miinimum, kardinaalsus jne.

SQL standardi määratleb ANSI (American National Standards Institute) ja selle võtab praegu vastu ka isq (International Organization for Standardization). Enamik kaubanduslikke andmebaasiprogramme laiendab SQL -i ilma ANSI teatamiseta, lisades keelde mitmesuguseid muid funktsioone, mis nende arvates on väga kasulikud. Mõnikord rikub see mõnevõrra keelenormi, kuigi head ideed kipuvad arenema ja muutuvad peagi standarditeks.

SQL -keel on paljude andmebaaside haldussüsteemide selgroog. see vastutab andmete füüsilise struktureerimise ja kettale kirjutamise, samuti kettalt andmete füüsilise lugemise eest ning võimaldab tal vastu võtta teiste DBMS -i komponentide ja kasutajarakenduste SQL -päringuid. Seega on SQL võimas tööriist, mis pakub kasutajatele, programmidele ja arvutisüsteemidele juurdepääsu relatsioonandmebaasides sisalduvale teabele.

SQL -keele peamised eelised on järgmised:

SQL -standard - nagu juba mainitud, on selle kasutamine programmides standarditud rahvusvaheliste organisatsioonide poolt;

Sõltumatus konkreetsetest DBMS -idest - kõik tavalised DBMS -id kasutavad SQL -i, sest relatsioonandmebaasi ja sellega töötavaid programme saab minimaalsete muudatustega ühest DBMSist teise üle kanda;

Võimalus üle kanda ühest arvutisüsteemist teise - DBMS saab keskenduda erinevatele arvutisüsteemidele, kuid SQL -i abil loodud rakendusi saab kasutada nii kohalike andmebaaside kui ka suurte mitme kasutaja süsteemide jaoks;

Keele relatsiooniline alus - SQL on relatsioonilise andmebaasi keel, seega sai see populaarseks siis, kui populaarseks sai andmete esitamise relatsioonimudel. Relatsioonandmebaasi tabelistruktuur on hästi arusaadav, seega on SQL lihtne ja hõlpsasti õpitav;

Võimalus luua interaktiivseid päringuid - SQL annab kasutajatele kohese juurdepääsu andmetele, samal ajal kui interaktiivselt saate päringu tulemuse väga lühikese aja jooksul ilma keerulist programmi kirjutamata, võimalus andmebaasile programmiliselt juurde pääseda - SQL -i keelt saab hõlpsasti kasutada kasutatakse rakendustes, mis peavad andmebaasile juurde pääsema ... Samu SQL -lauseid kasutatakse nii interaktiivseks kui ka programmiliseks juurdepääsuks, nii et andmebaasikõnesid sisaldavaid programmide osi saab interaktiivselt kontrollida ja seejärel programmi sisse lülitada;

Andmete erinevate vaadete pakkumine - SQL -i abil saate pakkuda sellist andmestruktuuri, et konkreetne kasutaja näeks andmete erinevaid vaateid. Lisaks saab andmebaasi eri osade andmeid kombineerida ja kasutajale esitada ühe lihtsa tabelina, mis tähendab, et vaateid saab kasutada andmebaasi kaitse tugevdamiseks ja üksikute kasutajate konkreetsete vajaduste jaoks konfigureerimiseks ;

Võimalus dünaamiliselt muuta ja laiendada andmebaasi struktuuri - SQL -keel, isegi sisule juurdepääsu ajal, võimaldab teil manipuleerida andmebaasi struktuuriga. See on suur eelis staatiliste andmete määratluskeelte ees, mis keelavad juurdepääsu andmebaasile selle struktuuri muutmise ajal. Seega pakub SQL paindlikkust andmebaasi kohandamisel domeeni muutuvatele nõuetele, katkestamata reaalajas töötava rakenduse tööd;

Kliendi / serveri arhitektuuri tugi - SQL on üks parimaid tööriistu kliendi / serveri rakenduste juurutamiseks. Samal ajal on SQL ühenduslüli kasutajaga suhtleva kliendisüsteemi ja andmebaasi haldava serverisüsteemi vahel, võimaldades kõigil neist keskenduda oma otseste ülesannete täitmisele.

Peab ütlema, et kuigi SQL oli mõeldud lõppkasutaja tööriistana, muutus see lõpuks nii keeruliseks, et sellest sai programmeerija tööriist. Andmerakenduste kirjutamist SQL -i abil käsitletakse selle peatüki lõpus.

SQL määratleb keele kaks alamhulka:

· SQL-DDL(Data Definition Language) on keel andmebaaside terviklikkuse struktuuride ja piirangute määratlemiseks. See hõlmab käske andmebaaside loomiseks ja kustutamiseks; tabelite loomine, muutmine ja kustutamine; kasutajate haldamine jne.

· SQL-DML(Andmetöötluskeel) - andmetega manipuleerimise keel: andmete lisamine, muutmine, kustutamine ja allalaadimine, tehingute haldamine

See ei kirjelda rangelt kõiki SQL-92 funktsioone. Esiteks ei toeta ükski DBMS neid täielikult ja teiseks pakuvad DBMS -i müüjad sageli oma SQL -laiendusi, mis ei ole omavahel kooskõlas. Seetõttu kaalume keele teatud alamhulka, mis annab üldise ettekujutuse selle eripärast ja võimalustest. Samal ajal piisab sellest alamhulgast iseseisva töö alustamiseks mis tahes DBMS -iga. Ametlikuma (ja täielikuma) ülevaate SQL -i standarditest teeb SD Kuznetsovi artikkel "Standardid SQL -i relatsiooniliste andmebaaside keelele: lühike ülevaade", DBMS -i ajakiri N 2, 1996. Saate tutvuda vene tõlkega Infotehnoloogiakeskuse serveri SQL -i standardist on keele erinevate versioonide (Sybase SQL Server, Sybase SQL Anywhere, Microsoft SQL Server, Informix, Oracle Server) võrdlev kirjeldus raamatus J. Bowman, S. Emerson, M. Darnovsky "SQL -i praktiline juhend", Kiiev, Dialektika, 1997.

Samuti tuleb märkida, et erinevalt relatiivmudeli kirjeldamiseks kasutatud "teretilisest" terminoloogiast ( seos, atribuut, kord), kirjanduses kasutatakse SQL -i kirjeldamisel sageli terminit "praktiline" (vastavalt - tabel, veerg, rida). Siin järgime seda traditsiooni.

Kõik näited on koostatud seoses andmebaasiga väljaanded mis sisaldab teavet selle kursuse teemaga seotud trükiste (nii trükitud kui ka elektrooniliste) kohta. Selle andmebaasi ülesehitust saab vaadata siit, selle ülesehitust on kirjeldatud jaotises 5.4. Juurdepääsu sellele praktiliste harjutuste jaoks saab Interneti kaudu, kasutades hüpet (relatsioonialgebra) või PostgreSQL -i. (SQL keel).

struktureeritud keel taotlusi. See keel võimaldab luua, muuta ja kustutada andmebaasidesse salvestatud teavet, luua uusi andmebaase ja palju muud. SQL on ANSI (American National Standards Institute) ja ISO (International Organization for Standardization) standard.

Natuke ajalugu

Esimene rahvusvaheline SQL -keele standard võeti vastu 1989. aastal ja sellele viidatakse sageli kui SQL / 89. Selle standardi puuduste hulgas on esiteks asjaolu, et see määras rakenduses määratletud paljud olulised omadused. Siit tekkis palju lahknevusi keele rakendused erinevate tootjate poolt. Lisaks on väidetud, et standardis ei mainita keele praktilisi aspekte, näiteks selle kinnistamist C -programmeerimiskeelde.

Järgmine rahvusvaheline SQL -keele standard võeti vastu 1992. aasta lõpus ja sai tuntuks kui SQL / 92. See osutus palju täpsemaks ja täielikumaks kui SQL / 89, kuigi see ei olnud ilma puudusteta. Enamik süsteeme rakendab seda standardit tänapäeval peaaegu täielikult. Kuid nagu teate, ei saa edusamme peatada ja 1999. aastal ilmus uus standard SQL: 1999, tuntud ka kui SQL3. SQL3-d iseloomustatakse kui "objektorienteeritud SQL-i" ja see on aluseks mitmele objekt-relatsioonilise andmebaasi haldussüsteemile (näiteks Oracle'i ORACLE8, Informixi universaalserver ja IBMi DB2 universaalne andmebaas). See standard ei ole lihtsalt SQL-92 ja objektitehnoloogia liitmine. See sisaldab mitmeid traditsioonilise SQL -i laiendusi ja on loodud tulevases standardimistöös tõhusamaks.

Mis puutub MySQL-i, siis see on algtaseme SQL92, sisaldab mitmeid standardi laiendusi ja püüab täielikult toetada ANSI SQL99 standardit, kuid ei ohverda koodi kiirust ja kvaliteeti.

Põhilised SQL -operaatorid

Mis tahes DBMS -i funktsioonid hõlmavad järgmist:

  1. andmebaasi (DB) loomine, kustutamine, muutmine;
  2. kasutajaõiguste lisamine, muutmine, kustutamine, määramine;
  3. andmete sisestamine, kustutamine ja muutmine andmebaasis (tabelid ja kirjed);
  4. andmete toomine andmebaasist.

Ainult DBMS -i administraatoritel või privilegeeritud kasutajatel on juurdepääs kahele esimesele funktsioonile. Mõelgem, kuidas lahendatakse kaks viimast ülesannet (tegelikult on need seitse ülesannet).

Enne andmetega midagi ette võtmist peate looma tabelid, millesse need andmed salvestatakse, õppima, kuidas nende tabelite struktuuri muuta ja vajadusel need kustutada. Selleks on SQL -keeles operaatorid LOO TABEL, ALTER TABEL ja TILKUTABEL.

CREATE TABLE avaldus

Operaator LOO TABEL loob praeguses andmebaasis antud nimega tabeli. Vaadake dokumentidest kehtivate tabelinimede reegleid. Kui aktiivset praegust andmebaasi pole või määratud tabel on juba olemas, ilmneb käsu täitmise tõrge.

MySQL versioonis 3.22 ja uuemates saab tabeli nime määrata järgmiselt db_nimi.tabeli_nimi... See märkimisvorm töötab sõltumata sellest, kas määratud andmebaas on praegune.

Alates MySQL 3.23 -st saate tabelit luues kasutada märksõna AJUTINE... Ajutine tabel kustutatakse ühenduse lõpetamisel automaatselt ja selle nimi kehtib ainult ühenduse ajal. See tähendab, et kaks erinevat liitumist saavad kasutada sama nimega ajutisi tabeleid ilma üksteisega vastuolus või olemasoleva sama nimega tabeliga (olemasolev tabel on peidetud kuni ajutise tabeli väljajätmiseni). Alates MySQL 4.0.2 -st peavad teil ajutiste tabelite loomiseks olema CREATE -õigused AJUTISED TABELID.

MySQL 3.23 ja uuemates versioonides saab märksõnu IF NOT EXISTS kasutada vea vältimiseks, kui määratud tabel on juba olemas. Tuleb meeles pidada, et nende tabelite struktuuride identsust ei kontrollita.

Iga tabelit tähistab andmebaasi kataloogis teatud failide komplekt.

Süntaks

TABELI LOOMINE tabeli_nimi [(veeru_definitsioon, ...)] [tabeli_valikud]

Väljendis veeru_definitsioon loetlege, millised veerud tuleks tabelisse luua. Tabeli iga veerg võib olla NULL, sellel võib olla vaikeväärtus, võti või automaatne juurdekasv. Lisaks tuleb iga veeru puhul märkida sellesse salvestatavate andmete tüüp. Kui pole määratud ei NULL ega NOT NULL, tõlgendatakse veergu nii, nagu oleks määratud NULL. Kui väljale on märgitud AUTO_INCREMENT, suurendatakse selle väärtust automaatselt ühe võrra iga kord, kui tabelisse andmed lisatakse, ja sellele väljale kirjutatakse tühi väärtus (NULL, st midagi ei kirjutata) või 0. Tabelis võib olla ainult üks automaatne suurendamine ja see tuleb indekseerida. AUTO_INCREMENT jada algab kell 1. Automaatne parandamine on üks MySQL funktsioone. Formaalselt näeb veeru kirjeldus (veeru_definitsioon) välja selline:

veeru_nimi tüüp

Veeru tüüp (tippige veeru_definitsioon) võib olla üks järgmistest.

  • terve: INT [(pikkus)] [UNSIGNED]
  • kehtiv: PÄRIS [(pikkus, kümnendkohad)] [MÄRGIMATA]
  • märk: CHAR (pikkus) ja VARCHAR (pikkus)
  • kuupäev ja kellaaeg: DATE ja TIME
  • suurte objektidega töötamiseks: BLOB
  • tekst: TEXT
  • loendamatu komplekt: ENUM (väärtus1, väärtus2, väärtus3, ...) ja SET (väärtus1, väärtus2, väärtus3, ...)

Tüüpide täieliku loendi leiate dokumentatsioonist

Selle sarja kahes eelmises artiklis, mis on avaldatud meie ajakirja numbrites 6 ja 7, vaatasime mitmesuguseid andmetele juurdepääsu mehhanisme, sealhulgas ADO, BDE ja nende alternatiivid. Nüüd teame, kuidas valida konkreetsele paarile „DBMS - arendustööriist” andmejuurdepääsu tehnoloogia.

Teie käsutuses olevale andmetele juurdepääsu tehnoloogiaga saate lõpuks mõelda, kuidas andmete ja metaandmetega ise manipuleerida. Manipuleerimismeetodid võivad olla spetsiifilised antud DBMS -i jaoks (näiteks kasutades selle DBMS -i kliendiosa objekte andmebaasiobjektidele juurdepääsuks) või antud andmetele juurdepääsu mehhanismi jaoks. Sellegipoolest on olemas enam-vähem universaalne viis andmetega manipuleerimiseks, mida toetavad peaaegu kõik serveripoolsed relatsioonilised DBMS-id ja enamik üldotstarbelistele andmetele juurdepääsumehhanisme (ka siis, kui neid kasutatakse koos töölaua DBMS-idega). See meetod kasutab SQL (Structured Query Language) keelt. Allpool käsitleme selle keele eesmärki ja funktsioone ning õpime ka seda kasutama andmete eraldamiseks ja kokkuvõtete tegemiseks, kirjete lisamiseks, kustutamiseks ja muutmiseks, andmete volitamata juurdepääsu eest kaitsmiseks ja andmebaaside loomiseks. SQL -i üksikasjalikumaks uurimiseks võime soovitada Martin Graberi raamatuid "Introduction to SQL" (M., Laurie, 1996) ja "SQL. Teatmik "(M., Lori, 1997).

Sissejuhatus

Struktureeritud päringukeel on mitteprotseduuriline keel, mida kasutatakse andmete manipuleerimiseks relatsioonilistes DBMSides. Mõiste "mitteprotseduuriline" tähendab, et antud keeles saate sõnastada, mida andmetega teha, kuid te ei saa juhendada, kuidas seda täpselt teha. Teisisõnu, sellel keelel puuduvad algoritmilised konstruktsioonid, nagu sildid, silmuseoperaatorid, tinglikud hüpped jne.

SQL loodi 1970ndate alguses IBMi uurimisprojekti tulemusena, mille eesmärk oli luua relatsiooniandmetega manipuleerimise keel. Algselt kandis see nime SEQUEL (Structured English Query Language), seejärel SEQUEL / 2 ja seejärel lihtsalt SQL. Ametliku SQL -standardi avaldas ANSI (American National Standards Institute, USA) 1986. aastal (see on tänapäeval kõige sagedamini kasutatav SQL -i rakendus). Seda standardit laiendati 1989. ja 1992. aastal, nii et uusimat SQL -i standardit nimetatakse SQL92 -ks. Praegu käib töö SQL3 standardiga, mis sisaldab mõningaid objektorienteeritud laiendusi.

ANSI vastavust on kolmel tasemel - algaja, keskmine ja täielik. Paljud serverite andmebaaside müüjad, näiteks IBM, Informix, Microsoft, Oracle ja Sybase, kasutavad oma DBSI-spetsiifiliste laiendustega oma ANSI-põhiseid SQL-i rakendusi (mis vastavad vähemalt algtaseme nõuetele).

Lisateavet konkreetses DBMS -is kasutatava SQL -versiooni vastavuse kohta leiate selle DBMS -iga kaasasolevast dokumentatsioonist.

Kuidas SQL töötab

Vaatame, kuidas SQL töötab. Oletame, et teil on andmebaas, mida haldab mõni DBMS. Sellelt andmete hankimiseks kasutatakse SQL -keeles koostatud päringut. DBMS töötleb seda taotlust, otsib nõutud andmed ja tagastab need. Seda protsessi on skemaatiliselt näidatud joonisel fig. 1.

Nagu hiljem näeme, võimaldab SQL mitte ainult andmeid alla laadida, vaid ka määratleda andmestruktuuri, lisada ja eemaldada andmeid, piirata või lubada andmetele juurdepääsu ning säilitada viite terviklikkus.

Pange tähele, et SQL ise ei ole DBMS ega iseseisev toode. See on keel, mida kasutatakse DBMS -iga suhtlemiseks ja on teatud mõttes selle lahutamatu osa.

Andmete määratluskeel (DDL)

Andmete määratluskeel sisaldab operaatoreid, mis võimaldavad luua, muuta ja hävitada andmebaase ja neis olevaid objekte (tabeleid, vaateid jne). Need operaatorid on loetletud tabelis. 1.

Tabel 1

Operaator

Kirjeldus

Kasutatakse andmebaasi uue tabeli lisamiseks

Kasutatakse tabeli kustutamiseks andmebaasist

Kasutatakse olemasoleva tabeli struktuuri muutmiseks

Kasutatakse andmebaasi uue vaate lisamiseks

Kasutatakse vaate eemaldamiseks andmebaasist

Kasutatakse selle välja indeksi loomiseks

Kasutatakse olemasoleva indeksi kustutamiseks

Kasutatakse andmebaasis uue skeemi loomiseks

Kasutatakse skeemi eemaldamiseks andmebaasist

Kasutatakse uue domeeni loomiseks

Kasutatakse domeeni alistamiseks

Kasutatakse domeeni eemaldamiseks andmebaasist

Andmete manipuleerimise keel (DML)

Andmetöötluskeel sisaldab operaatoreid, mis võimaldavad teil andmeid valida, lisada, kustutada ja muuta. Pange tähele, et need avaldused ei ole vajalikud tehingu lõpuleviimiseks, mille raames neid nimetatakse. DML avaldused on esitatud tabelis. 2.

tabel 2

Mõnikord langeb SELECT -avaldus eraldi kategooriasse, mida nimetatakse andmepäringukeeleks (DQL).

Kursori juhtimiskeel (CCL)

Kursori juhtimiskeele lauseid kasutatakse kursori määratlemiseks, SQL -lausete täitmiseks ettevalmistamiseks ja mõningate muude avalduste jaoks. CCL -operaatorid on esitatud tabelis. 5.

Tabel 5

Operaator

Kirjeldus

Kasutatakse päringu kursori määramiseks

Kasutatakse päringuplaani kirjeldamiseks. See avaldus on Microsoft SQL Server 7.0 SQL -i laiend. See ei ole kohustuslik teistes DBMSides töötamiseks. Näiteks Oracle'i puhul tuleks kasutada lauset EXPLAIN PLAN

Kasutatakse päringu tulemuste toomisel kursori avamiseks

Kasutatakse päringutulemustest stringi saamiseks

Kasutatakse kursori sulgemiseks

Kasutatakse SQL -avalduse täitmiseks ettevalmistamiseks

Kasutatakse SQL -avalduse täitmiseks

Kasutatakse ettevalmistatud taotluse kirjeldamiseks

Kõik SQL -avaldused on näidatud joonisel fig. 2.

Iga SQL -lause algab märksõnaverbiga, mis määratleb, mida see lause teeb (SELECT, INSERT, DELETE ...). Operaator sisaldab ka lauseid, mis sisaldavad teavet selle kohta, milliseid andmeid opereeritakse. Iga klausel algab märksõnaga nagu FROM, WHERE jne. Klausli struktuur sõltub selle tüübist - mitmed klauslid sisaldavad tabelite või väljade nimesid, mõned võivad sisaldada täiendavaid märksõnu, konstande või väljendeid.

Kuidas SQL -avaldusi täita

Kõik kaasaegsed serverite DBMS -id (ja ka paljud populaarsed töölaua DBMS -id) sisaldavad utiliite, mis võimaldavad teil SQL -avaldust täita ja selle tulemust näha. Eelkõige sisaldab Oracle'i kliendipool SQL Plus utiliiti ja Microsoft SQL Server utiliiti SQL Query Analyzer. Kasutame seda utiliiti SQL -i võimete demonstreerimiseks ja andmebaasina, millega me "katsetame", võtame Microsoft SQL Server 7.0 -ga kaasas oleva NorthWindi andmebaasi. Põhimõtteliselt saate kasutada mõnda muud andmebaasi ja mis tahes muud utiliiti, mis suudab selles andmebaasis SQL -avaldusi täita ja tulemusi kuvada (või isegi kirjutada oma, kasutades mõnda arendustööriista - Visual Basic, Delphi, C ++ Builder jne). Siiski on soovitatav igaks juhuks sellest andmebaasist varukoopia teha.