MSSQL(SQL Server)

[MSSQL] SQL 요약 설명입니다.

긋대디 2018. 12. 26. 10:03

오라클만 쓰다가 다시 SQL SERVER 사용하여고 보니 필요해서 정리합니다.

 

Integers

bigint
sql2000부터 생긴 데이터 형으로
-2^63 (-9223372036854775808) 부터 2^63-1 (9223372036854775807) 까지의 정수를 지정 가능 합니다.
int
-2^31 (-2,147,483,648) 부터  2^31 - 1 (2,147,483,647)까지의 정수를 지정 가능 합니다.
smallint
2^15 (-32,768) 부터  2^15 - 1 (32,767)까지의 정수를 지정 가능 합니다.
tinyint
0 부터 255 까지의 정수를 지정 가능 합니다.

 
bit

bit
1 또는 0  이라는 데이터를 저장 가능하며 참, 거짓에 사용 됩니다.

 
decimal and numeric

decimal
 -10^38 -1  10^38 -1 까지의 수에 대해 정밀도와 크기를 사용자에 의해 지정 가능 합니다.
numeric
decimal 형과 같습니다.

 
money and smallmoney

money
돈과 관계되는 데이터 타입으로  -2^63 (-922,337,203,685,477.5808) 부터 
2^63 - 1 (+922,337,203,685,477.5807)까지의 수치를 사용가능 하며 
1000단위 컴마를 사용 가능 합니다. 천조 까지의 데이터를 처리 가능합니다.
smallmoney
 -214,748.3648 부터 +214,748.3647 까지 사용 가능하며 1000단위 컴마 지정이 가능 합니다.

 
Approximate Numerics

float
부동(정확하지 않은) 소수 데이터 형으로  -1.79E + 308 부터  1.79E + 308 까지의 데이터 
사용이 가능 합니다.
real
 -3.40E + 38 부터 3.40E + 38 까지의 부동 소수 데이터 형입니다.
 

datetime and smalldatetime

datetime
1월  1일, 1753년, 부터 12월 31일, 9999년, 까지의 데이터를 1000분의 일초 단위로 
지정 가능 합니다.
smalldatetime
1월 1일, 1900년, through 6월 6일, 2079년, 까지 1분 단위 정확도로 지정 가능 합니다.

 
Character Strings

char
8,000바이트(문자)까지 지정 가능한 유니코드가 아닌 고정길이 데이터 형입니다.
varchar
 8,000바이트 까지 지정 가능한 유니코드가 아닌 가변길이 데이터 형입니다.
text
 2^31 - 1 (2,147,483,647) 유니코드가 아닌 가변길이 데이터형으로 2기가 까지 지정 가능 합니다.
 

Unicode Character Strings

nchar
4,000바이트 까지 지정 가능한 유니코드 고정길이 데이터 형입니다.
nvarchar
4,000바이트 까지 지정 가능한 유니코드 가변길이 데이터 형입니다.
ntext
2^30 - 1 (1,073,741,823) 즉, 1기가 까지 지정 가능한 가변길이 유니코드 데이터 형입니다.
 

Binary Strings

binary
8,000 바이트 까지 이진 데이터를 지정 가능한 고정길이 데이터형입니다.
varbinary
8,000바이트 까지 이진 데이터를 지정 가능한 가변길이 데이터형입니다.
image
2기가까지 이진 데이터를 지정 가능한 가변길이 데이터형입니다.

 
Other Data Types

cursor
커서 지정에 사용하는 형입니다. 커서에서만 사용 합니다.
rowversion
sql2000에서 timestamp 형에서 변경된 데이터 형으로
데이터베이스에 걸쳐 유일하게 사용하는 고유 값을 지정 하는 
데이터 형입니다. 해당 로우가 변경될시 함께 변경됩니다. timestamp형이라 보통 불립니다.
sql_variant
sql2000부터 생긴 데이터 형으로 text, ntext, timestamp, 과 sql_variant 형을 제외한
 모든 데이터형을 저장 가능한 데이터 형입니다.
table
sql2000부터 생긴 데이터 형으로 테이블과 같은 2차원 데이터를 저장하기위한 데이터 형입니다.
uniqueidentifier
어떠한 경우라도 중복되지 않는 항상 고유한 값을 저장하는 데이터 형입니다.
 
새롭게 생긴 샘플만 알아 보도록 하지요. 먼저 많은 분들이 궁금해 하시는
table형 데이터 입니다.

  DECLARE @T TABLE (id int, name varchar(8))
INSERT @T values(10,'Joe')
select * from @T
 

