DATABASE(oracleDB 11g)/SQL 36

[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 결과 중에서 값이 있으면..

[SQL]서브쿼리(SUBQUERY)의 추가내용_01

서브쿼리(SUBQUERY)의 추가내용_01 1편 기초 : https://seungsami.tistory.com/62 1234567891011--아래 두개의 쿼리문은 같은 결과를 가져온다.SELECT * FROM EMP WHERE SAL >ALL (SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO) ; SELECT * FROM EMP WHERE SAL > (SELECT MAX(AVG(SAL)) FROM EMP GROUP BY DEPTNO) ;cs 두개이상의 컬럼을 비교할 수 있는 서브쿼리의 예는 다음과 같다.12345SELECT * FROM EMP WHERE (DEPTNO,SAL) IN (SELECT DEPTNO, MIN(SAL) FROM EMP GROUP BY DEPTNO) ; c..

[SQL]계정 생성 및 삭제(oracle DB 11g)

계정 생성 및 삭제 (oracle DB 11g) 계정 생성오라클 11g버전에서는 http://{IP주소}:{포트번호}/apex/f?p=4950 에서 쉽게 만들 수 있으나, SQL문을 통해서도 계정 생성 및 권한 부여가 가능하다. 콘솔창에서 관리자 아이디로 로그인을 해야 계정 생성이 가능하다. 1select * from all_users;cs를 통해 모든 계정을 확인 할 수 있다. 1create user {username} identified by {passwd};cs를 통해서 계정을 만들수 있는데, 권한을 주어야 로그인이 가능하다. 시스템 권한을 확인하는 쿼리문은1SELECT * FROM SESSION_PRIVS;cs이고 사용자에게 권한을 주는 것은 1234567891011121314grant creat..