Σύγκριση της Access SQL με την SQL Server TSQL
Applies ToAccess για Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Εάν κάνετε μετεγκατάσταση των δεδομένων της Access στον SQL Server ή δημιουργήσετε μια λύση της Access με τον SQL Server ως βάση δεδομένων παρασκηνίου, είναι σημαντικό να γνωρίζετε τις διαφορές μεταξύ της Access SQL και του SQL Server Transact SQL (TSQL). Ακολουθούν είναι οι σημαντικές παραλλαγές που πρέπει να γνωρίζετε ώστε η λύση σας να λειτουργεί σύμφωνα με τα προβλεπόμενα.

Για περισσότερες πληροφορίες, ανατρέξτε στα άρθρα Access SQL: βασικές έννοιες, λεξιλόγιο και σύνταξη και Αναφορά Transact-SQL.

Διαφορές στη σύνταξη και τις παραστάσεις

Υπάρχουν ορισμένες διαφορές στη σύνταξη και στις παραστάσεις για τις οποίες απαιτείται μετατροπή. Ο ακόλουθος πίνακας συνοψίζει τις πιο συνηθισμένες.

Διαφορά

Access SQL

SQL Server TSQL

Χαρακτηριστικό σχεσιακής βάσης δεδομένων

Συνήθως ονομάζεται πεδίο

Συνήθως ονομάζεται στήλη

Λεκτικές σταθερές συμβολοσειρών

