반응형

개발 & 데이터베이스/DB 40

MySQL 이름, 이메일, 전화번호 데이터 마스킹 처리 방법

외부에서 접근 시에 민감한 정보를 일부 가리기 위한 방법으로 마스킹 처리가 있습니다. 간단하게 이름, 이메일, 전화번호 등을 마스킹 처리하는 방법에 대해서 알아보겠습니다. 1️⃣ 앞 3자리만 남기고 나머지를 *로 변환SELECT CONCAT(LEFT(user_id, 3), REPEAT('*', LENGTH(user_id) - 3)) AS masked_user_idFROM dual; user_id masked_user_idabcdefghabc*****  2️⃣ 중간 부분을 *로 변환SELECT CONCAT(LEFT(user_id, 2), REPEAT('*', LENGTH(user_id) - 4), RIGHT(user_id, 2)) AS masked_user..

MySQL AUTO INCREMENT 조회 및 초기화

오라클에선 자동으로 인덱스 값을 증가시키기 위해 시퀀스를 사용한다. 하지만 MySQL에선 시퀀스가 없다.비슷한 기능을 수행하기 위해선 AUTO INCREMENT 기능을 사용해야한다.  SHOW TABLE STATUS WHERE NAME = '' 위와 같이 조회하면 해당 테이블의 AUTO INCREMENT가 설정된 컬럼의 다음 값을 알 수 있다.  초기화 혹은 특정 값으로 변경ALTER TABLE 테이블명 AUTO_INCREMENT = 변경할 숫자; 특정 값으로 변경할 때는 현재 테이블에 있는 값 중 가장 큰 값보다 커야한다. 예를 들어, 테이블에 데이터가 5까지 있다면 6부터 변경할 수 있다.

MySQL 권한 부여하는 방법 (GRANT)

MySQL을 설치하게 되면 가장 먼저 사용하게 되는 계정은 root.관리자 계정이기 때문에, 데이터베이스에 모든 권한을 가지고 있지만 새로 생성한 계정에는 권한이 없기 때문에 초기에는 아무것도 할 수 없습니다. 실제로 개발자와 사용자에 따라서 계정을 생성하고, 권한을 부여 받아서 사용합니다.--MySQL root 권한 접속mysql -u root -p-- MySQL 스키마 선택use 스키마 이름; 사용자 생성CREATE USER '사용자'@'host' IDENTIFIED BY '비밀번호';-- 내부 접근을 허용하는 사용자 추가CREATE USER '사용자'@'localhost' IDENTIFIED BY '1234';-- 외부 접근을 허용하는 사용자 추가CREATE USER '사용자'@'%' IDENTIF..

Oracle vs MySQL 데이터 타입 비교

최근 회사에서 사용하는 데이터베이스가 Oracle에서 MySQL로 변경되고, 테이블을 생성하고 수정하는데 불편함을 느껴서 데이터 타입을 비교 정리하려고 한다. OracleMySQLBFILEVARCHAR(n)CHAR(n), CHARACTER(n), n CHAR(n), CHARACTER(n)CHAR(n), CHARACTER(n), n > 255VARCHAR(n)CLOBLONGTEXTDATEDATETIMEDECIMAL(p, s), DEC(p, s)DECIMAL(p, s), DEC(p, s)DOUBLE PRECISIONDOUBLE PRECISIONFLOAT(p)DOUBLEINTEGER, INTINTINTERVAL YEAR(p) TO MONTHVARCHAR(30)INTERVAL DAY(p) TO SECOND(s)..

오라클 조건문 IF ELSIF, CASE WHEN 사용 방법

오라클 쿼리를 짤 때도 조건문이 필요할 때가 생길텐데요. PL/SQL에서 IF ELSE 문을 이용하시면 됩니다. IF 조건 THEN -- 처리문 ELSIF 조건2 THEN -- 처리문 ELSE -- 처리문 END IF; 다른 언어와 구조는 똑같고 THEN 을 붙이는 부분과 ELSIF 명령어를 사용합니다. 마지막으로 END IF; 를 붙여줘야합니다. DECLARE p_NUM NUMBER := 90; BEGIN IF p_NUM

