[MSSQL] Create Table, Alter Table, Drop Table(테이블 생성,수정,삭제)

데이터베이스 DDL에는 Create(생성), Alter(수정), Drop(삭제)를 시킬수 있는 명령어가 있습니다. 이 테이블의 구조를 생성,변경,삭제를 하는것이 DDL입니다. 이번 포스팅에서는 여러 DBMS중에서 MSSQL의 DDL에 대해서 포스팅하려합니다.

☞테이블이란 : 세로줄과 가로줄을 이용하여 데이터를 실제로 저장해놓은 공간입니다. (표)

    CREATE Table(테이블 생성) 

    테이블 생성 문법 (구조)

    CREATE TABLE 테이블명(
    컬럼명 타입(크기) NOT NULL, --널값이 들어갈 수 없음
    컬럼명 타입 NULL DEFAULT(값), --초기값 지정
    CONSTRAIN PK이름 PRIMARY KEY(컬럼명) --PK설정
    )

    테이블 생성 (예제)

    CREATE TABLE MY_TABLE(
    NO_EMP NVARCHAR(10)NOT NULL, -- NULL 값이 들어갈 수 없음
    NM_KOR NVARCHAR(40)NOT NULL, -- NULL 값이 들어갈 수 없음
    AGE INT NULL DEFAULT (0), --디폴트 = 0
    TODAY DATETIME DEFAULT(GETDATE()), --디폴트 현재일자
    CONSTRAINT PK_MY_TABLE PRIMARY KEY(NO_EMP)--PK : NO_EMP )


    ALTER Table(테이블 변경) 

    ALTER TABLE은 한번 실행하면 되돌릴 수가 없기때문에 다소 위험한 문구입니다.
    그렇기때문에 트랜잭션 안에서 실행하시는것을 권유드립니다.
    테이블을 바꾸기전에 먼저 테이블이 어떻게 생겼는지 알 필요성이 있습니다.
    테이블 구조를 확인하는 문구는 이렇습니다. 오라클이랑은 조금 다르더군요

    테이블 컬럼 확인 (구조)
    SP_COLUMNS 테이블 이름
    
    SP_HELP 테이블 이름
    

    테이블 컬럼 확인 (예제)

    SP_COLUMNS MY_TABLE
    
    SP_HELP MY_TABLE

    테이블의 구조를 확인한 뒤 ALTER TABLE을 시도합니다.


    테이블 변경 (칼럼 추가)

    ALTER TABLE 테이블명 ADD 컬럼명 컬럼 속성
    
    ALTER TABLE MY_TABLE ADD NM_ENG NVARCHAR NOT NULL

    테이블 변경 (칼럼 수정)

    ALTER TABLE 테이블명 ALTER 컬럼명 컬럼 속성
    
    ALTER TABLE MY_TABLE ALTER COLUMN NM_ENG INT

    테이블 변경 (칼럼 삭제)

    ALTER TABLE 테이블명 DROP COLUMN 칼럼명
    
    ALTER TABLE MY_TABLE DROP COLUMN NM_ENG
    


    DROP Table(테이블 삭제) 

    DROP TABLE은 ALTER TABLE 보다도 훨씬 위험한 문구입니다. 
    잘못해서 엉뚱한 테이블을 날리는 순간 바로 회사 퇴사각입니다. ㅎㅎ
    그렇기 때문에 꼭!! 트랜잭션 안에서 쿼리를 실행해주세요.

    테이블 삭제
    DROP TABLE 테이블명
    
    DROP TABLE MY_TABLE
    



    [MS_SQL] Insert문 사용법 & 예제

    [MS_SQL] Select문 사용법 & 예제

    [MS_SQL] Update문 사용법 & 예제(트랜잭션)

    [MS_SQL] Delete문 사용법 & 예제(트랜잭션)

    [MS_SQL] 별칭(ALIAS) 사용법 & 예제


    댓글(2)

    • sql 질문
      2019.08.13 07:22

      create table 학생(
      성적 int NOT NULL
      학번 INT NOT NULL DEFAULT (91301)
      이름 VARCHAR(15) DEFAULT (LDJ)
      CONSTRAIN my_primary_key PRIMAR KEY(성적) >기본키는 my_primary
      >>이러면 성적을 기본키로 가지고잇어야 권한이 있다는건 가요??

      그리고 primary key(성적) 이거랑은 어떻게 다른건가요??
      제가 이해한건 primary key(성적) 기본키로 성적을 쓰겟다, constraint 는
      (성적)을 기본키로 가져야만 저장가능하다
      이렇게입니다
      만약 뭔가 이상이 있으면 지적해주실수 있을까요?


      constraint 부분은 글을 많이 찾아봐도 햇갈려서 질문드려봅니다

      • 2019.08.14 15:24 신고

        성적을 기본키로 가지고 있어야 권한이 있다는건 말이 좀 정확하지 않은것같구요. 기본키라는게 중복값이나 NULL값을 들어갈수없게끔 테이블 특정컬럼에 제약조건을 거는거에요. my_primary_key 이거는 그냥 PK이름이구요. 학생이라는 테이블에 제약조건을 걸텐데 나는 성적이라는 컬럼을 PK로 줄것이고 이 PK이름을 my_primary_key로 주겠다. 이렇게 해석하시면 될것같습니다.

        CONSTRAINT는 그냥 시스템 명령어에요. 뜻이라고하면 그때그때마다 상황이 다 달라서 CONSTRAINT의 정확한 뜻이라고 딱 정의하기는 좀 애매하네요. CREATE TABLE에서의 CONSTRAINT의 뜻이라고 한다면 컬럼에대한 제약조건을 추가한다? 이정도로 알면 될거같아요.

        constraint는 (성적)을 기본키로 가져야만 저장가능하다라고 이해를 하셨다고 하셨는데. 말이 좀 두루뭉실한거같아서 더 정확하게는 PK가 걸려있는 테이블에 INSERT와 UPDATE를 할 경우. 그 PK에 NULL값이나 중복값이 들어갈경우 INSERT와 UPDATE가 COMMIT되지 못한다라고 알면 될것같습니다.

    Designed by JB FACTORY