Panimula sa structured query language na SQL. SQL - Encyclopedia of Programming Languages

Ngayon ay bumaling tayo sa paksa ng computer, kaya ang artikulong ito ay magiging partikular na interes, una sa lahat, sa mga programmer. Kami, mahal na mambabasa, ay magsasalita tungkol sa wika ng mga structured na query, na sa English ay naka-encrypt bilang SQL (Structured Query Language). Kaya, pumunta tayo sa punto. Sa ngayon, pag-usapan natin kung ano ang SQL at kung ano ang kailangan nito.

Ang Structured Query Language ay isang unibersal na wika para sa paglikha, pagbabago, at pamamahala ng impormasyon na bahagi ng relational database. Sa una, ang SQL ang pangunahing paraan upang gumana sa data. Gamit ito, maaaring gawin ng user ang mga sumusunod na pagkilos:

  • paglikha ng isang bagong talahanayan sa database (DB);
  • pagdaragdag ng mga bagong tala sa mga kasalukuyang talahanayan;
  • pag-edit ng mga talaan;
  • kumpletong pagtanggal ng mga talaan;
  • pagpili ng isang talaan mula sa iba't ibang mga talahanayan alinsunod sa mga tinukoy na kondisyon;
  • pagbabago ng hitsura at istruktura ng isa o higit pang mga talahanayan.

Sa pag-unlad nito, ang SQL ay nagbago nang malaki at pinayaman ng mga bagong kapaki-pakinabang na function, bilang isang resulta kung saan nagsimula itong magmukhang higit at higit na katulad ng isang tunay na programming language. Ngayon, ang SQL ay ang tanging mekanismo na maaaring mag-link ng software ng application at isang database. Ganyan ang SQL.

Ang SQL ay may ilang uri ng mga query. Kapansin-pansin na ang anumang query sa SQL ay nagpapahiwatig ng alinman sa isang kahilingan para sa data mula sa nais na database, o isang pag-access sa database na may obligadong pagbabago ng data sa loob nito. Kaugnay nito, kaugalian na makilala ang mga sumusunod na uri ng mga kahilingan:

  • paglikha o pagbabago ng bago o umiiral na mga bagay sa database;
  • pagtanggap ng data;
  • pagdaragdag ng bagong data sa talahanayan;
  • pagtanggal ng data;
  • access sa isang database management system (DBMS).

Kaunti tungkol sa mga pakinabang at disadvantages ng sistema ng pagpoproseso ng data na ito.

Mga pakinabang ng SQL

  • Kalayaan mula sa umiiral na DBMS sa ibinigay na sistema. Ang mga teksto ng SQL ay pangkalahatan para sa maraming DBMS. Gayunpaman, nalalapat ang panuntunang ito sa mga simpleng gawain na nauugnay sa pagproseso ng data sa mga talahanayan.
  • Ang pagkakaroon ng mga pamantayan ng SQL ay nakakatulong na "patatagin" ang wika.
  • Deklarasyon. Ang kalamangan na ito ay kapag nagtatrabaho sa data, pinipili lamang ng programmer ang impormasyon na kailangang baguhin o baguhin. Kung paano ito gagawin ay awtomatikong napagpasyahan sa antas ng software ng DBMS mismo.

Mga disadvantages ng SQL

  • Hindi sinusunod ng SQL ang relational data model. Sa bagay na ito, pinapalitan ng SQL ang Tutorial D na wika, na tunay na relational.
  • Tinutukoy ng pagiging kumplikado ng SQL ang layunin nito. Napakakomplikado ng wika na isang programmer lamang ang makakagamit nito. Bagaman ito ay orihinal na naisip bilang isang tool sa pagkontrol na gagana sa karaniwang gumagamit.
  • Ilang hindi pagkakapare-pareho ng mga pamantayan. Maraming mga kumpanya na bumubuo ng DBMS ang nagdaragdag ng kanilang sariling mga tampok sa dialect ng wikang SQL, na makabuluhang nakakaapekto sa pagiging pangkalahatan ng wika.

Isang huling bagay: ano ang SQL Server? Ito ay isang database management system na binuo sa loob ng mga pader ng sikat na kumpanyang Microsoft. Matagumpay na gumagana ang system na ito sa mga database ng parehong mga personal na computer sa bahay at malalaking database ng malalaking negosyo. Sa segment ng merkado na ito, ang SQL Server ay higit pa sa mapagkumpitensya.

Well, tandaan natin ang MySQL sa maikling salita. Ang application na ito ay karaniwang ginagamit bilang isang server na tumatanggap ng mga kahilingan mula sa mga lokal o malalayong kliyente. Ang MySQL ay maaari ding isama sa mga standalone na programa. Dapat tandaan na ang application na ito ay isa sa mga pinaka-flexible na sistema ng pamamahala ng data, dahil kabilang dito ang maraming iba't ibang uri ng mga talahanayan.

Ngayon, ang mga kursong SQL na "para sa mga dummies" ay lalong nagiging popular. Ito ay maaaring ipaliwanag nang napakasimple, dahil sa modernong mundo maaari kang makahanap ng mga tinatawag na "dynamic" na mga serbisyo sa web. Ang mga ito ay nakikilala sa pamamagitan ng isang medyo nababaluktot na shell at nakabatay sa Lahat ng mga baguhan na programmer na nagpasya na mag-alay ng mga website, una sa lahat ay nagpatala sa mga kursong SQL "para sa mga dummies".

Bakit natutunan ang wikang ito?

Una sa lahat, ang SQL ay itinuro upang higit pang lumikha ng malawak na iba't ibang mga application para sa isa sa mga pinakasikat na blog engine ngayon - WordPress. Pagkatapos makumpleto ang ilang simpleng mga aralin, magagawa mong lumikha ng mga query ng anumang kumplikado, na nagpapatunay lamang sa pagiging simple ng wikang ito.

Ano ang SQL?

O isang structured query language, ay nilikha para sa isang layunin: upang matukoy, magbigay ng access at iproseso ang mga ito sa medyo maikling panahon. Kung alam mo ang kahulugan ng SQL, mauunawaan mo na ang server na ito ay nauuri bilang isang tinatawag na "non-procedural" na wika. Iyon ay, ang mga kakayahan nito ay nagsasama lamang ng isang paglalarawan ng anumang mga bahagi o mga resulta na gusto mong makita sa hinaharap sa site. Ngunit kapag hindi eksaktong ipahiwatig kung anong mga resulta ang makukuha. Ang bawat bagong kahilingan sa wikang ito ay parang karagdagang "superstructure". Ito ay sa pagkakasunud-sunod kung saan sila ay ipinasok sa database na ang mga query ay isasagawa.

Anong mga pamamaraan ang maaaring gawin gamit ang wikang ito?

