MYSQL: 74개의 글
MySQL에서 도메인에 값들의 갯수를 세어야 할 때가 있습니다. 그럴 때 사용할 수 있는 것이 SUM과 IF의 조합입니다. 1. 테스트할 데이터 준비 CREATE TABLE IF NOT EXISTS `count_test` ( `id` int(11) NOT NULL, `state` enum('Y','N') NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `count_test` (`id`, `state`) VALUES (1, 'Y'), (2, 'Y'), (3, 'Y'), (4, 'Y'), (5, 'N'), (6, 'Y'), (7, 'N'), (8, 'Y'), (9, 'Y'), (10, 'N'); 2. 갯수 세기(SU..
스키마를 엑셀에 문서화 하고 싶을 때 다음과 같이 쿼리를 생성하여 csv 혹은 엑셀로 export하여 사용하면 된다. SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONCAT(DATA_TYPE,'(',IFNULL(CHARACTER_MAXIMUM_LENGTH,IFNULL(NUMERIC_PRECISION,'')),')') TYPE, COLUMN_KEY, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'mysql', 'isb_stg', 'isb_prd') ORDER BY TABLE_SCHEMA, TABLE_NAME,..
datetime 필드에서 날짜 혹은 시간만 SELECT 하려면 다음과 같이 하면 된다. SELECT DATE_FORMAT("2016-04-08 11:12:14", '%Y-%m-%d') DATEONLY, DATE_FORMAT("2016-04-08 11:12:14",'%H:%i:%s') TIMEONLY
날짜 별로 행의 갯수를 세야 할 때 다음과 같이 쿼리를 작성하면 된다. SELECT DATE_FORMAT(날짜 필드, '%Y%m%d') AS date, count(*) AS cnt FROM 테이블 이름 GROUP BY DATE_FORMAT(날짜 필드, '%Y%m%d') ORDER BY date DESC;
특정 필드가 업데이트 될 때 트리거를 작동하게 해야 할 때가 있다. 그럴 때는 다음과 같이 트리거를 생성하면 된다. CREATE TRIGGER tg_my_trigger AFTER UPDATE ON tbl_my_table FOR EACH ROW BEGIN if NEW.column1 OLD.column1 begin --작성 end END
MySQL 에서 문자를 검색할 때 대소문자를 구분해야할 때가 있다. 그럴때 다음과 같이 하면 된다. SELECT your_field FROM your_table_name WHERE BINARY(your_field) LIKE "%your search word%"
1. 테스트할 테이블 생성 코드 CREATE TABLE `tbl_condition_test` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `col1` INT(10) UNSIGNED NULL DEFAULT NULL, `col2` INT(10) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM 2. 샘플 데이터 삽입 코드 INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (1, NULL, 11); INSERT INTO `test` (`id`, `col1`, `col2`) VALUES (2, 2, 12); INSERT IN..
TINYINT[(M)] [UNSIGNED] [ZEROFILL]- 범위 : -128 에서 127 (UNSIGNED 일 경우 0 에 255) SMALLINT[(M)] [UNSIGNED] [ZEROFILL]- 범위 : -32768 에서 32767 (UNSIGNED 일 경우 0 에 65535) MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]- 범위 : -8388608 에서 8388607 (UNSIGNED 일 경우 0 에 16777215) INT[(M)] [UNSIGNED] [ZEROFILL]- 범위 : -2147483648 에서 2147483647 (UNSIGNED 일 경우 0 에 4294967295)- 주의 : 모든 연산은 "signed BIGINT" 로 이루어진다. 따라서 더하기 곱하기 등..
TypeBytesMinimum ValueMaximum Value (Signed/Unsigned)(Signed/Unsigned)TINYINT1-128127 0255SMALLINT2-3276832767 065535MEDIUMINT3-83886088388607 016777215INT4-21474836482147483647 04294967295BIGINT8-92233720368547758089223372036854775807 018446744073709551615
MySQL 서버에서 다른 MySQL 서버로 전체 데이터베이스 중에 테이블 한개 도는 여러개를 복사하는 방법에 대해 기술해보겠습니다. 그 중 MySQL Workbench의 Migration Wizard 기능을 이용해서 서버간 데이터를 복사하는 방법입니다. MySQL Workbench의 Migration Wizard 기능을 이용하여 MySQL 서버간에 데이터를 복사하는 방법 혹은 MySQL Workbench의 Data Export와 Data Import(또는 커맨드라인에서 Data Export와 Data Import)를 사용하는 방법도 있습니다. 후자의 경우가 더 일반적입니다. 물론 속도의 차이가 있지만 편리함으로 다지자면 MySQL Workbench의 Migration Wizard 기능을 이용하는 것이 많..