mssql 테이블 만들기

2014.03.17 13:00

소울 조회 수:6927

테이블 만들기

(컬럼명.데이터형식 null 허용 , )

 

제약조건 설명도 추가

CONSTRAINT

 

ex)

CREATE TABLE userTbl 
( userID  char(8) NOT NULL , 
  name    nvarchar(10) NOT NULL, 
  birthYear   int NOT NULL,  
  addr   nchar(2) NOT NULL,
  mobile1 char(3) NULL, 
  mobile2   char(8) NULL, 
  height    smallint NULL, 
  mDate    date NULL 
)

 

ex1)

CREATE TABLE buyTbl 
(  num int IDENTITY(1,1) NOT NULL ,
   userid  char(8) NOT NULL ,
   prodName nchar(6) NOT NULL,
   groupName nchar(4) NULL , 
   price     int  NOT NULL,
   amount    smallint  NOT NULL 
)
GO

 

IDENTITY(1,1) 제약조건 (자동으로 증가하는 컬럼- 여기에는 insert 하지 않는다 ) - 정수형

 

 

CREATE TABLE userTbl 
( userID  char(8) NOT NULL PRIMARY KEY
  name    nvarchar(10) NOT NULL, 
  birthYear   int NOT NULL,  
  addr   nchar(2) NOT NULL,
  mobile1 char(3) NULL, 
  mobile2   char(8) NULL, 
  height    smallint NULL, 
  mDate    date NULL 
)

 

PRIMARY KEY 중복된 값을 넣을수없다 - 반드시 not null 이여야한다

 

 

CREATE TABLE buyTbl 
(  num int IDENTITY(1,1) NOT NULL PRIMARY KEY , 
   userid  char(8) NOT NULL 
   FOREIGN KEY REFERENCES userTbl(userID),
   prodName nchar(6) NOT NULL,
   groupName nchar(4) NULL , 
   price     int  NOT NULL,
   amount    smallint  NOT NULL 
)
GO

 

FOREIGN KEY 다른테이블에 특정컬럼에 값이 존재할때 그값을 입력할수있다

위에 예제에는 userid는 userTbl테이블값을 참조하여 있으면 삽입

 

UNIQUE 중복된 값을 넣을수 없다 // 하지만 null 값을 넣을수 있다 그러나 null을 1번만 넣을수있다

 

FOREIGN KEY 는 테이블에 1번만 들어갈수있다

UNIQUE 는 테이블에 여러번 넣을수있다

 

 

CHECK // 조건에 맞는 값만 입력할수있다

ex)

-- 출생년이 1900년 이후 그리고 현재의 연도 이전
ALTER TABLE userTbl
 ADD CONSTRAINT CK_birthYear
 CHECK  (birthYear >= 1900 AND birthYear <= YEAR(GETDATE()))         
   

-- 전화번호 국번 체크
ALTER TABLE userTbl
 ADD CONSTRAINT CK_mobile1
 CHECK  (mobile1 IN ('010','011','016','017','018','019'))


-- 키는 0이상이어야 함.
ALTER TABLE userTbl
 ADD CONSTRAINT CK_height
 CHECK   (height >= 0)


-- 전화번호 국번 체크
ALTER TABLE userTbl
         WITH NOCHECK
 ADD CONSTRAINT CK_mobile1
 CHECK  (mobile1 IN ('010','011','016','017','018','019'))