본문 바로가기

개발/MYSQL18

[MYSQL] SLOW_LOG 기록 및 확인 방법 MYSQL 슬로우 쿼리 로그는 설정에서 정의된 시간보다(second) 오랫동안 실행 된 쿼리에 대해서 기록을 한다 슬로우 쿼리 로그 활성화(설정 파일) 슬로우 쿼리 로그를 활성화하기 위해서는 MySQL Configuration 파일을 찾아야 한다. 아래 명령어를 수행하면 my.cnf 파일을 찾을 수 있다. 아래 디렉터리 중 한 곳에 my.cnf가 있을 것이다. 여러 디렉토리에 동시에 my.cnf 파일이 존재하면 왼쪽 디렉토리 순서대로 우선 적용된다. $ mysql --verbose --help | grep my.cnf /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 파일을 찾았다면 아래처럼 수정한다. [mysqld] # 슬로우 쿼리를 TABL.. 2023. 3. 14.
MYSQL 달력 만들기 # TABLE 달력 생성 create table t (n int); insert into t values (1); insert into t select * from t; -- 이걸 13번 반복하면 4096행이 생성됨. 10년치 데이터라면 대략 3650일이므로 이정도면 충분 create table date_t (d date, ds char(8)); -- 날짜를 저장할 테이블 INSERT INTO date_t SELECT d, DATE_FORMAT(d, '%Y%m%d'), WEEK FROM ( SELECT @rnum:=@rnum+1 AS rownum, DATE(ADDDATE('2023-01-01', INTERVAL @rnum DAY)) AS d, CASE DAYOFWEEK(DATE(ADDDATE('2023-.. 2022. 12. 30.
[mysql]update 이후 insert idx 값 호출 - 업데이트이후 인덱스값 호출 update 쿼리 이후에 update where 절에 idx 값으로 컨트롤 하는 경우 당연히 이걸 쓸일은 없겠지만 다른 데이터를 이용하여 업데이트를 하였을 경우 해당 idx 값을 가져오고 싶을때가 있을것이다. 이럴때는 아래와 같은 방식을 사용하여 호출 할 수 있다. UPDATE 테이블명 SET 필드명 = '변경값', idx = LAST_INSERT_ID(idx) WHERE 필드명 = '대상값'; SELECT LAST_INSERT_ID(); 여기서 중요한건 idx = LAST_INSERT_ID(idx) 이다. 이후에는 SELECT LAST_INSERT_ID(); 를 통해서 언제든지 최근에 등록한 업데이트 IDX 값을 호출 할 수 있다 2022. 6. 28.
2 rows to 1 row :: 2개 이상 결과 row를 1개의 row 결과값으로! MYSQL :: 2 ROW'S TO 1 ROW OUTPUT - 2개의 ROW 결과값을 1개의 ROW로 결과값을 출력 하는 방법을 알아보자 select * from test ; type name 동물 강아지 동물 고양이 동물 염소 동물 다람쥐 select type, group_concat(name) from test group by type ; type name 동물 강아지,고양이,염소,다람쥐 옵션도 존재한다 1. 기본형 : group_concat(필드명) 2. 구분자 변경 : group_concat(필드명 separator '구분자') 3. 중복제거 : group_concat(distinct 필드명) 4. 문자열 정렬 : group_concat(필드명 order by 필드명) 2022. 4. 25.
DB 양방향 암호화 후 복호화 호출 하기 DB 양방향 암호화 후 복호화 호출 하기 개인정보등 DB를 암호화 하여 저장할 필요성이 있고, 이를 불러와서 복호화 하는 과정이 필요한 경우 사용 방법은 아래와 같다. 암호화 : HEX(AES_ENCRYPT('필드명', '키값')) 복호화 : AES_DECRYPT(UNHEX('필드명'), "키값") 이렇게 사용하면 된다. 암호화 할때는 통상적으로 INSERT, UPDATE 할때 사용을 하고 복호화는 SELECT 할때 별칭을 사용하여 호출 하면 된다. 이상, DB 양방향 암호화 후 복호화 방법에 대해서 알아보았다. 2021. 6. 23.
테이블 csv 파일로 내보내기 MYSQL 테이블 내용을 CSV 파일로 내보내기 할때는 아래의 쿼리문을 사용 할 수 있다 SELECT * FROM `테이블명`INTO OUTFILE '저장파일명.csv'CHARACTER SET euckrFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'ESCAPED BY '\\'LINES TERMINATED BY '\n' 2020. 10. 13.
[mysql ]D-day 계산 쿼리 SELECT DATEDIFF(date('대상일자'), now()) as NAME;위와 같이 쿼리문에서 미리 디데이 계산을 해서 호출 할 수 있다. 2020. 4. 8.
[mysql] 분기별 / 년도별 계산 MYSQL 분기별 구할때 함수 WHERE DATE_FORMAT(writeDate, '%Y') = 2019 AND QUARTER(writeDate) = 1 MYSQL 년도별 구할때 함수 WHERE YEAR(writeDate) = 2019 AND QUARTER(reg_date) = 1 QUARTER 함수는 분기를 구하는 함수이며,YEAR 년도를 쉽게 구할수있는 함수이다. SELECT QUARTER('2011-09-01'); 위와 같이 쓸 경우 1 이라는 결과값을 없을수 있다. 2020. 1. 22.
기존에 값이 있을때는 update 없을때는 insert 하는 방법 INSERT INTO users (NAME, email) VALUES ('name', 'email@email.kr') ON DUPLICATE KEY UPDATE name='test', email='test@test'; 위 구분을 처음 실행하면 name 필드에 name email 필드에 email@email.kr 이 등록이 된다 한번 더 insert 할 경우 당연히 중복 컬럼이 발생한다. 이 경우, 중복을 방지 하기 위해 ON DUPLICATE KEY UPDATE name='test', email='test@test'; 위 구분은 중복이 발생 할 경우 update 를 위와 같은 데이터로 변경하여 업데이트를 한다 즉 다시 말하자면 기존에 중복이 있기때문에 새로운 이름으로 insert 하는것이 아니라기존에 데.. 2019. 12. 10.
MYSQL 날짜관련 쿼리 1> 시작하기에 앞써 잘못된 생각 바로잡기 1.1> 한주의 시작은 일요일이다. -> 어떤분들은 월요일이 한주의 시작인것으로 알고있지만 한주의 시작은 일요일입니다. 2> 실전에 앞써... 2.1> MySQL에서 날짜관련 함수 2.1.1> DATE_ADD(a, INTERVAL b DAY) -> a날짜에서 b날만큼 더한다. 2.1.2> DATE_SUB(a, INTERVAL b DAY) -> a날짜에서 b날만큼 뺀다. 2.1.3> CURDATE() -> 현재 날짜를 출력한다. cf> NOW() 함수는 현재날짜 및 현재 시간을 출력한다. 2.1.4> DAYOFWEEK(a) -> a날짜가 위치한 요일의 주(weekday) 인덱스값을 출력한다. ex>일=1, 월=2, 토=7 3> 실전연습 3.1> 이번주 첫 날짜만 .. 2019. 12. 6.
SQL로 특정 데이터만 우선 정렬 SQL 특정 데이터순으로 우선 정렬 하는 쿼리 의외로 간단하다.. SELECT * FROM 테이블명ORDER BY field(필드명,'조건') DESC 레드색상의 구문이 핵심이다. 2019. 6. 12.
ajax :: form을 배열로 담아서 통채로 옮겨보자 ajax :: form을 배열로 담아서 통채로 옮겨보자 ajax 사용시 값을 넘겨야할때가 반드시 발생한다. 근데 이때.... form 값이 너무너무 많을 경우.. 어떻게 하겠는가? 하나하나 치기도 힘들고 조금만 수정되어도 다시 고쳐야 한다. 이럴때는.. 간단하게 한줄만 입력해주시면 form 과 form 사이의 input 정보 모두를 가져오는 기특한 녀석이 있다 var data = jQuery("필드값").serialize(); 이렇게만 하면 input 값들이 배열로 정성스럽게 아주 고급지게 담긴다 2019. 3. 15.