다음은 모든 데이터를 지정 가능한 sql_variant 형입니다.
VB의 데이터형과 비슷 하다고 생각하심 되겠지요?

  DECLARE @T1 sql_variant, @T2 sql_variant
set @T1 = 12345
set @T2 = '문자열'
select @T1
select @T2
 

개인적으로는 이런 variant형은 그다지 필요 없을듯 하지만? 개발자 쪽에선 차라리
쉬울수도 있겠지요.
자세한 이야기는 테이블 생성 편에서 드릴 겁니다.
 
많이 질문 받는으로 var형과 var가 안 붙은 데이텨형의 차이 입니다.
varchar과 char의 차이를 보여 드리면...
1번 char(10)
2번 varchar(10)으로 컬럼을 잡습니다...
여기에
kimdaewoo를 넣는다고 해 보지요...
그럼 1번에는
'kimdaewoo '가 저장 됩니다.
즉 9자의 알파벳과 공백값이 하나가 들어간다 라는 의미 입니다.
항상 10개의 문자를 채워 저장이 되지요...
varchar는....
마찬가지로 'kimdaewoo'를 입력하면
'kimdaewoo' 로 딱 9자만 들어 갑니다...
'daewoo'를 2번에 넣으면
'daewoo' 라고 6자만 저장이 되는 거지요....
var가 붙으면? 저장시 뒷부분의 공백이 잘려 저장되어 저장 공간이(디스크)
낭비되지 않는다는 겁니다...
 
조금 이해가 되셨느지요. 그럼 다음은 함수 입니다.
 


함수의 설명 입니다.
 
아울러 이하 모든 함수 리스트의 링크들은? 영문 MS의 기술지원으로 링크가 됩니다.
MS영문 사이트의 링크가 변환되면 링크가 안될 수 있습니다.
 
SQL서버의 함수의 종류를 간단히 설명 드리면.

함수 종류
설명
테이블의 로우들에 대해 결과집합을 생성 합니다.
현재 시스템의 설정 정보를 보여 줍니다.
커서에 대한 정보를 보여 줍니다.
날짜와 시간에 대한 함수
수치 계산에 관한 함수
데이터베이스와 데이터베이스 개체에 대한 함수
사용자와 롤(권한)에 대한 함수
문자열 처리에 대한 함수
개체 세팅등의 SQL서버에 대한 함수
시스템 통계치에 대한 함수
텍스트와 이미지에 대한 함수

자 함수들이 무쟈게 많이 있지요? ^_^
이것덜중 많이 사용하게 되는 함수인 
Aggregate Functions, Date and Time Functions, Mathematical Functions, String Functions 들에 
대한 것을 설명을 드리구요. 
아울러 나머지 함수들중 많이 사용되는 함수를 코난이의 임의 판단하에 설명을
드리지요. ^_^
 
Aggregate Functions 입니다.
이는 일반적으로 테이블들의 여러 행들에 걸치는 작업을 하게 됩니다.
가장 많이 사용하실 테이블의 로우들에 대해 처리해 결과 또는 결과 집합을 생성 합니다.
 

AVG 함수 - 수치형으로 된 컬럼의 로우들에 대해 평균을 리턴 합니다.

  SELECT AVG(advance)
FROM titles
 

SUM 함수 - 수치형으로 된 컬럼의 로우들에 대해 수치데이터의 총합값을 계산합니다.

  SELECT SUM(price), SUM(advance)
FROM titles
 

COUNT 함수 - 컬럼의 로우 갯수를 리턴합니다. 
이는 *로 잡으셔도 되며 컬럼 1개를 잡으셔도 같은 결과 입니다.

  SELECT COUNT(*)
FROM titles


SELECT COUNT(title)
FROM titles
 

MAX함수 - 수치형으로 된 컬럼의 로우들중 최대값을 찾아 리턴 합니다.

  SELECT MAX(ytd_sales)
FROM titles
GO
 

MIN 함수 - 수치형으로 된 컬럼의 로우들중 최소값을 찾아 리턴 합니다.

  SELECT min(ytd_sales) FROM titles 
GO
 

 
다음은 Date and Time Function 함수 

GETDATE() : 현재 날짜와 시간을 반환

  USE pubs
GO
SELECT GETDATE()
GO
 

DATEADD : 기존 날짜 데이터에 대해 날짜, 월, 년 등의 날짜 데이터를 더하는 함수

  USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
 

DATEDIFF : 날짜 데이터부터 지정일까지의 년,월,일 시간을 반환

  USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
 

DATEPART : 지정년도의 년, 월, 일 등의 특정 부분만을 반환

  SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO
 

