SSAS 환경 설정.

 

안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)

 

SSAS에 대해서 알아 보도록 하겠습니다.

 

이 강좌는 [SQL Server 2005 Analysis Services 포켓가이드 – 권오주]를 기본으로 2008에서 재구성 하였습니다.

 

첫 시작으로 Microsoft Business Intelligence에 대해서 알아보고 SQL Server에서 SSAS를 구축하기 위한 환경 설정에 대해서 알아 봅니다.

 

MSBI는 Microsoft Business Intelligence의 약자로 크게 시스템 영역과 사용 영역으로 나눌 수 있습니다.

  • 시스템 영역 – ETL, Data WareHouse, Data Mart, OLAP 엔진, 분석용 OLAP 툴 등
  • 사용자 영역 – 리포트 중심의 정형 분석, 비정형 분석, 다차원 분석, 계획 및 시뮬레이션, 성과 관리 등.

 

기업 전에 걸친 BI시스템을 거쳐 End-To-End 사용자가 직접 여러 가지 분석을 할 수 있도록 하는 것이 목표 입니다.

 

SSAS를 사용하기 위한 환경 설정.

 

SQL Server 구성 관리자에서 SQL Server Analysis Services 서비스가 설치 되어 있는지 확인 합니다.

 

만약 구성관리자에서 해당 서비스가 보이지 않는다면 SQL Server 설치 파일을 이용하여 해당 서비스에 체크박스를 선택 하여 설치 합니다.

 

BIDS는 Visual Studio 환경을 기반으로 통합 개발 환경을 제공 합니다. Visual Studio를 설치 하지 않아도 SQL Server설치 시 기본적으로 SSAS, SSIS, SSRS 관련된 도구만 설치 된 것을 확인 할 수 있습니다. 만약 C#이나 VB.NET같은 프로그램이 이미 설치 되어 있다면 동일 환경으로 통합 된 것을 확인 할 수 있습니다.

 

 

 

BIDS에는 비즈니스 인텔리전스 프로젝트를 위한 몇 가지 템플릿을 제공합니다, SSAS, SSIS, SSRS 프로젝트를 정의할 때 사용할 수 있는 템플릿과 Reporting Builder를 위한 Report Model을 정의할 때 사용할 수 있는 템플릿이 제공 됩니다.

 

이번 실습을 위해서는 MS에서 제공하는 Adventureworks, AdventureworksDW 데이터베이스를 설치 합니다.

다운로드 링크 : http://msftdbprodsamples.codeplex.com/releases

 

 

 

다음 시간에는 큐브 구축 및 차원과 스키마 설계 등에 대해서 하나씩 알아 보도록 하겠습니다.

SSAS실습하기에 앞서 OLAP개념과 다차원 모델과 같은 이론이 바탕이 되어야 하기에 실습과 이론이 병행 될 수도 있습니다.

 

'SQL Server > SSAS 강좌' 카테고리의 다른 글

06 - SSAS 차원 - (3) 롤-플레잉 차원  (0) 2015.07.15
05 - SSAS 차원 - (2) 시간 차원  (0) 2015.07.15
04 - SSAS 차원 - (1) 표준 차원  (0) 2015.07.15
03 - SSAS 큐브 조회  (0) 2015.07.15
02 - SSAS 큐브 만들기  (0) 2015.07.15
01- SSAS 환경 구축  (0) 2015.07.15

테이블 - 삭제 및 수정.

 

테이블 생성은 지난 시간에 살펴 보았다. 비즈니스의 구성에 따라 테이블이 삭제 되거나 수정이 필요할 때가 있다. 이번 시간은 테이블의 삭제 및 수정에 대해서 알아 본다.

 

1. 테이블 삭제

테이블을 삭제하는 방법에는 SSMS를 이용하는 방법과 직접 쿼리문을 입력하여 삭제하는 방법이 있다.

