charset
- utf8mb4: 1~4바이트를 사용하며 모든 유니코드 문자 표현 가능
collation 콜레이션
- utf8mb4_genera_ci: 일반적인(general), ci(Case Insensitive)로 대소문자 구분 없음
- utf8mb4_bin: 대소문자 구분하며 바이너리 비교. 보안상 중요한 필드에 적용
- utf8mb4_0900_ai_ci: MySQL 8.0에서 도입. 성능과 정확성 균형
-- 테이블 정보조회
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DATABASE_NAME'
AND TABLE_NAME = 'TABLE_NAME';
-- 테이블 컬럼 조회
SHOW COLUMNS FROM TABLE_NAME;
-- 테이블 생성 구문 조회
SHOW CREATE TABLE TABLE_NAME;
-- 권한 조회
SHOW GRANTS FOR id@host;
SHOW GRANTS FOR CURRENT_USER;
COMMENT ON COLUMN table1.column1 IS 'comment';
INSERT IGNORE INTO `spring`.`users` VALUES (NULL, 'john', '12345', 1);
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...)
ON DUPLICATE KEY UPDATE
컬럼1 = 새값1,
컬럼2 = 새값2;
-- 일반 쿼리 로그 활성화
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/mysql-query.log';
-- 로그 파일 위치 확인
SHOW VARIABLES LIKE 'general_log%';
-- 슬로우 쿼리 로그 설정 확인
SHOW VARIABLES LIKE '%slow%';
-- 슬로우 쿼리 로그 활성화
SET GLOBAL slow_query_log = 'ON';
-- 데이터베이스 문자셋 확인
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'apidb';
-- 테이블 문자셋 확인
SELECT TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'apidb' AND TABLE_NAME = 'tbl_product';
-- 컬럼 문자셋 확인
SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'apidb' AND TABLE_NAME = 'tbl_product';
-- 데이터베이스 문자셋 변경
ALTER DATABASE apidb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 테이블 문자셋 변경
ALTER TABLE tbl_product CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 특정 컬럼 문자셋 변경
ALTER TABLE tbl_product MODIFY pdesc VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 데이터베이스 문자셋 확인
SHOW VARIABLES LIKE 'c%';