Sa kabila ng pagiging simple nito, pinapayagan ka ng database ng SQL na lumikha ng malawak na iba't ibang mga query. Kaya ano ang maaari mong gawin kung matutunan mo ang mahalagang programming language na ito?

  • lumikha ng iba't ibang uri ng mga talahanayan;
  • tumanggap, mag-imbak at magbago ng natanggap na data;
  • baguhin ang mga istraktura ng talahanayan sa iyong paghuhusga;
  • pagsamahin ang natanggap na impormasyon sa iisang bloke;
  • kalkulahin ang natanggap na data;
  • tiyakin ang kumpletong proteksyon ng impormasyon.

Anong mga utos ang pinakasikat sa wikang ito?

Kung magpasya kang kumuha ng kursong SQL for Dummies, makakatanggap ka ng detalyadong impormasyon tungkol sa mga utos na ginagamit sa paglikha ng mga query gamit ito. Ang pinakakaraniwan ngayon ay:

  1. Ang DDL ay isang utos na tumutukoy sa data. Ito ay ginagamit upang lumikha, magbago at magtanggal ng iba't ibang uri ng mga bagay sa database.
  2. Ang DCL ay isang utos na nagmamanipula ng data. Ito ay ginagamit upang magbigay ng iba't ibang mga user ng access sa impormasyon sa database, gayundin sa paggamit ng mga talahanayan o view.
  3. Ang TCL ay isang pangkat na namamahala ng iba't ibang mga transaksyon. Ang pangunahing layunin nito ay upang matukoy ang progreso ng isang transaksyon.
  4. DML - manipulahin ang natanggap na data. Ang gawain nito ay payagan ang gumagamit na ilipat ang iba't ibang impormasyon mula sa database o ipasok ito doon.

Mga uri ng mga pribilehiyo na umiiral sa server na ito

Ang mga pribilehiyo ay tumutukoy sa mga pagkilos na maaaring gawin ng isang partikular na user alinsunod sa kanyang katayuan. Ang pinaka-minimal, siyempre, ay isang regular na pag-login. Siyempre, ang mga pribilehiyo ay maaaring magbago sa paglipas ng panahon. Ang mga luma ay tatanggalin at ang mga bago ay idadagdag. Ngayon, alam ng lahat ng kumukuha ng mga kursong "for dummies" ng SQL Server na mayroong ilang uri ng mga pinahihintulutang pagkilos:

  1. Uri ng bagay - pinapayagan ang gumagamit na magsagawa ng anumang utos na may kaugnayan lamang sa isang partikular na bagay na matatagpuan sa database. Kasabay nito, ang mga pribilehiyo ay naiiba para sa iba't ibang mga bagay. Ang mga ito ay nakatali hindi lamang sa isang partikular na user, kundi pati na rin sa mga talahanayan. Kung ang isang tao, gamit ang kanyang mga kakayahan, ay lumikha ng isang talahanayan, kung gayon siya ay itinuturing na may-ari nito. Samakatuwid, may karapatan siyang magtalaga ng mga bagong pribilehiyo sa ibang mga user na may kaugnayan sa impormasyong nasa loob nito.
  2. Ang uri ng system ay ang tinatawag na copyright ng data. Ang mga gumagamit na nakatanggap ng gayong mga pribilehiyo ay maaaring lumikha ng iba't ibang mga bagay sa database.

Kasaysayan ng SQL

Ang wikang ito ay nilikha ng IBM Research Laboratory noong 1970. Noong panahong iyon, ang pangalan nito ay bahagyang naiiba (SEQUEL), ngunit pagkatapos ng ilang taon ng paggamit ay binago ito, pinaikli ito ng kaunti. Sa kabila nito, kahit ngayon maraming sikat na dalubhasa sa programming ang binibigkas pa rin ang pangalan sa makalumang paraan. Ang SQL ay nilikha na may isang solong layunin - upang mag-imbento ng isang wika na magiging napakasimple na kahit na ang mga ordinaryong gumagamit ng Internet ay maaaring matuto nito nang walang anumang mga problema. Ang isang kagiliw-giliw na katotohanan ay na sa oras na iyon SQL ay hindi lamang ang naturang wika. Sa California, isa pang grupo ng mga espesyalista ang bumuo ng katulad na Ingres, ngunit hindi ito naging laganap. Bago ang 1980, mayroong ilang mga variation ng SQL na bahagyang naiiba sa bawat isa. Upang maiwasan ang pagkalito, nilikha ang isang karaniwang bersyon noong 1983, na sikat pa rin ngayon. Binibigyang-daan ka ng mga kursong SQL na "para sa mga dummies" na matuto nang higit pa tungkol sa serbisyo at ganap na pag-aralan ito sa loob ng ilang linggo.

SQL LANGUAGE: DATA MANIPULATION

SA LECTURE NA ITO...

· Ang layunin ng Structure Query Language (SQL) at ang espesyal na tungkulin nito kapag nagtatrabaho sa mga database.

· Kasaysayan ng paglitaw at pag-unlad ng wikang SQL.

· Pagsusulat ng mga pahayag ng SQL.

· Pagkuha ng impormasyon mula sa mga database gamit ang SELECT statement.

· pagbuo ng mga SQL statement na nailalarawan ng mga sumusunod na tampok:

· gamit ang WHERE construct upang pumili ng mga row na nakakatugon sa iba't ibang kundisyon;

· pag-uuri ng mga resulta ng query gamit ang ORDER BY construct;

· paggamit ng SQL aggregation function;

· pagpapangkat ng mga napiling data gamit ang GROUP BY construct;

· paggamit ng mga subquery;

· gamit ang table joins;

· aplikasyon ng mga operasyon na may mga set (UNION, INTERSECT, MALIBAN).

· Paggawa ng mga pagbabago sa database gamit ang INSERT, UPDATE at DELETE na mga pahayag.

Ang isa sa mga wika na lumitaw bilang isang resulta ng pag-unlad ng modelo ng relational data ay ang SQL, na ngayon ay naging napakalawak at talagang naging karaniwang wika para sa mga relational na database. Ang pamantayang wika ng SQL ay inilabas ng US National Standards Institute (ANSI) noong 1986, at noong 1987 ay pinagtibay ng International Organization for Standardization (ISO) ang pamantayang ito bilang isang internasyonal na pamantayan. Sa kasalukuyan, ang wikang SQL ay sinusuportahan ng daan-daang iba't ibang uri ng mga DBMS, na binuo para sa isang malawak na iba't ibang mga platform ng computing, mula sa mga personal na computer hanggang sa mga mainframe.

Ginagamit ng panayam na ito ang kahulugan ng ISO ng SQL.

Panimula sa SQL

Sa bahaging ito, titingnan natin ang layunin ng wikang SQL, kilalanin ang kasaysayan nito, at susuriin ang mga dahilan kung bakit naging napakahalaga nito para sa mga aplikasyon ng database.

Layunin ng wikang SQL

