2021년 12월 10일 금요일

(자바오라클잘하세요)오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스, 자바학원, 오라클학원

 

(자바오라클잘하세요)오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스, 자바학원, 오라클학원


http://ojc.asia/bbs/board.php?bo_table=LecOrccleTun&wr_id=159 


오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스

오라클 SQL튜닝, WHERE절에서 SQL함수 사용튜닝, 함수기반인덱스SQL TIPWHERE절에서 SQL함수의 사용실습 : 오라클19CWHERE절의 컬럼에 SQL함수를 사용하는 것은 부담스러운 일 입니다. 특히 인덱스가 걸려

ojc.asia



https://youtu.be/RsswtJnUFP0

https://www.youtube.com/watch?v=F81s1_q4Fqo&list=PLxU-iZCqT52DFRbLFQIgGUFp-5En2DYRG&index=15&t=2s 

SQL TIP



WHERE절에서 SQL함수의 사용



실습 : 오라클19C



WHERE절의 컬럼에 SQL함수를 사용하는 것은 부담스러운 일 입니다. 특히 인덱스가 걸려 있는 컬럼인데 SQL 함수가 사용되었다면 그 인덱스는 사용할  수가 없어 원본 데이터인 전체 테이블 FULL SCAN을 하므로 성능이 저하 됩니다.


WHERE절에서는 좌측 컬럼에 대해서는 함수 사용을 피하고 오른쪽 (문자)상수쪽에 SQL함수를 사용해야 인덱스를 사용하는데 문제가 없으며, 부득이 사용해야 한다면 함수기반 인덱스를 사용해야 합니다.


다음과 같은 예를 보겠습니다.



-- MYEMP1 테이블은 2000만건 정도 있는 테이블 입니다.
SELECT COUNT(*) FROM MYEMP1;
SELECT * FROM MYEMP1;

-- MYEMP1 테이블에 생성되어 있는 인덱스를 확인 합니다.
SELECT TABLE_NAME, INDEX_NAME 
FROM USER_INDEXES 
WHERE TABLE_NAME = 'MYEMP1';

-- ename 컬럼은 인덱스가 생성되어 있어서 빨리 조회됩니다.
SELECT * FROM MYEMP1
WHERE ENAME = '가길동281';

-- like인 경우도 인덱스 컬럼인 ename에 변현이 안되었으므로
-- 인덱스를 경유하여 빨리 조회 됩니다.
SELECT COUNT(*) FROM MYEMP1
WHERE ENAME LIKE '다길동%';

-- 인덱스 컬럼인 ename에 변형이 생겨 인덱스를 이용할수 없습니다.
-- 시간이 더 걸립니다.
SELECT COUNT(*) FROM MYEMP1
WHERE SUBSTR(ENAME, 0, 3) = '다길동';

-- 꼭 WHERE절의 컬럼에 대해 SQL함수를 사용해야 한다면 
-- 함수기반 인덱스를 만드세요.
DROP INDEX FIDX_MYEMP1_ENAME;
CREATE INDEX FIDX_MYEMP1_ENAME ON MYEMP1( SUBSTR(ENAME, 0, 3) );

-- 함수가반 인덱스를 생성 후 실행하니 빨리 조회 됩니다.
SELECT COUNT(*) FROM MYEMP1
WHERE SUBSTR(ENAME, 0, 3) = '다길동';




#SQL튜닝, #오라클튜닝, #함수기반인덱스, #오라클교육, #SQL교육, #오라클학원, #SQL학원, #SQL동영상, #오라클동영상,

SQL튜닝, 오라클튜닝, 함수기반인덱스,오라클교육, SQL교육, 오라클학원, SQL학원, SQL동영상, 오라클동영상


오라클 SQL 조인(Oracle SQL Join), 내부조인(Inner Join)과 외부조인(Outer Join), ANSI SQL 조인방식비교, SQL학원, 오라클학원, SQL동영상

 

오라클 SQL 조인(Oracle SQL Join), 내부조인(Inner Join)과 외부조인(Outer Join), ANSI SQL 조인방식비교, SQL학원, 오라클학원, SQL동영상


http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=702 


오라클 SQL 조인(Oracle SQL Join), 내부조인(Inner Join)과 외부조인(Outer Join), ANSI SQL 조인방식비교

오라클 SQL 조인(Oracle SQL Join), 내부조인(Inner Join)과 외부조인(Outer Join), ANSI SQL 조인방식비교오라클 조인내부조인(Inner Join) vs 외부조인(Outer Join)오라클 조인방식(+)과 ANSI SQL 조인방식의 비교실습 :

ojc.asia

https://youtu.be/LEEyBd4n_50

 

https://www.youtube.com/watch?v=XsnDCri9A-A&list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS&index=9 


오라클 조인



내부조인(Inner Join) vs 외부조인(Outer Join)

