컴퓨터잡담

mysql 명령어

by 디케 posted Dec 04, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

mysql 명령어

출처 : http://sugame.tistory.com/249?srchid=BR1http://sugame.tistory.com/249

여러가지 명령정리 
mysql> show variables; 서버의 variables(설정사항)출력 
mysql> show variables like 'have_inno%' 조건에 맞는 variables만 출력 
mysql> show databases; database목록 
mysql> show tables; 현재DB의 테이블목록(temporary table은 출력하지 않음) 
mysql> show tables from db명; 지정된 db명이 소유한 테이블목록 
mysql> show tables like 'mem%'; 조건에 맞는 테이블목록만 출력 
mysql> show index from 테이블명; 인덱스 보기 
mysql> show columns from 테이블명; 테이블구조(describe 테이블명, explain 테이블명) 
mysql> show table status; 현재 DB의 테이블들의 상태(row수,table type,row길이,..) 
mysql> show table status from db명; 지정된 DB의 테이블들의 상태(row수,table type,row길이,..) 
mysql> show create table 테이블명; 해당 테이블 생성 SQL문 출력 
mysql> rename table 테이블1 to 테이블2; 테이블명 변경(ALTER TABLE 테이블1 RENAME TO 테이블2) 
mysql> rename table 테이블1 to 테이블2, 테이블3 to 테이블4; rename multiple tables 
mysql> rename table db1명.테이블명 to db2명.테이블명; 테이블을 다른 DB로 이동 
mysql> alter table 테이블명 add 컬럼명 데이터타입; 컬럼추가 
mysql> alter table 테이블명 del 컬럼명; 컬럼제거 
mysql> alter table 테이블명 modify 컬럼명 컬럼타입; 컬럼명에 지정된 컬럼타입의 변경 
mysql> alter table 테이블명 change old컬럼명 new컬럼명 컬럼타입 컬럼명 변경 
mysql> alter table 테이블명 type=innodb; 테이블type변경 
mysql> create table 테이블명(..) type=heap min_rows=10000; 10000row를 수용할 수 있을 만큼 메모리할당(heap type이므로) 
mysql> select version(); MySQL서버버전 출력 
mysql> create table 테이블2 as select * from 테이블1; 테이블1과 동일한 테이블 생성(with 데이터, as는 생략가능) 
mysql> create table 테이블2 as select * from 테이블1 where 1=2; 테이블1과 동일한 구조의 테이블 생성(without 데이터, 1=2는 0으로 할수도 있다.) 
mysql> insert into 테이블2 select * from 테이블1; 테이블1의 데이터를 테이블2에 insert


테이블이 존재여부 파악 
DROP TABLE IF EXISTS 테이블명; 
CREATE TABLE 테이블명 (...); 
프로그래밍 언어에서 COUNT(*)를 사용하여 질의가 성공하면 테이블이 존재함을 파악할 수 있다. 
ISAM, MyISAM의 경우 COUNT(*)가 최적화되어 상관없으나, BDB, InnoDB의 경우 full scan이 발생하므로 사용하지 마라. 
대신 select * from 테이블명 where 0; 을 사용하라. 질의가 성공하면 테이블이 존재하는 것이고, 아니면 존재하지 않는 것이다.

 

접속 
mysql {-h 접속호스트} -u 사용자 -p 사용DB 
-h로 다른 서버에 존재하는 MySQL접속시 다음과 같이 MySQL DB에 설정해줘야 한다. 
mysql> INSERT INTO user VALUES('접근을 허용할 호스트ip','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y'); 
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('접근을 허용할 호스트ip','사용DB','사용자','Y','Y','Y','Y','Y','Y'); 
mysql> FLUSH PRIVILEGES; or 쉴프롬프트상에서 % mysqladmin -u root -p flush-privileges


검색조건(where) 
regular expression을 지원하다니 신기하군.. 
mysql> select * from work where 열명 regexp "정규표현식";