2012-12-04
필자는 아직 mysql 초보이기 때문에, 이런저런 것들을 사용해보고도 자꾸 까먹는다.
그런 것들 중에는 알아두면 정말 좋은 것도 있고, 누구나 알고 있는 것들도 있지만, 그래도 가끔 안 떠오를 때가 있기 때문에 이참에 여기다가 사소한 것이라도 차근차근 적어 놓을 생각이다.
#임의의 데이터베이스 : `database` 
#임의의 테이블 : `table` 
#임의의 컬럼 : `column`
 
mysql -h 호스트이름 -u 유저이름 -p  #접속방법
 
quit  
exit
ctrl+d
\q  #종료방법들
 
select now(), user(), version();  #현재시간, 유저, 버전 표시
 
desc `table` 
describe `table`
explain `table`
show columns from `table`
show fields from `table`  #해당테이블 column정보 보는 방법들
 
select * from `table` order by rand() limit 3;  #랜덤으로 정렬해서 3가지만 뽑아온다.
 
concat( '문자혹은column', '문자혹은column', .... )  #해당 문자열 붙여서 표시
 
select * from `table` where `column` like '____'; #'_'의 개수만큼의 길이를 가지는 column값만 select
 
select * from `table` where `column` <=> null;  #<=>은 null도 비교할수 있는 = 연산자라고 생각하면 된다.
 
select @변수명 := 변수에들어갈값 from `table` where...   # @로 변수를 선언하고 := 로 저장해서 다음 쿼리문에서 쓸수 있다.
 
select distinct `column` from `table`  #distinct 는 해당 column의 값을 겹치지않고 하나씩만 나오게 해준다. group by 같은거다.
 
select count(*), count( `column` ) from `table`  #count문의 *값은 해당 필드 전체 개수를 반환하지만 해당 column을 집어넣으면 null을 제외한 개수를 반환한다.
 
select count( distinct `column` ) from `table`  #겹치지 않는 값들의 개수를 알수 있다.
 
mysql에서 함수를 쓸때 count( * ) -가능 , count(*) - 가능, count (*) - 오류
 
select `column`, count(*) from `table` group by `column`  #해당 column의 값을 겹치지 않고 표시 및 해당 column값들의 개수 표시
 
show table status from `database`; #데이터 베이스에 속한 테이블들의 각종 정보를 알려준다. 해당 테이블들의 크기와 index 크기 까지 알수 있어서 유용하다.
 
show variables; #mysql 의 설정값들을 모두 볼 수 있는 명령어
show variables like 'ft%'; #설정값들중 ft로 시작하는 명령어만 보고 싶을때
set global ft_min_word_len=2; #해당 설정값을 바꿔주는 명령어, ft_min_word_len의 설정값을 2로 바꿔주는 것이다. 해당 설정들은 버전에 따라서 바꿀수 없는 값도 있다. 이런 값들은 my.cnf 파일에서 직접 설정해줘야 한다.
 
select UNIX_TIMESTAMP(); #현재시간을 10자리의 unixtimestamp 로 표시해준다
select UNIX_TIMESTAMP('2012-12-04 12:12:13'); #2012-12-04 12:12:13의 시간을 unixtimestamp로 표시해준다.
select FROM_UNIXTIME( 1354591837 ); #해당 unixtimestamp를 2012-12-04 12:30:37 시간으로 보여준다.