오라클 COUNT(*) COUNT(1) vs COUNT(컬럼) 차이점

오늘 데이터베이스를 확인하던 중에 COUNT(1) 을 쓴 쿼리를 확인하고, COUNT(*) 과 어떤 차이가 있는지 궁금해서 검색해봤다. COUNT() 함수는 집계 함수로 SELECT 쿼리에 대한 행 수를 계산하는 함수이다. COUNT(*) vs COUNT(1) 결론부터 말하자면 두 개의 명령문에는 차이가 없다. 두 개의 명령문은 모두 동일한 방식으로 작동하며 성능 상에 차이가 없다고 공식 문서에도 명시되어있다. COUNT(*), COUNT(1) vs COUNT(컬럼명) COUNT(컬럼) : 해당 컬럼에 NULL 값이 들어간 행은 제외하고 계산함. COUNT(*) : NULL 값에 상관없이 모두 계산함. COUNT(컬럼) 명령문은 해당 컬럼에 NULL 값이 있으면 세지 않기 때문에 모든 행을 세는 COUN..

오라클 PL/SQL RAISE_APPLICATION_ERROR 사용자 예외 처리

PL/SQL에서 사용자 정의 함수를 만들 때 오류 코드 또한 사용자가 임의로 설정할 수 있다. 아래와 같은 방법으로 에러 메시지를 정의할 수 있는데, 오류 코드의 범위는 -20000 ~ -20999다. RAISE_APPLICATION_ERROR(오류코드, 에러메시지); 오류코드: -20000 ~ -20999 예시 CREATE OR REPLACE PROCEDURE RAISE_TEST IS USER_ERROR EXCEPTION; CNT NUMBER; BEGIN SELECT COUNT(*) INTO CNT FROM TMP; IF CNT

오라클 여러 행을 하나의 컬럼으로 만들기 (LISTAGG) 오라클 11g R2 중복 제거

오라클에서는 여러 행으로 조회된 컬럼 값을 하나로 합쳐주는 함수가 있다. 오라클 9i 이하에서는 XMLAGG, 오라클 10g - 11g R1 에서는 WM_CONCAT, 오라클 11g R2 부터는 WM_CONCAT 함수를 사용할 수 없고, LISTAGG 함수를 사용하면 된다. 오라클 버전 함수명 ~ 9i XMLAGG 10g ~ 11g R1 WM_CONCAT 11g R2 ~ LISTAGG LISTAGG 함수는 그룹 함수이므로 GROUP BY 또는 PARTITION BY 절과 함께 사용해야한다. 또한, WM_CONCAT 함수처럼 DISTINCT를 사용할 수 없지만 정규식 함수를 사용하여 중복 제거를 할 수 있고, ORDER BY절로 정렬도 가능하다. 기본 문법 SELECT LISTAGG(합칠 컬럼명, 구분자)..

오라클 ORA-06533: 첨자가 개수를 넘었습니다.

오라클 프로시저, 함수를 호출할 때 주로 발생하는 에러로 프로시저 혹은 함수 내에서 Array (배열) 변수를 사용할 때, 주어진 크기를 넘어섰을 경우에 발생한다. DECLARE TYPE ARR_A IS TABLE OF VARCHAR2(5); ARR_B ARR_A; BEGIN ARR_B := ARR_A('A', 'B', 'C', 'D', 'E'); // 맨 마지막 요소 2개 삭제 ARR_B.TRIM(2); DBMS_OUTPUT.PUT_LINE(ARR_B(1)); // A DBMS_OUTPUT.PUT_LINE(ARR_B(2)); // B DBMS_OUTPUT.PUT_LINE(ARR_B(3)); // C DBMS_OUTPUT.PUT_LINE(ARR_B(4)); // 삭제된 데이터 (D) EXCEPTION W..

반응형