[RDBMS] DB Null 처리.

  MySQL  인덱스에 NULL 값 허용 - (기본키는 NULL 허용 X) NULL 값 끼리 동일하게 판단 X 빈 문자열 NULL 변환 X Oracle 인덱스에 NULL 값 허용 X - (기본키는 NULL 허용 X) 하지만 복합키에 NULL이 아닌 값이 하나라도 있으면 인덱스로 만들 수 있다. NULL 값 끼리 동일하게 판단 X 빈 문자열 NULL 변환 O SQL Server 인덱스에 NULL 값 허용 O - (기본키는 NULL 허용 X) NULL 값 끼리 동일하게 판단 O - (Unique Column에는 NULL값 하나만 지정 가능) 빈 문자열 NULL 변환 X Index 생성 시 "WHERE 컬럼명 IS NOT NULL" 구문 포함 가능 PostgreSQL  인덱스에 NULL 값 허용 O - (기본키는 NULL 허용 X) NULL 값 끼리 동일하게 판단 X 빈 문자열 NULL 변환 X Index 생성 시 "WHERE 컬럼명 IS NOT NULL" 구문 포함 가능 참조 사이트 : https://velog.io/@kkambbak1/posts

[PostgreSQL] PostgreSQL 13.15 정리

이미지
 Version :  PostgreSQL 13.15, compiled by Visual C++ build 1914, 64-bit  1. PostgreSQL 의 Object 구조 2. 각 DB의 Public Schema 에 있는 테이블이더라도, 관리DB의 Public Schema 에 있는 테이블은 삭제할 수 없음.  3. Create Database, Create Schema 명령어와 같이, 데이터베이스 , 스키마 생성은 postgres 와 같은 admin 권한의 계정으로 생성하고 해당 스키마 (여기서는 localschema) 에 대해서 일반 계정이 사용할 수 있도록  all privileges 권한을 설정해 준다.  4. 신규 계정 생성(localuser2) 후, 특정 DB (ex. localdb)의 스키마 (localschema), test_t 테이블에 select 권한이 필요한 경우. postgres 계정      create user localuser2 password 'localuser2!@#$';      grant connect on database localdb to localuser2;      \c localdb      grant usage on schema localschema to localuser2;      (set search_path to public, localschema;)      grant select on test_t to localuser2; 5. Default Privileges 테이블 생성 시 기본 권한 설정이 필요한 경우 사용 alter default privileges for user localuser in schema localschema  grant select, insert, update, delete on tables to localuser2; : localschema의 localuser 가 테이블 생성 시,  localuser2 는 select (r), insert (a), update (w

[ORACLE] Connect By 함수를 이용한 YYYYMMDD, HH24 출력

이미지
  2023년 3월 8일부터 2023년 8월 3일까지 시간단위로 추출하고자 하는 예제 (Catesian 이용), SELECT '('''||YMD||HOUR||''');' FROM  (SELECT TO_CHAR(TO_DATE('20230308', 'YYYYMMDD') + (LEVEL-1), 'YYYYMMDD') AS YMD    FROM DUAL CONNECT BY LEVEL <= (TO_DATE('20230801', 'YYYYMMDD') - TO_DATE('20230308', 'YYYYMMDD')) + 1) A, (SELECT LPAD(LEVEL-1, 2, '0') AS HOUR FROM DUAL CONNECT BY LEVEL-0 < 25) B;

[MYSQL & MARIA] Procedure Sample

DELIMITER $$ CREATE PROCEDURE ProcDeleteTmvrh (  IN rmdate VARCHAR(8)  ) BEGIN declare finished_val integer default 0; declare vhpnky_val varchar(15); declare tmvri_cursor cursor for  select distinct vhpnky from TMVRI where rqshpd = rmdate; declare continue handler for not found set finished_val = 1; declare exit handler for sqlexception begin rollback; set result = -1; end; open tmvri_cursor; vhpnky_list : loop fetch tmvri_cursor into vhpnky_val; if finished_val = 1 then leave vhpnky_list; end if; delete from TMVRH where vhpnky = vhpnky_val; end loop vhpnky_list; close tmvri_cursor; END$$ DELIMITER ; call ProcDeleteTmvrh('20190924'); drop procedure ProcDeleteTmv;

[ORACLE] Oracle 라이선스

Oracle 라이센스 가격 Oracle의 DBMS 라이센스 정책의 특징 Oracle General Oracle의 라이센스 정책은 크게 CPU와 User를 기준으로 산정하는 2가지 정책을 가지고 있으며, CPU의 경우 각각의 제품마다 별도의 기준으로 라이센스를 산정 대표적인 Oracle Database Software Oracle Database 10g Express Edition (Oracle Database XE) – MS SQL 과 정책 같음 – CPU 개수와 상관 없으나, 단일 사용자만 사용 가능 – 사용자 데이터 저장 용량이 4GB까지 (전체 크기가 아닌 각 디비당) – 1GB까지의 메모리를 사용하며 –  무료  Oracle Personal Edition – CPU 개수와 상관 없으나, 단일 사용자만 사용 가능 – 모든 Oracle Database 제품군과 호환이 가능하며, – 모든 제품의 특징이 포함된 개인 사용자용 –  40만원대 -서버 급 이하인 Desktop장비일 경우 Personal를 구입 할 수 있다. Oracle Standard Edition One(SE1) – 2 CPU까지 확장 가능한 서버에 설치 가능 – Entry Level 서버를 위한 2 Processor 미만, Min User는 5이며 RAC는 지원되지 않음 – 400명 미만의 사용자가 있는 회사나 조직에 적합하며, 대기업인 경우 단일 업무용이나 독립업무 서버로 적당하고, 수 GB 미만의 DB 볼륨에 적당함 – 최소 라이센스인 5 User 라이센스의 경우  100만원대 이며 – 프로세스 라이센스의 경우 CPU당  600만원대  정도 금액 1) Named User Plus 경우 – 실제 장착 CPU 당 최소 5user 구매 ex) 최대 2CPU장비에 2CPU 장착시 10users가 최소구매수량2) Processor License 경우 – 실제 장착 CPU 당 1 Processor License 구매 ex) 2CPU장비에 2

[MYSQL] REGEXP 정규식 함수 활용

SELECT * FROM 테이블명 WHERE 컬럼명 REGEXP '^[0-9]+$'; -- 숫자만 체크 SELECT * FROM 테이블명 WHERE 컬럼명 REGEXP '[`~!@#$%^&*|\\\'\";:\/?]';-- 특수문자 체크