오라클 조인방식(+)과 ANSI SQL 조인방식의 비교



실습 : 오라클 19C



ANSI SQL은 모든 DB에 공용으로 사용할 수 있는 SQL 표준으로 테이블 조인관계는 FROM ~ ON ~ 에서 기술하고 WHERE절에서는 데이터를 필터링 하는 조건만 기술하므로 SQL구문의 가독성이 좋습니다. 


  1. 조인이란?


연관된 둘 이상의 테이블에 대해 행들을 컬럼값을 기준으로 비교하여 새로운 행 집합을 만드는 것으로 각 테이블 간 의미있는 행을 연결하는 개념입니다. 


  1. 조인의 4가지 유형


내부 조인, 완전 외부 조인, 왼쪽 외부 조인 및 오른쪽 외부 조인.


  1. 내부조인(Inner Join)


내부 조인은 두 테이블의 교집합을 추출합니다. 양쪽 테이블에서 정확히 조인조건을 만족하는 행들이 추출되는 일반적인 조인 방식 입니다.



실습


EMP, DEPT 테이블 전체를 조인하여 모든 사원의 사원번호, 사원명, 부서명을 출력하세요.

(부서명을 가져오기 위해 DEPT 테이블과 DEPTNO로 조인을 합니다. 사원테이블에서 부서번호가 없는 KING 사원은 출력되지 않습니다.)


사원 테이블과 부서테이블의 데이터를 확인 합니다.


SELECT empno, ename, deptno
FROM emp


<실행결과>



empno
ename
deptno
1
7369
SMITH
20
2
7499
ALLEN
30
3
7521
WARD
30
4
7566
JONES
20
5
7654
MARTIN
30
6
7698
BLAKE
30
7
7782
CLARK
10
8
7788
SCOTT
20
9
7839
KING


10
7844
TURNER
30
11
7876
ADAMS
20
12
7900
JAMES
30
13
7902
FORD
20
14
7934
MILLER
10


부서 테이블(DEPT)의 데이터 입니다.


SELECT *
FROM    dept


<실행결과>



deptno
dname
loc
1
10
ACCOUNTING
NEW YORK
2
20
RESEARCH
DALLAS
3
30
SALES
CHICAGO
4
40
OPERATIONS
BOSTON


a. ANSI SQL 조인형식


SELECT  E.EMPNO, E.ENAME, D.DNAME
FROM     EMP E INNER JOIN DEPT D
ON          E.DEPTNO = D.DEPTNO;


b. 일반적인 조인(모든 DB에서 사용가능)


SELECT E.EMPNO, E.ENAME, D.DNAME
FROM     EMP E , DEPT D
WHERE  E.DEPTNO = D.DEPTNO;



  1. 외부조인(Outer Join)


외부조인은 한 테이블에서 모든 값을 가져오지만 다른 테이블에서 해당 테이블과 일치하는 행만 가져오려는 경우에 이용합니다. 왼쪽 외부 조인에서는 왼쪽 테이블의 모든 행과 오른쪽 테이블의 공통 행이 반환됩니다. 반대로, 오른쪽 외부 조인의 경우 오른쪽 테이블의 모든 행과 왼쪽 테이블의 공통 행이 반환됩니다.


  1. 왼쪽 외부 조인(Left Outer Join)


EMP, DEPT 테이블 전체를 조인하여 모든 사원의 사원번호, 사원명, 부서명을 출력하세요.

(EMP 테이블에서 부서코드가 없는 KING도 출력 됩니다.)

– ANSI SQL 조인형식
SELECT E.EMPNO, E.ENAME, D.DNAME
FROM   EMP E LEFT OUTER JOIN DEPT D       
ON     E.DEPTNO = D.DEPTNO;


– 오라클 조인 형식
SELECT E.EMPNO, E.ENAME, D.DNAME
FROM   EMP E , DEPT D
WHERE  E.DEPTNO = D.DEPTNO(+);


그렇다면 2가지 방식의 차이는 무엇일까요?


ANSI SQL 조인 구문에서는 조인조건은 ON 다음에, 데이터를 필터링 하기 위한 조건은 WHERE절에 기술하여 가독성이 좋습니다. 하지만 오라클 조인구문은 WHERE절에 조인조건과 데이터를 필터링하는 조건들을 같이 기술하여 이들의 순서가 잘 안지켜지고 SQL문이 복잡한 경우에는 가독성이 떨어지고 잘못된 결과를 도출할 확률이 높습니다. WHERE절의 기본 용도는 데이터를 필터링 한다는 관점에서 본다면 ANSI 조인구문을 사용하는 것이 바람직 합니다. 또한 ANSI 조인 방식은 어떤 DataBase에도 통용되는 방식 입니다.


