Ako migrirate svoje Access podatke na SQL poslužitelj ili ako stvorite Access rješenje sa SQL poslužiteljem kao pozadinsku bazu podataka, od vitalne je važnosti da znate razlike između programa Access SQL i SQL poslužitelja Transact SQL (TSQL). Slijede važne varijacije koje trebate znati kako bi vaše rješenje funkcioniralo kako je planirano.
Dodatne informacije potražite u članku Access SQL: osnovni koncepti, vokabular i sintaksa te Referenca za transact-SQL.
Razlike u sintaksi i izrazu
Postoji nekoliko razlika sintakse i izraza koje zahtijevaju pretvorbu. Sljedeća tablica sadrži popis najčešćih mogućnosti.
Razlika |
Access SQL |
SQL poslužitelj TSQL |
Atribut relacijske baze podataka |
Obično se naziva poljem |
Obično se naziva stupcem |
Slovni niz |
Navodnik ("), na primjer "Mary Q. Contrary" |
Apostrof ('), na primjer 'Mary Q. Contrary' |
Konkretni datum |
Znak za ljestve (#), na primjer #1/1/2019# |
Apostrof ('), na primjer '1/1/2019' |
Višestruki zamjenski znak. |
Zvjezdica (*), na primjer "Cath*" |
Postotak (%), na primjer 'Cath%' |
Jedan zamjenski znak. |
Upitnik (?), na primjer "Cath?" |
Podvlaka (_), na primjer "Cath_" |
Operator modula |
MOD operator, na primjer Value1 MOD Value2 |
Postotak (%), na primjer Value1 % Value2 |
Booleove vrijednosti |
WHERE Bitvalue = [Točno | Netočno] Ili WHERE Bitvalue = [-1 | 0] |
WHERE Bitvalue = [1 | 0] |
Parametri |
[<Naziv koji nije definiran stupac>] Ili U prikazu SQL možete koristiti deklaraciju SQL parametara |
@ParamName |
Napomene
-
Access koristi navodnike (") kod naziva tablica i objekata. T-SQL ih može koristiti za nazive tablica s razmacima, ali to nije standardno pravilo imenovanja. U većini slučajeva, imena objekata treba preimenovati bez razmaka, ali i upiti moraju biti ponovno napisani kako bi odražavali nova imena tablica. Koristite uglate zagrade [ ] za tablice koje se ne mogu preimenovati, ali koje ne odgovaraju standardima imenovanja. Access također dodaje dodatne zagrade oko parametara u upitima, ali one se mogu ukloniti u T-SQL-u.
-
Razmislite o upotrebi kanonskog formata datuma, yyyy-mm-dd hh:nn:ss, koji je ODBC standard za datume pohranjene kao znakove koji osigurava konzistentan način da ih prikažete kroz baze podataka i čuva redoslijed sortiranja datuma.
-
Da biste izbjegli zabunu prilikom uspoređivanja Booleovih vrijednosti, možete koristiti sljedeću usporedbu za Access i SQL Poslužitelj:
-
Testiranje za neistinitu vrijednost WHERE Bitvalue = 0
-
Testirajte za istinitu vrijednost WHERE Bitvalue <> 0
-
Null vrijednosti
Null vrijednost nije prazno polje koje znači „uopće nema vrijednosti“. Null vrijednost je rezervirano mjesto što znači da podaci nedostaju ili su nepoznati. Sustavi baza podataka koji prepoznaju null vrijednosti implementiraju „trovrijednosnu logiku“, što znači da nešto može biti istinito, neistinito ili nepoznato. Ako ne rukujete ispravno null vrijednostima, možete dobiti netočne rezultate prilikom uspoređivanja jednakosti ili procjene WHERE uvjeta. Evo usporedbe kako Access i SQL poslužitelj obrađuju null vrijednosti.
Onemogući null vrijednosti u tablici
u sustavu Access i SQL poslužitelju zadano je iskustvo da su vrijednosti null omogućene. Da biste onemogućili null vrijednosti u stupcu tablice, učinite sljedeće:
-
U programu Access postavite Obavezno svojstvo polja na Da.
-
U SQL poslužitelju dodajte atribut NOT NULL stupcu u naredbi CREATE TABLE.
Testirajte null vrijednosti u uvjetu WHERE
Koristite predikate usporedbe IS NULL i IS NOT NULL:
-
U programu Access koristite IS NULL ili IS NOT NULL. Na primjer:
SELECT … WHERE column IS NULL.
-
U SQL poslužitelju koristite IS NULL ili IS NOT NULL. Na primjer:
SELECT … WHERE field IS NULL
Pretvorite null vrijednosti s funkcijama
Koristite null funkcije za zaštitu izraza i vraćanje alternativnih vrijednosti:
-
U programu Access upotrijebite funkciju NZ (Value, [valutifnull]) koja vraća 0 ili neku drugu vrijednost. Na primjer:
SELECT AVG (NZ (Weight, 50) ) FROM Product
-
U SQL poslužitelju koristite funkciju ISNULL (Value, replacement_value) koja vraća 0 ili neku drugu vrijednost. Na primjer:
SELECT AVG (ISNULL (Weight, 50)) FROM Product
Razumjeti opcije baze podataka
Neki sustavi baze podataka imaju vlasničke mehanizme:
-
U programu Access nema opcija baze podataka koje se odnose na Null.
-
U SQL poslužitelju možete koristiti opciju SET ANSI_NULS OFF za izravne usporedbe jednakosti s funkcijom NULL pomoću operatora = i <>. Preporučujemo da izbjegavate korištenje ove opcije jer se ne odobrava, a može zbuniti druge koji se oslanjaju na funkcije usklađene s ISO standardom.
Pretvorba i dodjela
Kad god radite s podacima ili programiranjem, postoji stalna potreba za pretvorbom iz jednog tipa podataka u drugi. Proces pretvorbe može biti jednostavan ili kompliciran. Uobičajeni problemi o kojima morate razmišljati su: implicitna ili eksplicitna pretvorba, aktualne regionalne postavke datuma i vremena, zaokruživanje ili skraćivanje brojeva i veličina vrste podataka. Ne postoji zamjena za temeljito testiranje i potvrđivanje rezultata.
U programu Access koristite Funkcije pretvorbe vrste, kojih je jedanaest, svaka počinje slovom C, po jedan za svaku vrstu podataka. Na primjer, za pretvaranje broja s pomičnim zarezom u niz:
CStr(437.324) returns the string "437.324".
U SQL poslužitelj primarno koristite CAST and CONVERT TSQL funkcije, iako postoje i druge funkcije pretvorbe za specijalizirane potrebe. Na primjer, za pretvaranje broja s pomičnim zarezom u niz:
CONVERT(TEXT, 437.324) returns the string "437.324"
Funkcije DateAdd, DateDiff i DatePart
Ove uobičajene funkcije datuma su slične (DateAdd, DateDiff i DatePart) u programu Access i TSQL-u, ali se uporaba prvog argumenta razlikuje.
-
U programu Access prvi se argument naziva interval, a to je izraz niza koji zahtijeva navodnike.
-
U SQL poslužitelju prvi se argument naziva datepart, i koristi vrijednosti ključnih riječi koje ne zahtijevaju navodnike.
Komponenta
Access
SQL poslužitelj
Godina
"yyyy"
year, yy, yyyy
Tromjesečje
"q"
tromjesečje, qq, q
Mjesec
"m"
mjesec, mm, m
Dan u godini
"y"
dangodine, dy, y
Dan
"d"
day, dd, d
Tjedan
"ww"
wk, ww
Dan u tjednu
"w"
dan u tjednu, dw
Sat
"h"
sat, hh
Minuta
"n"
minuta, mi, n
Sekunda
"s"
sekunda, ss, s
Milisekunda
milisekunda, ms
Usporedba funkcija
Upiti za Access mogu sadržavati izračunate stupce koji ponekad koriste funkcije programa Access da bi dobili rezultate. Kada migrirate upite u SQL poslužitelj, trebate zamijeniti funkciju Access s ekvivalentnom TSQL funkcijom ako je dostupna. Ako ne postoji odgovarajuća TSQL funkcija, tada obično možete stvoriti izračunati stupac (TSQL izraz koji se koristi za izračunati stupac) da biste napravili ono što želite. TSQL ima široku lepezu funkcija i vama će koristiti da vidite što je dostupno. Dodatne informacije potražite u članku Koje su funkcije SQL baze podataka?.
Sljedeća tablica pokazuje koja funkcija programa Access ima odgovarajuću TSQL funkciju.
Access kategorija |
Access funkcija |
TSQL funkcija |
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Datum/vrijeme |
||
Agregat domene |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Matematičke |
||
Tok programa |
||
Tok programa |
||
Statističke |
||
SQL agregat |
||
SQL agregat |
||
SQL agregat |
||
SQL agregat |
||
SQL agregat |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |
||
Tekst |