2019.01.21 CREATE,DROP,ALTER

2019. 1. 21. 10:49SQL


 * SQL명령의 종류

- DML(Data Manipulation Language) : 데이터 조작 SELECT, INSERT, UPDATE, DELETE

 

- DDL(Data Definition Language) : 데이터 정의 데이터베이스 객체(object)를 만들거나 삭제하는 명령어.                                                데이터베이스 객체: 테이블, 인덱스, 뷰 명령어: CREATE, DROP, ALTER 


- DCL(Data Control Language) : 데이터베이스 제어 TRANSACTION 제어, 데이터 접근권한 제어

     GRANT(권한 주기), REVOKE( 권한 뺏기)



 * 스키마 - 데이터베이스 객체가 만들어지는 공간, 그릇. 하나의 스키마 안에서 이름이 중복되는 객체를 생성할수 없음. 스키마나 테이블은 네임스페이스(이름공간)로써 기능한다.


#1 테이블 작성 · 삭제 · 변경



CF) 테이블 생성



① 테이블 작성 (생성): CREATE TABLE 테이블명 (열 정의 1, 열 정의2, ...); 


- 열 정의  : 열명 자료형 [DEFAULT 기본값] [ NULL | NOT NULL]



--> 생성 후 삽입






*********** 테이블생성시 키 설정을 할 수 있다.




② 테이블 삭제 : DROP TABLE 테이블명;



- 테이블 정의는 그대로 둔채 데이터 행만 삭제
  
DELETE FROM sample62;

- DDL로 분류되는 TRUNCATE TABLE 명령을 사용하면 삭제속도 향상
  
TRUNCATE TABLE 테이블명;


③ ALTER 수정, 추가 ,변경

* 테이블 수정
  ALTER TABLE 테이블명 변경명령;
  - 열 추가, 삭제, 변경
  - 제약 추가, 삭제


- 열 추가
  ALTER TABLE 테이블명 ADD 열 정의;
  ALTER TABLE sample62 ADD newcol INTEGER;


- NOT NULL 제약이 걸린 열을 추가할 때는 기본값을 지정해야 함!



* 열 속성 변경

  ALTER TABLE 테이블명 MODIFY 열정의;
  ALTER TABLE sample62 MODIFY newcol VARCHAR(20); ex) ALTER TABLE sample62 MODIFY newcol NUMBER NOT NULL; -> NUMBER 타입변경,NULL삽입불가     -> 이미 행에 열에 NULL포함되어 있을 경우는 해당되지 않음


ex) 열 추가



* 열 이름 변경

- MySQL
  ALTER TABLE 테이블명 CHANGE [기존열이름] [신규 열 정의];

- Oracle
  ALTER TABLE 테이블명 RENAME COLUMN [기존열이름] TO [신규 열 정의];

- ALTER TABLE로 열 이름 변경하기
    ALTER TABLE sample62 RENAME COLUMN newcol TO c;


* 열 삭제
  ALTER TABLE 테이블명 DROP 열명;

  ALTER TABLE sample62 DROP c;


* ALTER TABLE로 테이블 관리시 주의사항

- 문자열에서 최대길이 연장
   VARCHAR(4)VARCHAR(10)    문제없음.
   VARCHAR(10)VARCHAR(4)    문제발생여지 있음.
  
- 열 추가 후 변경한 테이블에 행을 추가하는 INSERT 명령은
   확인하는걸 권장함.

   INSERT INTO 테이블명 VALUES (1,2,3,4,5);
      → 열이 추가되면 수행안될가능성 존재!

   INSERT INTO 테이블명 (a,b,c,d,e) VALUES (1,2,3,4,5);
      → 추가된 열이 NOT NULL 제약이 걸리면 수행안될가능성 존재!