본문 바로가기
반응형

MySQL31

[Mysql] if / else 문 mysql 에서 보여지는 값에 대해서 조건문을 걸수가 있는데 if / else 문으로 제어를 한다. 문법은 아래와 같다. IF ( 대상 컬럼 , 참일때 값, 거짓일때 값) 간단하게 예시 코드는 아래와 같다. SELECT colA, IF (colA=="a" , 1, 2) as colB FROM TABLE; 위 쿼리에 대한 결과는 아래와 같다. colA colB a 1 b 2 엑셀의 IF 함수와 동일한 기능을 한다. 2024. 2. 17.
[Mysql] Specified key was too long 특정 테이블에 index를 걸고자 할때 아래 에러가 발생하였다. Error Code: 1071. Specified key was too long; max key length is 3072 bytes 원인은 해석 그대로 이다. 인덱스에 사용하는 글자 최대 크기가 정해져있다는것이다. 테이블에 사용하는 인코딩은 UTF8MB4 였고 여기서 한 글자당 4byte를 잡아먹는다. 3072 바이트를 넘을수 없다면 대략 750 글자까지만 허용이 가능하다. 인코딩에 따라 글자 byte수가 다르니 확인해야하고, 인덱스는 별도의 공간을 차지하기에 이렇게 큰 값은 인덱스로 배제하는것이 좋은 선택일듯 싶다. 2024. 1. 23.
[mysql] 데이터 경로 변경(datadir) mysql 이나 mariadb를 사용할 경우 데이터 폴더의 경로를 확인하는 법은 아래와 같다. select @@datadir; 기본적으로는 /var/lib/mysql 이 default 이다. 변경을 위해서는 여러 작업이 있지만 스텝으로 나눠서 진행 해보면 1. mysql 서비스 중지 -> sudo systemctl stop mariadb 2. 현재 사용중인 폴더를 앞으로 사용할 폴더로 복사해준다. -> rsync -av /var/lib/mysql 이동할경로 참고로 rsync 를 사용해야 하며 해당 명령어는 아래 참고포스팅에서 참고 바란다. 3. mysql 설정정보에서 데이터 경로 변경하기 -> sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf 로 들어가서 datadir.. 2023. 12. 26.
[MySQL] ANY, ALL 함수 ANY 함수 컬럼명 비교연산자 ANY(값들 혹은 서브쿼리) 여러개의 비교값 중 하나라도 만족하면 true 반환 IN과 다른점은 비교 연산자를 사용한다는 점 비교 연산자와 ANY > ANY : 최소값보다 크면 >= ANY : 최소값보다 크거나 같으면 ANY(1, 2, 3); ALL 함수 컬럼명 비교연산자 ALL(값들 혹은 서브쿼리) 전체 값을 비교해서 모두 만족해야 true 반환 비교 연산자와 ALL > ALL : 최대값보다 크면 >= ALL : 최대값보다 크거나 같으면 ALL(1, 2, 3); 2023. 11. 27.
[MySQL] 버전 확인방법 MySQL에서 버전 확인하는 방법 쿼리로 확인 SELECT VERSION(); SHOW VARIABLES LIKE '%VERSION%' 클라이언트 버전 확인 mysql --version mysql -v 2023. 10. 20.
[Mysql] MATCH AGAINST 사용(fulltext 검색) 데이터베이스 최적화나 튜닝에 대해서 다뤄본 사람은 like 문에 앞뒤로 % 를 달게 되면 index scan을 안타고 full scan을 타게 되는것을 알고 있을것이다. 하지만 정확한 값을 모르기도 하고 내용 중간에 포함된 내용을 검색하려고 한다면 어쩔수 없이 like '%test%' 이런식으로 앞뒤로 묶어서 쿼리를 만들어야한다. 그럴경우에 MATCH AGAINST 를 사용하면 효과적이어서 방법을 소개하려고 한다. 먼저 maria db 에서 소개하는 사이트는 아래와 같다. https://mariadb.com/kb/en/match-against/ MATCH AGAINST Perform a fulltext search on a fulltext index. mariadb.com 사용하기 위해서는 몇가지 조건이.. 2023. 10. 15.
[Mysql] foreign key 추가하는법 mysql 에서 foreign key를 추가하는법을 공유한다. 물론 create 시에 함께 추가를 해도 무방하나, 정규화 작업을 거치게 되면서 테이블을 나누고 foreign key 를 설정해줘야하는 경우이다. 아래 두개 테이블을 보면 Table Name= Grade 순번(pk) 학번 과목 성적 1 111111 수학 A 2 111112 수학 B Table Name= Student 학번 이름 ... 111111 홍길동 111112 이순신 111113 장영실 먼저 Grade 테이블에서 기존에는 학번과 학생 이름들이 같이 명시 되어있었으나 정규화로 인해 학생 테이블이 별도로 만들어지면서 학번 이라는 컬럼이 fk와 pk 로 지정을 해야했다. 그럼 student에는 학번이 pk가 되야하고 grade 에서는 학번이 .. 2023. 9. 17.
[Mysql] ERROR 1217 - Cannot delete or update a parent row: a foreign key constraint fails mysql 에서 테이블을 삭제하려고 하는데 아래와 같은 에러가 발생했다. ERROR 1217 - Cannot delete or update a parent row: a foreign key constraint fails foreign 키 문제로 인해서 테이블이 안되는것이다. Mysql 에서 데이터 안전상 막아둔것이라 다음 설정을 하면 된다. mysql > SET foreign_key_checks = 0; mysql > drop table test; mysql > SET foreign_key_checks = 1; 이렇게 설정하면 테이블이 삭제가 된다. 2023. 8. 22.
[Mysql] 컬럼 내 특정 단어 갯수 구하기 컬럼 결과에서 특정 단어의 갯수가 몇개인지 알아보는 방법을 소개한다. 따로 함수가 있지는 않고, 글자 길이와 replace 함수로 구현해볼것이다. @이 골뱅이 관련해서는 아래 참고 포스팅에서 바인딩 변수 부분을 참고하면 된다. SELECT (char_length(value) - char_length(replace(value,@varchar,'')))/char_length(@varchar) FROM table; 특정 컬럼의 전체 길이를 구하고 해당하는 부분을 제거한 후 길이 구해서 갯수를 구하는 방식이다. 참고 포스팅 https://thenicesj.tistory.com/662 [Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번.. 2023. 8. 21.
반응형