Ang anumang wika na idinisenyo upang gumana sa mga database ay dapat magbigay sa user ng mga sumusunod na kakayahan:

· lumikha ng mga database at mga talahanayan na may kumpletong paglalarawan ng kanilang istraktura;



· Magsagawa ng mga pangunahing operasyon sa pagmamanipula ng data, tulad ng pagpasok, pagbabago at pagtanggal ng data mula sa mga talahanayan;

· Magsagawa ng simple at kumplikadong mga query.

Bilang karagdagan, ang wika ng database ay dapat malutas ang lahat ng mga problema sa itaas na may kaunting pagsisikap sa bahagi ng gumagamit, at ang istraktura at syntax ng mga utos nito ay dapat na medyo simple at madaling matutunan.

At sa wakas, ang wika ay dapat na unibersal, i.e. matugunan ang ilang kinikilalang pamantayan, na magbibigay-daan sa paggamit ng parehong syntax at command structure kapag lumilipat mula sa isang DBMS patungo sa isa pa. Ang modernong pamantayan ng wika ng SQL ay nakakatugon sa halos lahat ng mga kinakailangang ito.

Ang SQL ay isang halimbawa ng isang wika ng pagbabagong-anyo ng data, o isang wikang idinisenyo upang gumana sa mga talahanayan upang baguhin ang data ng input sa nais na anyo ng output. Ang wikang SQL, na tinukoy ng pamantayang ISO, ay may dalawang pangunahing bahagi:

· Data Definition Language (DDL), na idinisenyo upang tukuyin ang mga istruktura ng database at kontrolin ang pag-access sa data;

· Data Manipulation Language (DML), na idinisenyo para sa pagkuha at pag-update ng data.

Bago ang pagdating ng pamantayang SQL3, ang SQL ay nagsama lamang ng mga utos para sa pagtukoy at pagmamanipula ng data; wala itong anumang mga utos upang kontrolin ang pag-usad ng mga kalkulasyon. Sa madaling salita, ang wikang ito ay walang IF ... THEN ...ELSE, GO TO, DO ... WHILE at anumang iba pang mga command na idinisenyo upang kontrolin ang pag-usad ng proseso ng computational. Ang mga naturang gawain ay kailangang lutasin sa programmatically, gamit ang programming o task control language, o interactive, bilang resulta ng mga aksyon na ginawa ng user mismo. Dahil sa hindi kumpleto na ito, mula sa punto ng view ng pag-aayos ng proseso ng pag-compute, ang wikang SQL ay maaaring gamitin sa dalawang paraan. Ang una ay nagsasangkot ng interactive na gawain, na binubuo sa pagpasok ng user ng mga indibidwal na SQL statement mula sa terminal. Ang pangalawa ay ang pag-embed ng mga SQL statement sa mga procedural language program.

Mga kalamangan ng wikang SQL3, ang pormal na kahulugan nito ay pinagtibay noong 1999:

· Ang wikang SQL ay medyo madaling matutunan.

· Ito ay isang non-procedural na wika, kaya kailangan nitong tukuyin kung anong impormasyon ang dapat makuha, hindi kung paano ito makukuha. Sa madaling salita, ang wika ng SQL ay hindi nangangailangan ng pagtukoy ng mga paraan ng pag-access ng data.

· Tulad ng karamihan sa mga modernong wika, sinusuportahan ng SQL ang isang libreng format para sa pagsusulat ng mga pahayag. Nangangahulugan ito na ang mga indibidwal na elemento ng operator ay hindi nauugnay sa mga nakapirming posisyon sa screen habang nagta-type ka.

· Ang istraktura ng command ay tinukoy ng isang set ng mga keyword, na mga ordinaryong salitang Ingles, tulad ng CREATE TABLE - Lumikha ng table, INSERT - Insert, SELECT - Select.

Halimbawa:

GUMAWA NG TALAAN [Mga Benta] ( (S), [Pangalan ng bagay] VARCHAR(15), [Gastos] DECIMAL(7,2));

INSERT INTO [Object] VALUES ("SG16", "Brown", 8300);

SELECT , [Pangalan ng object], [Cost];

MULA sa [Sales]

SAAN [Gastos] > 10000;

· Ang wikang SQL ay maaaring gamitin ng isang malawak na hanay ng mga user, kabilang ang mga database administrator (DBA), mga tauhan ng pamamahala ng kumpanya, mga programmer ng application, at marami pang ibang end user ng iba't ibang kategorya.

Sa kasalukuyan, may mga internasyonal na pamantayan para sa wikang SQL na pormal na tumutukoy dito bilang karaniwang wika para sa paglikha at pagmamanipula ng mga relational na database, kung saan ito talaga.

Kasaysayan ng wikang SQL

Ang kasaysayan ng modelo ng relational data, at hindi direkta ang wikang SQL, ay nagsimula noong 1970 sa paglalathala ng isang mahalagang artikulo ni E. F. Codd, na noong panahong iyon ay nagtrabaho sa laboratoryo ng pananaliksik ng IBM sa San Jose. Noong 1974, si D. Chamberlain, na nagtrabaho sa parehong laboratoryo, ay naglathala ng kahulugan ng isang wika na tinatawag na "Structured English Query Language", o SEQUEL. Ang isang binagong bersyon ng wikang ito, SEQUEL/2, ay inilabas noong 1976; pagkatapos ay kinailangang palitan ang pangalan nito sa SQL para sa mga legal na dahilan - ang pagdadaglat na SEQUEL ay ginagamit na ng mga philologist. Ngunit hanggang ngayon, maraming tao pa rin ang binibigkas ang SQL acronym bilang "sequel", bagaman opisyal na inirerekomenda na basahin ito bilang "es-qu-el".

Noong 1976, naglabas ang IBM ng prototype na DBMS batay sa SEQUEL/2 na wika, na tinatawag na "System R". Ang layunin ng pagsubok na ito ay upang subukan ang pagiging posible ng pagpapatupad ng relational na modelo. Sa iba pang mga positibong aspeto, ang pinakamahalagang resulta ng proyektong ito ay maaaring ituring na ang pagbuo ng wikang SQL mismo, gayunpaman, ang mga ugat ng wikang ito ay bumalik sa wikang SQUARE (Specifying Queries as Rational Expressions), na siyang hinalinhan ng wikang ito. Proyekto ng System R Ang wikang SQUARE ay binuo bilang tool sa pagsasaliksik para sa pagpapatupad ng relational algebra sa pamamagitan ng mga pariralang binubuo sa Ingles.

Sa huling bahagi ng 1970s, ang kumpanya na ngayon ay naging Oracle Corporation ay naglabas ng Oracle DBMS. Marahil ito ang pinakaunang komersyal na pagpapatupad ng isang relational DBMS na binuo gamit ang wikang SQL.

Maya-maya, lumitaw ang INGRES DBMS, gamit ang QUEL query language.

