분류 전체보기 124

[Oracle] Stored Sub Program: SP

Stored Sub Program(저장 서브프로그램) 필요시 PL/SQL 호출해서 사용하고자 데이터베이스에 PL/SQL 구문을 저장해놓은 프로그램입니다. 이 프로그램은 Oracle에 저장해서 사용자간 공유하여 사용 가능하며, 메모리, 성능, 재사용성 측면에서 장점이 있습니다. 그 종류로는 SF(Stored Function), SP(Stored Prcedure), Trigger 등이 있습니다. Stored Procedure SP(저장 프로시저)는 오직 특정한 기능과 작업을 처리하고자 사용하는 서브 프로그램입니다. 쿼리문에서 호출이 안되고 오직 단독으로만 실행할 수 있습니다. 파라미터 여부에 따라 두가지로 나누어집니다. 1. 파라미터가 없는 프로시저 --프로시저의 선언 CREATE OR REPLACE PRO..

[Java] JDBC 이야기

JDBC JDBC(Java Database Connectivity) JAVA 프로그래밍 언어를 통해, DB에 데이터를 저장, 수정, 삭제, 조회 등 쿼리를 실행할 수 있도록 하는 API(Application Interface) 입니다. 다양한 DB 제공 벤더사에서 DB에 접속하도록 자체 드라이버를 제작해서 제공합니다. 참고로, JDBC 드라이버는 TYPE1 ~ 4까지 버전이 있습니다. 그 중 순수 자바(자바 네이티브)로 구성된 TYPE4를 사용합니다. 이 TYPE4 드라이버는 자바로 작성해서 타 네이티브 라이브러리, 추가 미들웨어 없이 DB에 접속할 수 있습니다. 적은 용량과 높은 성능을 가집니다. ORACLE : Oracle JDBC Thin Driver(ojdbc) MySQL : Connector/J..

[Linux] 권한 이야기

권한(Permission) 이 권한과 관련해서, 중요한 개념이 세가지있습니다. 먼저, 소유자(사용자 User), 소유자의 그룹(Group), 다른 사용자(Others)를 대상으로 합니다. 다음은, 파일을 두고 어떤 작업을 하는가에 따라서 크게 세가지로 분류합니다. 읽고 (Read) 쓰고(Write), 실행합니다.(eXecute) 이 모든 것을 종합하면, UGO는 각자의 폴더나 파일에 대해 RWX의 권한을 가진다. 이렇게 요약할 수 있습니다. 이렇게 된 것은 유닉스의 철학(Simple) 때문입니다. Simple, 간단한 명령어로 나눈다. 리눅스에서 사용가능한 명령어는 다양합니다. 수정, 이동, 복사, 숨김 등이 있는데요, 이 모든 명령어는 가장 간단한 명령어로 통합해서 사용할 수 있습니다. 이 모든게 합쳐..

[Linux] 리눅스 기초

클라우드와 리눅스 Cloud 클라우드는 가상화된 환경이다. 그 종류는 aaS를 기준으로 주로 나눕니다. aaS는 as a Service (서비스를 위한)이라는 뜻 입니다. 종류에 따라 XaaS, IaaS, PaaS, SaaS로 나눌 수 있으며, 최근에는 AIaaS라는 말도 등장합니다. 각각에 대해 간단히 살펴보겠습니다. XaaS IaaS : Infra as a Service PaaS : Platform as a Service SaaS : Service(Software) as a Service AIaaS : AI as a Service Infra 인프라(IaaS) Infrastructure, 기반시설 서버, 네트워크, 등 → “하드웨어(H/W)” 키보드, 모니터 등.. IaaS: 하드웨어, 운영체제 등 P..

[Oracle] PL/SQL(2)

RECORD 레코드(RECORD)는 자바의 클래스와 동일합니다. 다양한 데이터 타입을 갖는 여러 변수를 갖는 자료형입니다. 데이터 타입은 VARCHAR2, NUMBER, DATE 등 다양하게 있습니다. 기본 데이터 타입과 테이블명.컬럼명%TYPE, 테이블명.ROW%TYPE 등 선언 가능합니다. "%TYPE"이라는 키워드를 기억합시다. 레코드의 선언방법 TYPE 레코드명 IS RECORD( 변수이름1 데이터타입[NOT NULL, DEFAULT]:=값 OR 수식; 변수이름2 테이블명.컬럼명%TYPE; .... ) 레코드가 다양한 데이터타입의 변수를 갖는 집합으로 볼 수 있고, Java의 class에서 메소드만 빠진 형태입니다. 순서가 있고 이를 파악하면 좋습니다. 레코드 선언 TYPE 레코드명 IS RECO..