웃샤.. 양이 점점 많아 지는군요. 그래도 코난이는 꿋꿋하게 해나갈랍니다. ^_^
웃으며 해야지요. ^_^

 
다음은 Mathematical Functions 수치 계산에 관한 함수 입니다.
수학과 관련된 부분이지만? 몇몇개는 종종 사용 한답니다. ^_^

ABS : 절대값을 반환.

  SELECT ABS(-1.0), ABS(0.0), ABS(1.0)
 

RAND : 0~1 까지의 소수로된 난수를 발행시킴.

  SELECT RAND(1) AS Random_Number
 

ROUND : 지정위치에서 반올림을 함. - 많이 사용 됩니다.

  SELECT ROUND(123.9994, 3), ROUND(123.9995, 3) 
 

주의 하셔야 할 부분 입니다. ROUND는 종종 사용할 경우가 있답니다.
좀더 샘플을 보여 드리면?

예제
결과
ROUND(748.58, -1)
750.00
ROUND(748.58, -2)
700.00
ROUND(748.58, -3)
1000.00
SELECT ROUND(123.4545, 2)
123.4500
SELECT ROUND(123.45, -2)
100.00
SELECT ROUND(150.75, 0)
151.00
SELECT ROUND(150.75, 0, 1)
150.00
ROUND(748.58, -4)
0

 
다음은 String Functions 즉 문자열 처리에 대한 함수 입니다.
이거 많이 사용하게 되실 겁니다. 잘 알아두시면 나중에 유용합니다.

LEFT - 해당 컬럼의 문자열중 해당하는 문자열 까지만 문자열을 리턴

  SELECT LEFT(title, 5) 
FROM titles
 

LEN - 해당 컬럼의 문자열의 길이를 수치로 리턴

  SELECT LEN(title) 
FROM titles
 

LOWER - 해당 컬럼의 문자열(영문)을 모두 소문자로 변경

  SELECT LOWER(title) AS 소문자
FROM titles
 

LTRIM - 문자열 왼쪽의 공백을 제거함

  --@konan_string 이라는 변수를 VARCHAR(100) 이라는 
--100자의 문자열로 선언
DECLARE @konan_string varchar(100)
 
--@konan_string에 아래의 땀표부터 땀표까지 문자열 지정
SET @konan_string = ' 냐햐~ 코난이는 잘생겼다.'
 
--STRING에 LTRIM 적용으로 왼쪽의 빈 문자열 잘라냄
SELECT LTRIM(@konan_string)
GO
 

조금 어려우신가요? 변수를 생성하고 문자열을 변수에 대입후 처리하는 샘플 입니다.
나중에 T-SQL 프로그래밍 등에서 종종 보실테니 그러려니하시고 어려우시면 지금은 그냥
실행만 해 보세요. ^_^
 
PATINDEX - 해당 컬럼의 문자열중 원하는 패턴이 처음 발생한 위치(수치위치)을 리턴

  SELECT PATINDEX('%the%', title) as 문자열이첨발생한곳
FROM titles
 

REPLACE - 문자열중 일정 문자열 또는 문자를 다른 문자열로 변환 

  SELECT REPLACE('코난이는 잘 생겼다','잘','못')
 

REVERSE - 문자열의 위치를 바꿈 (맨첫자는 맨 뒤로 식으로 문자열의 순서를 바꿈)

  SELECT REVERSE(au_fname) 
FROM authors
 

RIGHT - 문자열중 오른쪽부터 원하는 수치만큼의 문자열만 가져옴

  SELECT RIGHT(au_fname, 5) 
FROM authors
 

RTRIM - 문자열중 오른쪽부터의 공백을 제거 (LTRIM 참고)
 
STUFF - 문자열중 원하는 위치부터 원하는 길이까지 원하는 문자열로 변환

  SELECT STUFF('코난이는 자알~ 생겼다.', 6, 3, '못')
 

SUBSTRING - 문자열중 원하는 위치부터 원하는 길이만큼 문자열을 가져옴

  SELECT au_fname, SUBSTRING(au_fname, 3, 2) as 세번째위치부터두글자
FROM authors
 

UPPER - 모두 대문자로

  SELECT UPPER(au_lname) AS 모두대문자로
FROM authors
 

'MSSQL(SQL Server)' 카테고리의 다른 글

MS VISUAL STUDIO 단축키 (MSSQL)  (0) 2020.08.12
MSSQL 날짜관련 처리(함수)  (0) 2018.12.26
[MSSQL] Sql 쿼리로 테이블 명세서 출력  (0) 2018.12.26