Ang wikang ito ay mas nakaayos kaysa sa SQL, ngunit ang mga semantika nito ay hindi gaanong malapit sa ordinaryong Ingles. Nang maglaon, nang ang SQL ay pinagtibay bilang karaniwang wika para sa mga relational na database, ang INGRES DBMS ay ganap na na-convert upang gamitin ito. Noong 1981, inilabas ng IBM ang una nitong komersyal na relational na DBMS, na tinatawag na SQL/DS (para sa DOS/VSE environment). Noong 1982, isang bersyon ng sistemang ito ang inilabas para sa kapaligiran ng VM/CMS, at noong 1983 - para sa kapaligiran ng MVS, ngunit sa ilalim ng pangalang DB2.

Noong 1982, nagsimulang magtrabaho ang US National Standards Institute (ANSI) sa Relation Database Language (RDL), na ginagabayan ng mga dokumentong konsepto na natanggap mula sa IBM Corporation. Noong 1983, ang International Organization for Standardization (ISO) ay naging kasangkot sa gawaing ito. Ang magkasanib na pagsisikap ng parehong mga organisasyon ay nagtapos sa paglabas ng pamantayan ng wikang SQL. Ang pangalang RDL ay inabandona noong 1984, at ang draft na wika ay muling idinisenyo upang maging mas malapit sa mga kasalukuyang pagpapatupad ng wikang SQL.

Ang orihinal na bersyon ng pamantayan, na inilabas ng ISO noong 1987, ay umakit ng isang alon ng pagpuna. Sa partikular, itinuro ni Date, isang kilalang mananaliksik sa lugar na ito, na inalis ng pamantayan ang mga kritikal na function, kabilang ang mga referential integrity control, at ilang relational operator.

Bilang karagdagan, nabanggit niya ang labis na kalabisan ng wika - ang parehong kahilingan ay maaaring isulat sa maraming iba't ibang mga bersyon. Karamihan sa mga kritisismo ay kinilala bilang patas, at ang mga kinakailangang pagsasaayos ay ginawa sa pamantayan bago ito mailathala. Gayunpaman, napagpasyahan na mas mahalagang ilabas ang pamantayan sa lalong madaling panahon upang ito ay magsilbi bilang isang karaniwang batayan kung saan ang wika mismo at ang mga pagpapatupad nito ay maaaring higit pang mabuo, sa halip na maghintay hanggang sa lahat ng mga tampok na naiiba. ang mga eksperto na itinuturing na mandatory ay tinukoy at napagkasunduan para sa isang katulad na wika.

Noong 1989, naglathala ang ISO ng isang susog sa pamantayan na tumutukoy sa mga function ng integridad ng data. Noong 1992, inilabas ang unang binagong bersyon ng pamantayang ISO, minsan tinatawag na SQL2 o SQL-92. Bagama't ang ilan sa mga pag-andar ay tinukoy sa unang pagkakataon sa pamantayang ito, marami sa kanila ang naipatupad nang buo o bahagi sa isa o higit pang komersyal na pagpapatupad ng wikang SQL.

At ang susunod na bersyon ng pamantayan, na karaniwang tinatawag na SQL3, ay inilabas lamang noong 1999. Ang bersyon na ito ay nagbibigay ng karagdagang suporta para sa object-oriented na data management features.

Ang mga function na idinagdag sa pamantayan ng wika ng mga developer ng mga komersyal na pagpapatupad ay tinatawag na mga extension. Halimbawa, ang pamantayan ng wika ng SQL ay tumutukoy sa anim na magkakaibang uri ng data na maaaring maimbak sa mga database. Sa maraming mga pagpapatupad, ang listahang ito ay pupunan ng iba't ibang mga extension. Ang bawat pagpapatupad ng isang wika ay tinatawag na diyalekto. Walang dalawang diyalekto na ganap na magkapareho, at sa kasalukuyan ay walang diyalekto na ganap na sumusunod sa pamantayan ng ISO.

Bukod dito, habang ang mga developer ng database ay nagdaragdag ng bagong functionality sa kanilang mga system, patuloy nilang pinapalawak ang kanilang mga dialect ng SQL, na nagiging sanhi ng mga indibidwal na dialect upang maging mas at higit na naiiba sa bawat isa. Gayunpaman, ang pangunahing core ng wikang SQL ay nananatiling higit o hindi gaanong na-standardize sa lahat ng mga pagpapatupad.

Bagama't ang orihinal na mga konsepto ng wikang SQL ay binuo ng IBM, ang kahalagahan nito sa lalong madaling panahon ay nag-udyok sa iba pang mga developer na lumikha ng kanilang sariling mga pagpapatupad. Sa kasalukuyan, may literal na daan-daang mga produkto na magagamit sa merkado na binuo gamit ang wikang SQL, at palagi naming naririnig ang tungkol sa pagpapalabas ng higit at higit pang mga bagong bersyon,

Pag-andar ng wikang SQL

Ang pangunahing pag-andar ng wikang SQL ay ibinigay sa ibaba.

Kahulugan ng data. Ang SQL function na ito ay isang paglalarawan ng istruktura ng data na sinusuportahan at ang organisasyon ng mga relational na relasyon (mga talahanayan). Ang mga operator para sa paglikha ng isang database, paglikha ng mga talahanayan, at pag-access ng data ay nilayon upang ipatupad ito.

Paglikha ng database. Para gumawa ng bagong database, gamitin ang CREATE DATABASE statement. Ang istraktura ng pahayag ay tumutukoy sa pangalan ng database na gagawin.

Paglikha ng mga talahanayan. Ang batayang talahanayan ay nilikha gamit ang CREATE TABLE na pahayag. Tinutukoy ng pahayag na ito ang mga pangalan ng field, mga uri ng data para sa kanila, at haba (para sa ilang uri ng data). Ginagamit ng SQL ang mga sumusunod na uri ng data:

INTEGER – integer;

CHAR – halaga ng karakter;

VARCHAR – halaga ng character, tanging mga hindi blangkong character ang nakaimbak;

DECIMAL – decimal na numero;

FLOAT – floating point number;

DOUBLE PECISION – dobleng precision floating point;

DATETIME – petsa at oras;

BOOL – Boolean na halaga.

Ang pahayag ng paglikha ng talahanayan ay tumutukoy sa mga paghihigpit sa mga halaga ng hanay at sa talahanayan. Ang mga posibleng paghihigpit ay ipinapakita sa talahanayan. 4.8

Talahanayan 4.8 Mga limitasyon sa tinukoy na data

Para sa isang relational na data model, ang pagtukoy ng foreign key (FOREIGNKEY) ay mahalaga. Kapag nagdedeklara ng mga dayuhang susi, dapat kang magpataw ng naaangkop na mga paghihigpit sa hanay, halimbawa, HINDI NULL.

