[테이블 수정]
이름 바꾸기
mysql> ALTER TABLE tablename RENAME bbs;
컬럼 속성 수정
mysql> ALTER TABLE tablename MODIFY colname INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE tablename MODIFY 컬럼이름 컬럼속성
컬럼 이름 바꾸기
sysql> ALTER TABLE tablename CHANGE colname newcolname INT NOT NULL AUTO_INCREMENT;
CHANGE는 컬럼 속성뿐아니라 이름도 바꿔준다.
컬럼 추가
mysql> ALTER TABLE bbs ADD name varchar(10);
ALTER TABLE tablename ADD 컬럼이름 컬럼속성
컬럼 삭제
mysql> ALTER TABLE bbs DROP colname;
특정 컬럼 뒤에 새로운 컬럼 추가
mysql> ALTER TABLE bbs ADD newcol varchar(10) AFTER num;
num 컬럼 뒤에 newcol 컬럼 추가.
기존 컬럼을 지우고 맨 앞에 컬럼 추가
mysql> ALTER TABLE bbs DROP newcol, ADD newcol VARCHAR(10) FIRST;
맨 앞에 추가하려면 FIRST를 사용한다.
PRIMARY KEY 속성 삭제
mysql> ALTER TABLE test DROP PRIMARY KEY;
이미 PRIMARY KEY인 컬럼의 속성을 바꿀 때
PRIMARY KEY 속성은 지정하지 말고, NOT NULL 속성을 함께 지정해 주면 기존 PRIMARY KEY 속성은 그대로 남은 상태로 컬럼의 속성을 변경할 수 있다.
mysql> ALTER TABLE test MODIFY a CHAR(1) NOT NULL;
테이블의 내용 전체 삭제
mysql> TRUNCATE TABLE tablename;
트랜잭션에 의해 복구될 수 없다.
참조) http://egloos.zum.com/kwon37xi/v/1635464
UPDATE 문
update ABCDE set column1='xyz' where no='3'
'
update ABCDE set column1='xyz' where no>3
update ABCDE set point=(point+50) where no<>3
'ABCDE' 테이블의
'point' 컬럼 값을 현재 값보다 50을 더한 값으로 수정한다.
수정대상은 'no' 컬럼값이 '3' 이 '아닌' 레코드 전부이다.
update ABCDE set column1='xyz',column2='1234' where point>3 and point<100
update ABCDE set column1='xyz' where no>3 order by uid limit 20
'ABCDE' 테이블의
'column1' 컬럼 값을 'xyz' 으로 수정한다.
수정대상은 'no' 컬럼값이 '3' 보다 큰 레코드이고,
전체목록을 uid 컬럼값을 기준으로 정렬해서 상위 20 개를 수정한다.
update ABCDE set column1=replace(column1,'코리아','한국')
'ABCDE' 테이블의
'column1' 컬럼 값에 '코리아' 라는 단어가 포함되어 있다면 모두 '한국' 으로 수정한다.
update ABCDE set column1=replace(column1,'코리아','한국') where wdate>1159454960
'ABCDE' 테이블의
'column1' 컬럼 값에 '코리아' 라는 단어가 포함되어 있는 것은 '한국' 으로 수정한다.
수정대상은 wdate 컬럼의 값이 1159454960 보다 큰 레코드 이다.
update ABCDE set column1=concat(column1,'hellow') where no>5
'ABCDE' 테이블의
'column1' 컬럼 값에 'hellow' 라는 단어를 덧붙인다.
수정대상은 no 컬럼의 값이 5 보다 큰 레코드 이다.
참조)http://www.technote.co.kr/php/technote1/board.php?board=faq&command=body&no=14
DELETE 문
delete from ABCDE where no='3'
delete from ABCDE where no>3
delete from ABCDE where no<>3
'ABCDE' 테이블에서 'no' 컬럼값이 '3' 이 '아닌' 레코드를 전부 삭제한다.
delete from ABCDE where wdate>32015467 order by no limit 30
'ABCDE' 테이블에서 'wdate' 컬럼값이 '32015467' 보다 큰 레코드를 'no' 컬럼값을 기준으로
정렬시켜서 상위 30 개를 삭제한다.
delete from ABCDE where tbody like '%무료동영상%'
'ABCDE' 테이블에서 'tbody' 컬럼값에 '무료동영상' 이란 단어가 포함된 레코드를 전부 삭제한다.
delete from ABCDE where tbody like '%무료동영상%' or subject like '%광고%'
'ABCDE' 테이블에서 'tbody' 컬럼값에 '무료동영상' 이란 단어가 포함되어 있거나
'subject' 컬럼값에 '광고' 라는 단어가 포함된 레코드를 전부 삭제한다.
'아카이브 > MySQL' 카테고리의 다른 글
mysql, Getting Top N Percentage (0) | 2016.07.08 |
---|---|
muliple insert query (0) | 2016.06.10 |
[Trigger] 외부 프로그램을 호출하기 위해 시도한 트리거기능 (0) | 2015.02.01 |
[Mysql] 데이터베이스 한글 설정 (0) | 2015.01.22 |
[mysql] 백업/복구 (0) | 2015.01.22 |