Jei perkelsite „Access“ duomenis į „SQL Server“ arba sukursite „Access“ sprendimą su „SQL Server“ kaip vidinę duomenų bazę, labai svarbu žinoti skirtumus tarp „Access SQL“ ir „SQL Server Transact SQL“ (TSQL). Nuo to priklauso skirtingų jūsų sprendimo variantų tinkamas veikimas.
Daugiau informacijos žr. "Access SQL": pagrindinės sąvokos, žodynas ir sintaksė bei "Transact-SQL" nuoroda.
Sintaksės ir reiškinių skirtumai
Yra keli sintaksės ir reiškinių skirtumai, kuriuos būtina konvertuoti. Toliau pateiktoje lentelėje apibendrinti dažniausi skirtumai.
Skirtumas |
„Access SQL“ |
„SQL Server TSQL“ |
Sąryšinės duomenų bazės atributas |
Paprastai vadinamas lauku |
Paprastai vadinamas stulpeliu |
Eilučių literalai |
Kabutės ("), pvz.,"Miglė Bočkutė" |
Apostrofas ('), pvz.,'Miglė Bočkutė' |
Datų literalai |
Svaro ženklas (#), pvz., #1/1/2019# |
Apostrofas ('), pvz., '1/1/2019' |
Kelių pakaitos simbolių ženklas |
Žvaigždutė (*), pvz., "Janina*" |
Procentas (%), pvz., 'Janina%' |
Vieno pakaitos simbolio ženklas |
Klaustukas (?), pvz., "Janina?" |
Pabraukimo simbolis (_), pvz., "Janina_" |
Liekanos operatorius |
MOD operatorius, pvz., reikšmė1 MOD reikšmė2 |
Procentas (%), pvz., reikšmė1 % reikšmė2 |
Bulio logikos reikšmės |
WHERE bito reikšmė = [Teisinga | Klaidinga] Arba WHERE bito reikšmė = [-1 | 0] |
WHERE bito reikšmė = [1 | 0] |
Parametrai |
[<Pavadinimas, kuris nėra apibrėžtas stulpelis>] Arba SQL rodinyje naudokite SQL parametrų deklaraciją |
@ParamName |
Pastabos
-
„Access“ naudoja kabučių simbolius (") aplink lentelės pavadinimus ir objektus. T-SQL gali juos naudoti lentelių pavadinimams su tarpais, bet tai nėra įprasta pavadinimų suteikimo praktika. Daugeliu atvejų objektų pavadinimai turi būti pervardijami be tarpų, tačiau užklausas taip pat būtina perrašyti, kad būtų atspindėti nauji lentelių pavadinimai. Lentelėms, kurių negalima pervardyti, tačiau kurios neatitinka pavadinimų suteikimo standartų, naudokite skliaustus [ ]. „Access“ taip pat prideda papildomų skliaustelių aplink užklausų parametrus, tačiau juos galima pašalinti T-SQL.
-
Apsvarstykite galimybę naudoti įprastą datų formatą MMMM-mm-dd hh: NN: SS, kuris yra ODBC standartas, skirtas datoms, saugomoms kaip simboliai, todėl nuosekliai vaizduoja datas duomenų bazėse ir išsaugo datų rūšiavimo tvarką.
-
Jei norite, kad lyginant Bulio logikos reikšmes nekiltų painiavos, galite naudoti šį „Access“ ir „SQL Server“ palyginimą:
-
Klaidingų reikšmių tikrinimas WHERE bito reikšmė = 0
-
Teisingos reikšmės tikrinimas WHERE bito reikšmė <> 0
-
Nulinės reikšmės
Nulinė reikšmė nėra tuščias laukas, kuris reiškia, kad „nėra jokios reikšmės“. Nulinė reikšmė yra vietos rezervavimo ženklas, kuris reiškia, kad duomenų trūksta arba jie nežinomi. Duomenų bazių sistemos, kurios atpažįsta nulines reikšmes, naudoja „trijų reikšmių logiką“, o tai reiškia, kad kažkas gali būti teisinga, klaidinga arba nežinoma. Jei netinkamai apdorojate nulines reikšmes, galite gauti neteisingų rezultatų atlikdami lygybės palyginimus arba vertindami WHERE reiškinius. Pateikiame „Access“ ir „SQL Server“ nulinių reikšmių tvarkymo palyginimą.
Nulinių reikšmių išjungimas lentelėje
„Access“ ir „SQL Server“ numatytoji patirtis yra ta, kad nulinės reikšmės yra įgalintos. Jei norite išjungti nulines reikšmes lentelės stulpelyje, atlikite šiuos veiksmus:
-
„Access“ nustatykite lauko Būtina ypatybę į Taip.
-
„SQL Server“ įtraukite atributą NOT NULL į stulpelį reiškinyje CREATE TABLE.
Nulinių reikšmių tikrinimas WHERE reiškinyje
Naudokite IS NULL ir IS NOT NULL palyginimo sąlygas:
-
„Access“ naudokite IS NULL arba IS NOT NULL. Pavyzdžiui:
SELECT … WHERE column IS NULL.
-
„SQL Server“ naudokite IS NULL arba IS NOT NULL. Pavyzdžiui:
SELECT … WHERE field IS NULL
Nulinių reikšmių konvertavimas naudojant funkcijas
Naudokite nulines funkcijas, kad apsaugotumėte savo reiškinius ir pateiktumėte alternatyvias reikšmes:
-
„Access“ naudokite funkciją NZ (reikšmė, [valueifnull]), kuri pateikia 0 arba kitą reikšmę. Pavyzdžiui:
SELECT AVG (NZ (Weight, 50) ) FROM Product
-
„SQL Server“ naudokite funkciją ISNULL (reikšmė, replacement_value), kuri pateikia 0 arba kitą reikšmę. Pavyzdžiui:
SELECT AVG (ISNULL (Weight, 50)) FROM Product
Duomenų bazės parinkčių supratimas
Kai kurios duomenų bazių sistemos turi nuosavybių mechanizmų:
-
„Access“ nėra jokių duomenų bazių parinkčių, kurios priklauso nuo Null.
-
„SQL Server“ tiesioginiam lygybės palyginimui su NULL naudojant = ir <> operatorius galima naudoti parinktį SET ANSI_NULLS OFF. Rekomenduojame nenaudoti šios pasirinkties, nes ji yra pasenusi ir gali klaidinti kitus, kurie naudoja ISO suderinamą nulinių reikšmių tvarkymo funkciją.
Konvertavimas ir liejimas
Kai dirbate su duomenimis arba programuojate, nuolat reikia konvertuoti vieno tipo duomenis į kito tipo duomenis. Konvertavimo procesas gali būti paprastas arba sudėtingas. Dažniausiai pasitaikantys punktai, kuriuos reikia apgalvoti, yra: numanomas arba aiškus konvertavimas, esamos datos ir laiko regiono parametrai, skaičių apvalinimas ar nurašymas ir duomenų tipo dydžiai. Būtina išsamiai patikrinti ir patvirtinti savo rezultatus.
„Access“ naudojate tipo konvertavimo funkcijas, kurių yra vienuolika, kiekviena prasideda raide C, po vieną kiekvienam duomenų tipui. Pvz., jei norite konvertuoti skaičių su slankiuoju kableliu į eilutę:
CStr(437.324) returns the string "437.324".
„SQL Server“ pirmiausia naudojate TSQL funkcijas CAST ir CONVERT, nors specialiems poreikiams yra kitų Konvertavimo funkcijų. Pvz., jei norite konvertuoti skaičių su slankiuoju kableliu į eilutę:
CONVERT(TEXT, 437.324) returns the string "437.324"
Funkcijos „DateAdd“, „DateDiff“ ir „DatePart“
Šios dažniausiai naudojamos datos funkcijos yra panašios („DateAdd“, „DateDiff“ ir „DatePart“) „Access“ ir TSQL, tačiau pirmo argumento naudojimas skiriasi.
-
„Access“ pirmasis argumentas vadinamas intervalu ir tai yra eilutės reiškinys, kuriam būtinos kabutės.
-
„SQL Server“ pirmasis argumentas vadinamas DatePart ir naudoja raktinių žodžių reikšmes, kurioms kabutės nebūtinos.
Komponentas
Access
SQL Server
Metai
"yyyy"
metai, yy, yyyy
Ketvirtis
"q"
ketvirtis, qq, q
Mėnuo
„m“
mėnuo, mm, m
Metų diena
„y“
dayofyear, Dy, y
Diena
„d“
diena, dd, d
Savaitė
"ww"
wk, ww
Savaitės diena
"w"
weekday, dw
Valanda
"h"
valanda, hh
Minutė
"n"
minute, mi, n
Sekundė
"s"
second, ss, s
Milisekundė
millisecond, ms
Funkcijų palyginimas
„Access“ užklausose gali būti apskaičiuotų stulpelių, kurie rezultatams gauti kartais naudoja „Access“ funkcijas. Kai perkeliate užklausas į „SQL Server“, būtina pakeisti „Access“ funkciją lygiaverte TSQL funkcija, jei ji yra pasiekiama. Jei nėra atitinkamos TSQL funkcijos, tada paprastai galima sukurti apskaičiuojamąjį stulpelį (TSQL terminas, naudojamas apskaičiuojamajam stulpeliui), kad galėtumėte atlikti tai, ko norite. TSQL turi daug funkcijų ir naudinga sužinoti, ką galima atlikti. Daugiau informacijos žr. Kas yra SQL duomenų bazės funkcijos?.
Toliau pateiktoje lentelėje parodyta, kuri „Access“ funkcija turi atitinkamą TSQL funkciją.
„Access“ kategorija |
„Access“ funkcija |
TSQL funkcija |
Konvertavimas |
||
Konvertavimas |
||
Konvertavimas |
||
Konvertavimas |
||
Konvertavimas |
||
Konvertavimas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Data / laikas |
||
Domeno agregavimas |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Programos srautas |
||
Programos srautas |
||
Statistinės |
||
SQL agregavimas |
||
SQL agregavimas |
||
SQL agregavimas |
||
SQL agregavimas |
||
SQL agregavimas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |
||
Tekstas |