IT/SQL 4

[SQL] MYSQL에서 RANK구현하기

최근 SQL-D 자격증을 공부하며 배운 함수는 회사에서 MYSQL 5.7 버전을 (8버전 이하) 사용중이라 여러 함수들이 적용안되기 때문에 무용지물이었다. 메뉴 호출 트랜젝션이 한번의 호출당 12번 씩 일어나는것을 리팩토링하다가 갑작스레 DB 버전을 업데이트 하는 위험감수보다는 쿼리를 수정하는게 낫겠다는 생각이 들어 쿼리와 js부분만 수정해보았다. 그러다가 기록하는 RANK 함수 구현하기 ! 듀얼 테이블을 INNER JOIN 하여 변수를 생성해 @ROWNUM을 +1 해주는 방법과 특정컬럼으로 그룹핑하여 @RANK 변수를 한개씩 더해주는 방법이 있다 SELECT @rownum:=@rownum+1 AS NO -- @rownum : RANK를 대신해서 사용함 ,A.* FROM ( SELECT -- @RANK ..

IT/SQL 2021.06.25

[MYSQL] AUTOCOMMIT 확인/변경

회사에서 한 시스템은 MYSQL를 이용하고있고 나는 워크벤치를 이용하고있다 갑자기 문득 UPDATE문을 날리다가 AUTO COMMIT기능이 가끔 엄청난 결과를 불러일으킬거라는 생각이 들어 이를 변경 적용하고자 한다 1. 조회 방법(1) - SELECT SELECT @@AUTOCOMMIT; 실행결과 > 활성화 되어있을 경우 1로 출력된다 이것이 default값 방법(2) - MYSQL 환경변수 확인 - SHOW SHOW variables like 'autocommit' 실행결과 > 변수 값이 ON, OFF로 나타난다 2. 설정 방법 간단한 명령어로 설정을 바꿀 수 있다. 활성화 하려면 TRUE, 비활성화는 FALSE이다. SET AUTOCOMMIT = FALSE ; // 비활성화 SET AUTOCOMMIT..

IT/SQL 2021.06.22

[MYSQL] 인덱스 추가/삭제/변경

1. 테이블 생성시 추가 CREATE TABLE `관리_TABLE` ( `SEQ` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '일련번호', `APPLY_STATUS` varchar(1) NOT NULL COMMENT '적용상태', `REG_COMMENT` varchar(100) DEFAULT NULL COMMENT '등록사유', `REG_USR_ID` bigint(20) NOT NULL COMMENT '등록자', `REG_DT` datetime NOT NULL COMMENT '등록일시', PRIMARY KEY (`SEQ`,`APPLY_STATUS`), INDEX `idx_fwd_ptn_1` (`APPLY_STATUS`,`REG_USER_ID`) ) ENGINE=InnoD..

IT/SQL 2021.06.21

[SQL] EXISTS (작성중)

EXISTS(서브쿼리)는 서브쿼리의 결과가 1건이라도 존재하면 TRUE를 리턴하고 없으면 FALSE를 리턴한다 일치하는 결과가 단 한건이라도 있으면 더이상 쿼리를 수행하지않는다. EXISTS는 컬럼이 불필요하기때문에 SELECT 1을 기입했다. SELECT a.prod_no , a.prod_name , a.seller_no FROM PROD_TABLE a WHERE a.PROD_name like '%책상%' AND EXISTS ( SELECT 1 FROM PARTNER b WHERE b.seller_no = a.seller_no )

IT/SQL 2021.05.26