Sa isang SQL statement, ang CHECK ay nagpapahiwatig ng semantic na mga hadlang na nagsisiguro sa integridad ng data, tulad ng paglilimita sa hanay ng mga wastong halaga para sa isang partikular na column.

Hindi mo maaaring gamitin ang create table statement nang higit sa isang beses sa parehong table. Kung, pagkatapos ng paglikha nito, ang mga kamalian ay natuklasan sa kahulugan nito, ang mga pagbabago ay maaaring gawin gamit ang pahayag na ALTER TABLE. Ang pahayag na ito ay idinisenyo upang baguhin ang istraktura ng isang umiiral na talahanayan: maaari kang mag-alis o magdagdag ng isang patlang sa isang umiiral na talahanayan.

Maanipulasyon ng datos. Binibigyang-daan ng SQL ang isang user o application program na baguhin ang mga nilalaman ng isang database sa pamamagitan ng pagpasok ng bagong data, pagtanggal o pagbabago ng umiiral na data.

Paglalagay ng bagong data ay isang pamamaraan para sa pagdaragdag ng mga hilera sa isang database at isinasagawa gamit ang INSERT na pahayag.

Pagbabago ng data nagsasangkot ng mga pagbabago sa mga halaga sa isa o higit pang mga column ng isang talahanayan at ginagawa gamit ang isang UPDATE na pahayag. Halimbawa:

Itakda ang halaga=halaga+1000.00

SAAN halaga>0

Pag-alis ng mga hilera mula sa isang talahanayan gamit ang DELETE na pahayag. Ang operator syntax ay:

MULA sa talahanayan

Ang sugnay na WHERE ay opsyonal, ngunit kung hindi ito kasama, ang lahat ng mga entry sa talahanayan ay tatanggalin. Kapaki-pakinabang na gamitin ang SELECT statement na may parehong syntax gaya ng DELETE na statement para pre-check kung aling mga record ang tatanggalin.

Tinitiyak ang integridad ng data. Binibigyang-daan ka ng wikang SQL na tukuyin ang medyo kumplikadong mga hadlang sa integridad, ang kasiyahan nito ay susuriin para sa lahat ng mga pagbabago sa database. Ang pagsubaybay sa mga resulta ng mga transaksyon, pagpoproseso ng mga error na nagaganap, at pag-coordinate ng parallel na trabaho sa database ng ilang mga application o user ay ibinibigay ng COMMIT (itinatala ang matagumpay na pagkumpleto ng kasalukuyang transaksyon at ang simula ng bago) at ROLLBACK (ang pangangailangan para sa isang rollback - awtomatikong pagpapanumbalik ng estado ng database sa simula ng transaksyon) mga operator.

Pagsa-sample ng data ay isa sa pinakamahalagang function ng database na tumutugma sa SELECT statement. Ang isang halimbawa ng paggamit ng operator ay tinalakay sa nakaraang seksyon.

Sa SQL, maaari kang lumikha ng mga nested sequence ng mga query (subquery). Mayroong ilang mga uri ng mga query na pinakamahusay na ipinatupad gamit ang mga subquery. Kasama sa mga query na ito ang tinatawag na mga pagsusuri sa pagkakaroon. Ipagpalagay natin na gusto mong makakuha ng data tungkol sa mga mag-aaral na walang pitong puntos na marka. Kung ang isang walang laman na hanay ay ibinalik, nangangahulugan ito ng isang bagay lamang - bawat mag-aaral ay may hindi bababa sa isang ganoong grado.

Pag-uugnay ng mga talahanayan. Binibigyang-daan ka ng mga SQL statement na kunin ang data mula sa higit sa isang talahanayan. Ang isang paraan upang gawin ito ay ang pag-link ng mga talahanayan gamit ang isang karaniwang field.

Ang SELECT statement ay dapat maglaman ng isang hadlang sa pagtutugma ng mga halaga ng isang partikular na column (field). Pagkatapos lamang ang mga hilera kung saan ang mga halaga ng tinukoy na tugma ng column ang kukunin mula sa mga nauugnay na talahanayan. Ang pangalan ng hanay ay ipinahiwatig lamang kasama ng pangalan ng talahanayan; kung hindi ay magiging malabo ang pahayag.

Maaari kang gumamit ng iba pang mga uri ng pag-link ng talahanayan: ang operator ng INTER JOIN (inner join) ay tinitiyak na ang resultang hanay ng mga talaan ay naglalaman ng mga katumbas na halaga sa mga kaugnay na field. Ang mga panlabas na pagsali (Outer JOIN) ay nagbibigay-daan sa iyong isama sa resulta ng query ang lahat ng mga row mula sa isang table at ang mga kaukulang row mula sa isa pa.

Pagkokontrolado. Tinitiyak ng SQL ang pag-synchronize ng pagpoproseso ng database ng iba't ibang mga application program, na nagpoprotekta sa data mula sa hindi awtorisadong pag-access.

Ang pag-access ng data sa isang kapaligiran ng maraming gumagamit ay kinokontrol gamit ang mga pahayag na GRANT at REVOKE. Sa bawat pahayag kinakailangan na tukuyin ang user, ang bagay (talahanayan, view) na may kaugnayan sa kung saan nakatakda ang mga pahintulot, at ang mga pahintulot mismo. Halimbawa, binibigyan ng pahayag ng GRANT ang user X ng kakayahang kumuha ng data mula sa talahanayan ng PRODUCT:

BIGYAN NG PUMILI SA PRODUKTO KAY X

Binawi ng REVOKE statement ang lahat ng naunang ibinigay na pahintulot.

Pag-embed ng SQL sa Application Programs. Ang mga totoong application ay karaniwang nakasulat sa ibang mga wika na bumubuo ng SQL code at ipinapasa ito sa DBMS bilang ASCII text.

Ang pamantayan ng IBM para sa mga produkto ng SQL ay kinokontrol ang paggamit ng built-in na wika ng SQL. Kapag nagsusulat ng isang application program, ang teksto nito ay pinaghalong mga command mula sa pangunahing programming language (halimbawa, C, Pascal, Cobol, Fortran, Assembler) at mga SQL command na may espesyal na prefix, halimbawa. ExecSQL. Ang istraktura ng mga SQL statement ay pinalawak upang mapaunlakan ang mga variable ng host language sa isang SQL construct.



Binabago ng SQL processor ang uri ng programa alinsunod sa mga kinakailangan ng compiler ng pangunahing programming language. Ang function ng compiler ay upang isalin (isalin) ang isang programa mula sa source programming language sa isang wika na malapit sa machine language. Pagkatapos ng compilation, ang application program (application) ay isang independent module.

Mga diyalekto ng SQL

Gumagamit ang mga modernong relational na DBMS ng mga diyalekto ng wikang SQL upang ilarawan at manipulahin ang data. Ang isang subset ng wikang SQL na nagbibigay-daan sa iyong lumikha at maglarawan ng isang database ay tinatawag na DDL (Data Definition Language).

