반응형
반응형
개요 다음과 같은 테이블이 있다. select * from test; 이 테이블을 간단히 union해보자. 한 개의 테이블로 간단 예시를 보여주기 위해 union이 아닌 union all 을 사용하였다. select * from test union all select * from test; 문제1. order by 와 limit를 사용하여 union 결과셋 출력 한 개의 테이블에 order by 와 limit 키워드를 사용한 결과셋을 union으로 합쳐보자. 테이블1 : id 내림차순, 결과셋은 1행만 출력 테이블2 : 모든 행 출력 테이블1과 2를 하나로 합치기 -- 오류 출력 select * from test order by id desc limit 1 union all select * from te..
Error 테이블 확인 한글로 이루어진 데이터 DB에 저장 오류 발생 ERROR 1366 (HY000): Incorrect string value: '~~~' for column '~~~' at row 1 쉽게 말해서, 한글이 깨짐. 이는 데이터베이스 자체에서 한글을 지원하지 않는다는 의미로 해석할 수 있음 해결 방법 - 특정 테이블 컬럼에 한글 지원 특정 테이블 컬럼에 한글 적용하기 문자열을 지원하는 컬럼에 인코딩 형식을 변경하여 한글을 지원하도록 함 테이블 컬럼 내용 확인하기 SHOW COLUMNS FROM tablename; -- 예시 -- SHOW COLUMNS FROM memo; 각 컬럼의 문자 인코딩 변경하기 ALTER TABLE tablename MODIFY columns datatype C..
Data Export Version Mismatch 데이터베이스 백업을 위해 Export 하던 중 아래와 같은 안내창이 출력되었다. 무시하고 진행해보았지만 백업이 되지 않는다. 심지어 현재 mysql의 최신버전은 8.0.32이고, 해당 컴퓨터에서는 최신버전이 설치된 상태이다. 근데 서버에서 덤프된 버전은 무려 10.0.27이라는 것이다. Version match 결론만 말하면 비이상적인 수치의 버전이 보인다면 그건 MySQL이 아니라 MaraiDB이다. 둘은 같은 소스 코드 기반으로 만들어져있어 호환성도 나쁘지 않다. 위와 같은 상황이 발생한다면 아래의 링크(MariaDB 릴리즈 노트)에 접속해서 해당 버전을 다운받아 설치한다. 포스팅에서는 10.0.27(MariaDB)버전을 다운 받았다. https:/..
whileMySQL에서 반복문(while)은 프로시저 내에서 사용 가능그렇기 때문에 while을 사용하기 위해서는 프로시저를 정의하여야 함이 포스팅에서는 while문의 사용 방법을 목적으로 작성하였으므로 프로시저 관련 설명은 생략MySQL 프로시저 관련 포스팅 보러가기구문선언WHILE (조건) DO : 조건은 Ture/False의 값이 나오는 조건이여야 함종료END WHILE; : WHILE문의 종료, 반드시 뒤에 세미콜론을 붙여야 함WHILE (조건) DO // codeEND WHILE;사용 예시숫자 1에 +1씩 5번을 반복한 값 출력 (숫자 6 출력)DELIMITER $$CREATE PROCEDURE loopWhile()BEGIN DECLARE i INT DEFAULT 1; WHILE..
구문procedure_name : 프로시저의 이름var1, var2 ... : 입력 매개 변수의 이름 프로시저 생성 구문DELIMITER //CREATE PROCEDURE new_procedure_name (IN var1 datatype, IN var2 datatype, ...)BEGIN -- procedure bodyEND //DELIMITER ;프로시저 수정 구문DELIMITER //ALTER PROCEDURE procedure_name (IN var1 datatype, IN var2 datatype, ...)BEGIN -- procedure bodyEND //DELIMITER ;프로시저 삭제 구문DROP PROCEDURE procedure_name;프로시저 실행CALL procedure_..