# oracle sql
0711
JDBC 위한 Basic Method 만들기 JDBC를 위해 매번 새로 해야 하는 작업을 메서드로 만들어 후에는 생성만으로 실행 import 받은 클래스 url은 현재 localhost로 지정 driver 실행을 위한 명령(Oracle에서는 driver 생략 가능) driver는 configure build path를 통해 외부 jar를 설치해야 함) Connection은 Oracle과 Java를 연결하는 작업 미리 Connection을 실행하는 메서드 작성(여기서 Connection에 대한 try~catch 이미 실행) Connection, Statement, ResulSet을 매개변수로 받음 select를 위해 ResultSet(rs)이 있는 메서드, 없는 메서드 미완성 SQL문을 받기 위한 PreparedStatement가 있는 메서드, 없는 메서드 CRUD를 위한 Method import 받은 클
[Spring]
어노테이션은 클래스 선언 바로 앞/필드 선언 바로 앞에 붙여준다. @ToString toString() 메소드를 자동으로 생성해준다. exclude : 특정 필드를 toString() 결과에서 제외시킨다. @Builder 📖 참고 생성자에서 인자가 많고, 필수로 값을 받아야 할 필드와 선택적으로 받아도 되는 필드가 섞여있을 때 사용한다. 코드량이 줄어들고, 객체의 일관성을 유지할 수 있다. 객체의 일관성이 깨진다는 것은, 한번 객체를 생성할때 그 객체가 변할 여지가 있다는 것 다음과 같이 객체 생성 가능! @RequiredArgsConstructor final인 필드만 가지고 생성자를 자동으로 만들어줌 @AllArgsConstructor 모든 필드를 가지고 생성자를 자동으로 만들어줌 final : 반드시 최초에 초기화 해야 함, 그 이후 수정 불가

PL/SQL_Anonymous Block
1. Anonymous Block - 가장 기본적인 PL/SQL구조 제공 - 선언영역과 실행영역으로 구분 - 저장되지 않음 >>#### (사용형식) DECLARE 선언부(변수, 상수, 커서(=뷰) 선언); BEGIN 실행부(비즈니스 로직 처리를 위한 SQL문); [EXCEPTION 예외처리부;] END; >#### (사용예)충남에 거주하는 회원들이 2020년 5월 구매실적을 조회하시오. > #### 선언부에서 변수 선언 > #### 커서 생성 >#### 반복문 >### 1)변수와 상수 >#### - BEGIN ~ END 블록에서 사용할 변수 및 상수 선언 >#### (선언형식) ` >#### 변수의 종류 ` >#### 데이터타입 ` >#### 참조형 `
SEQUENCE
Sequence 순차적으로 증가하는 번호를 반환하는 데이터베이스 객체 Sequence 생성 문법 Sequence 사용법 Sequence 수정, 삭제

[ORACLE SQL] GROUP BY 최대/최소값을 가진 ROW에 있는 다른 COLUMN 값 구하기
참고 링크: Group By 최대값을 가진 Row를 추출하는 쿼리 [oracle]오라클 최대값의 다른 컬럼 구하기 시작점: GROUP BY절을 사용하여 각 학과별 급여합계와 최고급여, 최저급여를 출력한 상태. 목표: 학과별로 최고급여와 최저급여를 수령하는 교수의 이름을 각각 출력하기. department table professor table .png) 시작시 SQL 쿼리문: ![]

[Oracle SQL] INSERT문
INSERT 문 생성된 테이블에 새로운 자료를 삽입 (사용형식) VALUES(값1, 값2,...); . '(컬럼명1, 컬럼명2,...)' :생략하면 테이블 생성시 기술한 순서와 모든 컬럼에 배정될 값(데이터)을 VALUES절에 기술해야한다. . '(컬럼명1, 컬럼명2,...)' :필요한 컬럼에만 값을 배정하기 위해 사용되며 컬럼 제약사항이 NOT NULL 인 컬럼은 생략할 수 없음. 사용예) 사원 테이블(EMPLOYEE)에 다음 자료를 입력하시오 사용예) 다음 자료를 사업장테이블(CONST_SITE)에 다음 자료를 입력하시오 
[Oracle SQL] CREATE문
명령 구분 DDL (DATA DEFINITION LANGUAGE) : CREATE, ALTER, DROP DCL (DATA CONTROL LANGUAGE) : COMMIT, ROLLBACK, SAVEPOINT, REVOKE DML(DATA MANIPULATION LANGUAGE) : INSERT, UPDATE, DELETE, MERGE > # CREATE 오라클 객체를 생성할 때 사용 테이블 생성시 CREATE TABLE 명령사용 (사용형식) > # 데이터타입 숫자: NUMBER, 문자열: 4기가까지 처리가능 CHAR(고정) VARCHAR(가변), 날짜 -> 크기 표기 필요없음, 2진수-멀티미디어자료들(사진, 동영상, 음원) NULL 값이 들어간 자료를 사칙연산해도 결과는 항상 NULL 이므로 조심 오라클에서는 입력안하면 무조건 NULL **NOT NULL 과 DEFAULT 는 동시에 존재

