DATABASE(oracleDB 11g) 100

[PL/SQL]변수선언의 기초

변수선언의 기초 변수는 데이터의 임시 저장 영역 혹은 저장된 값을 조작하거나 재사용할때 사용한다. 변수 이름을 정할때는 다음의 조건을 따른다- 문자로 시작- 중간에 숫자 표함 가능- 특수 문자 포함 가능- 30자 이하- 예약어 포함 X 변수를 선언하는 구문은 다음과 같다.12identifier [CONSTANT] datatype [NOT NULL] [:= |DEFAULT expr];cs 구문 설명 identifier 변수이름 CONSTANT 변수의 제약조건(상수) data type 변수의 데이터 타입 NOT NULL 변수의 제약조건(NOT NULL) expr 임의의 PL/SQL식 다음은 변수를 선언하는 예시이다.12345DECLARE V_HIREDATE DATE; V_DEPTNO NUMBER(3) NOT..

[PL/SQL]기본적인 PL/SQL블록 출력

기본적인 PL/SQL블록 출력 기본적인 PL/SQL블록123456BEGIN DBMS_OUTPUT.PUT_LINE('HELLO PL/SQL'); END;/Colored by Color Scriptercs하지만 이 블록을 SQL Developer에서 출력을 하면 프로시져가 생성되었다는 말만 출력 될것이다. 이때SQL Developer에서 PL/SQL블록을 출력을 하기 위해서는1SET SERVEROUTPUT ONcs의 구문을 사용해야 한다. 이후 다시 위의 구문을 입력하면, 문장이 출력이 된다. SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.

[SQL]분석 함수 활용

분석 함수 활용 OVER123SELECT COLUMN, {AVG|SUM|...}(COLUMN) OVER({PARTITION BY|ORDER BY COLUMN ROWS BETWEEN UNBOUNDED PREDEDING AND CURRENT ROW})FROM TABLEWHERE CONDITIONS;Colored by Color Scriptercs의 형식으로 작성한다.(형식을 잘못 작성하였으니, 아래 예시를 보자) 구문 설명 PARTITION BY 해당 컬럼을 묶어준다(GROUP BY) ORDER BY 해당 컬럼을 정렬해준다. 아래 예시를 보며 이해하도록 하자.아래 예시는 PARTITION BY를 사용한 것이다.1234567891011121314151617181920212223SELECT EMPNO, ENAM..

[SQL]정규식 함수의 기초

정규식 함수의 기초 내가 가지고 있는 수만개의 데이터중 한개의 PHONENUMBER 컬럼에 대해, 알파벳이 섞여있는 ROW를 출력하려고 한다.만약 이것을 단순히 생각했을 경우, 1234567SELECT *FROM TABLEWHERE PHONE_NUMBER LIKE '%A%' OR PHONE_NUMBER LIKE '%B%' OR ... ... OR PHONE_NUMBER LIKE '%Z%';cs이러한 방법으로 쓰는 경우가 있다. 하지만 정규식을 쓴다면 123SELECT *FROM TABLEWHERE REGEXP_LIKE(PHONE_NUMBER,'[[:alpha:]]');cs위와 같이 간단한 방법으로 확인을 할 수가 있다. 다음은 정규식을 이용한 예시이다.123SELECT *FROM EMPWHERE REGE..

[SQL]동의어 기초

동의어 기초 다른 객체에 쉽게 엑세스 하기위해 동의어 라는 것을 생성한다.그리 함으로써, 다른 유저가 소유한 테이블을 쉽게 참조할 수 있고, 긴 객체 이름을 짧게 만들 수 있다. 생성 구문 형식은 다음과 같다.12CREATE [PUBLIC] SYNONYM synonymFOR object;cs 구문 설명PUBLIC 엑세스 권환 synonym 동의어 이름 object 동의어를 생성하는 객체를 식별 동의어는 수정이 불가하다. SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.

[SQL]INDEX의 기초

INDEX의 기초 INDEX란 포인터를 사용하여 행 검색 속도를 높일 수 있는 스키마 객체이다.INDEX를 사용할 경우 테이블의 COLUMN에 직접 빠르게 엑세스할 수 있는데, 그 이유는INDEX는 INDEX화된 경로를 사용하여 데이터를 신속하게 찾기 때문에 디스크 I/O를 줄여주기 때문이다. ROWID : 행에 저장된 데이터의 논리적인 주소값12SELECT ROWID, E.*FROM EMP E;cs 이것을 조금 활용하면1234SELECT ROWID, E.*FROM EMP EWHERE ROWID = 'AAAE+oAAAAAAAETAAF';--INDEX보다 값을 더 빠르게 찾는 방법 : 어느 주소에 있는 값을 가져오라는 뜻이다.cs위와 같이 사용가능하다. 하지만 이경우, 우리가 ROWID값을 하나하나 복사 ..

[SQL]SEQUENCE(시퀀스)의 기초

SEQUENCE(시퀀스)의 기초 시퀀스는 정수 값을 생성해주는 데이터베이스의 객체이다.이 객체는 공유할 수 있고, 고유 번호를 자동적으로 생성할 수 있다.-> Primary key값중 정수값을 생성하는데 이용할 수 있다. User Data : 사용자의 데이터가 저장하는건 실제 디스크에 공간을 받아야하는것Dictionary Data : 딕셔너리데이터는 그러한 사용자 데이터를 유지보수 하기 위해 공유되는 별도의 공간을 가진다. 시퀀스는 Dictionary Data에 저장된다.즉 별도의 저장공간이 필요하지 않는다.생성해 놓으면 만들어진 SEQUENCE를 통해서 여러가지 SEQUENCE의 속성만 가지고 있으면 된다. 시퀀스를 생성하는 구문은 다음과 같다.1234567CREATE SEQUENCE sequence[..

[SQL]EXISTS 의 보충

EXISTS 의 보충 다음의 내용을 참고하자.두개의 쿼리문의 결과는 같다.1234567891011SELECT *FROM DEPT DWHERE EXISTS (SELECT * FROM EMP WHERE DEPTNO = D.DEPTNO); SELECT *FROM DEPTWHERE DEPTNO NOT IN (SELECT DEPTNO FROM EMP);--NOT IN일때 서브쿼리 검색결과중 NULL이 있으면 무조건 결과가 NULL이 나오기 때문에 주의하여야 한다.--또한 NOT IN보다는 왠만하면 NOT EXISTS를 사용하도록 하자.cs

[SQL]서브쿼리(SUBQUERY)의 종류

서브쿼리(SUBQUERY)의 종류 SUBQUERY 란 SQL명령문에 포함된 SELECT 명령문이다.이때 서브쿼리는 메인쿼리보다 먼저 실행 될 수 있으며, 서브쿼리가 위치한 곳에 먼저 실행 될 수 있다. 다음은 서브쿼리를 분류한 것이다. >> 반환 값에 따른 서브쿼리 - Single row Subquery : 서브쿼리 결과가 단일 행 * 단일 행 비교 연산자에는 =, =, 을 사용한다. - Multiple row Subquery : 서브쿼리 결과가 여러 행 * 다중 행 비교 연산자에는 IN, ALL, ANY, SOME, EXISTS가 있다. 함수명 설명 IN 결과중 하나라도 일치하면 참 ANY,SOME 결과와 하나 이상 일치하면 참 ALL 결과와 모든 값이 일치하면 참 EXISTS 결과 중에서 값이 있으면..