Data/SQL Server

Transact-SQL(T-SQL) #1 - 데이터 형식

보노남편 2020. 10. 21. 21:48

1. Transact-SQL이란?

Transact-SQL(T-SQL)은 Microsoft SQL Server에서 사용하는 Language입니다.

T-SQL의 기본적인 문법은 ISO와 ANSI에서 제정한 SQL 표준과 같습니다.

년도 명칭 별칭 설명
1986 SQL-86 SQL-87 ANSI에 의한 최초의 표준화.
1989 SQL-89 FIPS127-1 마이너 개정, integrity constraints가 추가. FIPS 127-1에서 채택.
1992 SQL-92 SQL2, FIPS 127-2 매이저 개정 (ISO 9075), Entry Level SQL-92은 FIPS 127-2로 채택.
1999 SQL:1999 SQL3 정규 표현식 매칭 추가, 재귀 쿼리 (예, 이행적 폐쇄), 데이터베이스 트리거, 절차적, 통제흐름 구문 지원, 비규격 타입 그리고 객체지향형 특징 지원(예, 구조화 타입). 자바에서 내장 SQL 지원(SQL/OLB) 그리고 (SQL/JRT).
2003 SQL:2003 SQL 2003 XML 관련 특징 도입 (SQL/XML), window functions, 자동생성값에 대한 표준화된 시퀀스와 컬럼(아이덴티티 컬럼 포함).
2006 SQL:2006 SQL 2006 ISO/IEC 9075-14:2006은 XML과 결합되어 SQL이 사용되는 방법을 정의하고 있다. 여기에는 SQL 데이터베이스 내의 XML 데이터의 불러오기와 저장하는 방법을 정의하고 있으며, 데이터베이스 내에서 조작하여 XML 형식의 전통적 SQL 자료와 XML 형식 모두로 출력하는 방법을 제시한다. 게다가, 여기에서는 W3C에 의해 제안된 XML 쿼리 언어, Xquery를 이용하여 SQL 코드로 애플리케이션을 통합할 수 있도록 하여, 보통의 SQL 데이터와 XML 문서에 접근할 수 있게 한다.[12]
2008 SQL:2008 SQL 2008 커서 정의 외부의 ORDER BY를 합법화 . INSTEAD OF 트리거 추가. TRUNCATE 구문 추가.[13]
2011 SQL:2011 SQL 2011 임시 데이터베이스에 대한 지원 향상

(SQL 표준, http://ko.wikipedia.org/wiki/SQL)

 

T-SQL은 추가로 다양한 함수와 문법들을 지원하며, 이 기능들을 사용하여 생산성을 향상할 수 있습니다.

다음은 T-SQL을 사용할 수 있는 응용 프로그램 목록입니다.

  • 일반적인 오피스 생산성 향상 응용 프로그램

  • GUI(그래픽 사용자 인터페이스)를 사용하여 사용자가 테이블과 열을 선택해서 필요한 데이터를 볼 수 있도록 해 주는 응용 프로그램

  • 일반 언어 문장을 사용하여 사용자가 보고자 하는 데이터를 판단할 수 있도록 해 주는 응용 프로그램

  • 데이터를 SQL Server 데이터베이스에 저장하는 업무용 응용 프로그램. 여기에는 공급업체에서 작성한 응용 프로그램과 조직에서 자체적으로 작성한 응용 프로그램이 모두 포함될 수 있습니다.

  • sqlcmd와 같은 유틸리티를 사용하여 실행되는 Transact-SQL 스크립트

  • ADO, OLE DB 및 ODBC와 같은 데이터베이스 API를 사용하는 Microsoft Visual C++, Microsoft Visual Basic 또는 Microsoft Visual J++와 같은 개발 시스템을 사용하여 만든 응용 프로그램

  • SQL Server 데이터베이스에서 데이터를 추출하는 웹 페이지

  • SQL Server의 데이터를 다양한 데이터베이스로 복제하거나 분산 쿼리가 실행되는 분산 데이터베이스 시스템

  • 데이터를 OLTP(온라인 트랜잭션 처리) 시스템에서 추출하고 의사 결정 지원 분석을 위해 요약하는 데이터 웨어하우스

(Transact-SQL 참조, http://msdn.microsoft.com/ko-kr/library/bb510741.aspx)

 

2. T-SQL 데이터 형식

  T-SQL은 다양한 데이터 형식을 지원합니다.

1) 정확한 수치

 -  bit

0, 1, NULL을 표현할 수 있는 데이터 형식입니다. 테이블에 8개 이하의 bit가 있다면 1바이트로 저장되고 9-16개의 열이 있으면 2바이트로 저장됩니다. 이런 식으로 계속 진행됩니다.

bigint, int, smallint, tinyint

정수 데이터를 사용하는 정확한 숫자 데이터 형식입니다.

 데이터 형식

 범위

 크기

 bigint

 -2^63(-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807)

8바이트

 int

 -2^31(-2,147,483,648) ~ 2^31-1(2,147,483,647)

4바이트

 smallint 

 -2^15(-32,768) ~ 2^15-1(32,767)

2바이트 

 tinyint 

 0 ~ 255

1바이트 

 -  decimal, numeric

전체 자릿수와 소수자릿수가 고정된 숫자 데이터 형식입니다.

decimal과 numeric은 표현 범위가 같습니다.

2) 근사치

 -  float, real

