오전 10:49
1. 시스템 제공 데이터 형
SQL Server에서 제공하는 Data Type은 보시는 표와 같습니다.
Data 종류 |
Data Type |
Byte 크기 |
ANSI 호환 Type |
문자열 |
Char[(n)] |
0 ~ 8000 |
Character[(n)] |
|
Varchar[(n)] |
0 ~ 8000 |
Char VARYING[(n)] Character VARYING[(n)] |
|
Text |
0~2GB |
- |
문자열(유니코드) |
nchar[(n)] |
|
0~8000 |
|
nvarchar[(n)] |
|
0~8000(4000 문자) |
|
ntext |
|
0~2GB |
정수형 |
Int |
4 |
Integer |
|
Samllint |
2 |
- |
|
Tinyint |
1 |
- |
고정소수점 |
Numeric[(p[,s])] |
2~17 |
|
|
Decimal[(p[,s])] |
2~17 |
Dec |
부동소수점 |
Float[(n)] |
8 |
Double precision Float[(n)] : n 이 8 ~15 인 경우 |
|
Real |
4 |
Float[(n)] : n이 1 ~7인 경우 |
날짜형 |
Datetime |
8 |
- |
|
Smalldatetime |
4 |
- |
화폐형 |
Money |
8 |
- |
|
Smallmoney |
4 |
- |
이진형 |
Binary |
0~8000 |
- |
|
Varbinary |
0~8000 |
Binary VARYING[(n)] |
|
Image |
0~2GB |
- |
기타 |
Cursor |
- |
- |
|
Uniqueidentifier |
16 |
- |
|
Timestamp |
8 |
- |
|
Bit |
1 |
- |
데이터 형
2. 사용자 정의 데이터 형
sp_addtype [@typename =] type,
[@phystype =] system_data_type
[, [@nulltype =] 'null_type']
- @typename : 사용자정의 Data Type의 명칭
- @phystype : System에서 제공하는 Data Type과 Data의 길이를 문자열로 작성
- @nulltype : NULL 유무에 대한 설정
sp_droptype [@typename =] 'type'
3. 테이블 생성과 삭제
가) 테이블 :
- Data를 저장하는 틀
- Column과 Row로 구성
- 하나의 Database에 2십억 개의 Table 생성이 가능
- 각 Table 당 1,024개의 Column을 생성
나) 테이블 생성
실습: http://www.mssql.org/LectureSQL/
SELECT절 : 반환할 Column에 대한 내역을 기술하는 부분
FROM절 : 어떠한 Table의 Data를 반환할 것인지의 Table명을 기술하는 부분
WHERE절 : Table에 있는 Row의 반환에 대한 제약을 기술하는 부분
IN과 리스트: 특정지역이 여러 곳이라면
우편번호 = 값 OR 우편번호 = 값 대신 Where 우편번호 IN("1","2")
LIKE:
_ |
어떠한 한 문자라도 오는 경우. |
% |
어떠한 문자라도 모두 다 포함 |
[] |
[]안의 있는 모든 문자 |
[^] |
[]안에 있는 문자를 제외한 모든 문자 |
▣ Identity 속성
- 식별을 위한 Column
- 제약사항
- Tinyint, smallint, int, decimal, numeric Data Type에만 지정이 가능
- Table 당 하나 이상의 Identity Column 생성 불가능
- Identity Column에는 DEFAULT Option을 지정할 수 없음
- ID 초기값이나 ID 증가값을 지정하여 주어야만 함
- 기본값은 (1, 1)
▣ Timestamp
- SQL Server에서 기본적으로 값을 지정하여 입력
- SQL Server 내에서 유일한 값으로 차례대로 증가하면서 생성
- 8byte의 크기를 가지는 binary 형태로 생성
- SQL Server 내에서 사용되는 것이 일반적
▣ Default
해당 Column에 반드시 값이 입력되어야 하면서 특정한 값이 대부분인 경우 또는 대부분의 값이 정해져 있는 경우에는 Default로 Column을 지정하고, 값을 부여 하면, 일일이 값을 지정하여 입력하지 않더라도 SQL Server가 기본값으로 지정한 값을 입력
▣ IS ROWGUID
IS ROWGUID는 uniqueidentifier, 즉 전역 식별 Column을 의미
Insert with Nested SELECT Statements
INSERT … VALUES 구문과 다른 점은 VALUES 대신에 SELECT 문장이 온다라는 점입니다.
INSERT…SELECT 구문의 예 #1
Constraint 강제 마지막 Column에 DATEPART라는 구문이 보입니다. 이는 SQL Server에서 제공하는 Built-in Function입니다.(좀 더 향상된 질의)
3. SELECT INTO Statements and Temporary Table
SELECT…INTO구문은 SELECT문에 의해서 생성된 결과가 반환되는 것이 아니라, Database내에 새로운 Table로 생성되어 집니다. 새로이 생성되는 Table명은 INTO구문 다음에 table_name에 기술하여주면 됩니다.
데이터베이스 옵션 변경
SELECT…INTO의 예제 #1
SELECT…INTO의 예제 #2
SELECT…INTO구문은 새로운 Table을 생성하는 문장입니다. 따라서 두 번째 예제의 문장을 수행하면, 다시 ‘영화LIST’라는 Table을 생성하려 하기 때문에 에러가 발생되는 것입니다.
DELETE 예제 #1
WHERE절이 없다는 것은 DELETE문장을 실행하는 데 있어서 아무런 조건이 없다는 것입니다. 따라서 예제의 첫번째 문장은 Test1 Table의 모든 Data를 삭제하는 결과를 나타내게 됩니다.
DELETE 예제 #2
WHERE절을 포함하고 있는 문장입니다. TEST2 Table에서 일련번호가 1인 Data를 삭제하는 문장입니다.
Truncate Table
WHERE절이 없는 DELETE문장과 같은 기능을 수행합니다. 즉, 이 문장을 이용해서 Table의 모든 Data를 삭제할 수 있습니다. Truncate구문을 이용하여 삭제하였을 경우에는 LOG에 기록이 되지 않습니다.
빠른 수행속도를 가지지만, LOG에 의해서 작업에 대한 복구가 허용되지 않습니다. 따라서 Truncate에 의한 작업이 확실하지 않다면, 반드시 백업을 받아 놓으셔야만 합니다.
'RDBMS(mysql,mssql)' 카테고리의 다른 글
[MSSQL] 8.데이터 검색(Query문) (0) | 2018.08.01 |
---|---|
[MSSQL] 7.Data 무결성 (Integrity) (0) | 2018.08.01 |
[MSSQL] 5.Database 구성요소 (0) | 2018.07.30 |
[MSSQL] 4.T-SQL (0) | 2018.07.30 |
[MSSQL] 3.SQL Server (0) | 2018.07.28 |