Access SQL과 SQL Server TSQL 비교

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 값을 인식하는 데이터베이스 시스템은 "3개 값 로직"을 구현합니다. 즉, 항목은 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에서 첫 번째 인수를 간격이라고 하고, 이는 따옴표가 필요한 문자열 식입니다.

  • 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 용어)을 만들어 원하는 작업을 수행할 수 있습니다. TSQL에는 다양한 함수가 있으므로 사용 가능한 항목을 확인하는 것이 좋습니다. 자세한 내용은 SQL 데이터베이스 함수란?을 참조하세요.

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

Access 범주

Access 함수

TSQL 함수

변환

Chr 함수

CHAR

변환

Day 함수

DAY

변환

FormatNumber 함수

FORMAT

변환

FormatPercent 함수

FORMAT

변환

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 함수

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

Office 기술 확장
교육 살펴보기
새로운 기능 우선 가져오기
Office Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×