목록MySQL (23)
준호씨의 블로그
MySQL에서 여러 row로 나눠져서 나오는 결과를 하나의 문자열로 합쳐서 구하고 싶을 때가 있습니다. Java나 Python에서 리스트를 묶을 때 사용하는 join함수 같이 말이죠. 그럴 때 사용할 수 있는 함수가 group_concat입니다. 예를 들어 test라는 테이블에 다음과 같은 데이터가 있다고 가정해 봅니다. name ---- a b c d group_concat으로 name칼럼을 넣어줍니다. select group_concat(name) from test; 결과는 "a,b,c,d"라고 나옵니다. a,b,c,d 그런데 길이가 짧아서 잘 나오는데 데이터가 많아지면 어느 순간 결과가 잘려나갑니다. "zzzzzzzzzz"와 데이터를 왕창 집어넣고 결과를 확인해 보면 마지막 부분이 끝까지 나오지 않..
MySQL에서 timestamp(epoch time)을 datetime형식으로 변환하려면 from_unixtime 함수를 이용하면 됩니다. select from_unixtime(0); # 1970-01-01 09:00:00 반대로 datetime 문자열을 timestamp(epoch time)으로 변환하려면 unix_timestamp 함수를 이용하면 됩니다. select unix_timestamp('1970-01-01 09:00:00'); # 0 datetime 문자열만 되는 것이 아니고 datetime 도 timestamp(epoch time)으로 변환할 수 있습니다. select unix_timestamp(STR_TO_DATE('1970-01-01 09:00:00', '%Y-%m-%d %H:%i:%s..
Python을 사용하다 보면 종종 만나는 오류 "No module named 'MySQLdb'"입니다. 해결 방법은 간단합니다. pip를 이용해서 mysqlclient를 설치해 주면 됩니다. mysqlclient pip install mysqlclient mysqlclient에 관한 정보는 https://pypi.org/project/mysqlclient/ 에서 볼 수 있습니다. MySQL-python Python2처럼 오래된 환경에서는 MySQL-python을 설치해야 될 수도 있습니다. pip install MySQL-python MySQL-python에 관한 정보는 https://pypi.org/project/MySQL-python/ 에서 볼 수 있습니다. 기타 OS나 환경에 따라서 mysql 관련..
MySQL를 잠깐만 테스트해 보기 위해 잠깐만 사용하고, 사용 후 자동으로 삭제되는 방법으로 띄우는 방법입니다. docker run docker run --rm -d --name temp-mysql-container -e TZ=UTC -p 3306:3306 -e MYSQL_ROOT_PASSWORD=testpassword ubuntu/mysql 옵션 설명 --rm 옵션을 이용해서 컨테이너가 정지될 때 컨테이너를 삭제합니다. -d (--detach)는 백그라운드로 동작시키는 옵션입니다. docker stop 사용을 마치면 종료합니다. docker stop temp-mysql-container
Index 확인을 위한 테스트 테이블입니다. create table TEST_TABLE ( id bigint auto_increment primary key, level int default 0 not null comment '레벨', created datetime not null comment '생성일', updated datetime not null comment '수정일' ); create index idx_level_updated on TEST_TABLE (level, updated); create index idx_updated on TEST_TABLE (updated); SHOW INDEX FROM TableName; 가장 쉽게 INDEX를 조회하는 방법은 다음과 같습니다. SHOW INDEX..