[Oracle SQL] 사용자 생성
사용자 생성 계정: 오라클에서 접속권한을 가진 사용자 계정은 계정명, 암호, 권한 속성을 가지고 있어야함. ** (사용형식)** > - 권한: 계정이 수행할수 있는 행위정의 권한의 종류로는 CONNECT, RESOURCE, DBA 가 있고 GRANT 명령어를 사용하여 부여한다. (사용형식) > - HR 계정 활성화 활성화를 위해서 잠겨있는 계정을 해제시키고 암호를 변경해야한다.
[Oracle SQL] - 01
Ctrl + Enter : 질의 결과 출력 --, /* */ : Oracle SQL 주석 조건 검색 WHERE 절 Oracle SQL 역시 4~5일 동안 빠르게 지나갔기에 혼자 실습을 많이 해봐야겠다. Ctrl + Enter로 질의 결과를 출력하는게 꽤나 손 맛(?)이... 괜히 Enter를 힘차게 누르게된다.. 살살 누르자 🤦♀️
[Oracle SQL] - 세팅
Run SQL Command Line 실행 conn system/1234 (system(계정), system(비밀번호)에 연결) @C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql show user -> user is scott; conn system/1234 alter user scott identified by tiger; (접속 유저 변경) commit; (commit;이란 명령어를 통해 반드시 저장) conn scott/tiger select * from tab; exit Run SQL Command Line 명령어, 접속방법 등 좀 더 구글링 해봐야겠다.
[Oracle SQL] - 기초
명령어 구성 1.DQL (Data Query Language) : 데이터 질의어 데이터베이스에서 데이터를 검색하여 사용자가 원하는 데이터를 확인 및 사용할 수 있다. 2.DML (Data Manipulation Language) : 데이터 조작어 데이터베이스의 테이블에 새로운 행의 삽입, 수정, 삭제 할 수 있다. 3.DDL (Data Definition Language) : 데이터 정의어 CREATE, ALTER, DROP, TRUNCATE 등등 데이터베이스에 테이블의 생성, 변경, 삭제 등을 하는 명령어이다. 테이블, 뷰, 유저, 시퀀스, 동의어 등도 해당. 4.DCL (Data Control Language) : 데이터베이스 컨트롤러 GRANT(부여), REVOKE(제거) 데이터베이스에 접속하는 사용자에게 데이터베이스와 그 안에 구조에 대한 엑세스 권한을 부여 또는 제거할 수 있다. 5.TCL (Transacti
ORA-27102: out of memory
현상 웹 애플리케이션이 응답하지 않아 톰캣과 데이터베이스를 확인해 봤다. 톰캣은 실행 중 이었지만 sqlplus로 데이터베이스를 시작해 보았지만 > ORA-27102: out of memory Linux-x8664 Error: 12: Canout of memorynot allocate memory 라는 오류가 뜨면서 실행되지 않았다. 톰캣이 실행 중이 아닐때는 실행되었기에 메모리 부족 문제인것 같았다. (총 메모리 3G) 오라클 11g에서는 PGA(사용자 메모리), SGA(공유 메모리)를 자동으로 관리한다고 해서 SQL 명령어로 memory_target를 512M로(원래 1G) 설정할 계획이었으나 오타로 5120M(5G)로 설정하고 말았다. 그 이후 > ORA-47500: XE edition memory parameter invalid or not specified 라면서 startup도 되지 않았다. 찾아보니 오라클 XE버전은 1G이상의 메모리를 설정할 수 없다고
[TIL][SQL] SELECT-08
집합 연산자 집합 연산자(SET OPERATOR)는 여러 건의 데이터들(집합)을 연산하는것이다. 주요 집합 연산자 4가지 | 연산자 종류 | 내용 | | :---------: | ------------------------------------------------------------ | | UNION | 두 집합의 결과를 합쳐서 출력, 중복 값 제거하고 정렬함 | | UNION ALL | 두 집합의 결과를 합쳐서 출력, 중복 값 제거 안하고 정렬 안 함 | | INTERSECT | 두 집합의 교집합 결과를 출력 및 정렬함 | | MINUS | 두 집합의 차집합 결과를 출력 및 정렬함. 쿼리의 순서가 중요함 | 위의 4가지 집합 연산자를 사용할 경우에 주의사항 세 가지 두 집
[TABLE][SQL] 실습에 필요한 TABLE을 만들어보자
보는 이가 혼란스러울 수 있는 부분(좌측 삼각형을 클릭하면 나옵니다.)지금 올리는 쿼리문은 professor 테이블과 student 테이블의 내용이 영어인데 지금까지 올라온 그리고 앞으로 올라올 몇몇 포스팅은 내용이 한글로 되어있을것이다. 쿼리를 구글링해서 찾았는데 이전버전은 한글이라 웹에서 깨지고 불안정하기 때문에 영문버전 쿼리로 바꾸었다.
[TIL][SQL] SELECT-07
ORDER BY 절 날짜를 기준으로 정렬할 때 오른차순과 내림차순을 기억해야 한다. ORDER BY절의 위치는 SQL 문장에서 가장 마지막에 적어야 한다. 앞에 뭐가 오든 마지막에 위치해야함! 지금까지 나온 keyword들의 순서 SELECT FROM WHERE ORDER BY 순으로만 적어야 한다. 오름차순 : ASC 내림차순 : DESC > 기본값이 오름차순 ORDER BY는 최대한 사용하지 말것! 성능이 완전 안좋아짐!
[TIL][SQL] SELECT-06
다양한 연산자(operator) | 연산자 종류 | 설명 | | :------------------: | --------------------------------------------------- | | = | 비교 대상에서 같은 조건을 검색 | | !=, | 비교 대상에서 같지 않은 조건을 검색 | | > | 비교 대상에서 큰 조건을 검색 | | >= | 비교 대상에서 크거나 같은 조건을 검색 | | < | 비교 대상에서 작은 조건을 검색

[TIL][SQL] SELECT-05
매우 유용한 WHERE. 비유를 하자면 롤 상점에서 롤 상점 스크린샷 얼어붙은 심장아이템을 사고싶다면 좌측 카테고리 탭에서 방어력과 마나 옵션을 선택한 후에 크게 분류가 되면 얼어붙은 심장이 화면에 바로 출력되는것 처럼 이와 비슷한 일을 WHERE가 해준다. > 문법 > > SELECT [ Column or Expression ] > > FROM [ Table or View] > > WHERE 원하는 조건 ; 위 문법에서 보듯 WHERE절은 반드시 FROM절 아래에 와야만 한다. 지금까지 나온 keyword들의 순서1. SELECT FROM WHERE 순
[TIL][SQL] SELECT-04
2개 혹은 그 이상의 Column들을 1개의 Column으로 출력하고 싶다면? ||(Concatenation)을 사용하면 된다. >예시를 통해 설명한다. > 한 column으로 보이지 않을 수 있다. 그래서 alias(별칭을 사용해보았다.) 별칭이 기억나지 않는다면? → alias(별칭) 링크 > > 이 방법을 백업/복구 관련 작업이나 관리 및 튜닝 작업할 때 자주 사용한다고 한다.
[TIL][SQL] SELECT-03
DISTINCT DISTINCT : 중복을 제거해줌(단, 결과를 정렬하지는 않음). 사용 예시) > > 이런 emp table의 deptno column을 정렬하지 않고 중복을 제거하고자 한다. 😈👿💀☠ DISTINCT는 하나의 Column에만 적용되지 않고 모든 Column에 적용된다!! 성능에 매우 치명적이니 잘 생각해서 사용해야한다. 심지어 DISTINCT는 SELECT키워드 바로 뒤에서만 작동하기 때문에 적용될 Column을 선택할 수 없다. 예시)
[TIL][SQL] SELECT-02
SELECT SELECT에 표현식을 사용해보자 표현식 : Column의 이름 이외에 출력하기를 원하는 내용 즉, Column의 이름중 없는 걸 표현하고싶을때 쓰는것 > 사용법 sql SQL> SELECT ename, 'good morning!' "Good Evening" 2 FROM emp; ENAME Good Evening SMITH good morning! ALLEN good morning! WARD good morning! JONES good morning! MARTIN good morning! BLAKE good morning! CLARK good morning! SCOTT good morning! KING good morning! TURNER good morn