Εισαγωγικό ("), όπως "Στέλλα Κωστίδου"

Απόστροφος ('), όπως 'Στέλλα Κωστίδου'

Λεκτικές σταθερές ημερομηνιών

Σύμβολο δίεσης (#), όπως #1/1/2019#

Απόστροφος ('), όπως '1/1/2019'

Πολλαπλοί χαρακτήρες μπαλαντέρ

Αστερίσκος (*), όπως "Κατ*"

Ποσοστό (%), όπως "Κατ%"

Μονός χαρακτήρας μπαλαντέρ

Αγγλικό ερωτηματικό (?), όπως "Κατ?"

Χαρακτήρας υπογράμμισης (_), όπως "Κατ_"

Τελεστής υπολοίπου διαίρεσης

Τελεστής MOD, όπως Τιμή1 MOD Τιμή2

Ποσοστό (%), όπως Τιμή1 % Τιμή2

Δυαδικές τιμές

WHERE Bitvalue = [True | False]

Ή

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

Παράμετροι

[<Ένα όνομα που δεν είναι καθορισμένη στήλη>]

Ή

Στην προβολή SQL, χρησιμοποιήστε τη δήλωση Parameters της SQL

@ParamName

Σημειώσεις   

  • Η Access χρησιμοποιεί χαρακτήρες εισαγωγικών (") γύρω από τα ονόματα των πινάκων και τα αντικείμενα. Η T-SQL μπορεί να τα χρησιμοποιήσει για ονόματα πινάκων με κενά διαστήματα, αλλά αυτή δεν είναι η συνήθης πρακτική ονοματοδοσίας. Στις περισσότερες περιπτώσεις, τα ονόματα αντικειμένων θα πρέπει να μετονομαστούν χωρίς κενά διαστήματα, ωστόσο τα ερωτήματα πρέπει να συνταχθούν ξανά ώστε να απεικονίζουν τα ονόματα των νέων πινάκων. Χρησιμοποιήστε αγκύλες [] για πίνακες που δεν είναι δυνατό να μετονομαστούν αλλά που δεν συμμορφώνονται με τα πρότυπα ονοματοδοσίας. Η Access προσθέτει επίσης επιπλέον παρενθέσεις γύρω από τις παραμέτρους στα ερωτήματα, ωστόσο αυτές μπορούν να καταργηθούν στην T-SQL.

  • Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε την κανονική μορφή ημερομηνίας, εεεε-μμ-ηη ωω:λλ:δδ, που είναι ένα πρότυπο ODBC για ημερομηνίες που είναι αποθηκευμένες ως χαρακτήρες, το οποίο παρέχει έναν συνεπή τρόπο εμφάνισής τους σε όλες τις βάσεις δεδομένων και διατηρεί τη σειρά ταξινόμησης των ημερομηνιών.

  • Για να αποφύγετε τη σύγχυση κατά τη σύγκριση δυαδικών τιμών, μπορείτε να χρησιμοποιήσετε την ακόλουθη σύγκριση για την Access και τον SQL Server:

    • Δοκιμή για τιμή false    WHERE Bitvalue = 0

    • Δοκιμή για τιμή true    WHERE Bitvalue <> 0

Τιμές null

Μια τιμή null δεν είναι ένα κενό πεδίο που σημαίνει "καμία τιμή". Μια τιμή null είναι ένα σύμβολο κράτησης θέσης που σημαίνει ότι τα δεδομένα λείπουν ή είναι άγνωστα. Τα συστήματα βάσεων δεδομένων που αναγνωρίζουν τιμές null υλοποιούν τη "λογική τριών τιμών", το οποίο σημαίνει ότι κάτι μπορεί να είναι αληθές, ψευδές ή άγνωστο. Εάν δεν χειρίζεστε σωστά τις τιμές null, ενδέχεται να λάβετε εσφαλμένα αποτελέσματα κατά την πραγματοποίηση συγκρίσεων ισότητας ή κατά την αξιολόγηση όρων WHERE. Ακολουθεί μια σύγκριση του τρόπου με τον οποίο η Access και ο SQL Server χειρίζονται τις τιμές null.

Απενεργοποίηση τιμών null σε έναν πίνακα

Στην Access και στον SQL Server, η προεπιλεγμένη συμπεριφορά είναι ότι οι τιμές null είναι ενεργοποιημένες. Για να απενεργοποιήσετε τις τιμές null σε μια στήλη πίνακα, κάντε τα εξής:

  • Στην Access, ορίστε την ιδιότητα "Απαιτείται" ενός πεδίου σε "Ναι".

  • Στον SQL Server, προσθέστε το χαρακτηριστικό NOT NULL σε μια στήλη σε μια πρόταση CREATE TABLE.

Δοκιμή για τιμές null σε έναν όρο WHERE

Χρησιμοποιήστε τα κατηγορήματα IS NULL και IS NOT NULL:

  • Στην Access, χρησιμοποιήστε IS NULL ή IS NOT NULL. Για παράδειγμα:

    SELECT … WHERE column IS NULL.
  • Στον SQL Server, χρησιμοποιήστε IS NULL ή IS NOT NULL. Για παράδειγμα:

    SELECT … WHERE field IS NULL

Μετατροπή τιμών null με συναρτήσεις

Χρησιμοποιήστε τις συναρτήσεις null για την προστασία των παραστάσεων και τη λήψη εναλλακτικών τιμών:

  • Στην Access, χρησιμοποιήστε τη συνάρτηση NZ (τιμή, [valueifnull]) που επιστρέφει την τιμή 0 ή άλλη τιμή. Για παράδειγμα:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • Στον SQL Server, χρησιμοποιήστε τη συνάρτηση ISNULL (τιμή, τιμή_αντικατάστασης) που επιστρέφει την τιμή 0 ή άλλη τιμή. Για παράδειγμα:

    SELECT AVG (ISNULL (Weight, 50)) FROM Product

Κατανόηση των επιλογών βάσεων δεδομένων

Ορισμένα συστήματα βάσεων δεδομένων διαθέτουν ιδιόκτητους μηχανισμούς:

  • Στην Access, δεν υπάρχουν επιλογές βάσης δεδομένων που να αφορούν την τιμή Null.

  • Στον SQL Server, μπορείτε να χρησιμοποιήσετε την επιλογή SET ANSI_NULLS OFF για απευθείας συγκρίσεις ισότητας με τη NULL, χρησιμοποιώντας τους τελεστές = και <>. Συνιστάται να μην χρησιμοποιείτε αυτή την επιλογή, επειδή έχει καταργηθεί και αυτό μπορεί να προκαλέσει σύγχυση σε άλλα άτομα που βασίζονται στον χειρισμό σύμφωνα με το πρότυπο ISO.

Μετατροπή και διανομή ρόλων

Κάθε φορά που εργάζεστε με δεδομένα ή προγραμματισμό, υπάρχει μόνιμη ανάγκη για μετατροπή από έναν τύπο δεδομένων σε έναν άλλο. Η διαδικασία μετατροπής μπορεί να είναι απλή ή σύνθετη. Συνηθισμένα προβλήματα που πρέπει να σκεφθείτε είναι τα εξής: η έμμεση ή η ρητή μετατροπή, οι τρέχουσες τοπικές ρυθμίσεις ημερομηνίας και ώρας, η στρογγυλοποίηση ή η περικοπή αριθμών και τα μεγέθη τύπων δεδομένων. Δεν υπάρχει υποκατάστατο για τις ενδελεχείς δοκιμές και την επιβεβαίωση των αποτελεσμάτων σας.

Στην Access, χρησιμοποιείτε μία από τις έντεκα συναρτήσεις μετατροπής τύπου, κάθε μία από τις οποίες ξεκινά με το γράμμα C κα αφορά έναν τύπο δεδομένων. Για παράδειγμα, για να μετατρέψετε έναν αριθμό κινητής υποδιαστολής σε συμβολοσειρά:

CStr(437.324) returns the string "437.324".

Στον SQL CAST και CONVERT, παρόλο που υπάρχουν και άλλες συναρτήσεις μετατροπής για εξειδικευμένες ανάγκες. Για παράδειγμα, για να μετατρέψετε έναν αριθμό κινητής υποδιαστολής σε συμβολοσειρά:

CONVERT(TEXT, 437.324) returns the string "437.324"

Συναρτήσεις DateAdd, DateDiff και DatePart

Αυτές οι συναρτήσεις ημερομηνίας που χρησιμοποιούνται συχνά είναι παρόμοιες (DateAdd, DateDiff και DatePart) στην Access και την TSQL, ωστόσο η χρήση του πρώτου ορίσματος διαφέρει.

  • Στην Access, το πρώτο όρισμα ονομάζεται διάστημακαι πρόκειται για μια παράσταση συμβολοσειράς που απαιτεί εισαγωγικά.

  • Στον SQL Server, το πρώτο όρισμα ονομάζεται τμήμα ημερομηνίας και χρησιμοποιεί τιμές λέξεων-κλειδιών που δεν απαιτούν εισαγωγικά.

    Στοιχείο

    Access

    SQL Server

    Έτος

    "yyyy"

    year, yy, yyyy

    Τρίμηνο

    "q"

    quarter, qq, q

    Μήνας

    "m"

    month, mm, m

    Ημέρα του έτους

    "y"

    dayofyear, dy, y

    Ημέρα

    "d"

    day, dd, d

    Εβδομάδα

    "ww"

    wk, ww

    Ημέρα της εβδομάδας

    "w"

    weekday, dw

    Ώρα

    "h"

    hour, hh

    Λεπτό

    "n"

    minute, mi, n

    Δευτερόλεπτο

    "s"

    second, ss, s

    Χιλιοστό του δευτερολέπτου

    millisecond, ms

Σύγκριση συναρτήσεων

Τα ερωτήματα της Access μπορεί να περιέχουν υπολογιζόμενες στήλες που χρησιμοποιούν ορισμένες φορές συναρτήσεις της Access για την λήψη αποτελεσμάτων. Όταν κάνετε μετεγκατάσταση ερωτημάτων στον SQL Server, πρέπει να αντικαταστήσετε τη συνάρτηση της Access με μια ισοδύναμη συνάρτηση TSQL, εάν είναι διαθέσιμη κάποια. Εάν δεν υπάρχει αντίστοιχη συνάρτηση TSQL, συνήθως θα δημιουργήσετε μια υπολογιζόμενη στήλη για να κάνετε αυτό που θέλετε. Η TSQL διαθέτει μεγάλη ποικιλία συναρτήσεων και είναι προς όφελός σας να δείτε τι είναι διαθέσιμο. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Ποιες είναι οι συναρτήσεις βάσης δεδομένων SQL;.

Ο παρακάτω πίνακας δείχνει ποια συνάρτηση Access έχει μια αντίστοιχη συνάρτηση TSQL.

Κατηγορία της Access

Συνάρτηση της Access

Συνάρτηση TSQL

Μετατροπή

Συνάρτηση Chr

CHAR

Μετατροπή

Συνάρτηση Day

DAY

Μετατροπή

Συνάρτηση FormatNumber

FORMAT

Μετατροπή

Συνάρτηση FormatPercent

FORMAT

Μετατροπή

Συνάρτηση Str

STR

Μετατροπή

Συναρτήσεις μετατροπής τύπου

CAST και CONVERT

Hμερομηνία/Ώρα

Συνάρτηση Date

CURRENT_TIMESTAMP

Hμερομηνία/Ώρα

Συνάρτηση Day

DATEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση DateAdd

DATEADD

Hμερομηνία/Ώρα

Συνάρτηση DateDiff

DATEDIFF

DATEDIFF_BIG

Hμερομηνία/Ώρα

Συνάρτηση DatePart

DATEPART

Hμερομηνία/Ώρα

Συνάρτηση DateSerial

DATEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση DateValue

DATENAME

Hμερομηνία/Ώρα

Συνάρτηση Hour

TIMEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση Minute

TIMEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση Month

MONTH

Hμερομηνία/Ώρα

Συνάρτηση Now

SYSDATETIME

Hμερομηνία/Ώρα

Συνάρτηση Second

TIMEFROMPARTS

Συνάρτηση Time

TIMEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση TimeSerial

TIMEFROMPARTS

Hμερομηνία/Ώρα

Συνάρτηση Weekday

DATEPART

DATENAME

Hμερομηνία/Ώρα

Συνάρτηση Year

YEAR

DATEFROMPARTS

Συγκεντρωτικά αποτελέσματα τομέα

Συναρτήσεις DFirst, DLast

FIRST_VALUE

LAST_VALUE

Μαθηματικές

Συνάρτηση Abs

ABS

Μαθηματικές

Συνάρτηση Atn

ATAN

ATN2

Μαθηματικές

Συνάρτηση Cos

COS

ACOS

Μαθηματικές

Συνάρτηση Exp

EXP

Μαθηματικές

Συναρτήσεις Int, Fix

FLOOR

Μαθηματικές

Συνάρτηση Log

LOG

LOG10

Μαθηματικές

Συνάρτηση Rnd

RAND

Μαθηματικές

Συνάρτηση Round

ROUND

Μαθηματικές

Συνάρτηση Sgn

SIGN

Μαθηματικές

Συνάρτηση Sin

SIN

Μαθηματικές

Συνάρτηση Sqr

SQRT

Ροή προγράμματος

Συνάρτηση Choose

CHOOSE

Ροή προγράμματος

Συνάρτηση IIf

IIF

Στατιστικές

Συνάρτηση Avg

AVG

Συγκεντρωτικές SQL

Συνάρτηση Count

COUNT

COUNT_BIG

Συγκεντρωτικές SQL

Συναρτήσεις Min, Max

MIN

MAX

Συγκεντρωτικές SQL

Συναρτήσεις StDev, StDevP

STDEV

STDEVP

Συγκεντρωτικές SQL

Συνάρτηση Sum

SUM

Συγκεντρωτικές SQL

Συναρτήσεις Var, VarP

VAR

VARP

Κείμενο

Συνάρτηση Format

FORMAT

Κείμενο

Συνάρτηση LCase

LOWER

Κείμενο

Συνάρτηση Left

LEFT

Κείμενο

Συνάρτηση Len

LEN

Κείμενο

Συναρτήσεις LTrim, RTrim και Trim

TRIM

LTRIM

RTRIM

Κείμενο

Συνάρτηση Replace

REPLACE

Κείμενο

Συνάρτηση Right

RIGHT

Κείμενο

Συνάρτηση StrReverse

REVERSE

Κείμενο

Συνάρτηση UCase

UPPER

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.