본문 바로가기
반응형

MySQL31

[Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번 name = 'testtesttest' 이런식으로 사용을 해야한다. 한두번이면 괜찮으나, 여러번 반복해서 사용해야할 경우엔 매번 적어주기엔 불편하고 가독성으로도 좋지가 않다. 그럴 경우 바인딩변수를 사용할수 있다. 사용자 정의 변수는 아래처럼 사용이 가능하다. 선언 SET @binding := 'testtesttest'; 사용 SELECT * FROM TABLE WHERE NAME = @binding; 이렇게 사용이 가능하다. 만약 시스템변수를 사용하고자 한다면 선언 SHOW GLOBAL VARIABLE; --모든 시스템변수 확인 SHOW GLOBAL VARIABLE LIKE 'TEST%'; --이름이 TEST로 시작하는 시스템변수 확인 수정 SET .. 2023. 8. 20.
com.mysql.cj.jdbc.Driver와 com.mysql.jdbc.Driver 차이 (23.04.25) 데이터베이스와 연동하는 개발을 하기 위해서는 jdbc를 필수적으로 필요로 한다. 그중 오픈라이선스로 무료인 mysql을 개인으로는 많이 사용하고 필자 역시 사용하는데, driver가 이름은 같지만 도메인 자체가 다른 제목과 같은 두 드라이버에 대한 차이를 알아보려고 한다. - com.mysql.cj.jdbc.Driver - com.mysql.jdbc.Driver 둘의 차이는 사용하는 mysql connector의 버전이다. com.mysql.jdbc.Driver는 Connector/J 5.x 버전까지 사용되었고 Connector/J 8.x 버전부터는 com.mysql.cj.jdbc.Driver를 사용해야 한다. 실제로 mysql-connector-java-8.0.22.jar 파일을 디컴파일러로 까보면 패.. 2023. 4. 28.
[Mysql] 스토리지 엔진 MYISAM / INNODB Mysql의 스토리지 엔진으로 가장 많이 사용하는 MyISAM, InnoDB을 비교해볼 것이다. MYISAM read only 기능에 특화된 엔진으로 select 가 많을 경우에 사용하곤 한다. 항상 테이블에 row count 를 갖고 있기에 가능하고, 풀텍스트 인덱스를 지원한다. 하지만 row level locking이 지원되질 않아 쿼리를 날릴 경우 해당 Table 전체 락이 걸린다. INNODB MYISAM 에서 안되는 row level locking이 가능하여 트랜잭션 처리가 필요한 대량 데이터에 유리하다. 또한 그럼으로써 select 보다는 CUD 의 쿼리에 좀더 장점이다. 역으로 MYISAM 과는 다르게 풀텍스트 인덱스가 지원이 안된다. 트랜잭션 처리가 필요없고 운영에 Read only 기능이.. 2022. 11. 5.
[Mysql] 실행한 query log 확인 및 추적 하는 법 mysql 에서 실행한 쿼리의 이력을 확인해야 할 경우가 있다. 그럴때 사용하는 명령어 이다. select * from INFORMATION_SCHEMA.PROCESSLIST order by id desc limit 100; 그리고 로그파일을 남기는 방법도 있다. 파일 위치 - /etc/my.cnf general_log=ON #쿼리 로그가 출력되도록 설정 general_log_file=/home/mysql_query_log/query.log #로그파일 경로 설정 이후 mysql 재기동 하면 설정이 된다. 2022. 10. 9.
[Mysql] 문자열 추출 및 인덱싱 이전에 다뤘던 포스팅은 문자열에 대한 자르기 추출(substring) 이었다면 이번 포스팅은 문자열의 위치를 나타내주는 함수이다. 추출 관해서는 아래 참고 포스팅을 참고 바란다. INSTR INSTR('문자열','추출문자') 해당 문자열의 index를 추출해준다. 사용법은 아래와 같다. select INSTR('가나다라마','다라마'); //3 LOCATE LOCATE('검색문자','문자열) 해당 문자열의 index를 추출해준다. 사용법은 아래와 같다. select LOCATE('CDE','ABCDE'); //3 참고 포스팅 https://thenicesj.tistory.com/342 [mysql] 문자열 추출 Mysql 에서도 프로그래밍 처럼 문자열을 자를수가 있다. substring substring.. 2022. 10. 6.
[Mysql] 라이선스 오픈소스로 유명하게 알려진 mysql 에 대해서는 많이 들어봤을것이다. oracle과 합병이 되면서 mariadb라고도 알려져있기도 한 이 mysql 은 오픈소스인만큼 많은 이들이게 사용을 당하고 있다. 하지만 오픈소스라고 해서 언제든지 어디서든 누구든 무료로 사용을 할수 있을까? 정답은 NO 이다. mysql은 오픈소스이면서 GPL 라이선스를 따르고 있다. 라이선스의 종류 및 특징은 아래 참고 포스팅을 참고하길 바란다. mysql의 라이선스는 제품 종류에 따라 GPL과 자체적인 상용 라이선스 두 가지가 적용된다. 제품 종류는 무료와 유료로 나뉜다. 무료 버전은 커뮤니티 에디션(Community Edition)이라는 이름으로 되어있고 만약 mysql 사용을 영리 목적으로 사용하려면 유료 버전을 써야 한다.. 2022. 9. 30.
[Mysql] 문자열 추출 Mysql 에서도 프로그래밍 처럼 문자열을 자를수가 있다. substring substring(문자열, 시작위치, 길이) select substring("ABCDEF",3); //CDEF select substring("ABCDEF",3,2); //CD select substring("ABCDEF" from 3); //CDEF select substring("ABCDEF" from 2 for 2); //BC left, right left(문자열, 길이) / right(문자열, 길이) select left("ABCDEF",2); //AB select right("ABCDEF",2); //EF substring_index substring_index(문자열, 구분자, 구분자 인덱스) select substr.. 2022. 9. 27.
[Mysql] 에서 데이터를 엑셀 파일로 저장 기존 쿼리에서 추가를 하면된다. INTO OUTFILE '/var/lib/mysql-files/test.csv' -- csv 파일을 출력하고자 하는 경로 CHARACTER SET utf8 -- 언어 타입 설정 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' -- '|'로 구분하고 구분지운 문자열 타입들을 ""로 감싼다 ESCAPED BY '\\' -- '\\'일 경우 끝 LINES TERMINATED BY '\n' -- 줄바꿈은 "\n"으로 표시 하지만 이렇게 했는데 다음 에러가 나올 경우가 있다. The MySQL server is running with the --secure-file-priv option so it cannot execute this st.. 2022. 9. 25.
[Mysql] error : You are using safe update mode mysql 에서 테이블을 만들고 임의 값을 넣은 후 delete 를 사용하니 다음과 같은 에러가 나오면서 삭제가 이루어 지지 않았다. Error Code : 1175: You are using safe update mode and you tried to update a table without a Where that uses a Key column. 해결 방법은 다음과 같다. set sql_safe_updates=0; sql 안전모드를 해제 해주는것이다. 어디까지나 로컬 피시에서만 작업하길 권장하고 실 운영중인 서버라면 안전모드를 혹시모를 상황에 대비하여 해제하지 않는것이 좋을것이다. 2022. 9. 16.
반응형