물론 위 실습과 같은 내부조인의 경우 두가지 방식 모두 어떤 데이터베이스에서 SQL문을 작성하던지 동일하게 사용가능 하지만 외부조인의 경우 ANSI SQL 조인구문만 공용으로 사용가능하며 오라클 조인 구문은(+) 오라클 DB에서만 사용 가능합니다.


b. 오른쪽 외부 조인(Right Outer Join)



부서이름별 사원수를 조회 합니다. 외부조인을사용하지 않은 경우와 외부 조인을 사용한 경우를 비교하여 실습 합니다.


-- 외부조인을 사용하지 않은 경우, EMP 테이블에 부서원들이 하나도 없는 OPERATIONS 
-- 부서는 출력되지 않습니다.
SELECT DNAME
      , COUNT(E.EMPNO)  AS EMP_CNT
FROM  EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
GROUP BY DNAME;


-- 외부조인을 이용(ANSI SQL 조인방식)
SELECT DNAME
      , COUNT(E.EMPNO)  AS EMP_CNT
FROM  EMP E RIGHT OUTER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
GROUP BY DNAME;


-- 외부조인을 이용(오라클 조인방식)
SELECT DNAME
      , COUNT(E.EMPNO)  AS EMP_CNT
FROM  EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO
GROUP BY DNAME;



c. 전체 외부 조인(Full Outer Join)


조인조건을 만족하지 않는 왼쪽 테이블의 모든 행과 오른쪽 테이블의 모든 행이 반환됩니다.


EMP, DEPT 테이블을 조인하여 사원이름과 부서명을 출력하는데 아래 조건을 만족하도록 작성을 해보겠습니다.


  1. 부서가 없는 KING도 출력 
  2. 부서원이 없는 40번부서도 출력


즉 조인 조건이 맞지 않더라도 부서도 다 출력해야 하고 사원도 다 출력해야 하는 쿼리를 만들어야 하는데요, 이 경우에는 전체 외부조인(FULL OUTER JOIN)을 사용해야 합니다.


[ANSI SQL 조인방식]

SELECT ename
             , dname 
FROM    emp FULL OUTER JOIN dept
ON         emp.deptno = dept.deptno


[오라클 조인방식은 지원하지 않습니다.]

SELECT ename
             , dname 
FROM    emp , dept
WHERE  emp.deptno(+) = dept.deptno(+)   


⇐ 오류!! ORA-01468: outer-join된 테이블은 1개만 지정할 수 있습니다


 

#SQL조인, #오라클조인, #조인이란, #JOIN이란, #내부조인, #외부조인, #INNERJOIN, #OUTERJOIN, #오라클교육, #SQL교육, #오라클학원, #SQL학원, #SQL동영상, #오라클동영상, SQL조인, 오라클조인, 조인이란, JOIN이란, 내부조인, 외부조인, INNERJOIN, OUTERJOIN, 오라클교육, SQL교육, 오라클학원, SQL학원, SQL동영상, 오라클동영상



2021년 12월 7일 화요일

그래들을 이용한자바 HelloWorld(Gradle,JAVA)[자바그래들강좌/자바교육/JAVA교육]

 

그래들을 이용한자바 HelloWorld(Gradle,JAVA)[자바그래들강좌/자바교육/JAVA교육]


http://ojc.asia/bbs/board.php?bo_table=LecJava&wr_id=725 


[자바그래들강좌]그래들을 이용한자바 HelloWorld(Gradle,JAVA)

[자바그래들강좌]그래들을 이용한자바 HelloWorld(Gradle,JAVA)1. 이클립스 그래들 플러그인 설치http://ojc.asia/bbs/board.php?bo_table=LecGradle&wr_id=82. 'gradlejava1' 이하는 Gradle 프로젝트 생성3. build.gradle 파일apply

ojc.asia


https://www.youtube.com/watch?v=ZlrsnSlTdQs&list=PLxU-iZCqT52BVt5HycCd6CULukiARAl6S&index=3 

https://www.youtube.com/watch?v=MOWjp9UUL54&list=PLxU-iZCqT52BVt5HycCd6CULukiARAl6S&index=4 


1. 이클립스 그래들 플러그인 설치


http://ojc.asia/bbs/board.php?bo_table=LecGradle&wr_id=8


[그래들강좌]이클립스 그래들 플러그인설치(Gradle Integration for Eclipse)

이클립스 그래들 플러그인설치(Gradle Integration for Eclipse)- Eclipse(mars, luna, kepler)에서 help -> eclipse marketplace 클릭 후 gradle로 검색아래와 같은 화면이 나오는데 'Gradle Integration for Eclipse'를 선택하자.Gra

ojc.asia


2. "gradlejava1" 이하는 Gradle 프로젝트 생성

 




 

3. build.gradle 파일


apply plugin: 'java'


task(runMain, dependsOn: 'classes', type: JavaExec) {

    main = 'ojc.HelloWorld'

    classpath = sourceSets.main.runtimeClasspath

    args 'OracleJavaCommunity' //main함수에 들어갈 매개변수

}




