본문 바로가기
database/sql

MS SQL 테이블 생성 & 제약조건 설정

by hhhdangmoo 2022. 10. 31.
728x90
반응형

테이블을 생성하기 전에 데이터베이스를 먼저 만들어야 한다.

MS-SQL에서 데이터베이스를 생성해보자

 

데이터베이스 만들기

T-SQL을 이용하여 데이터베이스를 만들어보자

사용자 DB를 생성하려면, master DB를 사용해야 한다.

새 쿼리(New Query) 를 클릭하면 새로운 쿼리 창이 뜬다

내용을 입력 한 후 (나는 test01이라는 데이터베이스를 만들었다)

실행(Execute)를 클릭하면 새 쿼리가 잘 생성 되었다는 코멘트가 나온다.

 

Object Explorer를 새로고침 해보면

test01이 생성 된 것을 확인 할 수 있다.

 

Tip
 MS-SQL에서 제공하는 기본 속성 type
숫자 타입

 bit : 1bit
 tinyint : 0 ~ 255 (정수)
 smallint : -2^15 ~ 2^15-1 (정수) 16bit
 int : -2^31 ~ 2^31-1 (정수) 32bit
 bigint : -2^63 ~ 2^63-1 (정수) 64bit
decimal[(p[,s])[, numberic([p[,s])] : decimal(5,2) → 123.45
float : 4byte float (실수)
real : 8byte float (실수)
datetime : 1755/1/1 ~ 9999/12/31 (8byte) 날짜
smalldatetime : 1990/01/01 ~ 2079/6/6 (4byte) 날짜

문자 타입
char[(n)] : 고정길이 문자열
varchar[(n)] : 0 ~ 255 (정수)
nchar[(n)] : for unicode(2byte) → n → 2n bytes (유니코드를 위한 고정 문자열)
nvarchar[(n)] : for unicode (유니코드를 위한 가변길이 문자열)

IDENTITY 타입
자동 증가 속성 타입
IDENTITY(10,2) → 초기값 10, 2씩 증가함

 

테이블(Table) 생성

test01 데이터베이스에 테이블을 생성해보자

/*CREATE TABLE 사용법*/
CREATE TABLE 테이블명 
(속성명, 속성타입, [제약조건],
 속석명 속성타입, ....)

내용 입력 후 실행 누른다

dbo.membertest 테이블이 성공적으로 만들어 진 것을 확인 할 수 있다.

 

튜플(Tuple) 추가

생성한 membertest 테이블에 튜플을 추가해보자

/*INSERT 사용법*/
INSERT INTO 테이블명(속성명, 속성명, ...)
VALUES(속성값, 속성값, ...)

여기서 INTO는 생략이 가능하다.

다만, id 속성은 자동 증가 타입을 부여 해 놓았기 때문에 따로 값을 지정할 수 없다.

 

입력 후 실행을 클릭하면 튜플이 생성 되었다는 코멘트가 뜬다.

 

튜플의 검색

위에서 생성한 튜플을 확인하려면 SELECT 구문으로 튜플을 검색해야 한다.

/*SELECT 구문 사용법*/
SELECT 속성명, 속성명, ...
	FROM 테이블명
        [WHERE 조건]

새 쿼리를 생성 한 뒤 select 구문으로 튜플을 검색한 결과

위에서 생성 했던 내용 대로 잘 만들어진 것을 확인 할 수 있다.

 

테이블의 구조 변경

테이블의 구조를 변경 할 때에는 ALTER TABLE 구문을 사용한다.

TYPE 내용
ADD column 속성 추가
ALTER column 속성 타입 변경
DROP column 속성 제거

*주의사항*

ALTER column이 경우 속성값의 범위를 증가시키는 경우에는 문제가 없지만

범위를 감소시킬 경우에는 현재 테이블이 저장된 속성값들에 따라 허용이 안 될 수도 있다

/*ALTER TABLE (ADD column)*/

alter table [테이블명]
add [속성명] [type]

 

/*ALTER TABLE (alter column)*/

alter table [테이블명]
alter column [속성명] [type]

 

테이블 지우기

DROP TABLE : 테이블 자체를 지운다.

DROP TABLE [테이블명]

TRUNCATE TABLE : 테이블의 내용만 지우고, 테이블은 남겨 놓는다.

TRUNCATE TABLE [테이블명]

*CREATE, ADD, ALTER, DROP, TRUNCATE 등은 모두 데이터 정의어(DDL) 이기 때문에 명령문이 수행되고 나면 회복이 불가능함*

 

 

무결성 제약조건
구문 내용
NOT NULL NULL 값 허용 불가
UNIQUE 하나의 테이블 내에서 해당 속성값은 한번만 나옴
PRIMARY KEY 기본키(UNIQUE + NOT NULL)
FOREIGN KEY 외래키
CHECK 도메인 무결성

1. 테이블 생성 시 속성에 제약조건 지정

CREATE TABLE [테이블명]
(속성명 속성타입 [CONSTRAINT [제약조건명] 제약조건],
속성명 속성타입, 
...
)

 

2.참조 무결성 제약조건

- 외래키 값은 다른 테이블의 기본키 값들 중 하나이어야 함

속성명 속성타입 [CONSTRAINTS 제약조건명]
REFERENCE 참조테이블명(속성명)

 

3. 도메인 무결성 제약조건

 - 입력 값의 제한

 

4. 테이블 수준 제약 조건

 - 속성 단위로 제약 조건 설정은 표현에 있어서 제약이 따른다. (복합키의 경우 여러개의 속성이 합쳐져 키가 됨)

CREATE TABLE 테이블명(
	속성명 속성타입
    [CONSTRAINT 제약조건명] 제약조건 (속성명)
)

 

제약조건의 추가 & 제거

1. 테이블을 생성한 후 제약조건을 추가 하거나 제거할 필요성이 있다.

 - 제약조건도 테이블의 구조 정보에 속하기 때문에 ALTER TABLE을 이용한다.

 - 추가 : ADD CONSTRAINT

 - 제거 : DROP CONSTRAINT

 * 주의점 *
 ALTER CONSTRAIN는 없음

 

2. 제약조건 이름을 지정해 두어야 추가 or 제거가 수월하다.

ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건(속성명)

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명

 

728x90
반응형

'database > sql' 카테고리의 다른 글

SQL 기초 - SQL의 특징 및 MS-SQL설치 방법  (0) 2022.10.30