(MSDN 참고:
http://msdn.microsoft.com/ko-kr/library/ms173790.aspx)

 

- SSMS 이용하기

SSMS를 실행하여 해당 DB에서 [테이블] 마우스 오른쪽을 클릭하여 [삭제]를 선택한다.

 

[개체 삭제] 창에서 확인을 선택하면 테이블이 삭제 된다.

 

테이블을 삭제 하였는데 만약 삭제된 테이블을 참조하고 있는 다른 테이블이 있다면 어떻게 될까? 사용하지 않는다고 생각했던 테이블의 삭제로 인하여 재앙이 발생할 수도 있다. 삭제하려는 테이블이 어느 테이블에 종속되어 있고 종속하고 있는지 확인 할 수 있다면 매우 좋을 것이다.

 

[개체 삭제] 창에서 [종속성 표시(H)]를 선택 한다.

삭제하려는 테이블이 종속하고 있거나 종속되어 있는 개체를 확인 할 수 있다.

(예시 그림을 위하여 다른 테이블의 종속 관례 그림을 첨부 하였다.)

 

 

- 쿼리 이용하기

SSMS 쿼리 분석기에 테이블 삭제 명령을 입력 한다.

TBL_A 테이블 삭제.

DROP TABLE TBL_A

 

테이블 삭제는 아주 간단 하다. 하지만 외래 키(FOREIGN KEY) 제약조건의 기준 테이블은 삭제 할 수 없다. 따라서 외래 키의 기준이 되는 테이블이라면 왜래 키를 관계를 삭제 후 테이블을 삭제 하거나 외래 키가 생성된 테이블을 삭제하고 삭제 한다.

 

2. 테이블 수정

테이블을 수정하는 방법에는 SSMS를 이용한 방법과 쿼리문을 이용한 방법이 있다. 테이블의 열 추가 및 삭제, 제약조건 추가 및 삭제, 데이터 타입의 변경 방법 등을 학습해 보자.

 

(MSDN 참고:
http://msdn.microsoft.com/ko-kr/library/ms190273.aspx)

 

  • SSMS를 이용하기

SSMS를 실행하여 수정하려는 테이블에서 마우스 오른쪽 클릭 [디자인(G)]을 선택 한다.

 

 

디자인 창이 나타나면 열을 추가 / 삭제 할 수 있다. 또는 기존열의 데이터 타입을 변경 할 수 있다.

 

 

열의 위치를 변경 하고자 한다면 이동하려는 열을 드래그 하여 원하는 위치에 놓는다.

 

 

디자인 창에서 테이블을 수정하고 나면 저장 버튼을 클릭하여 저장 후 닫는다.

 

 

테이블 정보가 변경된 것을 확인 하자.

 

 

만약 저장 버턴을 선택하였는데 아래와 같은 경고 창이 나타날 수 있다.

 

 

메뉴에서 [도구] – [옵션]을 선택 한다.

 

 

[옵션] 창에서 [Designer] – [테이블 및 데이터베이스 디자인] 을 선택한다.

[테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함]의 체크를 해제 한다.

 

 

디자인 창에서 마우스 오른쪽을 클릭하면 열 삽입 / 삭제. 키 설정 등 다양한 메뉴가 나타난다.

팝업 메뉴를 활용하여 사용자에 맞는 테이블을 수정 한다.

 

  • 쿼리 이용하기.

테이블의 수정은 ALTER 구문을 사용 한다. 기본 형식은 아래와 같다.

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name

{

ALTER COLUMN column_name

{

[ type_schema_name. ] type_name [ ( { precision [ ,scale ]

| max | xml_schema_collection } ) ]

[ COLLATE collation_name ]

[ NULL | NOT NULL ] [ SPARSE ]

| {ADD | DROP }

{ ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE }

}

| [ WITH { CHECK | NOCHECK } ]

 

| ADD

{

<column_definition>

| <computed_column_definition>

| <table_constraint>

| <column_set_definition>

} [ ,...n ]

 

| DROP

{

[ CONSTRAINT ] constraint_name

[ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]

| COLUMN column_name

} [ ,...n ]

 

| [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT

{ ALL | constraint_name [ ,...n ] }

 

| { ENABLE | DISABLE } TRIGGER

{ ALL | trigger_name [ ,...n ] }

 

| { ENABLE | DISABLE } CHANGE_TRACKING

[ WITH ( TRACK_COLUMNS_UPDATED = { ON | OFF } ) ]

 

| SWITCH [ PARTITION source_partition_number_expression ]

TO target_table

[ PARTITION target_partition_number_expression ]

 

| SET ( FILESTREAM_ON = { partition_scheme_name | filegroup |

"default" | "NULL" } )

 

| REBUILD

[ [PARTITION = ALL]

[ WITH ( <rebuild_option> [ ,...n ] ) ]

| [ PARTITION = partition_number

[ WITH ( <single_partition_rebuild_option> [ ,...n ] )]

]

]

 

| (<table_option>)

}

[ ; ]

 

<column_set_definition> ::=

column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

 

<drop_clustered_constraint_option> ::=

{

MAXDOP =max_degree_of_parallelism | ONLINE = {ON | OFF }

| MOVE TO { partition_scheme_name (column_name) | filegroup

| "default" }

}

<table_option> ::=

{

SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } )

}

 

<single_partition_rebuild__option> ::=

{

SORT_IN_TEMPDB = { ON | OFF }

| MAXDOP =max_degree_of_parallelism

| DATA_COMPRESSION = { NONE | ROW | PAGE} }

}

 

