코딩일기

MySQL 기초부터 훑어보기7(ALTER, TABLE) 본문

Code/SQL

MySQL 기초부터 훑어보기7(ALTER, TABLE)

daje 2021. 3. 8. 17:05
728x90
반응형

 

 

https://dev.mysql.com/

 

 

 

안녕하십니까 다제입니다. 

 

오늘도 SQL에 대해서 배워보도록 하겠습니다.

 

 

 

 

 

1. ALTER

1) COLUMN 추가하기

ALTER TABLE student ADD gender CHAR(1) NULL;

 -. student TABLE에 gender column을 추가하라는 의미이며, 

 -. 문자 길이는 1, NULL값을 포함할 수 있다는 라고 기재해둔 코드 입니다. 

 

 

2) COLUMN 이름 수정 

ALTER TABLE student
RENAME COLUMN student_number TO regiser_number;

 

 

3) COLUMN 삭제하기

ALTER TABLE student DROP COLUMN admission_date;

 

 

4) COLUMN type 변경하기

# 값 인코딩 
UPDATE student SET major =100 WHERE object = "cup"

# type change
ALTER TABLE  student MODIFY major INT;

-. 문자열로 구성된 COLUMN을 숫자형을 바꿔주고자 한다. 이때 바로 pandas처럼 바꿀 수 없다. 
-. 값을 인코딩해준 후 type을 변경해야 오류가 나지 않는다. 

 

 

5) NOT NULL 속성 넣기 

ALTER TABLE student MODIFY student_id NOT NULL;

 

 

6) COLUMN에 DEFAULT 속성 주기 

ALTER TABLE student MODIFY student_id NOT NULL DEFAULT 10101;

 -. 이 기본값은 SNS에서 주로 사용된다. 

 -. 우리가 게시글을 올리면 자동적으로 시간이 적용되고 수정해도 수정한 시간이 뜨는 것을 알 수 있으실 겁니다. 

 -. 이때, 게시글을 올리는 기능에 DEFAULT로 NOW()함수를 넣어놓으면 현재 시간이 뜨게 됩니다. 

 

 

7) COLUMN에 UNIQUE 속성 주기 

ALTER TABLE student MODIFY id_num INT NOT NULL UNIQUE;

  -. 하상 컬럼이름 컬럼속성 null여부 순으로 작성해야하는 것을 잊으면 안됩니다.  

 

 

 

8) CONSTRAINT 걸기 

# contraint 생성 
ALTER TABLE student
ADD CONTRAINT st_rule CHECK ( regist_num < 3000 );


# 두개 이상의 contraint 생성 
ALTER TABLE student
ADD CONTRAINT st_rule 
CHECK (email LIKE '&@%' AND regist_num < 3000 );


# contraint 삭제
ALTER TABLE student DROP CONTRAINT st_rule;

 -. COLUMN 내 들어오면 안되는 것들을 제한하기 위해 설정합니다. 

 -. 그러나, 장고같은 프레임워크를 사용하시면 모두 구현되어 있으니 너무 걱정안하셔더 됩니다. 

  ex) 사용할 수 없는 비밀번호 2만개를 미리 장고가 가지고 있어서 사용자들이 해킹 피해를 막을 수 있도록 도와줍니다. 심지어 이메일 인증도 구현되어 있습니다. 

 

 

9) COLUMN name과 type 동시에 바꾸기 

ALTER TABLE info 
CHANGE id number_id VAHRCHAR(2) NOT NULL;

 -. 이렇게 CHANGE를 사용하면 feature의 이름과 type속성을 한번에 바뀔 수 있습니다. 

 

 

 

 


 

 

 

 

2. TABLE

1) 테이블 이름 변경하기 

RENAME TABLE student TO undergraduate;

 

 

2) 테이블 복사하기

CREATE TABLE undergraduate_of_copy AS SELECT * from undergraduate;

 

 

3) 테이블 삭제하기

DROP TABLE graudate_of_copy;

 

 

4) 테이블 틀만 복사하기

CREATE TABLE copy_of_glass LIKE glass;

# 이렇게 틀 먼저 만들어진 상태에서 row채우는 방법
INSERT INTO copy_of_glass SELECT * FROM glass; 

 

 

5) 테이블 데이터 일괄적으로 지우기

TRUNCATE glass;

 

 

위와 같이 ALTER과 TABLE에 대해서 알아보았습니다. 

 

혹시 수정할 부분과 미비한 부분있다면 코멘트 부탁드립니다. 

 

감사합니다. 

728x90
반응형
Comments