„Access SQL“ palyginimas su „SQL Server TSQL“

Taikoma
„Access“, skirta „Microsoft 365“ „Access 2024“ Access 2021 Access 2019 Access 2016

Jei perkeliate "Access" duomenis į „SQL Server“ arba sukuriate "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 ieškokite "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“ galite naudoti parinktį SET ANSI_NULLS OFF tiesioginiam lygybės palyginimui su NULL naudojant = and <> operatorius. 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 CAST ir CONVERT TSQL funkcijas, nors yra ir kitų konvertavimo funkcijų, skirtų specializuotiems poreikiams. 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 nereikalingos.

    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 atitinkamos TSQL funkcijos nėra, paprastai galite sukurti apskaičiuojamąjį stulpelį (TSQL terminas, naudojamas apskaičiuotajam stulpeliui), kad galėtumėte daryti tai, ką norite. TSQL turi daug funkcijų ir naudinga sužinoti, ką galima atlikti. Daugiau informacijos ieškokite 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 Chr funkcija CHAR
Konvertavimas Day funkcija DAY
Konvertavimas FormatNumber funkcija FORMATAS
Konvertavimas FormatPercent funkcija FORMATAS
Konvertavimas Str Funkcija STR
Konvertavimas Tipo konvertavimo funkcijos CAST ir CONVERT
Data / laikas Date funkcija CURRENT_TIMESTAMP
Data / laikas Day funkcija DATEFROMPARTS
Data / laikas DateAdd funkcija DATEADD
Data / laikas DateDiff funkcija DATEDIFF
DATEDIFF_BIG
Data / laikas DatePart funkcija DATEPART
Data / laikas DateSerial funkcija DATEFROMPARTS
Data / laikas DateValue funkcija DATOS PAVADINIMAS
Data / laikas Hour funkcija TIMEFROMPARTS
Data / laikas Minute funkcija TIMEFROMPARTS
Data / laikas Month funkcija MONTH
Data / laikas Now funkcija SYSDATETIME
Data / laikas Second funkcija TIMEFROMPARTS
Time funkcija TIMEFROMPARTS
Data / laikas TimeSerial funkcija TIMEFROMPARTS
Data / laikas Weekday funkcija DATEPART
DATOS PAVADINIMAS
Data / laikas Year funkcija YEAR
DATEFROMPARTS
Domeno agregavimas DFirst, DLast funkcijos FIRST_VALUE
LAST_VALUE
Matematika Abs funkcija ABS
Matematika Atn funkcija ATAN
ATN2
Matematika Cos funkcija COS
ACOS
Matematika Exp funkcija EXP
Matematika Int, Fix funkcijos FLOOR
Matematika Log funkcija LOG
LOG10
Matematika Rnd funkcija RAND
Matematika Round funkcija ROUND
Matematika Sgn funkcija SIGN
Matematika Sin funkcija SIN
Matematika Sqr funkcija SQRT
Programos srautas Choose funkcija CHOOSE
Programos srautas IIf funkcija IIF
Statistinės Avg funkcija VID.
SQL agregavimas Count funkcija COUNT
COUNT_BIG
SQL agregavimas Min, Max funkcijos MIN
MAX
SQL agregavimas StDev, StDevP funkcijos STDEV
STDEVP
SQL agregavimas Sum funkcija SUM
SQL agregavimas Var, VarP funkcijos VAR
VARP
Tekstas Format funkcija FORMATAS
Tekstas LCase funkcija LOWER
Tekstas Left funkcija Į kairę
Tekstas Len funkcija LEN
Tekstas LTrim, RTrim ir Trim funkcijos TRIM
LTRIM
RTRIM
Tekstas Replace funkcija PAKEISTI
Tekstas Right funkcija Į DEŠINĘ
Tekstas StrReverse funkcija ATVIRKŠTINĖ EIGA
Tekstas UCase funkcija UPPER