4. HelloWorld.java


package ojc;


public class HelloWorld {

   public static void main(String[] args) {

   System.out.println("Hello, " + args[0] + "!");

   }

}


5. 전체 구조는 다음과 같다.

 





6. 실행


프로젝트 --> 마우스 우측버튼 --> Gradle --> Tasks Guick Launcher 실행 후 태스크에 "runMain" 이라고 입력하자.


[결과]


[sts] -----------------------------------------------------

[sts] Starting Gradle build for the following tasks: 

[sts]      runMain

[sts] -----------------------------------------------------

:compileJava UP-TO-DATE

:processResources UP-TO-DATE

:classes UP-TO-DATE

:runMain

Hello, OracleJavaCommunity!


BUILD SUCCESSFUL


Total time: 0.606 secs

[sts] -----------------------------------------------------

[sts] Build finished succesfully!

[sts] Time taken: 0 min, 0 sec

[sts] -----------------------------------------------------



#자바gradle, #자바그래들, #자바, #JAVA, #JAVA스트림, #자바교육, #JAVA교육, #자바배열합, #자바람다식, #람다식, #자바동영상, 

자바gradle, 자바그래들, 자바, JAVA, JAVA스트림, JAVA교육, 자바배열합, 자바람다식, 람다식, 자바동영상



[자바8강좌,int스트림, 자바동영상, JAVA학원교육]JAVA8, IntStream, of, range, rangeClosed, filter,자바8스트림

 




[자바8강좌,int스트림]JAVA8, IntStream, of, range, rangeClosed, filter,자바8스트림

자바8에 추가된 IntStream은 원시데이터형 int를 스트림으로 다룰수 있도록 해주는데java.util.stream 패키지에는 스트림관련 API들이 있습니다.




첨부문서의 설명, 예제 참고하세요~


#자바8스트림, #자바스트림, #자바, #JAVA, #JAVA스트림, #자바교육, #JAVA교육, #자바배열합, #자바람다식, #람다식, #자바동영상,


자바8스트림, 자바스트림, 자바, JAVA, JAVA스트림, JAVA교육, 자바배열합, 자바람다식, 람다식, 자바동영상



[자바배열합/JAVA동영상] IntStream, Arrays, forEach, JAVA 람다식 이용, 자바교육, 자바교육동영상교육

 


[자바배열합구하기] IntStream, Arrays, forEach,람다식 이용package ojc;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.IntStream;/*** 배열의 합 : IntStram, Arrays, forEac…

ojc.asia




package ojc;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.stream.IntStream;


/**

* 배열의 합 : IntStram, Arrays, forEach 이용

* @author OJC

*

*/

public class OjcSample {

static int sum;

public static void main(String[] args) {

int[] myArr = {1,2,3,4,5,6,7,8,9,10};

int sum1 = IntStream.of(myArr).sum();

System.out.println("The sum is " + sum1);

int sum2 = Arrays.stream(myArr).sum();

System.out.println("The sum is " + sum2);


List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

list.stream().forEach((i) -> {

sum += i;

});

System.out.println("The sum is " + sum);

}

}


[결과]

The sum is 55

The sum is 55

The sum is 55


#자바배열, #자바, #JAVA, #배열이란, #자바교육, #JAVA교육, #자바배열합, #자바람다식, #람다식, #자바동영상, 자바배열, 자바, JAVA, 배열이란, 자바교육, JAVA교육, 자바배열합, 자바람다식, 람다식, 자바동영상


(자바교육)JAVA설치, 자바설치,JAVA8,JDK8,자바8,JRE8 다운로드및설치,java_home환경변수설정, 자바동영상

 

(자바교육)JAVA설치, 자바설치,JAVA8,JDK8,자바8,JRE8 다운로드및설치,java_home환경변수설정, 자바동영상


http://ojc.asia/bbs/board.php?bo_table=LecJava&wr_id=715

이미지 썸네일 삭제
[자바설치,JAVA8,JDK8,자바8,JRE8 다운로드및설치,java_home환경변수설정]

[자바설치,JAVA8,JDK8,자바8,JRE8 다운로드및설치,java_home환경변수설정]자바8설치 및 환경설정 문서입니다.실무프로그래머 전문교육 (오라클,SQL,자바,스프링프레임워크,닷넷,안드로이드,웹퍼블리싱)오라클자바커뮤니티교육센터(100%환급, 개인부담 0~20%)http://ojcedu.com

ojc.asia


자바8설치.pdf

0.43MB

첨부파일 참조하세요~


#자바설치, #자바, #자바이클립스, #JDK설치, #JAVA설치, #자바교육, 자바설치, 자바, 자바이클립스, JDK설치, JAVA설치, 자바교육,



(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...