[Oracle] PL/SQL (1)

PL/SQL PL/SQL(Procedural language extension to SQL) SQL 문장 안에서 변수를 만들고 조건처리, 반복처리(LOOP, WHILE, FOR)를 할 수 있는 오라클 자체 내장된 절차적인 언어입니다. PROCEDURE, FUNCTION, TRIGGER 등이 PL/SQL로 포함됩니다. PL/SQL의 장점 BLOCK 구조로 다수의 SQL문이 한번에 DB로 보낼 수 있으니, 처리속도가 향상됩니다. BLOCK 구조로 되어서 모듈화가 편합니다. 큰 BLOCK에 작은 BLOCK을 여러개 생성해서 다양하게 처리합니다. 단순하거나 복잡한 변수를 선언해서 사용할 수 있기 때문에 데이터를 계속 조회해야 하는 일이 적습니다. 예외처리가 가능하기 때문에 에러가 발생해도 다른 루틴을 생성해서 ..

[Java] 서울에서 김서방 찾기

김서방은 x에 있다를 찾습니다. 이 문제는 다시 해석해보면, seul이라는 String 배열에서 "Kim"이라는 성분의 위치(인덱스)값을 찾으면 되는 간단한 문제입니다. class Solution { public String solution(String[] seoul) { String answer = ""; for(int i = 0 ; i < seoul.length ; i++){ if(seoul[i].equals("Kim")){ answer = "김서방은 " + i + "에 있다"; } } return answer; } } 그래서 저는 for문을 활용해서 seoul 배열의 성분의 수만큼 반복해서 성분 중에 "Kim"이 있는 경우의 인덱스 값을 answer에 넣어 반환시켰습니다. 문자열을 반환해야 하므로,..

[Oracle] 다중행 함수

다중행 함수 다중행 함수는 그룹화와 관련된 함수입니다. ROLLUP, CUBE, GROUPING SETS, PIVOT, UNPIVOT 등이 있습니다. 예를 들고자, EMP라는 테이블을 사용할 것입니다. 1. ROLLUP 이 함수는 GROUP BY절에 넣어서 사용할 수 있습니다. ROLLUP(그룹화 컬럼1, 그룹화 컬럼2 ...) 결과는 다음과 같습니다. 각각 마지막 컬럼 결과가 하나씩 제거된 그룹화 결과가 출력됩니다. 컬럼1별 컬럼2별 컬럼3별 ... 컬럼n별 결과 ... 컬럼1별 컬럼2별 컬럼3별 결과 컬럼1별 컬럼2별 결과 컬럼1별 결과 전체 데이터의 결과 예를 들어, EMP 테이블에서 ROLLUP 없이 부서번호, 업무별 통계를 내볼 수 있습니다. SELECT DNO , JOB , MAX(SAL) ,..

[Oracle] 다양한 팁들

WHERE과 ON의 상호 사용 --WHERE절로 빼도 되고, AND절로 바로 조건을 더 넣어도 된다!! Q1. 송강 교수가 강의하는 과목을 검색한다 ON절에 AND로 조건 추가 SELECT C.* , P.PNAME FROM COURSE C JOIN PROFESSOR P ON C.PNO = P.PNO AND P.PNAME = '송강'; ON절 뒤에 WHERE절로 조건 추가 SELECT C.* , P.PNAME FROM COURSE C JOIN PROFESSOR P ON C.PNO = P.PNO WHERE P.PNAME = '송강'; Q2. 화학과 1학년 학생이 수강하는 과목 검색 --DISTINCT로 하나씩만 출력하게 한다. --STUDENT에서는 가져오는 내용이 없어야 DISTINCT가 가능하다!!! S..

[Java] 스트림 (Stream)

1. 스트림이란? 컬렉션이나 배열의 요소를 반복해서 처리하는 하나의 방식입니다. 컬렉션에 .stream() 메소드가 있어서 컬렉션을 스트림형식으로 변경해서 사용 가능합니다. 2. 스트림 선언 컬렉션 list => Stream typeStream = list.stream(); 3. 스트림의 forEach 람다식을 활용합니다. 컬렉션 요소 하나씩 담는 변수명을 아무거나 지정합니다. 내부에는 처리할 내용이 한 줄이면, 중괄호{} 없이 작성하고, 두 줄 이상이면 중괄호{} 내에 작성합니다. typeStream.forEach(컬렉션 요소 하나 담은 변수명 -> {처리할 내용}); 내부반복자로, Iterator보다 빠른 처리속도를 가지며, 람다식으로 다양한 작업이 가능합니다. 파이프 라인 혹은 체이닝 기법으로 중간..