티스토리

코드루덴스
검색하기

블로그 홈

코드루덴스

codens.info/m

codens 님의 블로그입니다.

구독자
2
방명록 방문하기

주요 글 목록

  • mysql 쿼리를 sqlite 쿼리로 변경, 변수사용, 날짜별 합계 구하기 mysql 쿼리를 sqlite 쿼리로 변경, 변수사용, 날짜별 합계 구하기 //------------------------------------- -- mysql SET @START1 = '2024-04-01'; SET @END1 = '2024-05-01'; SET @TERM1 = '%Y-%m-%d'; SELECT   DATE_FORMAT(created_at, @TERM1) AS date1,   COUNT(id) as count1 FROM table1 WHERE created_at >= @START1   AND created_at GROUP BY DATE_FORMAT(created_at, @TERM1) ORDER BY created_at ASC LIMIT 100; //--------------------.. 공감수 0 댓글수 0 2024. 9. 22.
  • 기간을 지정해서 백업하고 중복 에러 없이 복구하기 기간을 지정해서 백업하고 중복 에러 없이 복구하기 시간 필드를 사용해서 특정기간 범위의 자료만 백업하는 방법, 그리고 백업된 파일로 중복된 primary key를 피하면서 복구하는 명령어 * 기간을 지정해서 백업      --skip-tz-utc 옵션이 있어야 현재 시간대로 제대로 검색됨, 기본은 UTC, 복구는 옵션과 관계없이 원래 값으로 복구됨      --skip-add-drop-table  : 백업 파일에 DROP TABLE 명령 추가하지 않기 > mysqldump -u username  --password=[password] db_name  table_name  --skip-add-drop-table  --skip-tz-utc  --where="updated_at >= '2024-01-01 00.. 공감수 0 댓글수 0 2024. 9. 2.
  • 동시에 2개의 필드 중복값을 제거하는 select 쿼리 mysql query, table에서 field1의 중복값을 제거하고 field2의 중복값도 각각 제거하는 select 쿼리 mysql query, select query to merge duplicate values ​​in field1 from table and also merge duplicate values ​​in field2: SELECT      field1,     SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT field2 ORDER BY field2), ',', 1) AS field2 FROM  your_table GROUP BY  field1; ex) field1 , field2 1 1 1 2 2 3 2 4 3 5 4 5 query result: 1 1 2 3 3 5 공감수 0 댓글수 0 2024. 9. 1.
  • mysql 정규식 에러 Timeout exceeded in regular expression 해결 방법 * 에러 메시지 SQLSTATE[HY000]: General error: 3699 Timeout exceeded in regular expression match. * 해결 방법 regexp_time_limit 설정 변경 - 현재 값 보기 show GLOBAL variables like "regexp_time_limit"; - 기본값 : 32 - 단위 : 밀리초( milliseconds) - 값 변경 예 SET GLOBAL regexp_time_limit=64; - 서버 설정 파일 변경 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini /etc/mysql/my.cnf regexp_time_limit=64 //-------------------------------------.. 공감수 0 댓글수 0 2023. 12. 31.
  • mysql 문자열 검색 , 발견한 횟수(찾은 개수) 구하기 - 정식으로 지원하는 함수가 없어서 꼼수로(trick) 문자열 치환후 변한 길이로 구한다. - 예) content 필드에서 ' ' 문자열 찾은 횟수 구하기 SELECT ROUND ( ( LENGTH( content ) - LENGTH( REPLACE ( content, " ", "" ) ) ) / LENGTH( " " ) ) AS count, content, table1.* FROM table1 HAVING count >= 1 ; 공감수 0 댓글수 0 2023. 12. 2.
  • mysql 요일별 통계 정렬 mysql 요일별 통계 정렬 DAYNAME(created_at) as dname ... GROUP BY dname ORDER BY date_format(dname, '%w') ASC # 요일별 정렬 공감수 0 댓글수 0 2023. 11. 24.
  • [mysql] 여러 필드에서 한번에 문자열 찾기 - 여러 필드에서 한번에 문자열 찾기 https://dba.stackexchange.com/questions/248830/mysql-how-to-check-for-a-value-in-all-columns SELECT * FROM 테이블 WHERE CONCAT_WS('.', col1, '.', col2, '.') like '%문자열%'; - 여러 필드 에서 한번에 문자열 변경하기 select concat( 'UPDATE my_table SET ', column_name, ' = REPLACE(', column_name, ', ''a'', ''e'');') from information_schema.columns where table_name = 'my_table'; //--------------------.. 공감수 0 댓글수 0 2023. 11. 24.
  • [리눅스] MySQL root 관리자 비밀번호 변경 -  Linux 리눅스(우분투)에서 mysql 비밀번호(비번) root admin 패스워드(password) 바꾸는 방법    - mysql 암호 변경 방법     - mysql 서버 중지 sudo service mysql stop sudo killall mysqld sudo ps -aux | grep mysql //-------------------------------------     - /etc/mysql/my.cnf 파일수정 [mysqld] skip-grant-tables  #     - 서버 시작 $ sudo service mysql start     - mysql console에 root로 접속 $ mysql -u root     - 비밀번호 변경 > FLUSH PRIVILEGES;    .. 공감수 1 댓글수 0 2023. 4. 29.
  • [AWS RDS] MySQL 계정 관련 수정 작업 - mysql 암호 변경 방법* 마스터 사용자 이름(master account user id name) 확인 방법    - '마스터 사용자 이름'은 DB 인스턴스를 생성시 지정하고 변경하지 못함        - root 권한을 가짐 데이터베이스 인스턴스 선택 -> '구성' 탭 -> 마스터 사용자 이름 * 마스터 사용자 패스워드 변경     - AWS 웹 콘솔에서 하는 방법 데이터베이스 인스턴스 선택 -> '수정' 버튼(우상단) -> '새 마스터 암호' 입력     - mysql console에서 변경 하는 방법         - 마스터ID로 mysql console 로그인 > SET PASSWORD FOR '마스터ID'@'%' = '새비밀번호'; > FLUSH PRIVILEGES; //----------.. 공감수 0 댓글수 0 2023. 4. 29.
  • [MySql 에러] data 폴더가 삭제된 경우 해결 방법 - 에러메시지 mysql error Can't create test file data\mysqld_tmp_file_case_insensitive_test.lower-test - 원인 "C:\Program Files\MySQL\MySQL Server 8.0\data" 폴더가 삭제된 경우 - data 폴더를 생성해도 다음 에러 메시지가 나옴 Failed to find valid data directory //------------------------------------- - 해결방법 DB 초기화 "C:\Program Files\MySQL\MySQL Server 8.0\data" 폴더가 비어 있어야 한다. 초기화 해도 실제 DB는 "C:\ProgramData\MySQL\MySQL Server 8.0\Dat.. 공감수 0 댓글수 0 2023. 2. 21.
  • sql 과 php 간의 정규식 이스케이프 (백슬래시 갯수) - 찾는 문자열 ["\u * sql 정규식 이스케이프 - 특수 문자에 기본 \ 를 2개 - 따옴표에는 1개 더(결국 3개) - 결국 '\' 문자는 => '\\\\' (4개 ) REGEXP \\[\\\"\\\\u * php 에서 sql 쿼리 작성시 이스케이프 - \ 개수가 sql의 2배 - 따옴표는 1개만 더 (결국 5개) - 결국 '\' 문자는 '\\\\\\\\' (8개) REGEXP \\\\[\\\\\"\\\\\\\\u 공감수 0 댓글수 0 2023. 2. 5.
  • 윈도우 mysql 시작 에러 메시지 확인 방법 * 증상 - windows 10에서 mysql 8.0 이 서비스 시작 실패를 했는데 에러 로그도 없고 에러 메시지가 표시되지 않고 종료되는 경우 * 에러 메시지 확인 방법 mysqld 실행 - 로그에 기록되지 않는 시작 에러 메시지를 확인 할수 있음 //----------------------------------------------------------------------------- // 참고 mysql 로그 파일 폴더 경로 "C:\ProgramData\MySQL\MySQL Server 8.0\Data" or ""C:\Program Files\MySQL\MySQL Server 8.0\data" 로그파일 이름은 my.ini에 설정되어 있는데 기본은 컴퓨터 이름이다. 에러 로그 파일 이름 = "컴퓨터.. 공감수 0 댓글수 0 2022. 12. 6.
  • mysql 디스크 사용량 조회 - mysql 8 disk space usage //------------------------------------- * DB 정보 저장 경로     - 리눅스 : /var/lib/mysql     - 윈도우 : C:\ProgramData\MySQL\MySQL Server 8.0\Data //------------------------------------- * 리눅스 명령     - 폴더 용량 $ sudo du -hs /var/lib/mysql     - 용량 순 정렬 $ sudo du -sch /var/lib/* | sort -hr | head -n20 $ sudo ls -lS   /var/lib/mysql/ | sort -hr //-------------------------------------.. 공감수 0 댓글수 0 2022. 6. 18.
  • mysql binlog 파일 정리 https://dev.mysql.com/doc/internals/en/binary-log-overview.html * 바이너리 로그(binary log, binlog) 파일 용도 - 데이터 변경 명령문(Create, Drop과 같은 DDL문과 Insert, Update, Delete와 같은 DML) 로그 기록 파일 - DB 복구에 사용됨 - 설정된 기간에 의한 파일 정리는 DB 시작시 처리됨 //------------------------------------- - 시간순 정렬 $ sudo ls -lt /var/lib/mysql/ - 용량순 정렬 > $ sudo ls -lS /var/lib/mysql/ | sort -hr //------------------------------------- - 현재 로.. 공감수 0 댓글수 0 2022. 6. 18.
  • MySQL 8 접속 비밀번호 변경 방법 - (참고) 사용자 추가 방법 , ex) user2 > INSERT INTO `mysql`.`user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Re.. 공감수 0 댓글수 0 2022. 5. 25.
  • mysql 강제 재설치 - mysql upgrade 설치 $ sudo apt install mysql-server - 에러 발생 mysql-server : Depends: mysql-server-8.0 but it is not going to be installed //------------------------------------- - 강제 재설치 $ sudo apt remove mysql-client-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0 - 만약 에러 나면 remove 뒤에 --purge 옵션을 추가한다, 주의! purge 옵션은 이전 설정을 모두 삭제한다. $ sudo apt -f install -o Dpkg::Options::="--.. 공감수 0 댓글수 0 2022. 5. 2.
  • [mysql] JSON 배열 합치기 & 중복값 제거, 특정값만 삭제 JSON ARRAY 합치기 //------------------------------------- * JSON 배열  합치기만     - JSON_ARRAYAGG  이용     - JSON_TABLE 을 사용하지 않으면          - "[1,2]" , "[2,3]"  를 합치면 => "[[1,2], [2,3]]" 으로 결과가 나옴         - 원하는 결과는 "[1,2,2,3]" SET @json = '["a", "b", "b", "a", "c"]'; SELECT  JSON_ARRAYAGG( item ) ) FROM JSON_TABLE( @json, '$[*]'     COLUMNS(     item TEXT PATH '$'    ) ) as items ORDER BY items.item;  #.. 공감수 0 댓글수 0 2022. 2. 20.
  • [mysql] sort_buffer_size 설정 - mysql 쿼리 에러 메시지 Out of sort memory, consider increasing server sort buffer size - 에러원인 sort_buffer_size가 너무 적어서 생기는 문제 myslq의 기본 sort_buffer_size 크기는 256kb sort_buffer_size 를 1MB 이상으로 설정한다. - 설정 파일(my.ini , my.cnf) 수정 sort_buffer_size=1M //------------------------------------- - 성능 상태값 sort_merge_passes 과의 관계 sort_merge_passes가 높을 수록 성능이 낮은 상태 sort_buffer_size의 설정값을 높여서 sort_merge_passes값을 낮추어.. 공감수 0 댓글수 0 2022. 2. 3.
  • 쿼리 결과 이웃행(다음행)의 칼럼값을 비교 - 같은 값 제거 - mysql sql query duplicate column value remove neighbor row - 테이블의 이웃행(연속한 이전행)과 비교해서 같은 값 제거 - 윈도우 함수(window function) 사용 -- 가상 테이블 설정 WITH t1 AS ( SELECT ROW_NUMBER() OVER w AS 'row_num', table1.* FROM table1 WHERE user_id = 1234 AND result = '성공' WINDOW w AS ( ORDER BY id ) ) -- 다음 행을 조인 해서 비교 검색 SELECT t1.row_num, t1.id, t1.name, t2.row_num, t2.id, t2.name FROM t1 INNER JOIN t1 AS t2 ON t1... 공감수 0 댓글수 0 2021. 4. 24.
  • [MySql] 우분투에서 mysql 마이너 업그레이드 하는 방법 ubuntu linux mysql 8 minor upgrade 8.0.19 -> 8.0.23 * MySql 버전 리스트(release) https://dev.mysql.com/doc/relnotes/mysql/8.0/en/ * apt 명령을 이용한 업그레이드 방법 https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#repo-qg-apt-upgrading - 설치된 버전 확인 dpkg -l | grep mysql | grep ii - 설치가능한 버전 확인 sudo apt update sudo apt search mysql-server - 설치 sudo apt install mysql-server - 버전 확인 mysql -V - mysql 접속 후 쿼리 S.. 공감수 0 댓글수 0 2021. 4. 17.
  • MySql Unique index 사용시 soft Delete 설정 - null값을 가지는 칼럼과 unique 제한 설정하면 unuque가 적용 안되는 문제 해결 방법 * unique 설정 ALTER TABLE articles ADD deleted_at TIMESTAMP NULL DEFAULT NULL, DROP INDEX name, ADD CONSTRAINT UNIQUE (name, deleted_at); - 문제 발생 null 값을 가지는 칼럼(deleted_at)과 함께 unique 설정을 하면 unique가 작동안함 * 해결 방법 ALTER TABLE articles ADD deleted int (1) GENERATED ALWAYS AS (IF(deleted_at IS NULL, 0, NULL)) VIRTUAL; - 버츄얼 칼럼(Virtual Column, Gen.. 공감수 0 댓글수 0 2021. 3. 31.
  • MySql 여러 행을 한번에 update (한방쿼리) - sql 한방 쿼리 , multiple record(row) update one query - 여러 개 레코드를 동시에 변경 업데이트 하는 방법 //------------------------------ * How to update multiple rows at once in MySQL? https://tableplus.com/blog/2018/11/how-to-update-multiple-rows-at-once-in-mysql.html - 기본 (여러번 쿼리) UPDATE students SET score1 = 5, score2 = 8 WHERE id = 1; UPDATE students SET score1 = 10, score2 = 8 WHERE id = 2; UPDATE students SET s.. 공감수 4 댓글수 0 2021. 2. 27.
  • MS Sql Server 사용법 마이크로소프트(Microsoft) SQL 데이타베이스 서버(SQL Database Server) 관련 팁 정리 //----------------- https://en.wikipedia.org/wiki/Microsoft_SQL_Server https://en.wikipedia.org/wiki/History_of_Microsoft_SQL_Server IBM Sybase 엔진 기반 v6.0 (1995년) v7.0 (1998년) SQL Server 2000 (v8) SQL Server 2005 (v9) SQL Server 2008 (v10) SQL Server 2008 R2 (v10.55) (2010년) //------------------------ - 2020년 현재 MS사 지원중 SQL .. 공감수 0 댓글수 0 2020. 12. 30.
  • [SQL] 여러 행 추가 (테스트용 DB 생성) 프로시저 - 여러 행 추가 (테스트용 DB 생성) 프로시저 루프 delimiter # create procedure insert_rows() begin declare v_max int unsigned default 5; declare v_counter int unsigned default 0; while v_counter 공감수 0 댓글수 0 2020. 9. 20.
  • [SQL] 모든 레코드의 문자열 변경 (정규식) - 주의! 이스케이핑을 위한 백슬래쉬 문자(\)는 꼭 2번 쓴다 - 한번 쓰면 그 문자의 특수기능이 동작한다. -- 모든 행의 info 칼럼의 "(따옴표) 문자를 삭제 UPDATE users SET info = REPLACE(info, '\\"',''); - 정규식(regex, regular expression) 사용 https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace UPDATE users SET info = REGEXP_REPLACE(info, '\\"',''); UPDATE users SET info = REGEXP_REPLACE(info, '[\\"]',''); 공감수 0 댓글수 0 2020. 9. 14.
  • [sql] 레코드에 특정 값이 없으면 추가하기(중복 방지) 예) users테이블에 email 이 없는 경우 레코드 자료 생성하기 //------------------------------------- * 방법 1 - INSERT IGNORE 사용 - 일반적인 경우 이미 값이 있는 경우 에러가 발생하지만, IGNORE를 통해 이 에러가 무시되면서 결과적으로 아무 동작도 하지 않게 된다 - 장점 : 빠르고 단순 - 단점 : 검사할 값을 임의로 정하기 힘듬, Unique Index로 지정된 칼럼만 검사 - Unique index 설정이 필요 ALTER TABLE users ADD UNIQUE INDEX(`email`); - INSERT IGNORE INTO users SET email = 'qwe@qwe.com', name = 'qwe' , tele = '010'; .. 공감수 0 댓글수 0 2020. 9. 12.
  • [MySql] 정규식 사용 방법 https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)    - SQL  Regex(Regular expression ) https://dev.mysql.com/doc/refman/8.0/en/regexp.html     - 예)SELECT  'test123' REGEXP '^[\\"\\,a-zA-Z\\[\\] ]+$';SELECT  REGEXP_LIKE( 'test123' ,  '^[\\"\\,a-z\\[\\] ]+$' , 'i');    - 이스케이핑을 위한 백슬래쉬 문자(\)는 2번 쓴다     - REGEXP , RLIKE , REGEXP_LIKE 는 모두 같은 기능    - NOT REGEXP : REGEXP에 NO.. 공감수 0 댓글수 0 2020. 8. 17.
  • [SQL] 추가(INSERT) 시도, 이미 있으면 갱신(UPDATE) [한방쿼리] - 레코드 추가(생성)시 없으면 추가하고, 데이터가 이미 있으면 업데이트 하는 방법 ( 한방 쿼리 ) 1. 칼럼을 UNIQUE로 설정 ALTER TABLE users ADD UNIQUE (email); 2. 쿼리 INSERT INTO users (email, name) VALUES (?, ?) ON DUPLICATE KEY UPDATE name = ? ; //----------------------------------------------------------- * INSERT IGNORE - 이미 값이 있으면 추가하지 않기 ( = 없으면 추가하기 ) - IGNORE 를 사용하면 발생한 에러가 무시됨 INSERT IGNORE INTO `users` SET `email` = 'email1'; - 위 쿼리.. 공감수 0 댓글수 0 2020. 8. 7.
  • [SQL] 날짜별 레코드 카운트 구하기 * 날짜별 자료의 갯수 합계를 한번에 구하기 SELECT id, DATE_FORMAT(created_at, '%Y-%m-%d') AS date1, COUNT(id) FROM table GROUP BY DATE_FORMAT(created_at, '%Y-%m-%d') ORDER BY created_at DESC LIMIT 1000; //----------------------------------------------------------------------------- * 정해진 기간내의 시간별 카운트 select count(*), created_at, logs .* from logs where created_at >= '2023-04-12' and created_at DateTime group by d.. 공감수 0 댓글수 0 2020. 7. 31.
  • [SQL] 테이블 자료 용량 확인 - 테이블 자료가 차지하는 디스크 용량 가져오기 - mysql 테이블이 차지하는 용량 조회 방법 //--------------------------------------------------- * 데이터베이스 전체 테이블 용량 확인 SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "DB이름" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; //--------------------------------------------------- * 특정 레코드 자료의 용량 .. 공감수 0 댓글수 0 2020. 7. 26.
    반응형
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.