Sa una, ang wikang SQL ay tinawag na SEQUEL (Structured English Query Language), pagkatapos ay SEQUEL/2, at pagkatapos ay simpleng SQL. Ngayon, ang SQL ay ang de facto na pamantayan para sa mga relational na DBMS.

Ang unang pamantayan ng wika ay lumitaw noong 1989 - SQL-89 at sinusuportahan ng halos lahat ng komersyal na relational na DBMS. Ito ay pangkalahatan sa kalikasan at napapailalim sa malawak na interpretasyon. Ang mga pakinabang ng SQL-89 ay maaaring isaalang-alang ang standardisasyon ng syntax at semantics ng mga operator para sa sampling at pagmamanipula ng data, pati na rin ang pag-aayos ng mga paraan para sa paglilimita sa integridad ng database. Gayunpaman, nawawala ang isang mahalagang seksyon tulad ng pagmamanipula ng schema ng database. Ang hindi kumpleto ng pamantayan ng SQL-89 ay humantong sa paglitaw noong 1992. ang susunod na bersyon ng wikang SQL.

Sinasaklaw ng SQL2 (o SQL-92) ang halos lahat ng kinakailangang isyu: pagmamanipula ng database schema, pamamahala ng transaksyon at session, suporta para sa mga arkitektura ng client-server o mga tool sa pagbuo ng application.

Ang susunod na hakbang sa pagbuo ng wika ay ang bersyon ng SQL 3 Ang bersyon na ito ng wika ay kinukumpleto ng mekanismo ng pag-trigger, ang kahulugan ng isang arbitrary na uri ng data, at isang extension ng bagay.

Sa kasalukuyan, mayroong tatlong antas ng wika: beginner, intermediate at complete. Maraming mga tagagawa ng kanilang DBMS ang gumagamit ng kanilang sariling mga pagpapatupad ng SQL, batay sa hindi bababa sa paunang antas ng kaukulang pamantayan ng ANSI, at naglalaman ng ilang mga extension na partikular sa isang partikular na DBMS. Sa mesa 4.9 ay nagbibigay ng mga halimbawa ng SQL dialect.

Talahanayan 4.9 Mga diyalektong SQL

DBMS Wika ng pagtatanong
System R DBMS SQL
DB2 SQL
Access SQL
SYBASE SQL Kahit saan Watcom-SQL
SYBASE SQL Server Transact_SQL
Ang aking SQL SQL
Oracle PL/SQL

Ang mga database ng object-oriented ay gumagamit ng object query language na OQL (Object Query Language). Ang wika ng OQL ay batay sa SELECT command ng SQL2 na wika at nagdagdag ng kakayahang magdirekta ng query sa isang object o koleksyon ng mga object, pati na rin ang kakayahang tumawag ng mga pamamaraan sa loob ng isang query.

Tinutukoy ng compatibility ng maraming ginamit na SQL dialect ang compatibility ng DBMS. Kaya, ang SYBASE SQL Anywhere DBMS ay kasing tugma hangga't maaari para sa isang DBMS ng klase na ito sa SYBASE SQL Server DBMS. Isa sa mga aspeto ng compatibility na ito ay ang suporta sa SYBASE SQL Anywhere ng naturang dialect ng SQL language bilang Transact-SQL. Ginagamit ang dialect na ito sa SYBASE SQL Server at maaaring gamitin sa SYBASE SQL Anywhere kasama ang native na SQL dialect - Watcom-SQL.

Kontrolin ang mga tanong

1. Paano maiuri ang isang DBMS?

2. Anong mga modelo ng database ang umiiral?

3. Ano ang mga pangunahing elemento ng mga modelo ng impormasyon?

4. Anong mga uri ng ugnayan sa pagitan ng mga entity ang umiiral?

5. Ano ang mga ER diagram at para saan ang mga ito?

6. Ano ang pinapayagan mong gawin ng pamamaraan ng normalisasyon ng talahanayan?

7. Ano ang mga tool sa wika at software ng DBMS?

8. Anong uri ng MS Access DBMS ito?

9. Ano ang mga pangunahing bagay ng MS Access DBMS?

10. Ano ang mga pangunahing SQL operator na ginagamit?

Wika ng programming

Ang SQL (Structured Query Language) ay isang database management language para sa relational database. Ang SQL mismo ay hindi isang Turing-complete na programming language, ngunit ang pamantayan nito ay nagbibigay-daan para sa paglikha ng mga procedural extension para dito na nagpapalawak ng functionality nito sa isang ganap na programming language.

Ang wika ay nilikha noong 1970s sa ilalim ng pangalang "SEQUEL" para sa System R database management system (DBMS) kalaunan ay pinalitan ito ng pangalan na "SQL" upang maiwasan ang mga salungatan sa trademark. Noong 1979, unang nai-publish ang SQL bilang isang komersyal na produkto, Oracle V2.

Ang unang opisyal na pamantayan ng wika ay pinagtibay ng ANSI noong 1986 at ISO noong 1987. Simula noon, maraming iba pang mga bersyon ng pamantayan ang nalikha, ang ilan sa mga ito ay inuulit ang mga nauna nang may maliliit na pagkakaiba-iba, ang iba ay kumukuha ng mga makabuluhang bagong tampok.

Sa kabila ng pagkakaroon ng mga pamantayan, ang karamihan sa mga karaniwang pagpapatupad ng SQL ay nagkakaiba-iba na ang code ay bihirang ma-port mula sa isang database management system patungo sa isa pa nang hindi gumagawa ng mga makabuluhang pagbabago. Ito ay dahil sa haba at pagiging kumplikado ng pamantayan, pati na rin ang kakulangan ng detalye nito sa ilang mahahalagang lugar ng pagpapatupad.

Ang SQL ay nilikha bilang isang simple, standardized na paraan upang kunin at manipulahin ang data na nilalaman sa isang relational database. Nang maglaon, naging mas kumplikado kaysa sa nilalayon at naging tool ng developer sa halip na tool ng end-user. Sa kasalukuyan, ang SQL (karamihan ay ipinatupad ng Oracle) ay nananatiling pinakasikat sa mga wika sa pamamahala ng database, bagama't mayroong ilang mga alternatibo.

