본문 바로가기

DB관련/oracle

(18)
PL/SQL 3- 복합 변수, 제어문 레코드 타입과 테이블 타입이 있다. A>레코드 타입 1.정의와 선언 TYPE 타입 이름 IS RECORD( 필드 선언 ); 식별자 TYPE_NAME 2. 예시 이때는 %TYPE 은 되어도 %ROWTYPE은 안된다. 예시2. 입력받고 출력 B>테이블 타입 변수 =컬렉션 이라고도 한다. 배열이 여러개 중첩된 것 같은 테이블 모양 키와 값으로 구성되어 있다. 0.종류 1.키 UNIQUE 속성이며 숫자일 경우 :BINARY INTEGER 또는 PLS_INTEGER 문자일 경우 :VARCHAR2 2.값 스칼라 데이터 유형도 가능 레코드 타입도 가능 3.정의와 선언 예시1. 사번이 7499 사람 이름 인덱스 0에 저장하고 출력 DECLARE t_name VARCHAR2(20); TYPE tbl_emp_name IS..
PL/SQL -2 스칼라 변수 A>렉시칼 : 문자 집합 PL/ SQL 렉시칼: pl/sql 안에서 사용되는 문자 집합들 ex)식별자, 구분자 ,리터럴 등.... 1.따옴표가 쓰일때 식별자의 대소문자 구분이 필요할 때, 공백 같은 문자가 포함될 경우 예약어 사용시 B>중첩된 PL/SQL 블록 작성하기 예시1. 변수의 스코프 DECLARE v_first VARCHAR2(5) := 'Outer'; --자바로 따지면 전역변수 BEGIN DECLARE v_second VARCHAR2(5) := 'Inner'; --자바로 따지면 지역변수 BEGIN DBMS_OUTPUT.PUT_LINE(v_first); DBMS_OUTPUT.PUT_LINE(v_second); END ; DBMS_OUTPUT.PUT_LINE(v_first); DBMS_OUTPUT..
PL/SQL -1 기본적으로 블록 구조이다. 중첩 블록도 가능. 포함된 블록을 nested block 이라 한다. 블록 내에서 sql 문을 사용하여 데이터를 검새하고 수정 A>블록의 유형 : 익명블록 :일회성일때 주로 사용 저장된 블록: 서브 프로그램 또는 프로그램 단위 라고도 한다. B>기본 구성 : 선언부(DECLARE) : 변수나 상수 선언 실행부(BEGIN) : 제어문, 반복문 등 실행 예외처리부(EXCEPTION) C>문법 규칙 : 1.END 이외의 예약어 뒤에는 세미콜론을 안 붙임 , 그 외에는 붙임 2. 기본적으로 문장 결과 출력을 안해줌 결과를 화면에 출력하고 싶으면 SET SERVEROUTPUT ON 3. 리터럴(문자,날짜)은 단일인용부호(‘)로 표시, 널 값은 NULL 상수로 기술 4. 예약어는 식별자명..
복수행 함수 - 연산 함수와 그룹함수 연산함수 COUNT SUM AVG MAX MIN ROLLUP :소계값 CUBE :소계 및 전체 총계 GROUPING: 그룹화 여부 - 결과는 1혹 0 GROUPINGSET: 한번의 질의로 여러개 그룹화 그룹화 A.GROUP BY GOURP BY는 열의 행화 라고 생각하면 쉽다. 테이블이 있으면 왼쪽으로 90도 돌려보자 이때 할 칼럼이 이번에는 행이 되지 않았나? 이 행이 GROUP 화 된 결과라고 생각하면 쉽다. !주의점 1. SELECT 절에서 사용된 그룹함수 이외의 컬럼이나 표현식은 GROUP BY 필수 --not a GROUP BY expression 그룹함수 안쓰면 안해도 된다. 2. GROUP BY 절에 사용된 칼럼은 SELECT 절에 사용되지 않아도 된다. --하지만 결과는 SELECT 되지 ..
일반 함수(nvl, nvl2, decode) NVL(컬럼, 치환 값) :값이 null일 경우 치환값으로 출력 NVL2(col1,col2,col3) :3항 연산자 역할 col1이 null이 아니면 col2, null이면 col3 DECODE(A,B,C,D): IF문과 비슷 A와 B가 같으면 C출력 아니면 D출력 DECODE(A,B,1,C,2,3) : A와 B가 같으면 1 아니면 C (else if역할) A와 C가 같으면 2 다르면 3 중첩 DECODE도 가능
형과 형 변환 함수 CHAR(n) : 고정길이 문자 저장 최대값은 2000바이트 CHAR2(n) :가변 길이 문자 저장 최대값 4000바이트 number(p,s) : p는 전체 자리수 1~38 자리까지 s는 소수점 이하 자리수 DATE :7바이트 LONG : 가변 길이 문자 저장, 최대 2기가 CLOB : 가변 길이 문자 저장, 최대 4기가 (Character Large Object) BLOB: 가변 길이 바이너리 데이터 , 최대 4기가 RAW(n) : 원시 이진 데이터 , 최대 2000바이트 LONG RAW(n) : 원시 2진 데이터, 최대 4기가 BFILE: 외부 파일 저장 데이터, 최대 4기가 형변환 묵시적과 명시적이 존재 묵시적 = 자동 형 변환의 경우 예시 숫자 + 문자 = 숫자 !단 숫자로 변환 가능한 문자만 자..
숫자 함수, 날짜 함수 숫자 ROUND(숫자,원하는 자리수) :반올림 (11.254 ,2) 면 11.26 (11.254,-1) 이면 11 TRUNC: 버림 MOD: 나머지 CEIL : 근접한 큰 정수 FLOOR: 근접한 작은 정수 POWER : MATH.pow(n,2) 날짜함수 날짜 +- 숫자 = 날짜 날짜 +- 날자 = 숫자 날짜에선 미래일수록 큰 날짜 취급 SYSDATE :현재 시간 MONTHS_BETWEEN(날짜,날짜) : 두 날짜 사이의 개월수 같은 달이면 소수점단위 나옴 윤년 구분은 못함 ADD_MONTHS(날짜,더할 개월): 월 더하기 NEXT_DAY(기준 날짜,'돌아오는 가장 최근 요일 날짜' ) ex)NEXT_DAY(SYSDATE,'MON') LAST_DAY() :주어진 날짜가 속한 달의 가장 마지막 날 ROUN..
문자와 관련된 함수 INITCAP :첫글자 대문자로 LOWER :전부 소문자 UPPER: 전부 대문자 LENGTH : 글자 길이 반환 ex)LENGTH('ab') 결과: 2 LENGTHB : 글자 길이의 바이트 값 출력 ex) LENGTHB('한글') 결과 :4 CONCAT : concat , ||과 동일 SUBSTR (문자,시작 인덱스, 추출할 글자수) ex) SUBSTR('ABC',1,2) 결과: AB 주의!! 인덱스가 1부터 시작 SUBSTRB : 문자에서 특정 바이트 추출 ex) SUBSTR('한글',1,2) 결과: 한 INSTR (문자열, 찾을 문자,시작위치 [,몇번째인지 여부]): 주어진 문자열에서 찾을 문자 인덱스 반환 추출할 글자수를 음수로 나오면 오른쪽에서 왼쪽으로 탐색 추출할 글자수 못 찾으면 0 나옴 I..