MSDN에서 제공하는 문법을 보면 매우 복잡 하다. 하나씩 예를 들어 살펴 보자.

 

ADDRESS 열 추가

ALTER TABLE TBL_A

    ADD ADDRESS NVARCHAR(50) -- 열추가

    DEFAULT 'SEOUL' -- 디폴트값

    NULL -- NULL 허용

 

ADDRESS 열 삭제

ALTER TABLE TBL_A

    DROP COLUMN ADDRESS

 

ADRESS 열 데이터 형식 변경

ALTER TABLE TBL_A

    ALTER COLUMN ADDRESS NVARCHAR(50)NULL

 

데이터 형식을 변경 할 때에는 열이 크기를 기존의 데이터 크기보다 커야 한다.

 

ADDRESS 열의 이름을 NEW_ADDRESS 이름으로 변경

EXEC sp_rename 'ADDRESS', 'NEW_ADDRESS', 'COLUMN'

 

열의 제약 조건 추가 (PRIMARY 키)

ALTER TABLE TBL_A

    ADD CONSTRAINT PK_NAME --제약조건의이름

        PRIMARY KEY (ADDRESS)

 

열의 제약 조건 추가 (FOREIGN 키)

ALTER TABLE TBL_A

    ADD CONSTRAINT FK_NAME --제약조건의이름

        FOREIGN KEY (ADDRESS)

    REFERENCES TBL_B (ADDRESS)

 

열 제약 조건 삭제

ALTER TABLE TBL_A

    DROP CONSTRAINT FK_NAME --제약조건의이름

 

이로써 테이블의 삭제 및 수정에 대해서 알아 보았다.

 

제약 조건에 대한 자세한 설명은 처음 소개한 링크의 주소에서 학습 하길 바란다.

친절히 한국어로 설명 되어 있다.

 

 

테이블 - 데이터 형식 및 우선 순위. 선행 정렬

SQL Server에서는 많은 데이터 형식들을 제공하는데 적절한 데이터 형식을 선택하는 것은 충분한 공간을 확보하면서도 저장 공간을 낭비하는 것을 피할 수 있다.

 

1. 데이터 형식

SQL Server에서 각 열, 지역 변수, 식 및 매개 변수는 관련된 데이터 형식을 가진다. SQL Server는 SQL Server에서 사용할 수 있는 모든 데이터 형식을 정의하는 일련의 시스템 데이터 형식을 정의할 수 있다.