Ang SQL ay binubuo ng apat na natatanging bahagi:

  1. Ang Data Definition Language (DDL) ay ginagamit upang tukuyin ang mga istruktura ng data na nakaimbak sa database. Nagbibigay-daan sa iyo ang mga pahayag ng DDL na lumikha, magbago, at magtanggal ng mga indibidwal na bagay sa database. Ang mga wastong uri ng object ay nakadepende sa DBMS na ginamit at kadalasang kinabibilangan ng mga database, user, table, at ilang mas maliliit na sumusuportang object gaya ng mga tungkulin at index.
  2. Ang data manipulation language (DML) ay ginagamit upang kunin at baguhin ang data sa database. Nagbibigay-daan sa iyo ang mga pahayag ng DML na kunin, ipasok, baguhin, at tanggalin ang data sa mga talahanayan. Kung minsan, ang mga piling pahayag sa pagkuha ng data ay hindi itinuturing na bahagi ng DML dahil hindi nito binabago ang estado ng data. Ang lahat ng mga pahayag ng DML ay likas na deklaratibo.
  3. Ang data access definition language (DCL) ay ginagamit upang kontrolin ang pag-access sa data sa database. Nalalapat ang mga pahayag ng DCL sa mga pribilehiyo at nagbibigay-daan sa iyo na magbigay at bawiin ang mga karapatang maglapat ng ilang mga pahayag ng DDL at DML sa ilang partikular na object ng database.
  4. Ang Transaction Control Language (TCL) ay ginagamit upang kontrolin ang pagproseso ng mga transaksyon sa database. Karaniwang kasama sa mga pahayag ng TCL ang commit na gumawa ng mga pagbabagong ginawa sa panahon ng isang transaksyon, rollback upang i-rollback ang mga ito, at savepoint upang hatiin ang transaksyon sa ilang mas maliliit na bahagi.

Dapat tandaan na ang SQL ay nagpapatupad ng isang deklaratibong paradigm sa programming: ang bawat pahayag ay naglalarawan lamang ng kinakailangang aksyon, at ang DBMS ay nagpapasya kung paano ito gagawin, i.e. nagpaplano ng mga elementarya na operasyon na kinakailangan upang maisagawa ang isang aksyon at isakatuparan ang mga ito. Gayunpaman, upang epektibong magamit ang mga kakayahan ng SQL, dapat na maunawaan ng isang developer kung paano na-parse ng DBMS ang bawat pahayag at lumilikha ng plano sa pagpapatupad nito.

Mga halimbawa:

Kamusta, Mundo!:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ang string na 'Hello, World!' ay pinili mula sa built-in na table dual, na ginagamit para sa mga query na hindi nangangailangan ng access sa mga totoong table.

piliin ang "Hello, World!" mula sa dalawahan;

Factorial:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Hindi sinusuportahan ng SQL ang mga loop, recursion, o mga function na tinukoy ng user. Ang halimbawang ito ay nagpapakita ng isang posibleng workaround gamit ang:

  • antas ng pseudo-column upang lumikha ng mga pseudo-table na t1 at t2 na naglalaman ng mga numero mula 1 hanggang 16,
  • pinagsama-samang function sum , na nagbibigay-daan sa iyo na buuin ang mga elemento ng isang set nang hindi tahasang gumagamit ng loop,
  • at ang ln at exp math function, na nagbibigay-daan sa iyong palitan ang produkto (kinakailangan upang kalkulahin ang factorial) ng isang kabuuan (ibinigay ng SQL).

Ang linyang “0! = 1” ay hindi isasama sa resultang hanay ng mga row, dahil ang pagtatangkang suriin ang ln(0) ay nagreresulta sa isang pagbubukod.

Mga numero ng Fibonacci:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Hindi sinusuportahan ng SQL ang mga loop o recursion, at ang pagsasama-sama ng mga field mula sa iba't ibang row sa isang table o query ay hindi isang karaniwang pinagsama-samang function. Ang halimbawang ito ay gumagamit ng:

  • Binet's formula at mathematical functions ROUND, POWER at SQRT para sa pagkalkula ng ika-1 Fibonacci number;
  • pseudo-column level upang lumikha ng pseudo-table t1 na naglalaman ng mga numero mula 1 hanggang 16;
  • built-in na function na SYS_CONNECT_BY_PATH para sa ordered concatenation ng mga natanggap na numero.