부동 소수점 숫자 데이터에 사용하는 근사 숫자 데이터 형식입니다. 부동 소수점 데이터는 근삿값이므로 해당 데이터 형식 범위에 있는 모든 값을 정확하게 표현할 수는 없습니다. real은 float(24)과 같습니다.

3) 문자열

 -  char, varchar, text, nchar, nvarchar, ntext

T-SQL에서는 접두사가 n인 nchar, nvarchar, ntext 문자열 데이터 형식을 지원합니다. n은 national의 약자이며, 이 형식들은 UNICODE USC-2 문자 집합을 사용합니다. 다국어를 지원하는 시스템에서 해당 데이터 형식을 사용하면 모든 언어를 표현할 수 있습니다.

하지만 nchar, nvarchar, ntext는 모든 문자 하나의 크기가 2바이트로 저장되기 때문에 1바이트로 표현할 수 있는 알파벳이 주로 저장되는 시스템에서는 자원을 낭비 할 수 있습니다.

varchar(max), nvarchar(max)

varchar(max), nvarchar(max)는 최대 2^31-1바이트(2GB)를 저장할 수 있는 데이터 형식입니다. Microsoft는 SQL Server 2008 이상 버전부터 text, ntext 데이터 형식 대신 varcahr(max), nvarchar(max) 데이터 형식을 사용하도록 권고하고 있습니다. 추후 ntext, text 데이터 형식은 제거될 예정입니다.

4) 이진 문자열

 -  binary, varbinary, image

고정 길이, 가변 길이의 binary 데이터 형식입니다.

varbinary(max)

varbinary(max)는 최대 2^31-1바이트(2GB)를 저장할 수 있는 데이터 형식입니다. Microsoft는 SQL Server 2008 이상 버전부터 image 데이터 형식 대신 varbinary(max) 데이터 형식을 사용하도록 권고하고 있습니다. 추후 image 데이터 형식은 제거될 예정입니다.

5) 날짜 및 시간

 -  datetime

소수 자릿수 초가 있는 24시간 제 기준의 시간과 결합한 날짜를 정의합니다. Microsoft는 time, date, datetime2 및 datetimeoffset 데이터 형식을 사용하도록 권고하고 있습니다.

datetime이 표현할 수 있는 날짜 범위는 1753년 1월 1일부터 9999년 12월 31일까지이고 표현의 정확도는 .000, .003 또는 .007초 단위로 반올림 됩니다.

datetime2

datetime보다 더 큰 날짜와 범위와 더 많은 기본 소수자릿수를 표현할 수 있는 데이터 형식입니다.

datetime2가 표현할 수 있는 날짜 범위는 1년 1월 1일부터 9999년 12월 31일까지이고 표현의 정확도는 100나노초입니다.

datetimeoffset

표현할 수 있는 날짜의 범위와 정확도는 datetime2 데이터 형식과 같고, 추가로 표준 시간대 오프셋(UTC)을 저장할 수 있습니다.

smalldatetime

정확도가 1분인(초를 표시하지 않음) 데이터 형식으로 1900년 1월 1일부터 2079년 6월 6일까지 표시할 수 있습니다.

date

1년 1월 1일부터 9999년 12월 31일까지의 날짜를 정의합니다.

time

시간을 정의합니다. 시간은 표준 시간대를 인식하지 않으며 24시간 제를 기준으로 합니다. 표현의 정확도는 100나노초입니다.

(데이터 형식, http://msdn.microsoft.com/ko-kr/library/ms187752.aspx)