Sveiki visi! Šiandien pasistengsiu kuo paprasčiau, ypač pradedantiesiems, papasakoti apie kas yra SQL, ir kam jis reikalingas. Iš šios medžiagos taip pat sužinosite, kas yra duomenų bazė ir duomenų bazių valdymo sistema, taip pat kas yra SQL kalbos dialektas, nes visas straipsnis bus sukurtas remiantis sklandžiai leis jums suprasti, kas yra SQL.
Manau, jūs jau įsivaizduojate, kad SQL yra tam tikra kalba, susijusi su kažkokiomis duomenų bazėmis, bet norint geriau suprasti, kas yra SQL, reikia suprasti, kam skirtas SQL, kam ši kalba skirta , t.y. jos tikslas.
Todėl pirmiausia pateiksiu jums šiek tiek įžanginės informacijos, iš kurios bus aišku, kokia SQL kalbos paskirtis ir kodėl ji apskritai reikalinga.
Kas yra duomenų bazė
Ir pradėsiu nuo to, kad duomenų bazė paprastai suprantama kaip bet koks informacijos rinkinys, kuris yra saugomas tam tikru būdu ir gali būti naudojamas. Bet jei kalbame apie kai kurias automatizuotas duomenų bazes, tai, žinoma, kalbame apie vadinamąsias reliacines duomenų bazes.
Reliacinė duomenų bazė– tai užsakyta informacija, susieta tam tikrais ryšiais. Jis pateikiamas lentelių pavidalu, kuriose yra visa ši informacija. Ir tai labai svarbu, nes dabar turėtumėte įsivaizduoti modernią duomenų bazę tiesiog lentelių pavidalu ( kalbant SQL kontekste), t.y. Bendrąja prasme duomenų bazė yra lentelių rinkinys. Žinoma, tai labai supaprastintas apibrėžimas, tačiau jis suteikia praktinio duomenų bazės supratimo.
Kas yra SQL
Dėl to, kad informacija duomenų bazėje yra sutvarkyta, suskirstyta į tam tikrus subjektus ir pateikiama lentelių pavidalu, mums reikiamą informaciją lengva pasiekti ir rasti.
Ir čia iškyla pagrindinis klausimas: Kaip su ja susisiekti ir gauti reikiamą informaciją?
Tam turi būti specialus įrankis, ir čia mums į pagalbą ateina SQL, kuris yra įrankis, kuriuo manipuliuojami duomenys ( kurti, atkurti, ištrinti ir pan.) duomenų bazėje.
SQL (Struktūrinės užklausos kalba) yra struktūrinė užklausų kalba, naudojama rašyti specialias užklausas ( vadinamieji SQL sakiniai) į duomenų bazę, siekiant gauti duomenis iš duomenų bazės arba manipuliuoti tais duomenimis.
Taip pat verta paminėti, kad duomenų bazė, o ypač reliacinis modelis, yra pagrįsta aibių teorija, kuri reiškia skirtingų objektų sujungimą į vieną visumą; viena visuma duomenų bazėje reiškia lentelę. Tai svarbu, nes SQL kalba veikia konkrečiai su aibė, su duomenų rinkiniu, t.y. su stalais.
Naudinga medžiaga šia tema:
- Duomenų bazės kūrimas Microsoft SQL Server – instrukcijos pradedantiesiems;
- Duomenų įtraukimas į lenteles Microsoft SQL Server – INSERT INTO sakinys.
Kas yra DBVS
Jums gali kilti klausimas, jei duomenų bazė yra tam tikra informacija, kuri saugoma lentelėse, tai kaip ji atrodo fiziškai? Kaip į tai žiūrėti kaip į visumą?
Trumpai tariant, tai tik failas, sukurtas specialiu formatu, būtent taip atrodo duomenų bazė ( daugeliu atvejų duomenų bazėje yra keli failai, tačiau dabar šiame lygyje tai nėra taip svarbu).
Eikime toliau, jei duomenų bazė yra specialaus formato failas, kaip jį sukurti ar atidaryti? Ir čia iškyla sunkumas, nes kaip tik taip, be jokių įrankių susikurkite tokį failą, t.y. Reliacinė duomenų bazė neįmanoma, tam reikia specialaus įrankio, kuris galėtų sukurti ir valdyti duomenų bazę, kitaip tariant, dirbti su šiais failais.
Tai būtent instrumentas DBVS yra duomenų bazių valdymo sistema, sutrumpintai DBVS.
Kokios yra DBVS?
Tiesą sakant, yra gana daug įvairių DBVS, kai kurios iš jų yra mokamos ir kainuoja nemažus pinigus, jei kalbame apie visas versijas, tačiau net ir pačiose, taip sakant, „kietiausiose“ yra nemokami leidimai, kurie , beje, puikiai tinka mokytis.
Tarp visų, atsižvelgiant į jų galimybes ir populiarumą, galima išskirti šias sistemas:
- Microsoft SQL serveris yra „Microsoft“ duomenų bazių valdymo sistema. Tai labai populiarus verslo sektoriuje, ypač didelėse įmonėse. Ir tai ne tik DBVS – tai visas programų rinkinys, leidžiantis saugoti ir keisti duomenis, juos analizuoti, užtikrinti šių duomenų saugumą ir dar daugiau;
- Oracle duomenų bazė yra „Oracle“ duomenų bazių valdymo sistema. Tai taip pat labai populiari DBVS, taip pat tarp didelių įmonių. Savo galimybėmis ir funkcionalumu „Oracle Database“ ir „Microsoft SQL Server“ yra palyginami, todėl vienas kitam yra rimti konkurentai, o jų pilnų funkcijų versijų kaina yra labai didelė;
- MySQL yra duomenų bazių valdymo sistema taip pat iš Oracle, tačiau tik ji platinama nemokamai. Labai platų populiarumą interneto segmente susilaukė MySQL, t.y. Beveik visos interneto svetainės veikia MySQL, kitaip tariant, dauguma interneto svetainių naudoja šią DBVS kaip duomenų saugojimo priemonę;
- PostgreSQL– Ši duomenų bazių valdymo sistema taip pat yra nemokama ir labai populiari bei funkcionali.
Naudinga medžiaga šia tema:
- „Microsoft SQL Server 2016 Express“ diegimas – nemokamos „Microsoft SQL Server“ leidimo sistemoje „Windows“ diegimo pavyzdys;
- „Microsoft SQL Server 2017 Express“ diegimas „Ubuntu Server“ – nemokamo „Microsoft SQL Server“ leidimo „Linux“ diegimo pavyzdys;
- „PostgreSQL 11“ diegimas sistemoje „Windows“ – „PostgreSQL“ diegimo „Windows“ sistemoje pavyzdys;
- „MySQL“ diegimas sistemoje „Windows“ – „MySQL“ diegimo „Windows“ sistemoje pavyzdys;
- MySQL diegimas ir konfigūravimas Linux Mint sistemoje – MySQL diegimo Linux sistemoje pavyzdys;
- „Oracle Database Express Edition 11g“ diegimas – nemokamos „Oracle“ leidimo sistemoje „Windows“ diegimo pavyzdys ( Straipsnis parašytas seniai, bet vis tiek bus naudingas).
SQL dialektai (SQL plėtiniai)
SQL kalba yra standartas, ji yra įdiegta visose reliacinėse duomenų bazėse, tačiau kiekviena DBVS turi šio standarto plėtinį, turi savo kalbą darbui su duomenimis, ji paprastai vadinama SQL dialektu, kuris, žinoma, yra pagrįstas SQL, bet suteikia daugiau galimybių visaverčiam programavimui, be to, tokia vidinė kalba leidžia gauti sistemos informaciją ir supaprastinti SQL užklausas.
Štai keletas SQL dialektų:
- Transact-SQL(sutrumpintai T-SQL) – naudojamas Microsoft SQL Server;
- PL/SQL(Procedural Language / Structured Query Language) – naudojama Oracle duomenų bazėje;
- PL/pgSQL(Procedural Language/PostGres Structured Query Language) – naudojama PostgreSQL.
Taigi, nuo DBVS priklauso, kurį plėtinį naudosite SQL sakiniams rašyti. Pavyzdžiui, jei kalbame apie paprastas SQL užklausas,
PASIRINKITE produkto ID, produkto pavadinimą iš prekių
tada, žinoma, tokios užklausos veiks visose DBVS, nes SQL yra standartas.
Pastaba! Tai paprasta SQL užklausa, skirta gauti duomenis iš vienos lentelės, rodant du stulpelius.
Tačiau jei ketinate programuoti, naudokite visas vidines DBVS galimybes ( kurti procedūras, naudoti integruotas funkcijas, gauti sistemos informaciją ir kt.), tuomet turite išmokti tam tikrą SQL tarmę ir atitinkamai praktikuotis DBVS, kurioje naudojamas šis dialektas. Tai svarbu, nes skiriasi daugelio konstrukcijų sintaksė, galimybės ir daug daugiau. O jei, pavyzdžiui, kitoje DBVS paleidžiate SQL sakinį, kuris naudoja tam tikro SQL plėtinio galimybes, tada tokia instrukcija, žinoma, nebus vykdoma.
Pavyzdžiui, aš asmeniškai specializuojuosi T-SQL kalba, todėl su Microsoft SQL Server dirbu daugiau nei 8 metus!
Nors, žinoma, dirbau ir su kitomis DBVS, vienu metu palaikiau dvi programas, iš kurių viena veikė su PostgreSQL, o antra, turbūt jau aiški, su Microsoft SQL Server.
Dirbau su MySQL, kaip ir tikriausiai daugelis kitų, prižiūrėdamas svetaines ir paslaugas. Na, aš turėjau dirbti su „Oracle Database“ kaip kitų projektų dalimi.
Visą savo sukauptą T-SQL kalbos patirtį sugrupavau į vieną vietą ir sudėjau į knygų formą, tad jei turite noro išmokti Transact-SQL (T-SQL) kalbos, rekomenduoju perskaityti mano knygas:
- T-SQL programuotojo kelias – pamoka apie Transact-SQL kalbą pradedantiesiems. Jame išsamiai kalbu apie visas kalbos konstrukcijas ir nuosekliai pereinu nuo paprastos prie sudėtingos. Tinka visapusiškam T-SQL kalbos mokymuisi;
- T-SQL programavimo stilius – teisingo kodavimo pagrindai. Knyga, skirta pagerinti T-SQL kodo kokybę ( tiems, kurie jau yra susipažinę su T-SQL kalba, t.y. žino bent pagrindinius dalykus).
Tikiuosi, dabar suprasite, kas yra SQL ir kam jis reikalingas. Tolesnėje medžiagoje papasakosiu, kaip sukurti SQL užklausas, papasakosiu, kokius įrankius tam reikia naudoti ir kuriai DBVS, nes kiekviena DBVS turi savo įrankiai, todėl sekite naujus straipsnius mano grupėse socialiniuose tinkluose.
Pagrindinės SQL komandos, kurias turėtų žinoti kiekvienas programuotojas
SQL arba struktūrinių užklausų kalba yra kalba, naudojama duomenims tvarkyti reliacinėje duomenų bazių sistemoje (RDBMS). Šiame straipsnyje bus aptariamos dažniausiai naudojamos SQL komandos, kurias turėtų žinoti kiekvienas programuotojas. Ši medžiaga puikiai tinka tiems, kurie nori pagyvinti savo SQL žinias prieš darbo pokalbį. Norėdami tai padaryti, pažiūrėkite į straipsnyje pateiktus pavyzdžius ir prisiminkite, kad duomenų bazes studijavote poromis.
Atminkite, kad kai kurios duomenų bazių sistemos reikalauja kabliataškio kiekvieno teiginio pabaigoje. Kabliataškis yra standartinė rodyklė į kiekvieno SQL sakinio pabaigą. Pavyzdžiuose naudojamas MySQL, todėl kabliataškis yra būtinas.
Pavyzdžių duomenų bazės nustatymas
Sukurkite duomenų bazę, kad parodytumėte, kaip dirba komandos. Norėdami dirbti, turėsite atsisiųsti du failus: DLL.sql ir InsertStatements.sql. Po to atidarykite terminalą ir prisijunkite prie „MySQL“ konsolės naudodami šią komandą (straipsnyje daroma prielaida, kad „MySQL“ jau įdiegtas sistemoje):
Mysql -u root -p
Tada įveskite slaptažodį.
Vykdykite šią komandą. Pavadinkime duomenų bazę „universitetu“:
KURTI DUOMENŲ BAZĘ universitetas; USE universitetas; ŠALTINIS Gali tekti sukurti apribojimus tam tikriems lentelės stulpeliams. Kurdami lentelę galite nustatyti šiuos apribojimus: Galite nurodyti daugiau nei vieną pirminį raktą. Tokiu atveju gausite sudėtinį pirminį raktą. Sukurkite lentelę „instruktorius“: KURTI LENTELĘ instruktorius (ID CHAR(5), vardas VARCHAR(20) NOT NULL, skyriaus_pavadinimas VARCHAR(20), atlyginimas SKAIČIUS(8,2), PIRMINIS RAKTAS (ID), UŽSIENIO RAKTAS (dept_name) NUORODOS skyrius(dept_name)); Galite peržiūrėti įvairią informaciją (reikšmės tipą, raktą ar ne) apie lentelės stulpelius naudodami šią komandą: APIBŪDINTI Kai įtraukiate duomenis į kiekvieną lentelės stulpelį, jums nereikia nurodyti stulpelių pavadinimų. INSERT INTO SELECT naudojamas duomenims iš konkrečios lentelės gauti: PASIRINKTI Ši komanda gali parodyti visus duomenis iš lentelės: PASIRINKTI * NUO Lentelės stulpeliuose gali būti pasikartojančių duomenų. Jei norite gauti tik nepasikartojančius duomenis, naudokite SELECT DISTINCT. PASIRINKTI ATSKIRIMĄ Norėdami nurodyti užklausos sąlygas, skiltyje SELECT galite naudoti WHERE raktinį žodį: PASIRINKTI Prašyme gali būti nurodytos šios sąlygos: Išbandykite šias komandas. Atkreipkite dėmesį į sąlygas, nurodytas KUR: SELECT * FROM kursas WHERE dept_name=’Comp. Sci.“; SELECT * FROM kurso WHERE kreditai>3; SELECT * FROM course WHERE dept_name="Comp. Sci." IR kreditai>3; Operatorius GROUP BY dažnai naudojamas su agregacinėmis funkcijomis, tokiomis kaip COUNT, MAX, MIN, SUM ir AVG, norint grupuoti išvesties reikšmes. PASIRINKTI Parodykime kursų skaičių kiekvienam fakultetui: SELECT COUNT(kurso_id), skyriaus_pavadinimas FROM kurso GROUP BY skyriaus_pavadinimas; Raktažodis HAVING buvo įtrauktas į SQL, nes WHERE negalima naudoti su agregacinėmis funkcijomis. PASIRINKTI Parodykime fakultetų, turinčių daugiau nei vieną kursą, sąrašą: SELECT COUNT(kurso_id), skyriaus_pavadinimas FROM kurso GROUP BY skyriaus_pavadinimas HAVING COUNT(kurso_id)>1; ORDER BY naudojamas rūšiuoti užklausos rezultatus mažėjančia arba didėjančia tvarka. ORDER BY bus rūšiuojama didėjančia tvarka, nebent nurodytas ASC arba DESC. PASIRINKTI Parodykime kursų sąrašą kreditų didėjimo ir mažėjimo tvarka: PASIRINKTI * IŠ kurso ORDER BY kreditų; SELECT * FROM kurso ORDER BY kreditai DESC; BETWEEN naudojamas pasirinkti duomenų reikšmes iš konkretaus diapazono. Galima naudoti skaitines ir tekstines reikšmes, taip pat datas. PASIRINKTI Pateikiame sąrašą instruktorių, kurių atlyginimas didesnis nei 50 000, bet mažesnis nei 100 000: PASIRINKTI * IŠ instruktoriaus KUR atlyginimas NUO 50000 IKI 100000; Ženklas LIKE naudojamas WHERE, kad būtų nurodytas panašios reikšmės paieškos šablonas. Yra du nemokami operatoriai, kurie naudojami LIKE: Parodykime kursų, kurių pavadinimuose yra „iki“, sąrašą ir kursų, kurių pavadinimai prasideda raide „CS-“, sąrašą: SELECT * FROM kurso WHERE pavadinimas LIKE ‘%to%’; SELECT * FROM kursas WHERE kurso_id LIKE "CS-___"; Naudodami IN galite nurodyti kelias WHERE sąlygos reikšmes: PASIRINKTI Parodykime studentų iš Comp specialybių sąrašą. Sci., fizika ir elektro. angl.: SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.'); JOIN naudojamas susieti dvi ar daugiau lentelių, naudojant jose esančius bendrus atributus. Žemiau esančiame paveikslėlyje parodyti skirtingi prisijungimo prie SQL būdai. Atkreipkite dėmesį į skirtumą tarp kairiojo išorinio sujungimo ir dešiniojo išorinio sujungimo: PASIRINKTI Pateiksime visų kursų sąrašą ir aktualią informaciją apie fakultetus: SELECT * FROM kurso JOIN departamento ON kursas.dept_name=department.dept_name; Pateiksime visų reikalingų kursų sąrašą ir išsamią informaciją apie juos: PASIRINKITE prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTTER JOIN ON prereq.course_id=course.course_id; Pateiksime visų kursų sąrašą, neatsižvelgiant į tai, ar jie reikalingi, ar ne: PASIRINKITE kurso.kurso_id, pavadinimą, skyriaus_pavadinimą, kreditus, prereq_id FROM prereq RIGHT OUTTER JOIN kursą ON prereq.course_id=course.course_id; Rodinys yra virtuali SQL lentelė, sukurta vykdant išraišką. Jame yra eilučių ir stulpelių ir jis labai panašus į įprastą SQL lentelę. Rodinyje visada rodoma naujausia informacija iš duomenų bazės. Sukurkime vaizdą, susidedantį iš kursų su 3 kreditais: Šios funkcijos naudojamos norint gauti bendrą rezultatą, susijusį su atitinkamais duomenimis. Dažniausiai naudojamos agregacinės funkcijos: Įdėtos antrinės užklausos yra SQL užklausos, kuriose yra SELECT , FROM ir WHERE sąlygos, įdėtos į kitą užklausą. Raskime kursus, kurie buvo dėstomi 2009 m. rudenį ir 2010 m. pavasarį: SELECT DISTINCT course_id FROM section WHERE semestras = 'Ruduo' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE semestras = 'Pavasaris' IR metai = 2010); Norėdami pradėti mokytis SQL pirmiausia turime suprasti, kas yra duomenų bazė. Duomenų bazė (DB)- užsakytas logiškai susijusių duomenų rinkinys, naudojamas kartu ir saugomas vienoje vietoje. Trumpai tariant, paprasčiausias DB tai įprasta lentelė su eilutėmis ir stulpeliais, kuriuose saugoma įvairių tipų informacija (pavyzdys būtų lentelė Excel). Taigi, dažnai su DB neatskiriamai surišti Duomenų bazių valdymo sistemos (DBVS), kurie suteikia funkcionalumą darbui su DB. Kalba SQL yra tik dalis DBVS, kuris tvarko informaciją DB. Mes suskaičiuosime DBįprastų lentelių rinkinys, saugomas atskiruose failuose. Taigi pereikime prie SQL. SQL yra paprasta programavimo kalba, turinti nedaug komandų ir kurią gali išmokti bet kas. Reiškia Struktūrinės užklausos kalba yra struktūrinė užklausų kalba, kuri buvo sukurta dirbti DB, būtent gauti/pridėti/keisti duomenis, gebėti apdoroti didelius informacijos kiekius ir greitai gauti struktūrizuotą bei sugrupuotą informaciją. Yra daug kalbų variantų SQL, bet jie visi turi tas pačias pagrindines komandas. Taip pat yra daug DBVS, bet pagrindiniai yra šie: „Microsoft Access“, „Microsoft SQL Server“, „MySQL“, „Oracle SQL“, „IBM DB2 SQL“, „PostgreSQL“ ir „Sybase Adaptive Server SQL“. Dirbti su SQL kodą, mums reikės vieno iš aukščiau išvardytų DBVS. Treniruotėms naudosime Microsoft Access DBVS. SQL kaip ir kitos programavimo kalbos turi savo komandas (operatorius), kurių pagalba pateikiami nurodymai duomenims gauti. Norėdami pamatyti, kaip dirba operatoriai SQL, naudosime įsivaizduojamą DB su informacija apie parduodamus produktus. Sveiki atvykę į duomenų bazių kūrimą naudojant standartinę SQL užklausų kalbą. Duomenų bazių valdymo sistemose (DBVS) yra daug įrankių, kurie veikia įvairiose aparatinės įrangos platformose. Šiame skyriuje... | Informacijos organizavimas | Kas yra duomenų bazė | Kas yra DBVS | Duomenų bazių modelių palyginimas | Kas yra reliacinė duomenų bazė Šiame skyriuje... | Kas yra SQL | SQL klaidingos nuomonės | Žvilgsnis į skirtingus SQL standartus | Įvadas į standartines SQL komandas ir rezervuotus žodžius | Nurodomi skaičiai, simboliai, data, laikas ir kitų tipų duomenys | Neapibrėžtos vertės ir apribojimai Šiame skyriuje... | Duomenų bazių kūrimas | Duomenų apdorojimas | Duomenų bazės apsauga | SQL yra kalba, specialiai sukurta duomenims reliacinėse duomenų bazėse kurti ir palaikyti. Ir nors įmonės, tiekiančios tokių duomenų bazių valdymo sistemas, siūlo savo SQL diegimus, pačios kalbos kūrimą lemia ir kontroliuoja ISO/ANSI standartas. Šiame skyriuje... | Sukurkite, keiskite ir ištrinkite lentelę iš duomenų bazės naudodami RAD įrankį. | Sukurkite, keiskite ir ištrinkite lentelę iš duomenų bazės naudodami SQL. | Duomenų bazės perkėlimas į kitą DBVS. Šiame skyriuje... | Kas turėtų būti duomenų bazėje | Ryšių tarp duomenų bazės elementų apibrėžimas | Lentelių susiejimas naudojant raktus | Duomenų vientisumo dizainas | Duomenų bazės normalizavimas | Šiame skyriuje bus pateiktas kelių lentelių duomenų bazės kūrimo pavyzdys. Šiame skyriuje... | Darbas su duomenimis | Reikiamų duomenų gavimas iš lentelės | Rodoma informacija, pasirinkta iš vienos ar kelių lentelių | Informacijos atnaujinimas lentelėse ir rodiniuose | Naujos eilutės įtraukimas į lentelę Šiame skyriuje... | Kintamųjų naudojimas pertekliniam kodavimui sumažinti | Duomenų bazės lentelės lauke esančios dažnai prašomos informacijos gavimas | Paprastų reikšmių derinimas kuriant sudėtines išraiškas | Šioje knygoje nuolat pabrėžiama, kokia svarbi yra duomenų bazės struktūra siekiant išlaikyti duomenų bazės vientisumą. Šiame skyriuje... | Sąlyginių atvejų teiginių naudojimas | Duomenų elemento konvertavimas iš vieno duomenų tipo į kitą | Išsaugokite duomenų įvedimo laiką naudodami įrašo vertės išraiškas | 2 skyriuje SQL buvo vadinamas duomenų pokalbiu. Šiame skyriuje... | Reikalingų lentelių nurodymas | Reikalingų eilučių atskyrimas nuo visų kitų | Veiksmingų sąlygų kūrimas | Kaip dirbti su nulinėmis reikšmėmis | Sudėtinių išraiškų su loginiais ryšiais kūrimas | Užklausos rezultatų išvesties grupavimas pagal stulpelius Šiame skyriuje... | Panašios struktūros lentelių sujungimas | Skirtingų struktūrų lentelių sujungimas | Reikiamų duomenų gavimas iš kelių lentelių | SQL yra užklausų kalba, naudojama reliacinėse duomenų bazėse. Šiame skyriuje... | Duomenų gavimas iš kelių lentelių naudojant vieną SQL sakinį | Duomenų elementų radimas lyginant vienos lentelės vertę su kitos lentelės verčių rinkiniu | Duomenų elementų radimas lyginant vienos lentelės reikšmę su viena verte, pasirinkta naudojant kitos lentelės teiginį Šiame skyriuje... | Prieigos prie duomenų bazės lentelių kontrolė | Sprendimas, ar suteikti prieigą | Prieigos leidimų suteikimas | Prieigos teisės atšaukimas | Užkirsti kelią neteisėtiems bandymams pasiekti Šiame skyriuje... | Kaip išvengti duomenų bazės sugadinimo | Problemos, kurias sukelia vienu metu atliekamos operacijos | Šių problemų sprendimas naudojant SQL variklius | Reikiamo saugumo lygio nustatymas naudojant komandą set transakcijos Šiame skyriuje... | SQL programoje | SQL bendrinimas su procedūrinėmis kalbomis| Kaip išvengti nesuderinamumo | SQL kodas, įterptas į procedūrinį kodą | SQL modulių iškvietimas iš procedūrinio kodo | SQL iškvietimas iš RAD įrankio | Ankstesniuose skyriuose daugiausiai žiūrėjome į SQL komandas individualiai, t.y. Buvo suformuluota duomenų apdorojimo užduotis, jai sukurta SQL užklausa. Šiame skyriuje... | ODBC apibrėžimas | ODBC dalių aprašymas | ODBC naudojimas kliento/serverio aplinkoje | ODBC naudojimas internete | ODBC naudojimas vietiniuose tinkluose | Naudojant JDBC | Kiekvienais metais vienos ar kelių skirtingų organizacijų kompiuteriai vis dažniau jungiami vienas prie kito. Todėl reikia sukurti bendrą prieigą prie duomenų bazių tinkle. Šiame skyriuje... | SQL naudojimas su XML | XML, duomenų bazės ir internetas | Viena iš svarbiausių naujų SQL: 2003 funkcijų yra jos palaikymas XML (Extensible Markup Language) failams, kurie vis dažniau tampa universaliu duomenų mainų tarp skirtingų platformų standartu. Šiame skyriuje... | Kursoriaus apimties apibrėžimas deklaravimo sakinyje | Atidarymo žymeklis | Duomenų atranka pagal eilutę | Žymeklio uždarymas | SQL skiriasi nuo daugumos populiariausių programavimo kalbų tuo, kad vienu metu atlieka operacijas su visų lentelės eilučių duomenimis, o procedūrinės kalbos apdoroja duomenis eilė po eilutės. Ankstesniuose dviejuose šios serijos straipsniuose, publikuotuose 6 ir 7 mūsų žurnalo numeriuose, apžvelgėme įvairius duomenų prieigos mechanizmus, įskaitant ADO, BDE ir jų alternatyvas. Dabar mes žinome, kaip pasirinkti duomenų prieigos technologiją konkrečiai „DBVS – kūrimo įrankio“ porai. Turėdami duomenų prieigos technologiją, pagaliau galime pagalvoti, kaip reikėtų manipuliuoti pačiais duomenimis ir metaduomenimis. Manipuliavimo metodai gali būti būdingi tam tikrai DBVS (pavyzdžiui, šios DBVS kliento dalyje esančių objektų naudojimas norint pasiekti duomenų bazės objektus) arba tam tikram duomenų prieigos mechanizmui. Nepaisant to, yra daugiau ar mažiau universalus būdas manipuliuoti duomenimis, palaikomas beveik visų serverių reliacinių DBVS ir universaliausių duomenų prieigos mechanizmų (įskaitant, kai jie naudojami kartu su darbalaukio DBVS). Šis metodas skirtas naudoti SQL kalbą (struktūrinės užklausos kalbą). Toliau apžvelgsime šios kalbos paskirtį ir ypatybes, taip pat sužinosime, kaip ją naudoti norint išgauti ir apibendrinti duomenis, pridėti, ištrinti ir keisti įrašus, apsaugoti duomenis nuo neteisėtos prieigos ir kurti duomenų bazes. Išsamesniam SQL tyrimui galime rekomenduoti Martino Graberio knygas „Įvadas į SQL“ (M., Laurie, 1996) ir „SQL. Nuorodų vadovas“ (M., Lori, 1997). Struktūrinė užklausų kalba yra neprocedūrinė kalba, naudojama duomenims tvarkyti reliacinėse DBVS. Sąvoka „neprocedūrinė“ reiškia, kad tam tikra kalba gali suformuluoti, ką reikia daryti su duomenimis, bet negali nurodyti, kaip tiksliai tai turėtų būti daroma. Kitaip tariant, ši kalba neturi algoritminių konstrukcijų, tokių kaip etiketės, kilpos operatoriai, sąlyginiai šuoliai ir kt. SQL kalba buvo sukurta aštuntojo dešimtmečio pradžioje IBM tyrimo projekto, kurio tikslas buvo sukurti kalbą, skirtą manipuliuoti reliaciniais duomenimis, rezultatas. Iš pradžių ji vadinosi SEQUEL (struktūrizuota anglų užklausų kalba), vėliau SEQUEL/2, o vėliau tiesiog SQL. Oficialus SQL standartas buvo paskelbtas ANSI (Amerikos nacionalinis standartų institutas, JAV) 1986 m. (šiandien tai yra dažniausiai naudojamas SQL diegimas). Šis standartas buvo išplėstas 1989 ir 1992 m., todėl naujausias SQL standartas vadinamas SQL92. Šiuo metu vyksta darbas su SQL3 standartu, kuriame yra keletas objektinių plėtinių. Yra trys ANSI atitikties lygiai – pradedantysis, vidutinis ir baigtas. Daugelis serverių DBVS tiekėjų, tokių kaip IBM, Informix, Microsoft, Oracle ir Sybase, naudoja savo SQL diegimus, pagrįstus ANSI standartu (atitinkančiu bent pradinį standarto atitikties lygį) ir turinčius tam tikrus DBVS būdingus plėtinius. Išsamesnės informacijos apie SQL versijos, naudojamos konkrečioje DBVS, atitiktį galima rasti su ta DBVS pateiktoje dokumentacijoje. Pažiūrėkime, kaip veikia SQL. Tarkime, kad yra duomenų bazė, valdoma naudojant tam tikrą DBVS. Norint iš jo išgauti duomenis, naudojama SQL suformuluota užklausa. DBVS apdoroja šią užklausą, nuskaito prašomus duomenis ir grąžina juos. Šis procesas schematiškai pavaizduotas fig. 1 . Kaip pamatysime vėliau, SQL leidžia ne tik gauti duomenis, bet ir apibrėžti duomenų struktūrą, pridėti ir ištrinti duomenis, apriboti arba suteikti prieigą prie duomenų ir išlaikyti nuorodų vientisumą. Atkreipkite dėmesį, kad pati SQL nėra nei DBVS, nei atskiras produktas. Tai kalba, naudojama sąveikai su DBVS ir tam tikra prasme yra neatsiejama jos dalis. Duomenų apibrėžimo kalboje yra operatoriai, leidžiantys kurti, keisti ir sunaikinti duomenų bazes ir jose esančius objektus (lenteles, rodinius ir kt.). Šie operatoriai yra išvardyti lentelėje. 1. 1 lentelė operatorius apibūdinimas Naudojamas norint į duomenų bazę įtraukti naują lentelę Naudojamas norint pašalinti lentelę iš duomenų bazės Naudojamas esamos lentelės struktūrai pakeisti Naudojamas naujam rodiniui įtraukti į duomenų bazę Naudojamas norint pašalinti vaizdą iš duomenų bazės Naudojamas tam tikro lauko indeksui sukurti Naudojamas esamam indeksui ištrinti Naudojamas kuriant naują schemą duomenų bazėje Naudojamas schemai pašalinti iš duomenų bazės Naudojamas naujam domenui sukurti Naudojamas domenui iš naujo apibrėžti Naudojamas domenui pašalinti iš duomenų bazės Duomenų manipuliavimo kalboje yra operatoriai, leidžiantys pasirinkti, pridėti, ištrinti ir keisti duomenis. Atminkite, kad šie pareiškimai nėra būtini norint užbaigti operaciją, kurios metu jie yra iškviečiami. DML teiginiai pateikti lentelėje. 2. 2 lentelė SELECT teiginys kartais klasifikuojamas į atskirą kategoriją, vadinamą duomenų užklausos kalba (DQL). Žymeklio valdymo kalbos sakiniai naudojami žymekliui apibrėžti, SQL sakiniams paruošti vykdyti ir keletui kitų teiginių. CCL teiginiai pateikti lentelėje. 5. 5 lentelė operatorius apibūdinimas Naudojamas užklausos žymekliui nustatyti Naudojamas užklausos planui apibūdinti. Šis teiginys yra „Microsoft SQL Server 7.0“ SQL plėtinys. Nereikia paleisti kitose DBVS. Pavyzdžiui, Oracle atveju turėtų būti naudojamas EXPLAIN PLAN sakinys Naudojamas žymekliui atidaryti, kai gaunami užklausos rezultatai Naudojamas norint gauti eilutę iš užklausos rezultatų Naudojamas žymekliui uždaryti Naudojamas SQL sakinio paruošimui vykdyti Naudojamas SQL sakiniui vykdyti Naudojamas parengtam prašymui apibūdinti Visi SQL sakiniai turi tokią formą, kaip parodyta pav. 2. Kiekvienas SQL sakinys prasideda veiksmažodžiu, kuris yra raktinis žodis, nurodantis, ką sakinys daro (SELECT, INSERT, DELETE...). Teiginyje taip pat yra sakinių, kuriuose pateikiama informacija apie tai, su kokiais duomenimis atliekamos operacijos. Kiekvienas sakinys prasideda raktiniu žodžiu, pvz., FROM, WHERE ir tt Sakinio struktūra priklauso nuo jo tipo – kai kuriuose sakiniuose yra lentelių ar laukų pavadinimai, kai kuriuose gali būti papildomų raktinių žodžių, konstantų ar išraiškų. Visose šiuolaikinėse serverių DBVS (taip pat ir daugelyje populiarių darbalaukio DBVS) yra paslaugų, kurios leidžia vykdyti SQL sakinį ir peržiūrėti jo rezultatą. Visų pirma, „Oracle“ kliento dalyje yra „SQL Plus“ paslaugų programa, o „Microsoft SQL Server“ yra „SQL Query Analyzer“ priemonė. Būtent šią priemonę naudosime demonstruodami SQL galimybes, o kaip duomenų bazę, kurioje „eksperimentuosime“, naudosime „NorthWind“ duomenų bazę, įtrauktą į „Microsoft SQL Server 7.0“ paketą. Iš principo galite naudoti kitą duomenų bazę ir bet kurią kitą priemonę, kuri gali vykdyti SQL sakinius šioje duomenų bazėje ir rodyti rezultatus (arba net parašyti savo naudojant bet kurį kūrimo įrankį – Visual Basic, Delphi, C++Builder ir kt.). Tačiau bet kuriuo atveju rekomenduojama sukurti atsarginę šios duomenų bazės kopiją.Darbo su duomenų bazėmis komandos
1. Peržiūrėkite galimas duomenų bazes
RODYTI DUOMENŲ BAZES; 2. Sukurkite naują duomenų bazę
KURTI DUOMENŲ BAZĘ; 3. Naudojamos duomenų bazės pasirinkimas
NAUDOTI 4. Importuokite SQL komandas iš .sql failo
ŠALTINIS 5. Ištrinkite duomenų bazę
DROP DUOMENŲ BAZĖ Darbas su stalais
6. Peržiūrėkite duomenų bazėje esančias lenteles
RODYTI LENTELES; 7. Sukurkite naują lentelę
KURTI LENTELĘ Vientisumo apribojimai naudojant CREATE TABLE
Pavyzdys
8. Lentelės informacija
9. Duomenų įtraukimas į lentelę
INSERT INTO 10. Lentelės duomenų atnaujinimas
ATNAUJINTI 11. Visų duomenų pašalinimas iš lentelės
IŠTRINTI IŠ 12. Ištrinkite lentelę
NURODYMAS STALAS Užklausų kūrimo komandos
13. PASIRINKTI
14. PASIRINKITE ATSKIRIMĄ
15. KUR
Pavyzdys
16. GROUP BY
Pavyzdys
17. TURIMAS
Pavyzdys
18. UŽSAKYMAS IŠ
Pavyzdys
19. TARP
Pavyzdys
20. PATINKA
PASIRINKTI Pavyzdys
21. IN
Pavyzdys
22. PRISIJUNK
1 pavyzdys
2 pavyzdys
3 pavyzdys
23. Žiūrėti
Kūrimas
KURTI VAIZDĄ Pašalinimas
NURODYTI Pavyzdys
24. Suvestinės funkcijos
25. Įdėtos antrinės užklausos
Pavyzdys
1. Kas yra duomenų bazė
2. Kas yra SQL
Reliacinės duomenų bazės pagrindai
SQL pagrindai
SQL komponentai
Paprastos duomenų bazės kūrimas ir priežiūra
Kelių lentelių reliacinės duomenų bazės kūrimas
Manipuliavimas duomenimis iš duomenų bazės
Vertybių apibrėžimas
Sudėtingi posakiai su prasme
„Taikymas“ į reikiamus duomenis
Santykių operatoriai
Įdėtųjų užklausų naudojimas
Rekursinės užklausos
Duomenų bazės apsauga
Duomenų apsauga
SQL naudojimas programose
ODBC ir JDBC
SQL: 2003 ir XML
Kursoriai
Įvadas
Kaip veikia SQL
Duomenų apibrėžimo kalba (DDL)
Duomenų manipuliavimo kalba (DML)
Žymeklio valdymo kalba (CCL)
Kaip galite vykdyti SQL sakinius?