PUMILI NG PALITAN (MAX (SYS_CONNECT_BY_PATH (fib || ", " , "/")), "/" , "" ) || "..." fiblist FROM ( SELECT n , fib , ROW_NUMBER () OVER (ORDER BY n ) r FROM ( piliin ang n , round ((power ((1 + sqrt (5 ))) * 0 . 5 , n ) - power ((1 - sqrt (5 )) * 0 . 5 , n )) / sqrt (5 )) fib from (piliin ang level n mula sa dual connect by level<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

Kamusta, Mundo!:

Halimbawa para sa mga bersyon ng Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012, MySQL 5, PostgreSQL 8.4, PostgreSQL 9.1, sqlite 3.7.3

piliin ang "Hello, World!" ;

Factorial:

Halimbawa para sa mga bersyon ng Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Ginagamit ang recursive na kahulugan ng factorial, na ipinatupad sa pamamagitan ng recursive query. Ang bawat linya ng query ay naglalaman ng dalawang numeric na field, n at n!, at ang bawat kasunod na linya ay kinakalkula gamit ang data mula sa nauna.

Maaari mo lamang kalkulahin ang mga integer factorial hanggang 20!. Kapag sinusubukang kalkulahin ang 21! Ang error na "Arithmetic overflow error" ay nangyayari, i.e. umaapaw ang bit grid.

Para sa mga tunay na numero, ang factorial ay 100! (Upang gawin ito, sa halimbawa kailangan mong palitan ang bigint ng float sa ika-3 linya)

Mga numero ng Fibonacci:

Halimbawa para sa mga bersyon ng Microsoft SQL Server 2005, Microsoft SQL Server 2008 R2, Microsoft SQL Server 2012

Ginagamit ang paulit-ulit na pagpapasiya ng mga numero ng Fibonacci, na ipinatupad sa pamamagitan ng isang recursive na query. Ang bawat linya ng query ay naglalaman ng dalawang magkatabing numero sa sequence, at ang susunod na linya ay kinakalkula bilang (huling numero, kabuuan ng mga numero) ng nakaraang linya. Kaya, ang lahat ng mga numero maliban sa una at huling ay lilitaw nang dalawang beses, kaya ang resulta ay kasama lamang ang mga unang numero ng bawat linya.

Factorial:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ipinapakita ng halimbawang ito ang paggamit ng operator ng modelo, na available sa Oracle 10g, na nagpapahintulot sa mga string ng query na ituring bilang mga elemento ng array. Ang bawat linya ay naglalaman ng dalawang field - ang numero ng linya n at ang factorial f nito.

piliin ang n || "! = " || f factorial mula sa dalawahang modelo ay nagbabalik ng lahat ng dimensyon ng mga hilera sa pamamagitan ng ( 0 d ) na mga sukat ( 0 f , 1 n ) mga panuntunan na umuulit ( 17 ) ( f [ iteration_number ] = decode ( iteration_number , 0 , 1 , f [ iteration_number - 1 ] * iteration_number ) , n [ iteration_number ] = iteration_number );

Mga numero ng Fibonacci:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ipinapakita ng halimbawang ito ang paggamit ng operator ng modelo, na available sa Oracle 10g, na nagpapahintulot sa mga string ng query na ituring bilang mga elemento ng array. Ang bawat linya ay naglalaman ng dalawang field - ang Fibonacci number mismo at ang pagsasama-sama ng lahat ng numerong mas mababa sa o katumbas nito. Ang paulit-ulit na pagsasama-sama ng mga numero sa parehong query na bumubuo sa mga ito ay mas madali at mas mabilis kaysa sa pagsasama-sama bilang isang hiwalay na operasyon.

piliin ang (mga) max || ", ..." mula sa (piliin ang mga s mula sa dalawahang modelo ibalik ang lahat ng dimensyon ng mga hilera sa pamamagitan ng ( 0 d ) na mga sukat ( cast ( " " bilang varchar2 (200 )) s , 0 f ) mga panuntunan na umulit ( 16 ) ( f [ iteration_number ] = decode (iteration_number , 0 , 1 , 1 , 1 , f [ iteration_number - 1 ] + f [ iteration_number - 2 ]), s [ iteration_number ] = decode ( iteration_number , 0 , to_char (f [ iteration_number ]), s - [ iteration_number ] 1 ] ||. ", " ||. to_char (f [ iteration_number ])) );

Factorial:

Halimbawa para sa MySQL 5 na bersyon

piliin ang concat (cast (t2 . n bilang char ), "!= " , cast (exp (sum (log (t1. n ))) bilang char )) mula sa ( piliin ang @ i : = @ i + 1 AS n mula sa TABLE , (piliin ang @ i : = 0 ) bilang sel1 limit 16 ) t1 , ( piliin ang @ j : = @ j + 1 AS n mula sa TABLE , (piliin ang @ j : = 0 ) bilang sel1 limit 16 ) t2 kung saan t1 . n<= t2 . n group by t2 . n

Mga numero ng Fibonacci:

Halimbawa para sa MySQL 5 na bersyon

Palitan ang TABLE ng anumang talahanayan na maaari mong ma-access, tulad ng mysql.help_topic .

piliin ang concat (group_concat (f separator ", " ), ", ..." ) mula sa (piliin ang @ f : = @ i + @ j bilang f , @ i : = @ j , @ j : = @ f mula sa TABLE , (piliin ang @ i : = 1 , @ j : = 0 ) sel1 limitasyon 16 ) t

Kamusta, Mundo!:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ang halimbawang ito ay gumagamit ng hindi kilalang PL/SQL block na nagpi-print ng mensahe sa karaniwang output gamit ang dbms_output package.

simulan ang dbms_output . put_line("Hello, World!"); wakas ;

Factorial:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ang halimbawang ito ay nagpapakita ng umuulit na pagkalkula ng factorial gamit ang PL/SQL.

ideklara n numero := 0 ; f numero := 1 ; magsimula habang (n<= 16 ) loop dbms_output . put_line (n || "! = " || f ); n : = n + 1 ; f : = f * n ; end loop ; end ;

Mga numero ng Fibonacci:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ang halimbawang ito ay gumagamit ng umuulit na pagpapasiya ng mga numero ng Fibonacci. Ang mga nakalkula na numero ay naka-imbak sa isang varray data structure - isang analogue ng isang array.

idedeklara ang uri ng vector ay varray (16) ng numero; fib vector := vector(); numero ko; s varchar2(100); simulan ang fib. extend(16); fib (1) := 1; fib (2) := 1; s : = fib (1 ) || "," || fib(2) || "," ; para sa i sa 3 .. 16 loop fib (i): = fib (i - 1) + fib (i - 2); s := s || fib(i) || "," ; dulo loop; dbms_output. put_line (s || "..." ); wakas ;

Quadratic equation:

Halimbawa para sa mga bersyon ng Oracle 10g SQL, Oracle 11g SQL

Ang halimbawang ito ay sinubukan sa SQL*Plus, TOAD at PL/SQL Developer.

Binibigyang-daan ka ng Pure SQL na magpakilala ng mga variable sa panahon ng pagpapatupad ng query sa anyo ng mga mapapalitang variable. Upang tukuyin ang naturang variable, ang pangalan nito (sa kasong ito, A, B, at C) ay dapat gamitin kasama ng ampersand at sa harap nito sa tuwing kailangang i-reference ang variable. Kapag ang isang query ay naisakatuparan, ang user ay ipo-prompt na ipasok ang mga halaga ng lahat ng mga kapalit na variable na ginamit sa query. Kapag naipasok ang mga halaga, ang bawat reference sa naturang variable ay papalitan ng halaga nito, at ang resultang kahilingan ay isasagawa.

Mayroong ilang mga paraan upang magpasok ng mga halaga para sa mga kapalit na variable. Sa halimbawang ito, ang unang reference sa bawat variable ay pinangungunahan ng double ampersand && sa halip na isang ampersand. Sa ganitong paraan, ang halaga para sa bawat variable ay ipinasok nang isang beses lamang, at lahat ng kasunod na reference dito ay papalitan ng parehong halaga (kapag gumagamit ng isang ampersand sa SQL*Plus, ang halaga para sa bawat reference sa parehong variable ay dapat na ipasok nang hiwalay ). Sa PL/SQL Developer, ang lahat ng variable na reference ay dapat na mauna sa isang solong & character, kung hindi, isang ORA-01008 na error na "Not all variables bound" ay magaganap.

Ang unang linya ng halimbawa ay tumutukoy sa character para sa decimal separator, na ginagamit kapag nagko-convert ng mga root number sa mga string.

Ang kahilingan mismo ay binubuo ng apat na magkakaibang kahilingan. Ang bawat query ay nagbabalik ng isang string na naglalaman ng resulta ng pagkalkula sa isa sa mga kaso (A=0, D=0, D>0 at D<0) и ничего — в трех остальных случаях. Результаты всех четырех запросов объединяются, чтобы получить окончательный результат.

baguhin ang set ng session NLS_NUMERIC_CHARACTERS = "." piliin ang "Hindi isang quadratic equation." ans mula sa dalawa kung saan && A = 0 unyon piliin ang "x = " || to_char (-&& B / 2 /& A ) mula sa dalawahan kung saan & A != 0 at & B *& B - 4 *& A *&& C = 0 unyon piliin ang "x1 = " || to_char ((-& B + sqrt (& B *& B - 4 *& A *& C )) / 2 /& A ) || ", x2 = " || to_char (-& B - sqrt (& B *& B - 4 *& A *& C )) / 2 /& A mula sa dual where & A != 0 at & B *& B - 4 *& A *& C > 0 unyon piliin ang "x1 = (" || to_char (-& B / 2 /& A ) || "," || to_char (sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) ||. "), " || "x2 = (" || to_char (-& B / 2 /& A ) || "," || to_char (- sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) ||. ")" mula sa dalawa kung saan & A != 0 at & B *& B - 4 *& A *& C< 0 ;