Usporedba programa Access SQL sa SQL poslužiteljem TSQL

Primjenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ako podatke programa Access migrirate u SQL Server ili stvorite rješenje programa Access sa sustavom SQL Server kao pozadinskom bazom podataka, važno je da znate razlike između programa Access SQL i SQL Server 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 Transact-SQL reference.

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 definirani stupac>]
Ili
U prikazu SQL koristite 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:

    • Testirajte 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 Server možete koristiti mogućnost SET ANSI_NULLS OFF radi izravnog usporedbe jednakosti s NULL pomoću operatora = and<>. 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 sustavu SQL Server primarno koristite TSQL funkcije CAST i CONVERT, iako postoje i druge funkcije pretvorbe za posebne 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 sustavu SQL Server 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 nema odgovarajuće TSQL funkcije, obično možete stvoriti izračunati stupac (TSQL izraz koji se koristi za izračunati stupac) da biste radili š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 Funkcija Chr CHAR
Pretvorba Funkcija Day DAY
Pretvorba Funkcija FormatNumber OBLIKOVANJE
Pretvorba Funkcija FormatPercent OBLIKOVANJE
Pretvorba Funkcija Str STR
Pretvorba Funkcije pretvorbe vrsta CAST and CONVERT
Datum/vrijeme Funkcija Date CURRENT_TIMESTAMP
Datum/vrijeme Funkcija Day DATEFROMPARTS
Datum/vrijeme Funkcija DateAdd DATEADD
Datum/vrijeme Funkcija DateDiff DATEDIFF
DATEDIFF_BIG
Datum/vrijeme Funkcija DatePart DATEPART
Datum/vrijeme Funkcija DateSerial DATEFROMPARTS
Datum/vrijeme Funkcija DateValue DATENAME
Datum/vrijeme Funkcija Hour TIMEFROMPARTS
Datum/vrijeme Funkcija Minute TIMEFROMPARTS
Datum/vrijeme Funkcija Month MONTH
Datum/vrijeme Funkcija Now SYSDATETIME
Datum/vrijeme Funkcija Second TIMEFROMPARTS
Funkcija Time TIMEFROMPARTS
Datum/vrijeme Funkcija TimeSerial TIMEFROMPARTS
Datum/vrijeme Funkcija Weekday DATEPART
DATENAME
Datum/vrijeme Funkcija Year YEAR
DATEFROMPARTS
Agregat domene Funkcije DFirst, DLast FIRST_VALUE
LAST_VALUE
Matematika Funkcija Abs ABS
Matematika Funkcija Atn ATAN
ATN2
Matematika Funkcija Cos COS
ACOS
Matematika Funkcija Exp EXP
Matematika Funkcije Int, Fix FLOOR
Matematika Funkcija Log LOG
LOG10
Matematika Funkcija Rnd RAND
Matematika Funkcija Round ROUND
Matematika Funkcija Sgn SIGN
Matematika Funkcija Sin SIN
Matematika Funkcija Sqr SQRT
Tok programa Funkcija Choose CHOOSE
Tok programa Funkcija IIf IIF
Statističke Funkcija Avg Prosljeđivanje
SQL agregat Funkcija Count COUNT
COUNT_BIG
SQL agregat Funkcije Min, Max MIN
MAX
SQL agregat Funkcije StDev, StDevP STDEV
STDEVP
SQL agregat Funkcija Sum SUM
SQL agregat Funkcije Var, VarP VAR
VARP
Tekst Funkcija Format OBLIKOVANJE
Tekst Funkcija LCase LOWER
Tekst Funkcija Left LIJEVO
Tekst Funkcija Len LEN
Tekst Funkcije LTrim, RTrim i Trim TRIM
LTRIM
RTRIM
Tekst Funkcija Replace ZAMIJENI
Tekst Funkcija Right DESNO
Tekst Funkcija StrReverse REVERSE
Tekst Funkcija UCase UPPER