반응형

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

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..

오라클 cmd에서 사용자 계정 생성 및 권한 부여 방법

안녕하세요. 오늘은 명령 프롬포트 (cmd) 창에서 사용자 계정을 생성하고 권한을 주는 방법에 대해서 알아보겠습니다. 사용자 계정 생성하는 방법 1. 명령 프롬포트 (cmd)에서 sqlplus에 관리자로 접속한다. sqlplus "/as sysdba” 위 명령어로 접속이 되지 않는다면 sqlplus를 입력 후에 user-name에 sys as sysdba 를 입력하고, password는 입력하지 않고 엔터를 입력하면 된다. 2. 계정 생성 CREATE USER [ID] IDENTIFIED BY [PW]; ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 그대로 작성했는데 에러가 발생한다. 정상이다. 에러가 발생하지 않는 분들도 오라클 버전의 문제로 오라클 12c 기준으로 아래 버전은 에러가 ..

오라클 최대값, 최솟값 찾는 GREATEST, LEAST 함수 사용 및 주의사항

오라클에서는 함수 내의 인자값 중에서 최대값, 최솟값을 찾을 수 있는 함수를 제공한다. 최대값과 최솟값을 구하는 함수로 MAX 와 MIN 함수가 생각날텐데 사용 방법이 조금 다르다. MAX, MIN 은 검색 조건에 맞는 값 중에서 최대값, 최솟값을 찾는다. GREATEST, LEAST 는 여러 개의 열(Column)에서 최대값, 최소값을 찾고, 숫자가 아닌 문자열도 비교가 가능하다. GREATEST, LEAST SELECT GREATEST(100, 200, 300) AS GREATEST , LEAST(100, 200, 300) AS LEAST FROM DUAL; // 300, 100 여러 개의 인자값에서 최대값, 최소값을 뽑아올 수 있다. 위 쿼리의 GREATEST에선 300, LEAST에선 100이 출..

반응형