SQL (31) 썸네일형 리스트형 MYSQL all about Select절 (REAL MY SQL 정리) ◈ select 더보기 - mysql 의 limit은 where 조건으로 사용하지않고 모든 처리결과의 레코드건수를 제한하는 형태로 사용한다. - where, order by , group by가 인덱스를 사용하려면 컬럼값을 변형하지않고 그대로사용해야 한다. - where 절에 or조건이있다면 인덱스 머지, 등의 방법을 구사해야한다. - group by 절의 컬럼순서가 인덱스 컬럼 순서와 같으면 group by 절은 인덱스를 탈 수 있다. - order by 절의 모든 컬럼이 asc, desc일때만 인덱스를 탈 수 있다. - where + order by 절이 같은 컬럼이 연속 포함될 경우 같은 인덱스를 탈 수 있다. - where절에 일치하는 레코드건수 많지않을 때 where절만 인덱스를 이용하는 튜닝방.. MYSQL 연산자/like연산자/between연산자/in연산자 (REAL MY SQL 정리) 1. 연산자 1-1. 동등비교 (양쪽모두 null-> true반환, 한쪽만 null -> false반환), = 1-2. 부정비교(, !=, !(false->0, true->1) 1-3. and(&&)와 or(||) 연산자 set sql_mode='pipes_as_concat'; --||을 oracle연산자와 동일하게 변경 select 'abc'||'def' as concated_string; -- 결과값 abcdef 1-4. 나누기(/, div)와 나머지(mod, %) 연산자 1-5. regexp연산자 ex> 'x','y','z'문자로 시작하는 검증 표현식 select 'abc' regexp '^[x-z]'; - 시작 문자패턴 검증식: ^ - 끝 문자패턴 검증식: $ - 문자그룹표시 [] - 이중 하나만.. MYSQL 내장함수 / 문자열처리/타입변환/처리대기/벤치마크/암호화/aggregation function/주석 (REAL MY SQL 정리) ◈ mysql 내장함수 1. null값 비교 및 대체 (ifnull, isnull) 2. 현재시각 조회(now, sysdate), sleep(2) 16진수 - unhex: 16진수 -> 2진 - 암호화 및 해시함수(md5, sha) ◈ 처리대기(sleep) - ex> sleep(2) -- 처리대기 2초의 간격을 준다 ◈ 벤치마크(bench mark) - benchmark(반복해서 수행할 횟수, 반복해서 실행할 표현식= 반드시 스칼라값 반환하는 표현식이어야한다.) - select expr X 10번 vs select benchmark(10,expr) : 후자는 한번의 요청으로 expr이 실행되는것이므로 이미 할당받은 메모리 자원까지 공유되므로 전자에 비해 1/10밖에 자워소모가 되지 않는다. 사실 큰의미있.. MYSQL 리터럴 모음 (REAL MY SQL 정리) MYSQL 리터럴 모음 ◈ 리터럴 표기법 CASE1) 문자열 SELECT * FROM DEPARTMENTS WHERE DEPT_NO = 'D001'; SELECT * FROM DEPARTMENTS WHERE DEPT_NO = "D001"; CASE2)문자열 SELECT * FROM DEPARTMENTS WHERE DEPT_NO = 'D''001'; --결과값 나옴 SELECT * FROM DEPARTMENTS WHERE DEPT_NO = 'D"001'; --결과값 나옴 SELECT * FROM DEPARTMENTS WHERE DEPT_NO = "D'001"; -- 결과값 나옴 SELECT * FROM DEPARTMENTS WHERE DEPT_NO = "D"001"; -- 결과값 안나옴 CASE3) 숫자 .. MYSQL 매뉴얼(Document)읽는 방법 (REAL MY SQL 정리) Mysql 매뉴얼 Document의 sql문법 표기 읽는 방법 더보기 (dev.mysql.com/doc/refman/8.0/en/tutorial.html) MySQL :: MySQL 8.0 Reference Manual :: 3 Tutorial dev.mysql.com ▶ Mysql reference manual 8.0 이상 version ◈ MYSQL DOCUMENT보는 방법 - 대문자: 키워드 - 이탤릭체: 사용자작성 토근 (테이블명 or 컬럼명등의 표현식) - 대괄호([]): 해당키워드나 표현식이 optional - 파이프(|): 앞 or 뒤의 표현식중 하나만 선택할 수 있음을 의미 - 중괄호({}): 괄호내의 아이템 중 반드시 하나를 사용해야 하는 경우 - ...: 앞의 명시 키워드나 표현식의 조.. MYSQL 쿼리 작성 및 최적화 관련 (REAL MY SQL 정리) 07. 쿼리작성 및 최적화 애플리케이션 코드와달리 sql은 작동방식이나 원리에 따라 2배이상의 성능개선을 할 수 잇으므로 sql의 작동원리와 유용한 쿼리패턴을 체크해보자 1. 쿼리와 연관된 시스템설정 1.1 sql모드 - STRICT_ALL_TABLES: 일반적으로 MYSQL에서는 컬럼값이 지정된 길이보다 길어도 에러가 발생하지 않지만 SQL_MODE 시스템변수에 "STRICT_ALL_TABLES"를 설정하면 에러를 발생시키고 쿼리가 중지된다. - STRICT_TRANS_TABLES: 컬럼 비호환값의 저장시 MYSQL 서버는 비슷한값을 바꿔서 저장하려고하는데 "STRICT_TRANS_TABLES"설정하면 MYSQL 서버의 강제전환을 막는다. - TRADITIONAL: 앞의 두예약어보다 빡센 방법으로 SQ.. 오라클 자주사용하는 힌트목록 정리(친절한 sql 튜닝) 0. 오라클 힌트를 사용하는 방법 - 힌트의 규칙 /*+ (힌트명)*/ Mysql 실행계획 오라클처럼 보는 방법: 명령어 설정 explain format = tree -> MYSQL의 실행계획을 오라클 처럼 볼 수 있다. 기타 MYSQL의 특징 - mysql 8.0.18ver 부터 hash join가능(documents 참조) - EUCKR CHARACTER SET 설정 show collation like '%euckr%'; collation euckr_bin -> euckr euck_korean_ci -> euckr + 계속 보완할 예정 mysql 8버전이상 디비버 연동 설치: mysql 연결 안될 때 디비버(dbeaver) +전기코드 (새 데이터베이스 연결) 클릭 -- 좌상단 all> mysql 검색 (기본값이 popular로 되어져있어 그냥 mysql을 클릭할 경우 최신버전 - 8버전이상-의 mysql 플러그인이 안나올 수 있다. (여기서 헷갈려서 다시 플러그인 연결함;;) mysql 8+ (8버전 이상인경우) 클릭 > 다음 username: (나의경우 로컬에 설치해서 그대로) root password: (설치했을때 셋팅한 대로) 완료 (상황에 따라 jdbc드라이버 설치가 뜰 수 있는데 그냥 설치해주면 된다) 디비버 mysql 8+ 버전 연동안될때 해결할 수있는 3가지 방법 디비버(dbeaver) 툴 설치시 mysql 연결까진 되었는데 error가 발생하는 경우가 있다. reaction doesn't exist라던지.. 구글링을 쭉해보니 결론적으로 연결이되었음에도 실행오류가 나는것은 mysql 8버전 이상의 timezone 설정 버그가 있어서 이부분을 직접 수정해줘야 한다는 것이었다. 세가지나 수정방법을 쓰는것은 하나만 수정했을 때는 작동이 안되서;; 내가 해본 3가지 방법을 다 적어본다. 1. command 창으로 타임존 설정 use my sql; select user, host, account_locked, password_expired from user; -- user 계정 lock 확인 select user(); select @@global.time_zone, @@s.. 이전 1 2 3 4 다음