Access SQL과 SQL Server TSQL 비교

적용 대상
Microsoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

Access 데이터를 SQL Server 마이그레이션하거나 SQL Server 백 엔드 데이터베이스로 사용하여 Access 솔루션을 만드는 경우 Access SQL과 SQL Server TSQL(Transact SQL)의 차이점을 알고 있는 것이 중요합니다. 다음에 이어지는 내용은 솔루션이 예상대로 작동할 수 있도록 알아야 하는 중요한 변동 사항입니다.

자세한 내용은 Access SQL: 기본 개념, 어휘 및 구문 및Transact-SQL 참조를 참조하세요.

구문 및 표현식 차이점

변환이 필요한 몇 가지 구문 및 표현식 차이가 있습니다. 다음 표에는 가장 일반적인 내용이 요약되어 있습니다.

차이 Access SQL SQL Server TSQL
관계형 데이터베이스 특성 일반적으로 필드라고 합니다. 일반적으로 열이라고 합니다.
문자열 리터럴 따옴표(")(예: "Mary Q. Contrary") 아포스트로피(')(예: 'Mary Q. Contrary')
날짜 리터럴 파운드 기호(#)(예: #1/1/2019#) 아포스트로피(')(예: '1/1/2019')
여러 개의 와일드 카드 문자 별표(*)(예: "Cath*") 백분율(%)(예: 'Cath%')
단일 와일드 카드 문자 물음표(?)(예: "Cath?") 밑줄(_)(예: "Cath_")
모듈로 연산자 MOD 연산자(예: Value1 MOD Value2) 퍼센트(%)(예: Value1 % Value2)
부울 값 WHERE Bitvalue = [True | False]
또는
WHERE Bitvalue = [-1 | 0]
WHERE Bitvalue = [1 | 0]
매개 변수 [<정의된 열>이 아닌 이름]
또는
SQL 보기에서 SQL 매개 변수 선언을 사용합니다.
@ParamName

참고

  • Access에서는 테이블 이름과 개체 주위에 따옴표 문자(")를 사용합니다. T-SQL은 공백이 포함된 테이블 이름에 이 문자를 사용할 수 있지만, 표준 명명 방법이 아닙니다. 대부분의 경우 공백 없이 개체 이름을 변경해야 하지만, 새 테이블 이름을 반영하도록 쿼리도 다시 작성해야 합니다. 이름을 바꿀 수 없지만 명명 표준을 따르지 않는 테이블에 대괄호([])를 사용하세요. 또한 Access는 쿼리의 매개 변수 주위에 추가 괄호를 추가하지만, T-SQL에서 이를 제거할 수 있습니다.

  • 여러 데이터베이스에서 날짜를 일관되게 표시하고 날짜 정렬 순서를 유지하는, 문자로 저장된 날짜의 ODBC 표준인 정식 날짜 형식(yyyy-mm-dd hh:nn:ss)을 사용하는 것이 좋습니다.

  • 부울 값을 비교할 때 혼동을 피하기 위해 다음과 같은 Access 및 SQL Server 비교를 사용할 수 있습니다.

    • false 값 테스트 WHERE Bitvalue = 0
    • true 값 테스트 WHERE Bitvalue <> 0

Null 값

null 값은 "전혀 값 없음"을 의미하는 빈 필드가 아닙니다. Null 값은 데이터가 없거나 알 수 없음을 나타내는 자리 표시자입니다. null 값을 인식하는 데이터베이스 시스템은 "세 가지 값의 논리"를 구현합니다. 이는 true, false 또는 unknown일 수 있음을 의미합니다. null 값을 제대로 처리하지 않으면 같음 비교를 하거나 WHERE 절을 평가할 때 잘못된 결과를 얻을 수 있습니다. 다음은 Access와 SQL Server에서 Null 값을 처리하는 방법입니다.

표에서 Null 값을 사용하지 않도록 설정

Access 및 SQL Server에서 기본 환경은 Null 값을 사용하는 것입니다. 테이블 열에서 Null 값을 비활성화하려면 다음을 실행합니다.

  • Access에서 필드의 필수 속성을 예로 설정합니다.
  • SQL Server에서 NOT NULL 특성을 CREATE TABLE 문에 있는 열에 추가합니다.

WHERE 절의 Null 값 테스트

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에서 0 또는 다른 값을 반환하는 NZ (value, [valueifnull]) 함수를 사용합니다. 예:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
    
  • SQL Server에서 0 또는 다른 값을 반환하는 ISNULL(Value, replacement_value) 함수를 사용합니다. 예:

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

데이터베이스 옵션 이해

일부 데이터베이스 시스템에는 독점적 메커니즘이 있습니다.

  • Access에는 Null과 관련된 데이터베이스 옵션이 없습니다.
  • SQL Server = 및 <> 연산자를 사용하여 NULL과의 직접 같음 비교에 SET ANSI_NULLS OFF 옵션을 사용할 수 있습니다. 이 옵션은 더 이상 사용되지 않으므로 사용 하지 않는 것이 좋습니다. 이 옵션을 사용하면 ISO 규격 Null 처리를 사용하는 다른 사용자가 혼동될 수 있습니다.

변환 및 캐스팅

데이터 또는 프로그래밍과 관련하여 작업할 때마다, 한 데이터 형식을 다른 데이터 형식으로 변환해야 합니다. 변환 프로세스는 간단할 수도 있고 복잡할 수도 있습니다. 고려해야 하는 일반적인 문제: 암시적 또는 명시적 변환, 현재 날짜 및 시간 지역 설정, 숫자 반올림 또는 잘림, 데이터 유형 크기. 철저한 테스트와 결과 확인을 대체할 수 있는 것은 없습니다.

Access에서는 형식 변환 함수 중에 C 문자로 시작하고 각 데이터 유형에 속하는 11개의 함수를 사용합니다. 예를 들어, 부동 소수점 숫자를 문자열로 변환하려면 다음을 실행 합니다.


CStr(437.324) returns the string "437.324".

SQL Server 특수 요구 사항에 대한 다른 변환 함수가 있지만 주로 CAST 및 CONVERT TSQL 함수를 사용합니다. 예를 들어, 부동 소수점 숫자를 문자열로 변환하려면 다음을 실행 합니다.


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

DateAdd, DateDiff 및 DatePart 함수

일반적으로 사용되는 날짜 함수는 Access 및 TSQL에서 유사하지만(DateAdd, DateDiff 및 DatePart), 첫 번째 인수의 사용은 다릅니다.

  • Access에서 첫 번째 인수를 interval이라고 하며 따옴표가 필요한 문자열 식입니다.

  • SQL Server 첫 번째 인수를 datepart라고 하며 따옴표가 필요하지 않은 키워드(keyword) 값을 사용합니다.

    구성 요소 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 용어)을 만들어 원하는 작업을 수행할 수 있습니다. TSQL에는 다양한 함수가 있으며 사용 가능한 기능을 확인할 수 있습니다. 자세한 내용은 SQL Database 함수란?을 참조하세요.

다음 표에서는 대응하는 TSQL 함수가 있는 Access 함수를 보여 줍니다.

Access 범주 Access 함수 TSQL 함수
변환 Chr 함수 CHAR
변환 Day 함수 DAY
변환 FormatNumber 함수 형식
변환 FormatPercent 함수 형식
변환 Str 함수 Str
변환 형식 변환 함수 CAST 및 CONVERT
날짜/시간 DATE 함수 CURRENT_TIMESTAMP
날짜/시간 Day 함수 DATEFROMPARTS
날짜/시간 DateAdd 함수 Dateadd
날짜/시간 DateDiff 함수 Datediff
DATEDIFF_BIG
날짜/시간 DatePart 함수 Datepart
날짜/시간 DateSerial 함수 DATEFROMPARTS
날짜/시간 DateValue 함수 DATENAME
날짜/시간 Hour 함수 TIMEFROMPARTS
날짜/시간 Minute 함수 TIMEFROMPARTS
날짜/시간 Month 함수 MONTH
날짜/시간 Now 함수 SYSDATETIME
날짜/시간 Second 함수 TIMEFROMPARTS
Time 함수 TIMEFROMPARTS
날짜/시간 TimeSerial Function TIMEFROMPARTS
날짜/시간 Weekday 함수 Datepart
DATENAME
날짜/시간 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 함수 평균
SQL 집계 Count 함수 COUNT
COUNT_BIG
SQL 집계 Min, Max 함수 MIN
MAX
SQL 집계 StDev, StDevP 함수 STDEV
STDEVP
SQL 집계 Sum 함수 SUM
SQL 집계 Var, VarP 함수 VAR
VARP
텍스트 Format 함수 형식
텍스트 LCase 함수 LOWER
텍스트 Left 함수 왼쪽
텍스트 Len 함수
텍스트 LTrim, RTrim 및 Trim 함수 TRIM
Ltrim
Rtrim
텍스트 Replace 함수 교체
텍스트 Right 함수 오른쪽
텍스트 StrReverse 함수 역방향
텍스트 UCase 함수 UPPER