본문 바로가기
[ORACLE] VARCHAR2, CLOB 사용 및 가공시 주의점 [ ORACLE에서의 자료형 VARCHAR2, CLOB 사용 및 가공시 주의점 ] 보통 4000bytes 이하의 문자열에 사용되는 VARCHAR2 대용량 데이터 LOB 의 문자자료형인 CLOB 데이터 [ Charset 에 따른 한글 문자 bytes 크기 ] ORACLE 의 권장 character set 은 UTF-8 이며, UTF-8 은 문자 하나에 최대 4bytes. * 한글은 UTF-8 에서 문자 하나당 3bytes, EUC-KR 에서 문자 하나당 2bytes * SQL에서 VARCHAR2 는 최대 4000bytes 길이 제한. ※ DB charset 확인하는 방법 1) 설정확인(권장) SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERS.. 2021. 7. 21.
프로시저 호출 방법 : 파라미터가 있는 경우, mybatis에서의 호출 MS SQL EXEC procedure(); 그외 ORACLE, MYSQL 등 CALL procedure(); EXEC vs CALL 차이 리턴(out) 파라미터가 있는 경우 프로시저 호출 방법 DECLARE var aa VARCHAR(10); var bb VARCHAR(10); BEGIN CALL PROCEDURE( aa, bb, param ); END; Mybatis xml 에서의 프로시저 호출 방법 {CALL SEND_PROC(#{retCd, jdbcType=NUMERIC, mode=OUT}, #{retMsg, jdbcType=VARCHAR, mode=OUT}, #{flag, jdbcType=VARCHAR, mode=IN}, #{msg, jdbcType=VARCHAR, mode=IN}, #{tel,.. 2020. 10. 26.
[DB] InnoDB vs MyISAM : InnoDB와 MyISAM의 차이점 MySQL 에서 일반적으로 사용되는 스토리지엔진은 MyISAM 과 InnoDB이다. MyISAM이 default 스토리지엔진으로 사용된다. 각각의 스토리지엔진은 아래와 같은 장단점이 존재한다. MyISAM 트랜잭션 지원 하지 않음 테이블 단위로 데이터가 저장된다 로우레벨 lock의 지원되지 않음 무결성이 보장되지 않음 table 퍼포먼스 속도가 InnoDB보다 빠르다 소규모 프로젝트에 적합하다. InnoDB 로우 레벨 lock 을 지원하며 이에따라 insert/update 성능이 MyISAM 보다 뛰어나다. ACID (Atomicity, Consistency, Isolation and Durability) 속성을 제공한다. 외래키(Foreign Key)를 지원한다. FullText 인덱싱 지원을 하지 않.. 2020. 8. 18.
데이터베이스 격리 수준 : Database Isolation level 1. 데이터베이스 Isolation Level 이란 트랜잭션에서 일관성 없는 데이터를 허용하는 수준 2. Isolation Level 의 종류 - Read Uncommitted - Read Commited - Repeatable Read - Serializable Read Uncommitted -> Serializable 로 갈 수록 격리수준이 높다(high) Serializable -> Read Uncommitted 로 갈 수록 격리수준이 낮다(low) 1) Read Uncommitted - SELECT 문장 수행시 해당 데이터에 Shared Lock 이 걸리지 않는 Level - 아직 commit 되지 않은 트랜잭션 A 의 데이터를 B가 SELECT 할 수 있음 발생하는 문제 : dirty read,.. 2020. 3. 20.
[Mysql] 우분투 설치, 유저 생성 및 권한 부여 1. mysql-server 설치 >sudo apt-get update //apt-get 업데이트 >sudo apt-get install mysql-server //mysql-server 설치 2. /etc/mysql/ 밑의 conf 에서 binding ip 0.0.0.1 로 수정하여 외부에서도 접속 가능토록 수정 3. 실행 및 종료 >sudo /etc/init.d/mysql restart //재시작 >sudo systemctl start mysql //시작 >sudo systemctl enable mysql //서버 재시작시 mysql 자동 시작되도록 등록) >sudo systemctl stop mysql 4. 유저 관리 및 DB 권한 주기 3-1) 데이터베이스 생성 >mysql -u root -p /.. 2020. 1. 18.
[MySQL] 인덱스(INDEX) 관련 정리 본 포스팅은 '기억보단 기록'을 이라는 타이틀로 유명한 'jojoldu' 님의 인덱스관련 포스팅을 공부차원에서 단순 요약한 포스팅에 불과하므로, 보다 정확한 정보 습득을 원하시는 분들은 필히 아래 링크로 이동 하시길 바랍니다. https://jojoldu.tistory.com/243 [인덱스 기준] 1. 카디널리티가 높은 --> 낮은 칼럼 순서로 인덱스를 잡아야 좋다. 카디널리티가 높다 : 중복수치가 낮다 ex) 주민등록번호 카디널리티가 낮다 : 중복수치가 높다 ex) 이름 2. 인덱스를 잡을 때 키의 길이는 짧을 수록 좋다. InnoDB(MySQL)에서 디스크에 데이터를 저장하는 가장 기본단위를 페이지라 하며, 인덱스 역시 페이지 단위로 관리된다. 인덱스가 저장되는 페이지는 16KB 크기로 고정되어 있.. 2020. 1. 11.
JOIN 에서 WHERE 와 ON 의 차이, 그리고 OUTER JOIN [ON vs WHERE] ON : JOIN 을 하기 전 필터링을 한다 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄진다) WHERE : JOIN 을 한 후 필터링을 한다 (=JOIN을 한 결과에서 WHERE 조건절로 필터링이 이뤄진다) [INNER JOIN 에서의 ON vs WHERE] 1. INNER JOIN + ON 조건절 + ON 조건절 1 2 3 4 5 SELECT * FROM a INNER JOIN b ON a.key = b.key AND a.key2 = b.key2 cs 2. EQUI JOIN + WHERE 조건절 1 2 3 4 SELECT * FROM a AS a , b AS b WHERE a.key = b.key AND a.key2 = b.key2 cs 3. INNER JOIN +.. 2019. 11. 14.
SYSDATE vs NOW (SYSDATE 와 NOW 의 차이) SYSDATE() : SYSDATE() 함수가 호출된 시각 NOW() : NOW() 가 포함된 쿼리(구문(statement))가 호출된 시각 [Ex] 1 2 3 4 5 6 7 SELECT SYSDATE(), SLEEP(3) AS 'sleep', SYSDATE(), NOW(), SLEEP(3) AS 'sleep', NOW(); cs [결과] [쿼리 한 줄씩 해석] SELECT SYSDATE() 함수 호출될 때의 시각 (6:52:28) SLEEP(3) 3초간 Thread sleep (6:52:31) SYSDATE() 함수 호출될 때의 시각 (6:52:31) NOW() 쿼리(구문)가 실행될 때의 시각(6:52:28) SLEEP(3) 3초간 Thread sleep (6:52:34) NOW() 쿼리(구문)가 실행.. 2019. 11. 2.
Mysql hierarchy sql 계층구조 쿼리 : 설계 및 쿼리작성(Multi selectbox) Mysql hierarchy sql 계층구조 쿼리 : 설계 및 쿼리작성(Multi selectbox) 고객들이 열람할 가이드 정보가 있고, 가이드 정보의 카테고리를 N depth 로 분류(멀티 셀렉트박스 사용)하여 조회할 수 있게 하여 다음과 같은 화면을 만들어 보자. 1. '전체' 옵션의 유무 case 1 멀티 셀렉트박스에 '전체'라는 옵션이 없는 경우 : 마지막 셀렉트박스의 value(node_id)를 기준으로 가이드를 조회 case 2 멀티 셀렉트박스에 '전체'라는 옵션이 존재하는 경우 : '전체'가 선택된 마지막 셀렉트박스 직전의 value(node_id)를 기준으로 모든 자손 node_id를 찾아 조회해야한다. 예를 들어, case 1 ex) 고객지원 > 고객지원sub > 고객지원sub의sub .. 2019. 8. 21.
[Mysql] 시간 계산 : DATE_ADD, DATE_SUB 1. 더하기 DATE_ADD(date, INTERVAL expr type) DATE_ADD(날짜, INTERVAL 시간 시간타입) ex) DATE_ADD(now(), INTERVAL 1 HOUR) : 현재 시각에 1시간 더하기 DATE_ADD(now(), INTERVAL -10 MINUTE) : 현재 시각에 10분 빼기 DATE_ADD(now(), INTERVAL 100 SECOND) : 현재 시각에 100초 더하기 1 2 3 4 SELECT seq FROM hst_info WHERE 1=1 AND JOIN_DATE 2019. 8. 21.