데이터 형식, 데이터 정렬, 전체 자릿수, 소수 자릿수 또는 길이가 다른 두 식이 연산자에 의해 결합된 경우 그 특징은 다음 규칙에 따라 결정 된다.

  1. 결합 결과의 데이터 형식은 입력 식의 데이터 형식에 데이터 형식 우선 순위 규칙을 적용하여 결정 된다.
  2. 결과 데이터 형식이 CHAR, VARCHAR, TEXT, NCHAR, NVARCHAR 또는 NTEXT인 경우 결과의 데이터 정렬은 데이터 정렬 우선 순위 규칙에 따라 결정 된다.
  3. 결과의 전체 자릿수, 소수 자릿수 및 길이는 입력 식의 전체 자릿수, 소수 자릿수, 길이에 따라 달라진다.

(MSDN 참고:
http://technet.microsoft.com/ko-kr/library/ms187752.aspx)

SQL Server에서 데이터 형식은 다음의 범주로 구성된다.

정확한 수치

유니코드 문자열

근사치

이진 문자열

날짜 및 시간

기타 데이터 형식

문자열

 

 

SQL Server에서 일부 데이터 형식은 저장 특징에 따라 다음 그룹에 속하도록 지정 된다.

큰 값 데이터 형식 : varchar(max), nvarchar(max)varbinary(max)
큰 개체 데이터 형식 : text, ntext, image, varchar(max), nvarchar(max), varbinary(max) 및 xml

정확한 수치

데이터 형식

범위 (정수 데이터를 사용하는 숫자 데이터 형식)

저장소

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[ (p[ ,s] )] numeric[ (p[ ,s] )]

1 – 9자리

5바이트

10 – 19자리

9바이트

20 – 28자리

13바이트

29 - 38자리

17바이트

bit

1, 0, NULL

1바이트

데이터 형식

범위 (통화 또는 통화 값을 나타내는 데이터 형식)

저장소

Money

-922,337,203,685,477.5808 - 922,337,203,685,477.5807

8바이트

smallmoney

- 214,748.3648 - 214,748.3647

4바이트

 

함수는 매개 변수 식이 bigint 데이터 형식인 경우에만 bigint를 반환한다. SQL Server에서는 다른 정수 데이터 형식(tinyint, smallint, int)을 자동으로 bigint로 승격 시키지 않는다.

테이블에 8개 이하의 bit열이 있다면 열은 1바이트로 저장된다. 9 – 16개 bit의 열이 있을 경우 2바이트로 저장. 이런식으로 계속 진행 된다.

Money 및 smallmoney 데이터 형식은 1/10000까지의 정확도를 가진 통화 단위를 나타낸다.

 

근사치

데이터 형식

범위

저장소

float

- 1.79E+308에서 -2.23E-308, 0 2.23E-308에서 1.79E+308

1-24 / 7자리 / 4바이트

real

- 3.40E+38에서 -1.18E - 38, 0 1.18E-38에서 3.40E + 38

25-53 / 15자리 / 8바이트

 

날짜 및 시간

데이터 형식

범위

저장소

date

0001-01-01 ~ 9999-12-31 / 10자리 / 정확도 1.

3바이트(고정)

datetime

1753-01-01 ~ 9999-12-31 / 19 ~ 23자리 /정확도 .000, .003또는 .007 단위 반올림

8바이트

Datetime2

0001-01-01 ~ 9999-12-31 / 19 ~ 27자리 / 정확도 100나노초

전체 자릿수 3미만 : 6바이트

3,4 경우 : 7바이트

전체 자릿수 : 8바이트

datetimeoffset

0001-01-01 ~ 9999-12-31 / 26 ~ 34자리 / 정확도 100나노초

10바이트

smalldatetime

1900-01-01 ~ 2079-06-06 / 19자리 / 정확도 1

4바이트(고정)

time

00:00:00.0000000 ~ 23:59:59.9999999 / 8 ~ 16 자리 / 정확도 100나노초

5바이트(고정)

데이터 형식

출력

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15

 

문자열

데이터 형식

범위(고정 길이 또는 가변길이 문자 데이터 형식)

저장소

char

1 ~ 8000 / 8000바이트 초과시 max 사용

n바이트 / max(2^31-1)

Nchar(유니코드)

1 ~ 4000

N * 2 바이트 / max(2^31-1)

varchar

1 ~ 8000 /

n바이트 / max(2^31-1)

Nvarchar(유니코드)

1 ~ 4000

n바이트 / max(2^31-1)

text

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

2,147,483,647 바이트

Ntext(유니코드)

2^30 - 1(1,073,741,823)

2,147,483,647 바이트

 

이진 문자열

데이터 형식

범위(고정 길이 또는 가변길이 문자 데이터 형식)

저장소

binary

1 ~ 8000 / 8000바이트 초과시 max 사용

n바이트 / max(2^31-1)

varbinary

1 ~ 8000 / 8000바이트 초과시 max 사용

n바이트 / max(2^31-1)

image

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

2,147,483,647 바이트

 

2. 데이터 형식 우선 순위

(MSDN 참고:
http://technet.microsoft.com/ko-kr/library/ms190309.aspx)

 

연산자로 데이터 형식이 다른 두 식을 결합할 경우 데이터 형식 우선 순위 규칙에 따라 우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환된다. 이때 암시적 변환이 지원되지 않으면 오류가 반환 된다. 피연산자 식이 같은 데이터 형식일 경우에는 연산 결과도 같은 데이터 형식이 된다.

  1. 사용자 정의 데이터 형식(가장 높음)
  2. sql_variant
  3. xml
  4. datetimeoffset
  5. datetime2
  6. datetime
  7. smalldatetime
  8. date
  9. time
  10. float
  11. real
  12. decimal
  13. money
  14. smallmoney
  15. bigint
  16. int
  17. smallint
  18. tinyint
  19. bit
  20. ntext
  21. text
  22. image
  23. timestamp
  24. uniqueidentifier
  25. nvarchar(nvarchar(max) 포함)
  26. nchar
  27. varchar(varchar(max) 포함)
  28. char
  29. varbinary(varbinary(max) 포함)
  30. binary(가장 낮음)

 

3. 선행 정렬

(MSDN 참고:
http://technet.microsoft.com/ko-kr/library/ms179886.aspx)

데이터 정렬 선행 규칙은 char, varchar, text, nchar, nvarcharntext 문자열 데이터 형식에만 적용됩니다. 그 외 다른 데이터 형식의 개체는 데이터 정렬 평가에 적용되지 않습니다.

피연산자 강제 변환 수준

명시적 X

암시적 X

기본값 강제 변환

데이터 정렬 없음

명시적 Y

오류 발생

결과는 명시적 Y

결과는 명시적 Y

결과는 명시적 Y

암시적 Y

결과는 명시적 X

결과는 데이터 정렬 없음

결과는 암시적 Y

결과는 데이터 정렬 없음

기본값 강제 변환

결과는 명시적 X

결과는 암시적 X

결과는 기본값 강제 변환

결과는 데이터 정렬 없음

데이터 정렬 없음

결과는 명시적 X

결과는 데이터 정렬 없음

결과는 데이터 정렬 없음

결과는 데이터 정렬 없음

 

  1. 연산자와 함수는 데이터 정렬을 인식하거나 또는 인식하지 않는다.
  2. 비교 연산자와 MAX, MIN, BETWEEN, LIKE, IN 연산자는 데이터 정렬을 인식한다.
  3. CAST, CONVERT, COLLATE 함수는 char, varchartext 데이터 형식에 대해 데이터 정렬을 인식한다.
  4. 문자열을 반환하지만 입력 문자열은 사용하지 않는 기본 제공 함수의 경우 결과 문자열은 기본값 강제 변환이 되며 현재 데이터베이스의 데이터 정렬 또는 함수를 참조하는 사용자 정의 함수, 저장 프로시저, 트리거를 포함하는 데이터베이스의 데이터 정렬이 할당된다.

 

이로써 SQL Server에서 사용하는 데이터 형식과 크기에 대해서 알아 보았는데 적절한 데이터 타입은 저장소의 효율성 뿐만 아니라 데이터의 처리에 있어서도 우월한 성능을 발휘 할 수 있다.

 

테이블 - 테이블 생성 및 수정.

 

테이블 생성은 이미 앞장에서 데이터베이스 생성 및 관리를 다루면서 해보았다. 이번 시간에는 간단하게 테이블을 생성해보고 제약 조건 및 데이터 타입 등에 대해서 알아 보도록 한다.

테이블의 데이터 속성들(색, 크기, 수량, 주문 번호 등)은 테이블에서 명명된 "컬럼" 형태를 띤다. 테이블에 있는 각 데이터는 한 개의 엔트리 또는 "행(row)로 표시 된다. ( 공식 명칭은 "tuple(튜플)"이라 불린다.

 

1. 테이블 생성

테이블을 생성하는 방법에는 SSMS를 이용하는 방법과 직접 쿼리문을 입력하여 생성하는 방법이 있다.

(MSDN 참고:
http://msdn.microsoft.com/ko-kr/library/ms174979.aspx)

 

- SSMS 이용하기

SSMS를 실행하여 해당 DB에서 [테이블] 마우스 오른쪽을 클릭하여 [새 테이블]을 선택한다.

 

[새 테이블]을 선택하고 나면 컬럼명을 명과 데이터 타입 기타 속성들을 선택하는 창이 나타난다.

* 열 이름 : 컬럼에 나타낼 이름이다. 엑셀에서 컬럼의 제목을 생각하면 쉬울 듯 하다. 한글명 도 가능 하다.

* 데이터 형식 : 해당 컬럼의 데이터 타입을 말한다. 숫자형인지 문자형인지 등. 데이터 형식을 클릭하면 SQL에서 사용할 수 있는 데이터 형식을 볼 수 있다.

* Null 허용 : Null 값을 허용 할 것인지 선택한다. 체크되어 있으면 Null허용이다.

* ID사양 : 데이터 형식이 숫자인 컬럼에 대해 자동증가 값을 설정 할 수 있다. ID사양을 [예]로 선택한 다음 증가값을 설정하고 초기값을 설정한다. 디폴트는 1, 1이며 사용자가 변경 할 수 있다.

 

기본키 (Primary Key) 설정은 기본키로 사용할 컬럼에서 마우스 오른쪽 버튼을 누른 후 [기본키 설정]을 선택한다. 기본키가 지정이 되면 테이블 디자이너에 열쇠 모양이 나타는 것을 알 수 있다.

 

만약 두개 이상의 복합 컬럼을 기본키로 하고 싶다면 마우스로 해당 컬럼을 선택하고 기본키를 설정하면 아래의 그림과 같이 해당 컬럼이 복합으로 열쇠모양이 나타남을 확인 할 수 있다.

 

테이블을 저장하자. 저장 버튼을 누른 후 사용할 테이블 명 tbl_Member 저장한다.

 

테이블이 생성되었는지 확인하자

 

 

위의 방법으로 tbl_Order 테이블을 생성하자

Num : 기본키로 설정한다. IDENTITY값 선택한다. 널 값을 허용하지 않는다.

나머지 컬럼들도 그림을 보고 입력하여 저장하자.

관계를 설정해 보도록 하자. Tbl_Order 에서 아무 곳에서나 마우스 오른쪽을 클릭한다.

[관계] 를 클릭하여 설정한다.

확인을 클릭하여 본다. 어떤 일이 일어나는가? 아마도 필자의 과정을 그대로 따라 했다면 경고창이 뜰 것이다.

데이터 형식 속성이 일치하지 않는다고 한다.

Tbl_Member 와 Tbl_Order 의 User_Name 의 데이터 길이를 보라. 서로 틀린 것을 알 수 있다.

이처럼 관계를 맺을 때에는 관계를 맺으려는 컬럼의 데이터의 형식이 일치해야 한다.

테이블을 새로 만들거나 수정하여 해당 컬럼의 길이를 일치 시켜 관계를 맺어 보자.

테이블 삭제는 아주 간단하다. 삭제하려는 테이블에서 마우스 오른쪽을 이용하여 삭제 하면 된다.

 

지금은 테스트 단계이므로 테이블을 삭제하지 말고 수정하여 사용하자.

해당 테이블에서 마우스 오른쪽을 클릭하여 [디자인]을 선택한다.

테이블을 디자인할 수 있는 창이 나타난다.

User_Name을 Nvarchar(50) 으로 수정한 후 저장한다.

 

테이블 수정이 완료 되었으면 좀 전과 같이 관계를 설정해 보자. 설정이 완료 되면 tbl_Order의 키 정보에서 보면 User_Name 이 FK로 지정된 것을 확인 할 수 있다.

다이어그램에서 확인 할 수 있다.

 

테이블에 데이터를 입력하여 보자.

데이터를 입력하고자 하는 해당 테이블을 선택하고 마우스 오른쪽을 클릭하여 [상위 200개 행 편집]을 선택하자. 그림과 같이 화면이 나타나면 데이터를 입력한다. 그리고 단축 메뉴의 느낌표(!)를 클릭하면 데이터가 커밋 된다.

- 쿼리 이용하기

SSMS 쿼리 분석기에 테이블 생성 명령을 입력 한다.

Tbl_Memvber 테이블 생성.

CREATE TABLE [dbo].[tbl_Member](

    [num] [int] IDENTITY(1,1) NOT NULL,

    [user_name] [nvarchar](50) NULL,

    [dept] [nvarchar](50) NULL,

    [company] [nchar](10) NULL

) ON [PRIMARY]

 

GO

 

Tbl_Order 테이블 생성.

CREATE TABLE [dbo].[tbl_Order](

    [Num] [int] IDENTITY(1,1) NOT NULL,

    [User_Name] [nvarchar](50) NOT NULL,

    [Order_Product] [nvarchar](100) NOT NULL,

    [Order_Price] [money] NOT NULL,

    [Order_Date] [datetime] NOT NULL,

CONSTRAINT [PK_tbl_Order] PRIMARY KEY CLUSTERED

(

    [User_Name] ASC

)

) ON [PRIMARY]

 

GO

 

--tbl_Order User_Name tbl_Member User_Name 관계설정.

ALTER TABLE [dbo].[tbl_Order] WITH CHECK ADD CONSTRAINT [FK_tbl_Order_tbl_Order] FOREIGN KEY([User_Name])

REFERENCES [dbo].[tbl_Order] ([User_Name])

GO

 

ALTER TABLE [dbo].[tbl_Order] CHECK CONSTRAINT [FK_tbl_Order_tbl_Order]

GO

 

SQL Server 파서에 관한 한 탭과 캐리지 리턴(<Enter> 키)과 스페이스바로 만들어진 공백 문자는 동일한 것으로 취급 된다.

 

이렇게 해서 간략하게 테이블 생성하는 방법에 대해서 알아 보았다.

테이블 생성은 빈번하게 사용되므로 디자이너를 이용하는 것 보다 쿼리를 직접 입력하는 것이 사용하기에 편하다. (Ctrl + C, Ctrl + V 의 이점.) 쿼리문이 간단하므로 숙지하여 사용하도록 하자.

 

  1. 박오상 2020.07.24 00:02

    좋은 내용입니다.

  2. 김라증 2020.07.24 00:02

    좋은 하루 되세요~ 좋은정보입니다.

+ Recent posts