Usporedba programa Access SQL sa SQL poslužiteljem TSQL
Applies ToAccess za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Funkcija Chr

CHAR

Pretvorba

Funkcija Day

DAY

Pretvorba

Funkcija FormatNumber

FORMAT

Pretvorba

Funkcija FormatPercent

FORMAT

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

Matematičke

Funkcija Abs

ABS

Matematičke

Funkcija Atn

ATAN

ATN2

Matematičke

Funkcija Cos

COS

ACOS

Matematičke

Funkcija Exp

EXP

Matematičke

Funkcije Int, Fix

FLOOR

Matematičke

Funkcija Log

LOG

LOG10

Matematičke

Funkcija Rnd

RAND

Matematičke

Funkcija Round

ROUND

Matematičke

Funkcija Sgn

SIGN

Matematičke

Funkcija Sin

SIN

Matematičke

Funkcija Sqr

SQRT

Tok programa

Funkcija Choose

CHOOSE

Tok programa

Funkcija IIf

IIF

Statističke

Funkcija Avg

AVG

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

FORMAT

Tekst

Funkcija LCase

LOWER

Tekst

Funkcija Left

LEFT

Tekst

Funkcija Len

LEN

Tekst

Funkcije LTrim, RTrim i Trim

TRIM

LTRIM

RTRIM

Tekst

Funkcija Replace

REPLACE

Tekst

Funkcija Right

RIGHT

Tekst

Funkcija StrReverse

REVERSE

Tekst

Funkcija UCase

UPPER

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.