Ovdje puni popis funkcije za rad sa stringovima, preuzete iz BOL-a:
ASCII | NCHAR | SOUNDEX |
CHAR | PATINDEX | PROSTOR |
CHARINDEX | ZAMIJENITI | ULICA |
RAZLIKA | QUOTENAME | STVARI |
LIJEVO | PONOVITI | PODNIZ |
LEN | OBRNUTI | UNICODE |
DONJI | PRAVO | GORNJI |
LTRIM | RTRIM |
Počnimo s dva međusobno inverzne funkcije - ASCII I CHAR.
ASCII funkcija vraća ASCII kod krajnjeg lijevog znaka izraza niza koji je argument funkcije.
Evo, na primjer, kako možete odrediti koliko imate različita slova, s kojim počinju imena brodova u tablici Brodovi:
Treba napomenuti da se sličan rezultat može lakše dobiti pomoću druge funkcije - LIJEVO, koji ima sljedeću sintaksu:
LIJEVO (<string izraz>, <cjelobrojni izraz>)
i reže broj znakova slijeva određen drugim argumentom iz niza koji je prvi argument. Tako,
SELECT DISTINCT LEFT(name, 1) FROM Ships ORDER BY 1 |
Evo kako, na primjer, možete dobiti tablicu kodova za sve abecedne znakove:
SELECT CHAR(ASCII("a")+ num-1) slovo, ASCII("a")+ num - 1 FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS broj FROM (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) x KRIŽNI SPOJ (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) y KRIŽNI SPOJ (SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z )x WHERE ASCII("a")+ num -1 IZMEĐU ASCII("a") I ASCII("z") |
Za one koji još nisu svjesni generiranja niza brojeva, upućujem vas na odgovarajući članak.
Kao što je poznato, kodovi malih slova i velika slova su različiti. Stoga, da biste dobili kompletan set Bez ponovnog pisanja zahtjeva, samo trebate dodati sličan u gornji kod:
Mislim da ne bi bilo previše teško dodati ovo slovo u tablicu ako je potrebno.
Razmotrimo sada zadatak određivanja gdje pronaći željeni podniz u izrazu niza. Za to se mogu koristiti dvije funkcije - CHARINDEX I PATINDEX. Oba vraćaju početnu poziciju (poziciju prvog znaka podniza) podniza u nizu. Funkcija CHARINDEX ima sljedeću sintaksu:
CHARINDEX( izraz za pretraživanje, niz_izraza[, početna_pozicija])
Ovdje je neobavezan cjelobrojni parametar početna_pozicija definira poziciju u string izrazu s koje se vrši pretraga izraz za pretraživanje. Ako je ovaj parametar izostavljen, pretraga se izvodi od početka niz_izraza. Na primjer, zahtjev
Treba imati na umu da ako je traženi podniz ili izraz niza NULL, tada će rezultat funkcije također biti NULL.
Sljedeći primjer određuje položaje prvog i drugog pojavljivanja znaka "a" u nazivu broda "California"
SELECT CHARINDEX("a",ime) prvi_a, CHARINDEX("a", ime, CHARINDEX("a", ime)+1) drugi_a FROM Brodovi WHERE name="California" |
Imajte na umu da se prilikom definiranja drugog znaka u funkciji koristi početna pozicija, a to je pozicija znaka iza prvog slova "a" - CHARINDEX("a", ime)+1. Točnost rezultata - 2 i 10 - lako je provjeriti :-).
Funkcija PATINDEX ima sljedeću sintaksu:
PATINDEX("% uzorak%" , niz_izraza)
Glavna razlika između ove funkcije i CHARINDEX je ta niz za pretraživanje može sadržavati zamjenski znakovi- % i _. U ovom slučaju potrebni su znakovi na kraju "%". Na primjer, korištenje ove funkcije u prvom primjeru izgledalo bi ovako
Rezultat ovog upita izgleda ovako:
Činjenica da završimo s praznim skupom rezultata znači da nema takvih brodova u bazi podataka. Uzmimo kombinaciju vrijednosti - klasu i ime broda.
Poziva se kombiniranje dvije vrijednosti niza u jednu ulančavanje, i u SQL poslužitelj za ovu operaciju koristi se znak "+" (u standardu "||"). Tako,
Što ako string izraz sadrži samo jedno slovo? Upit će ga prikazati. To možete lako provjeriti pisanjem
Za dohvaćanje podataka iz baze podataka koristi se SQL jezik. SQL je programski jezik koji je vrlo sličan engleskom, ali je namijenjen programima za upravljanje bazom podataka. SQL se koristi u svakom upitu u Accessu.
Razumijevanje principa SQL rad pomaže stvoriti više točni upiti i olakšava popravljanje upita koji vraćaju netočne rezultate.
Ovo je članak iz serije članaka o SQL jeziku za Access. Opisuje osnove korištenja SQL-a za dohvaćanje podataka i daje primjere SQL sintakse.
U ovom članku
Što je SQL?
SQL je programski jezik dizajniran za rad sa skupovima činjenica i odnosima između njih. U kontrolnim programima relacijske baze podataka podaci kao što su Microsoft Office Za rad s podacima koristi se Access, jezik SQL. Za razliku od mnogih programskih jezika, SQL je čitljiv i razumljiv čak i početnicima. Kao i mnogi programski jezici, SQL je međunarodni standard, priznat od strane odbora za standardizaciju kao što su ISO i ANSI.
Skupovi podataka opisani su u SQL-u kako bi pomogli odgovoriti na pitanja. Na koristeći SQL mora se koristiti ispravna sintaksa. Sintaksa je skup pravila koja omogućuju ispravno kombiniranje elemenata jezika. SQL sintaksa na temelju sintakse engleski jezik i ima mnogo zajedničkih elemenata sa sintaksom Vizualni jezik Basic for Applications (VBA).
Na primjer, jednostavno SQL izjava, koji dohvaća popis prezimena kontakata s imenom Mary, mogao bi izgledati ovako:
SELECT Prezime
IZ Kontakti
WHERE Ime = "Marija";
Bilješka: SQL jezik se ne koristi samo za izvođenje operacija nad podacima, već i za stvaranje i promjenu strukture objekata baze podataka, kao što su tablice. Dio SQL-a koji se koristi za stvaranje i modificiranje objekata baze podataka naziva se DDL. DDL nije obuhvaćen ovim člankom. Više informacija pogledajte Stvaranje ili izmjena tablica ili indeksa pomoću upita za definiciju podataka.
SELECT izjave
Naredba SELECT koristi se za opisivanje skupa podataka u SQL-u. Sadrži puni opis skup podataka koje je potrebno dohvatiti iz baze podataka, uključujući sljedeće:
tablice koje sadrže podatke;
veze između podataka iz različiti izvori;
polja ili izračuni na temelju kojih se biraju podaci;
uvjete odabira koje moraju zadovoljiti podaci uključeni u rezultat upita;
nužnost i način razvrstavanja.
SQL izjave
SQL naredba sastoji se od nekoliko dijelova koji se nazivaju klauzulama. Svaka klauzula u SQL izjavi ima svrhu. Potrebne su neke ponude. Donja tablica pokazuje SQL izjave najčešće korišten.
SQL izjava |
Opis |
Obavezno |
Definira polja koja sadrže potrebne podatke. |
||
Definira tablice koje sadrže polja navedena u klauzuli SELECT. |
||
Definira uvjete odabira polja koje moraju zadovoljiti svi zapisi uključeni u rezultate. |
||
Određuje redoslijed sortiranja rezultata. |
||
U SQL izrazu koji sadrži funkcije združivanja, specificira polja za koja vrijednost sažetka nije izračunata u klauzuli SELECT. |
Samo ako su takva polja prisutna |
|
SQL izraz koji sadrži funkcije združivanja definira uvjete koji se primjenjuju na polja za koja se izračunava vrijednost sažetka u klauzuli SELECT. |
SQL pojmovi
Svaka SQL rečenica sastoji se od pojmova koji se mogu usporediti s dijelovima govora. Donja tablica prikazuje vrste SQL izraza.
SQL izraz |
Usporedni dio govora |
Definicija |
Primjer |
identifikator |
imenica |
Naziv koji se koristi za identifikaciju objekta baze podataka, kao što je naziv polja. |
Klijenti [Broj telefona] |
operater |
glagol ili prilog |
Ključna riječ koja predstavlja ili modificira radnju. |
|
konstanta |
imenica |
Vrijednost koja se ne mijenja, kao što je broj ili NULL. |
|
izraz |
pridjev |
Kombinacija identifikatora, operatora, konstanti i funkcija dizajniranih za izračunavanje jedne vrijednosti. |
>= Proizvodi.[Cijena] |
Osnovne SQL klauzule: SELECT, FROM i WHERE
Opći format SQL naredbi je:
SELECT polje_1
IZ tablice_1
WHERE kriterij_1
;
Bilješke:
Access ne poštuje prijelome redaka u SQL izjavama. Unatoč tome, preporučuje se započeti svaku rečenicu s nova linija tako da je SQL naredba laka za čitanje i za osobu koja ju je napisala i za sve ostale.
Svaka SELECT naredba završava točkom i zarezom (;). Točka-zarez se može pojaviti ili na kraju zadnje rečenice ili u zasebnom retku na kraju SQL naredbe.
Primjer u Accessu
Primjer u nastavku pokazuje kako bi SQL izjava mogla izgledati u programu Access for jednostavan zahtjev po uzorku.
1. SELECT klauzula
2. OD odredbe
3. WHERE klauzula
Pogledajmo primjer rečenicu po rečenicu da bismo razumjeli kako funkcionira SQL sintaksa.
SELECT klauzula
SELECT, tvrtka
Ovo je SELECT klauzula. Sadrži naredbu (SELECT) iza koje slijede dva identifikatora ("[Adresa elektronička pošta]" i "Tvrtka").
Ako identifikator sadrži razmake ili posebni znakovi(na primjer, "Adresa e-pošte"), mora biti u pravokutnim zagradama.
Klauzula SELECT ne zahtijeva da navedete tablice koje sadrže polja i ne možete navesti uvjete odabira koje moraju ispuniti podaci uključeni u rezultate.
U SELECT naredbi, SELECT klauzula uvijek dolazi prije FROM klauzule.
FROM klauzula
IZ Kontakti
Ovo je FROM klauzula. Sadrži izjavu (FROM) nakon koje slijedi identifikator (Kontakti).
Klauzula FROM ne specificira polja za odabir.
WHERE klauzula
WHERE Grad="Seattle"
Ovo je klauzula WHERE. Sadrži izjavu (WHERE) iza koje slijedi izraz (City="Rostov").
Postoje mnoge stvari koje možete učiniti s klauzulama SELECT, FROM i WHERE. Za više informacija o korištenju ovih ponuda pogledajte sljedeće članke:
Razvrstavanje rezultata: ORDER BY
Kao u Microsoft Excel, u Accessu možete sortirati rezultate upita u tablici. Korištenjem klauzule ORDER BY, također možete odrediti kako se rezultati sortiraju kada se upit izvrši. Ako se koristi klauzula ORDER BY, mora se pojaviti na kraju SQL naredbe.
Klauzula ORDER BY sadrži popis polja za sortiranje, istim redoslijedom kojim će se sortiranje primijeniti.
Pretpostavimo, na primjer, da rezultate najprije treba sortirati prema polju "Tvrtka" silaznim redoslijedom, a zatim ako postoje zapisi s ista vrijednost polja "Tvrtka", - poredajte ih prema polju "E-mail adresa" uzlaznim redoslijedom. Klauzula ORDER BY bi izgledala ovako:
ORDER BY Company DESC,
Bilješka: Prema zadanim postavkama, Access razvrstava vrijednosti uzlaznim redoslijedom (A do Z, od najmanje do najveće). Da biste umjesto toga sortirali vrijednosti silaznim redoslijedom, morate navesti ključna riječ OPIS
Za više informacija o klauzuli ORDER BY, pogledajte članak o klauzuli ORDER BY.
Rad sa sažetim podacima: klauzule GROUP BY i HAVING
Ponekad morate raditi sa sažetim podacima, kao što je ukupna prodaja za mjesec ili najskuplji artikli na zalihama. Da biste to učinili, u klauzuli SELECT primijenite na polje funkcija agregata. Na primjer, ako biste pokrenuli upit da biste dobili broj adresa e-pošte za svaku tvrtku, klauzula SELECT mogla bi izgledati ovako:
Mogućnost korištenja određene agregatne funkcije ovisi o vrsti podataka u polju i željeni izraz. Za više informacija o dostupnim agregatnim funkcijama pogledajte SQL Statističke funkcije.
Određivanje polja koja se ne koriste u agregatnoj funkciji: klauzula GROUP BY
Kada koristite agregatne funkcije, obično morate stvoriti klauzulu GROUP BY. Klauzula GROUP BY navodi sva polja na koja se ne primjenjuje agregatna funkcija. Ako se agregatne funkcije primjenjuju na sva polja u upitu, ne morate stvoriti klauzulu GROUP BY.
Klauzula GROUP BY mora odmah slijediti klauzulu WHERE ili FROM ako ne postoji klauzula WHERE. Klauzula GROUP BY navodi polja istim redoslijedom kao klauzula SELECT.
Nastavimo prethodni primjer. U klauzuli SELECT, ako se agregatna funkcija primjenjuje samo na polje [Adresa e-pošte], klauzula GROUP BY bi izgledala ovako:
GRUPIRAJ PO Tvrtki
Za više informacija o klauzuli GROUP BY pogledajte članak o klauzuli GROUP BY.
Ograničavanje agregiranih vrijednosti korištenjem uvjeta grupiranja: klauzula HAVING
Ako trebate navesti uvjete za ograničavanje rezultata, ali koristi se polje na koje ih želite primijeniti funkcija agregata, klauzula WHERE se ne može koristiti. Umjesto toga treba koristiti klauzulu HAVING. Klauzula HAVING radi isto kao i klauzula WHERE, ali se koristi za agregirane podatke.
Pretpostavimo, na primjer, da je prvo polje u klauzuli SELECT AVG funkcija(koji izračunava prosjek):
SELECT COUNT(), Tvrtka
Ako želite ograničiti rezultate upita na temelju vrijednosti funkcije COUNT, ne možete primijeniti uvjet odabira na ovo polje u klauzuli WHERE. Umjesto toga, uvjet treba staviti u klauzulu HAVING. Na primjer, ako želite da vaš upit vrati retke samo ako tvrtka ima više adresa e-pošte, možete koristiti sljedeću klauzulu HAVING:
IMAJUĆI BROJ()>1
Bilješka: Upit može uključivati i klauzulu WHERE i klauzulu HAVING, s uvjetima odabira za polja koja se ne koriste u statističke funkcije, navedeni su u klauzuli WHERE, a uvjeti za polja koja se koriste u statističkim funkcijama navedeni su u klauzuli HAVING.
Za više informacija o klauzuli HAVING pogledajte članak o klauzuli HAVING.
Kombiniranje rezultata upita: operator UNION
Operator UNION koristi se za simultani pregled svih podataka koje vraća više sličnih upita za odabir kao kombinirani skup.
Operator UNION omogućuje vam kombiniranje dvije SELECT naredbe u jednu. SELECT izjave koje se spajaju moraju imati isti broj i redoslijed izlaznih polja s istim ili kompatibilnim tipovima podataka. Kada pokrenete upit, podaci iz svakog skupa podudarnih polja kombiniraju se u jedno izlazno polje, tako da izlaz upita ima onoliko polja koliko i svaka pojedinačna izjava SELECT.
Bilješka: U upitima za pridruživanje numeričkim i vrste teksta podaci su kompatibilni.
Pomoću operatora UNION možete odrediti trebaju li duplikati redaka, ako ih ima, biti uključeni u rezultate upita. Da biste to učinili, upotrijebite ključnu riječ SVE.
Zahtjev za spajanje dva SELECT izjave ima sljedeću osnovnu sintaksu:
SELECT polje_1
IZ tablice_1
UNIJA
SELECT polje_a
IZ tablice_a
;
Na primjer, pretpostavimo da imate dvije tablice pod nazivom "Proizvodi" i "Usluge". Obje tablice sadrže polja s nazivom proizvoda ili usluge, podatke o cijeni i jamstvu, kao i polje koje označava ekskluzivnost ponuđenog proizvoda ili usluge. Iako tablice "Proizvodi" i "Usluge" pružaju različite vrste jamstva, osnovne informacije su iste (jesu li određeni proizvodi ili usluge osigurani uz jamstvo kvalitete). Možete koristiti sljedeći upit za spajanje za spajanje četiri polja iz dvije tablice:
ODABERITE ime, cijenu, jamstvo_dostupno, ekskluzivna_ponuda
OD proizvoda
UNIJA SVE
ODABERITE ime, cijenu, jamstvo_dostupno, ekskluzivna_ponuda
FROM usluge
;
Za više informacija o kombiniranju naredbi SELECT pomoću operatora UNION pogledajte
Zadnja izmjena: 24.06.2017
SQL Server je jedan od naj popularni sustavi upravljanje bazom podataka (DBMS) u svijetu. Ovaj DBMS je prikladan za širok raspon projekata: od malih aplikacija do velikih, visoko opterećenih projekata.
SQL Server je stvoren od strane Microsofta. Prva verzija izašla je 1987. A trenutna verzija je verzija 16, koja je izašla 2016. i koristit će se u trenutnom vodiču.
SQL poslužitelj dugo vremena je bio isključivo sustav za upravljanje bazama podataka za Windows, ali od verzije 16 ovaj sustav je dostupan i na Linuxu.
SQL Server karakteriziraju značajke kao što su:
Performanse. SQL Server je vrlo brz.
Pouzdanost i sigurnost. SQL Server pruža enkripciju podataka.
Jednostavnost. Ovaj DBMS je relativno jednostavan za rad i administraciju.
Središnji aspekt MS SQL Servera, kao i svakog DBMS-a, je baza podataka. Baza podataka je spremište podataka organiziranih na određeni način. Često baza podataka fizički predstavlja datoteku na tvrdom disku, iako to dopisivanje nije potrebno. Sustavi za upravljanje bazama podataka ili DBMS-ovi koriste se za pohranjivanje i administriranje baza podataka. A upravo je MS SQL Server jedan od takvih DBMS-a.
Za organiziranje baza podataka koristi se MS SQL Server relacijski model. Ovaj model baze podataka je davne 1970. godine razvio Edgar Codd. A danas je to zapravo standard za organizaciju baza podataka.
Relacijski model uključuje pohranu podataka u obliku tablica, od kojih se svaka sastoji od redaka i stupaca. Svaka linija pohranjuje zasebni objekt, a stupci sadrže atribute ovog objekta.
Primarni ključ se koristi za identifikaciju svakog retka unutar tablice. Primarni ključ može biti jedan ili više stupaca. Koristeći primarni ključ na koji se možemo pozvati određeni niz u tablici. Prema tome, dva retka ne mogu imati isti primarni ključ.
Preko ključeva se jedna tablica može povezati s drugom, odnosno mogu se organizirati odnosi između dvije tablice. I sama tablica se može prikazati kao odnos.
Za interakciju s bazom podataka koristi se jezik SQL (Structured Query Language). Klijent (na primjer, vanjski program) šalje zahtjev u SQL-u koristeći poseban API. DBMS ispravno tumači i izvršava zahtjev, a zatim šalje rezultat izvršenja klijentu.
SQL je izvorno razvio IBM za sustav baze podataka pod nazivom System/R. Ujedno je i sam jezik nazvan SEQUEL (Structured English Query Language). Iako ni baza podataka ni sam jezik kasnije nisu službeno objavljeni, tradicionalno se sam izraz SQL često izgovara kao "nastavak".
Godine 1979. Relacijska Software Inc. razvio prvi sustav za upravljanje bazom podataka, nazvan Oracle, koji je koristio SQL jezik. Zbog uspjeha ovog proizvoda tvrtka je preimenovana u Oracle.
Nakon toga su se počeli pojavljivati drugi sustavi baza podataka koji su koristili SQL. Kao rezultat toga, 1989. godine Američki nacionalni institut za standarde (ANSI) kodificirao je jezik i objavio svoj prvi standard. Nakon toga, standard je povremeno ažuriran i dopunjen. Njegovo posljednje ažuriranje dogodilo se 2011. Ali unatoč postojanju standarda, proizvođači DBMS-a često koriste svoje vlastite implementacije SQL jezik, koji se međusobno malo razlikuju.
Postoje dvije varijante SQL jezika: PL-SQL i T-SQL. PL-SQL se koristi u DBMS-ovima kao što su Oracle i MySQL. T-SQL (Transact-SQL) koristi se u SQL Serveru. Zapravo, to je razlog zašto ćemo T-SQL razmatrati u ovom vodiču.
Ovisno o zadatku koji T-SQL naredba izvodi, može biti jedna od sljedećih vrsta:
CREATE : stvara objekte baze podataka (samu bazu podataka, tablice, indekse itd.)
ALTER: mijenja objekte baze podataka
DROP: Uklanja objekte baze podataka
TRUNCATE: uklanja sve podatke iz tablica
SELECT: dohvaća podatke iz baze podataka
AŽURIRANJE: ažurira podatke
INSERT: dodaje nove podatke
DELETE: briše podatke
GRANT: daje dopuštenja za pristup podacima
REVOKE: opoziva prava pristupa podacima
DDL (Jezik za definiranje podataka). Ova vrsta uključuje različite naredbe koje stvaraju bazu podataka, tablice, indekse, pohranjene procedure itd. Općenito, podaci su određeni.
Konkretno, sljedeće naredbe možemo klasificirati kao ovu vrstu:
DML (jezik za manipulaciju podacima). U ovu vrstu spadaju naredbe za odabir podataka, njihovo ažuriranje, dodavanje, brisanje – općenito sve one naredbe kojima možemo upravljati podacima.
Ovoj vrsti pripadaju sljedeće naredbe:
DCL (Jezik kontrole podataka / Jezik kontrole pristupa podacima). Ova vrsta uključuje naredbe koje upravljaju pravima pristupa podacima. Konkretno, to su sljedeće naredbe:
SQL sintaksa
Ovaj odjeljak opisuje glavne razlike u sintaksi SQL jezika koji koriste Firebird DBMS i MS SQL.
Firebird i MS SQL DBMS mogu izravno upućivati na objekte baze podataka (tablice, polja, itd.) njihovim imenima, ako nazivi objekata ne sadrže razmake ili druge znakove koji nisu dopušteni u izravnoj vezi (na primjer, nelatinična slova ). Za korištenje razmaka i drugih znakova, MS SQL DBMS koristi uglate zagrade, [ i ] , a Firebird DBMS koristi dvostruki navodnici, ". Još jedna razlika je mogućnost korištenja u MS DBMS-u SQL sheme za referencu objekta: vlasnik_objekta_baze podataka.objekt. Firebird DBMS ne dopušta ovu notaciju.
Pažnja
MS SQL DBMS koristi imena objekata koja razlikuju velika i mala slova ako ste tijekom instalacije odabrali korištenje znakova koji razlikuju velika i mala slova;
inače, nazivi objekata su neosjetljivi na velika i mala slova. smiješno? nije dobro...
Trag
MS SQL DBMS može raditi s identifikatorima čija su imena u dvostrukim navodnicima, ali prema zadanim postavkama ova je značajka dostupna samo kada joj se pristupa putem OLE DB i ODBC, ali ne i kada joj se pristupa putem DB-Library. Iz tog razloga ovu praksu rada treba izbjegavati.
DBMS MS SQL 7 i noviji podržava spojeve koji se mogu ažurirati (ažuriranje, brisanje, umetanje). Firebird DBMS ne prepoznaje ovu sintaksu.
Vrste podataka, naravno, variraju. Iako oba DBMS-a imaju zajednički podskup najčešće korištenih tipova. Ovaj problem rijetko uzrokuje probleme prilikom migracije baze podataka.
Postoje različiti formati za određivanje konstanti niza za datume. Firebird DBMS prihvaća nizove raznih formata, bez obzira na korištenu platformu. MS SQL DBMS, pak, koristi kombinaciju formata neovisnih o poslužitelju, platformi poslužitelja i formata postavljanja veze klijenta. Uz to, metode pristupa MS SQL DBMS-u obično uvode jednu ili dvije razine u kojima se konstanta niza može pretvoriti u datum na ovaj ili onaj način.
U MS SQL DBMS možete definirati više varijable okruženja nego u Firebird DBMS-u, ali najčešće se mogu pronaći u Firebird DBMS-u (dohvaćanje identifikatora i korisničkog imena). Jedina bitna varijabla koja nedostaje u Firebird DBMS-u je varijabla koja vraća broj redaka zadnje operacije (od verzije 1.5 Firebird DBMS-a takva varijabla je uvedena - pribl. prev.).
Važna razlika bila je u tome što Firebird 1.0 DBMS nije podržavao CASE naredbu MS SQL DBMS-a. Ponekad je bilo moguće zamijeniti njegovu funkcionalnost korištenjem pohranjene procedure. Počevši od verzije 1.5, Firebird DBMS podržava korištenje CASE operatora.
Mala razlika između DBMS-a je u tome što MS SQL DBMS ne koristi graničnike za naredbe, što može biti izvor teško uočljivih grešaka tijekom prijelaza, posebno kada se koristi mnogo zagrada. Firebird DBMS u skriptama zahtijeva završetak svake izjave točkom i zarezom (osim ako nije definiran neki drugi graničnik - pribl. prijevod), tako da je greške lakše otkriti.
I MS SQL i Firebird podržavaju komentare između graničnika /* i */. MS SQL DBMS također podržava sintaksu "dvije crtice" za komentar u jednom retku. Neki Firebird DBMS pomoćni programi također podržavaju ovu sintaksu.
DOK
WHILE operator postoji iu Firebirdu iu MS SQL DBMS-u, ali s nekim razlikama. Ne postoji BREAK operatori ili CONTINUE , ali se mogu oponašati pomoću dodatnih konstrukata. Također postoji mala razlika u korištenoj sintaksi: Firebird DBMS zahtijeva DO ključnu riječ nakon uvjeta petlje. Usporedite sljedeće ekvivalentne dijelove koda.
/* Firebird sintaksa. */ DOK (tj< 3) DO BEGIN i = i + 1; j = j * 2; END /* Синтакс MS SQL. */ WHILE (i < 3) BEGIN SET @i = @i + 1 SET @j = @j * 2 END
POVRATAK
Operator RETURN u MS SQL DBMS-u vraća vrijednost cjelobrojne varijable i zaustavlja izvršenje. U Firebird DBMS-u postoji naredba EXIT koja prenosi kontrolu na konačni END pohranjene procedure. Međutim, ne postoji skrivena povratna varijabla, pa ako trebate vratiti vrijednost (što je izborno u MS SQL-u), morate eksplicitno deklarirati povratnu varijablu u proceduri.
ČEKATI
Operator WAITFOR u MS SQL DBMS-u obustavlja izvršenje na neko vrijeme ili do navedenog vremena.
Nešto slično se može učiniti korištenjem korisnički definiranih funkcija (UDF) u Firebird DBMS-u. Ali u oba DBMS-a treba isključiti korištenje takvog operatora, jer je interakcija s klijentom potpuno obustavljena (u Firebird DBMS-u to može dovesti do obustave servisiranja svih veza, a ne samo veze koja je pozvala analogni navedenog operatera - pribl.
Standardni operatori Standardni operatori
dostupni u oba DBMS-a su SELECT, INSERT, UPDATE i DELETE.
Firebird i MS SQL DBMS ih podržavaju, ali MS SQL DBMS ima nekoliko nestandardnih proširenja za ove operatore o kojima treba razgovarati u slučaju da se koriste.
U Firebird DBMS-u, naredba SELECT vam ne dopušta korištenje ključne riječi INTO za stvaranje nove tablice u hodu. Umjesto toga, ključna riječ INTO koristi se za povezivanje rezultata upita s varijablom. /* MS SQL sintaksa za dodjeljivanje vrijednosti polja varijabli. */ SELECT @my_state = stanje FROM autora WHERE auth_name = "John" /* Firebird sintaksa. */ SELECT stanje INTO:state /* --> obratite pažnju na ":" ispred naziva varijable */ FROM autora WHERE auth_name = "John" U DBMS MS SQL 7 i novijim verzijama SELECT izjava Možete navesti TOP specifikator da ograničite vraćeni skup podataka. Ova funkcija u
sadašnji trenutak
je u razvoju za Firebird DBMS. (FIRST i SKIP specifikatori uvedeni su u Firebird DBMS počevši od verzije 1.5 - pribl. prijevod.) na steroidima. Ako je takva funkcija stvarno potrebna, onda se može implementirati u Firebird DBMS korištenjem pogleda.
I MS SQL i Firebird DBMS podržavaju regularnu sintaksu DELETE operator. MS SQL DBMS također podržava operator TRUNCATE TABLE, koji je učinkovitiji (ali i opasniji) od operatora DELETE.
(MS SQL DBMS također podržava sintaksu naredbe DELETE u kojoj se spajanje izvodi. - pribl. prijevod.)
/* MS SQL sintaksa za brisanje svih unosa my_table. */ TRUNCATE TABLE my_table /* ...ili... */ DELETE FROM my_table /* Firebird sintaksa. */ IZBRIŠI IZ moje_tablice
Korištenje Transakcija
U Firebird DBMS-u, transakcije se ne koriste "izravno" u DSQL-u (dinamički SQL). U ovom slučaju imenovane transakcije uopće nisu dostupne. (DSQL izjave se izvode u kontekstu transakcija koje pokreće i kontrolira aplikacija klijenta. - pribl. prijevod.) Sintaksa oba DBMS-a podržava ključnu riječ WORK radi kompatibilnosti.
inače, nazivi objekata su neosjetljivi na velika i mala slova. smiješno? nije dobro...
U većini slučajeva problemi s transakcijama ne bi trebali nastati: obično se koristi eksplicitno upravljanje transakcijama na licu mjesta u MS SQL DBMS-u zbog nedostatka podrške za upravljanje putem iznimaka.
MS SQL DBMS ima globalnu varijablu XACT_ABORT, koja kontrolira vraćanje transakcije unatrag kada se pojavi greška u vremenu izvođenja.
U suprotnom, trebate provjeriti vrijednost varijable @@ERROR nakon izvršavanja svake naredbe.
/* MS SQL sintaksa. */ DECLARE my_cursor CURSOR FOR SELECT au_lname FROM authors ORDER BY au_lname DECLARE @au_lname varchar(40) OPEN my_cursor FETCH NEXT FROM my_cursor INTO @au_lname WHILE @@FETCH_STATUS = 0 BEGIN /* Učinite nešto zanimljivo s @au_lname. */ FETCH NEXT FROM my_cursor END CLOSE my_cursor DEALLOCATE my_cursor /* Firebird sintaksa. */ DEKLARACIJA VARIJABLE au_lname VARCHAR(40);
... FOR SELECT au_lname FROM autora ORDER BY au_lname INTO:au_lname DO BEGIN /* Učinite nešto zanimljivo s au_lname. */ KRAJ