블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Recent Post

Recent Comment

Archive

2013. 11. 16. 18:21 기술문서창고/mysql


MySQL 5버전대부터 사용 가능합니다. 


tinyint(1)과 같은 것으로 boolean 타입이 추가되었고, 저장할 때도 true, false로 저장이 가능합니다만, 저장된 값을 확인해보면 0 (=false), 1(=true)로 저장됩니다.


그러다보니 값을 가져와서 쓸 때, 이 값들이 0과 1로 나와서 약간 곤란할 때가 있습니다.


이럴 경우   IF(칼럼명 , 'true', 'false') as 칼럼명   과 같이 해주면 아쉬운대로 사용할 수 있습니다. 


예를 들면 다음과 같이 말이죠..

select id, title, IF(completed, 'true', 'false') as completed from todo;


참고문서:

http://gyuha.tistory.com/243

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html


posted by progh2
2013. 1. 27. 13:31 기술문서창고/mysql

최근 MySQL에서 MARIA DB로 넘어가는 분위기인 것 같은데.. 


MySQL 외부 접속 팁. 

계정 사용자 호스트만 %(전체를 의미)로 주면 되는 것이 아니라

서버 설정도 바꿔주어야 한다.

데비안에서 기본적으로 MySQL 서버의 설정이 외부 접속 허용을 막고 있다.


/etc/mysql/my.cnf 파일 안에서 

bind-address = 127.0.0.1 

를 주석처리해야만 외부에서 들어오는 접속을 허용해준다. 

설명에 의하면 이를 주석처리 안해주면 외부 클라이언트 접속을 아예 체크 안한다고 한다.

posted by progh2
2012. 3. 11. 14:55 기술문서창고/mysql
이런 저런 자료를 작업하다보면 한자리 숫자 앞에 '0'을 붙여야 하는 경우가 종종 있다.
예를 들면 학번을 만들 때인데, 학년, 반, 번호 데이터를 가져다가 연달아 붙이는 경우를 들 수 있다.

예를 들어 3학년 1반 1번인 경우..  3101 로 만들어야 할 때가 바로 그 때이다. 

물론 아무생각없이 손으로 하나하나 입력해도 되겠지만..
사람 수가 좀 된다면 참으로 지루하지 않을 수 없다.
따라서 조금 구글링 등을 통해서 찾아봤다.

엑셀
엑셀의 경우는 참 단순히 해결된다. 
text라는 함수를 쓰면 참 허무하게 해결된다. 예를 들어  학년, 반, 번호가 각각 a1, b1, c1 셀에 있다고 할 때 

=concatenate( a1, b1, text(c1, "00" ) ) 


처럼 하면 해결된다. 즉 text가 일종의 양식을 지정하는 것이다.

이처럼 유용한 text함수는 text(c1, "00번")  처럼도 사용할 수 있어 매우 유용하니 잘 알아두자. ^^

MySQL
MySQL의 경우는 쪼~금 복잡한데 
나의 경우는 관련 포맷팅 함수를 찾아보다 좀 단순무식하게 하는 방법을 찾아냇다. 
class_grade를 학년, class_num을 반, student_num을 번호라고 한다면, 다음과 같다. 

 cast( if( student_num < 10, concat(class_grade, class_num, '0',         student_num), concat(class_grade, class_num, student_num))  as char)


cast를 쓴 이유는 blob으로 결과가 리턴되어 결과를 볼 수 없어서 char형(문자열)로 바꿔주기 위함이다. 이런 부분에서는 엑셀의 text 함수가 매우 부러웠다.
posted by progh2
2011. 11. 14. 23:12 기술문서창고/mysql
관련링크: http://sourceforge.net/projects/phpmyadmin/forums/forum/72909/topic/3697310

맥미니서버에 맥포트로 APM을 구성, phpmyadmin 최신 버전을 다운받아 설치했습니다.
하지만 적절한 세팅이 되어있음에도 다음과 같은 에러가 나면서 실행이 되지 않더군요.

#2002 Cannot log in to the MySQL server

그래서 뭐가 문제일까 잠깐 고민하다 구글신께 여쭤보니 위와 같은 링크의 계시가 있었습니다. 요지는 config.inc.php 파일에서 localhost 대신 127.0.0.1 로 접속 주소를 바꾸라는 것.
분명 /etc/hosts 에서 localhost에 대해서 127.0.0.1 로 변환이 되고 있음에도 이상하게 먹히지 않는 것이었습니다. 이유야 어쨌든
$cfg['Servers'][$i]['host'] = 'localhost'; 


$cfg['Servers'][$i]['host'] = '127.0.0.1'; 

로 바꿔주니 잘 작동했습니다.


posted by progh2
2009. 3. 11. 22:28 카테고리 없음
한 서버에서 다른 서버로 제로보드XE를 위한 데이터 이전을 할 때
원본 서버에서의 mysqldump 옵션이 대상 서버에서 호환되지 않아
고생을 했을 때가 있었다.

그때 알게된 유용한 옵션이 있는데, --skip-opt 이다.
이에 대한 mysqladmin 의 도움말을 보면 다음과 같다.

   --skip-opt          Disable --opt. Disables --add-drop-table, --add-locks,
                      --create-options, --quick, --extended-insert,
                      --lock-tables, --set-charset, and --disable-keys.

서버 간 MySQL의 버전 차이가 나서 잘 안된다면 위 옵션을 붙여서 쓰면 유용할 것이다.
posted by progh2
2008. 9. 18. 00:55 기술문서창고/php

php에서 str_replace()라는 아주 유용한 함수가 있습니다.
문자열을 치환할 때 쓰이는 것으로 매우 자주 사용됩니다.
그런데 mysql 에서 db 작업을 할 때 이런 함수가 필요할 때를 느꼈었는데,
역시 그런 역할을 하는 함수가 있더군요. 그것이 바로 replace()함수입니다.
사용법은 다음과 같습니다.

UPDATE website_content_pages SET content = REPLACE(content,'b>','strong>'); 


출처: http://davidwalsh.name/mysqls-replace-phps-strreplace
posted by progh2
오라클을 접하게 되니 MySql 보다 여기저기 불편한 점이 많게 느껴졌는데,
아래 정도만 체크해두면 무난하게 쓸 수 있을 듯.
아우.. 이제 자야지 -_-;; 오늘 숙제는 6시간 이상 걸린건가;; 대체...

테이블 이름 출력
(mysql) show tables;
(oracle) select table_name from tabs;

시퀀스 이름 출력
SELECT SEQUENCE_NAME FROM SEQ;

오늘 날짜
---------
SYSDATE

로그 기록
spool 저장할 파일명
예) spool c:\hkh00.txt

로그 기록 해제
spool off

오라클에서 스트링 필드 등을 입력할 때 "가 아니 '를 써야 함

테이블 구조
DESC 테이블이름

SQL PLUS 에디트 사용법 알면 편함
L 작업할 행
C /바꿀문자열/대체문자열
C / 제거할문자열
/ 실행
DEL 삭제할 행
I

mysql의 auto_increment 흉내내기
CREATE SEQUENCE SEQ_BOOK
INCREMENT BY 1
START WITH 1
MAXVALUE 9999999999 NOCYCLE ;

INSERT INTO BOOKS(BOOK_ID) VALUES(SEQ_BOOK.NEXTVAL);

삭제할 때는
DROP SEQUENCE SEQ_BOOK;

Oracle의 rownum 과 Mysql의 limit 비교 
posted by progh2
prev 1 next