본문 바로가기

Windows Developer/Oracle

[Oracle] 명시적 커서와 암시적 커서 커서는 PL/SQL에 내장된 일종의 포인터이며, 데이터베이스 쿼리와 레코드들의 세트를 얻는 작업, 그리고 결과셋의 행들을 하나씩 얻는 작업에 이용될 수 있다. 즉, 커서는 데이터에 대한 프로그래밍적인 접근을 가능하게 해준다. [명시적 커서] 명시적 커서는 커서를 관리하는데 필요한 PL/SQL코드를 PL/SQL 프로그래머가 직접 작성하는 커서이다. declare vempno number(4); vename varchar2(20); vsal number(7, 2); cursor c1 is select empno, ename, sal from emp where deptno = 20; begin open c1; dbms_output.put_line('empno ename slal'); loop fetch c1 .. 더보기
[Oracle] OUTER JOIN OUTER JOIN은 JOIN조건을 만족하지 않는 경우에도 모든 행들을 다 보고자 할 경우에 사용하는 JOIN방법이다 EMP 테이블의 EMP_NUM 컬럼과 EMP_SKILL 테이블의 EMP_NUM 컬럼을 보자. EMP_SKILL 케이블의 EMP_NUM중에 10005. 10007이 없다. 그럼 다음과 같이 검색을 하면 어떤 결과가 나올까? SELECT A.EMP_NUM, LAST_NAME, B.SKILL_NO FROM EMP A, EMP_SKILL B WHERE A.EMP_NUM = B.EMP_NUM; 만약 위의 식을 정확하게 입력했다면 7개의 검색 결과가 나타날 것이다. 중복된 것은 한번만 나타내라는 조건이 없으니 10005,10007이 없는 값들이 출력될 것이다. 그럼, 다음과 같이 검색을 해보자. S.. 더보기
[Oracle] NON-EQUJOIN NON_EQUJOIN은 등호(=)를 이용한 조건식을 사용하지 않는 경우를 말한다. 예를 들어 다음과 같이 BETWEEN를 사용하여 특정 범위를 지정할 수도 있다. SELECT A.EMP_NUM, A.DNAME, B.AMOUNT FROM DEPT A, DEPT_SALES B WHERE A.DEPTNO BETWEEN '100' AND '300'; 더보기
[Oracle] EquJoin [출처]http://www.itmembers.net/board/view.php?id=oracle&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=subject&desc=desc&no=30&PHPSESSID=0a6380ea559aaf4e033ed638baf52b0c 두개 이상의 테이블로부터 원하는 정보를 검색하기 위해서는 JOIN문을 사용한다. 그러나 JOIN이 반드시 두 개 이상의 테이블에서만 사용되는 것은 아니다. 하나의 테이블에서도 JOIN을 사용하여 마치 두개의 테이블 인 것처럼 사용할 수 있다. (이것을 Self Join이라고 한다.) EMP_NUM, SKILL_NO, SKILL_NAME을 한번에 표시하고 싶다. 그런데 EMP_NUM 컬럼은 EM.. 더보기
[oracle] 프로시져 생성 및 in, out, in out 파라미터 [프로시져 생성] create or replace procedure many_params : many_params는 프로시져의 이름 [파라미터 IN, OUT, IN OUT] IN : 읽기전용 파라미터 (내부에서 쓰일 변수) OUT : 프로시저에서 값을 변경할 수 있음 (외부에서 쓰일 변수) IN OUT : 읽고쓰는 작업을 동시에 할 수 있음 (내부에서 대입된 함수와 동시에 해당 변수를 리턴) [프로시져] many_params(iparam, oparam, ioparam); 첫번째 매개변수 IN mesg2 := mesg1 || 'Parameter as the out'; This is the InParmameter as the out 두번째 매개변수 OUT 받은 mesg1을 mesg2에 대입받아 mesg2를.. 더보기
[Oracle] 테이블 생성 및 테이터 삽입 [학생 테이블 생성 및 삽입] CREATE TABLE student (stu_id CHAR(5) CONSTRAINT student_stu_id_pk PRIMARY KEY CONSTRAINT student_stu_id_ck CHECK(LENGTH(TRIM(' ' FROM stu_id)) =5), stu_name VARCHAR2(10) CONSTRAINT student_stu_name_nn NOT NULL ); INSERT INTO student VALUES('94031','박지성'); INSERT INTO student VALUES('94032','이청용'); INSERT INTO student VALUES('94033','차두리'); INSERT INTO student VALUES('94034','기성용.. 더보기
[My-SQL] 기본 쿼리문 1. SELECT 문 [테이블에 지정된 레코드를 가져옴] SELECT 검색할 칼럼을 지정 FROM 검색할 테이블을 지정 WHERE 검색할 테이블 내의 행을 결정 ex) select * from test (test 이블에서 모든 데이터를 가져온다) select no, name from test where no=21 (test 테이블에서 no가 21인것의 no, name 데이터를 가져온다) select * from test order by no DESC (test 테이블에서 no의 역순으로 모든 데이터를 가져온다) select no, subject from test where subject Like '%정%' (test 테이블에서 subject 칼럼에 '정'이 들어간 no, name 칼럼의 데이터를 가져온다.. 더보기
[오라클] 쿼리 작성시 유의 사항 프로그램 개발시 절대 빠지지 않는 것이 데이터를 저장하기 위한 DB이다. DB의 사용을 위해서는 쿼리를 작성해서 사용하게 되는데 여기서 한가지 팁 다음 쿼리의 차이는? [전제조건 : USERS 테이블의 컬럼은 ID, PW, MEMO 3개] 1. select * from users where id = '1234' 2.select id, pw, memo from users where id='1234' 3.SELECT * FROM USERS WHERE ID='1234' 4.SELECT ID, PW, MEMO FROM USERS WHERE ID='1234' 이상 네개의 쿼리는 쿼리를 실행했을때 결과값은 동일하다. 하지만 내부적인 실행 과정은 다르다. 오라클 쿼리를 실행할때 내부적으로는 소문자 쿼리를 대문자 쿼리.. 더보기