SQL Developer : 오라클에서 지원하는 DBMS SQL 프로그램
용어 정리
DQL : 데이터 추출 및 조회 문법
DML : 데이터(추가 수정 삭제) 조작 문법 (INSERT, UPDATE, DELETE)
DDL : 데이터를 정의하는 문법(CREATE, DROP, ALTET)
TCL : 트랙잰션을 제어하는 문법(COMMIT, ROLLBACK)
DCL : 권한부여 문법 (GRANT, REVOKE)
DQL 기본문법
SELECT : 데이터를 조회/검색 할 때 사용하는 명령어
AS 별칭, 별칭, "별 칭"
DISTINCT : 조회하는 칼럼 중복 값을 제거 할때 사용
FROM : 검색하려고 하는 컬럼의 테이블 이름
WHERE : 조건에 만족하는 데이터를 조회 할때 사용
AND -> OR : 논리연산자 실행순위는 AND가 우선순위
NOT : 사용하는 명령어의 반대되는 조회값을 구하려고 할떄 사용
BETWEEN a AND b : a< RESULT < b 와 같은 조건 제시에 사용
LIKE : 특정패턴을 이용하여 컬럼값을 조회 할 때 사용 %, _
ESCAPE'@': 특정패턴을 사용시 사용하고자하는 특수문자가 있을때 사용
IS NULL : 해당 속성값이 NULL값 인지 비교해주는 연산자.
IN(값1, 값2, 값3) : 값이 여러개 제시해야 할때 사용하는 연산자
| | : 연결연산자 값과 값을 연결해주는 연결자 자바의 ' + ' 같은 역할
ORDER BY 절: 항상 SELECT문의 마지막에 작성 정렬을 목적으로 한다
ASC : 오름차순 ex)1~100-NULL
DESC : 내림차순 ex)NULL-100~1
FUNCTION
FUNCTION : 단일행 함수와 그룹함수가 있다 단일과 그룹함수가 동시에 사용 불가능
LENGTH : 매개변수로 전달 된 문자열의 글자 수 반환
LENGTHB : 매개변수로 전달 된 문자열의 바이트 수를 반환
FROM DUAL; : 가상테이블 산술연산, 현재날씨등 간단한 칼럼조회시 사용
INSTR(문자열, 특정문자, [위치시작값, 순번]) : 문자열의 특정 문자의 위치값 반환
SUBSTR(문자열, 시작위치, 추출문자개수) : 문자열로 부터 득정 문자열을 추출 하는 함수
LPAD / RPAD (문자열, 반환문자길이, [덧붙일문자]) : 좌/우측에 문자를 붙여 지정한길이만큼은 문자열 반환
LTRIM / RTRIM (문자열, [제거할문자]) : 문자열 좌/우측의 지정제거문자를 제거후 문자열반환(' '공백제거유용)
TRIM(제거할문자 FROM 문자열) : 양옆을 제거
BOTH : 양옆(기본값)
LEADING : 왼쪽제거
TRAILING : 오른쪽제거
LOWER : 문자열을 소문자로
UPPER : 문자열을 대문자로
INITCAP : 공백을 기준으로 단어의 첫글자만 대문자
CONCAT(문자열1, 문자열2) : 매개변수로 전달받은 2개의 문자열을 이어서 하나로 || 비슷?
REPLACE(문자열, 찾는문자, 교체문자) : 찾는문자(열) 교체문자열로 교체후 반환
ABS(숫자) : 절대값(양수)를 반환하는 함수
MOD(수, 나눈값) : 나버지를 반환하는 함수 자바의 '%'
ROUND(값, [반올림위치]) : 반올림 처리 함수(소수점 기준)
CEIL : 올림 처리(소수점 기준)
FLOOR : 버림 처리(소수점 기준)
TRUNC(값, 위치) : 위치지정 가능한 버림처리함수(소수점 기준)
SYSDATE : 현재 날짜의 년 월 일 시 요일등을 반환.
MONTHS_BETWEEN(날짜1, 날짜2) : 두 날짜사이의 개월수 반환 날짜2가 미래이면 음수반환
ADD_MONTHS(DATE, MONTH) : 지정날짜의 +개월수
NEXT_DAY(날짜, 요일(문자, 숫자)) : 날짜에서 가장 가까운 요일 찾아 날짜를 반환
LAST_DAY(DATE) : 지정 값이 해당한 달(월)의 마지막 일을 반환
EXTRACT(YEAR/MONTH/DAY FROM 날짜) : 날짜데이터에서 년,월,일을 추출
TO_CHAR(NUBER/DARE, 포멧) : 숫자형 날짜형 데이터를 문자형 타입으로 변경
YY : 앞자리에 무조건 20년이 붙는 패턴
RR : 50년을 기준으로 작으면 20이 붙고, 같거나 크면 19가 앞에 붙는다
TO_DATE(NUMBER / 문자열, 포멧) : 숫자형 또는 문자형 데이터를 날짜형으로 변환
TO_NUMBER(문자열, 포멧) : 문자형 데이터를 숫자형으로 변환
NVL(컬럼명, NULL인경우 교체값) : 컬럼에 NULL값이 있는경우 교체
NVL2(컬럼명, 교체1, 교체2) : NULL이 아닐경우 1번 NULL일 경우 2번
NULLIF(비교1번값, 비교2번값) : 1번 2번 값이 동일할 경우 NULL반환 아닐경우 1번
DECODE(비교대상칼럼, 조건1, 결과1, 조건2, 결과2, ....조건N, 결과N) : 단순 동등비교를 하는 함수
CASE [칼럼값] WHEN 조건식1 THEN 결과값 : 동등비교와 조건제시 가능
WHEN 조건식2 THEN 결과값
ELSE 기본값
그룹형함수들
SUM (숫자타입 컬럼) : 합계
AVG (NUMBER TYPE) : 평균
MIN(ANY) / MAX(ANY) : 최소값 / 최대값
COUNT( 전체 * / 컬럼 / DISTINCT 컬럼) : 행의 개수를 세어 반환
: 분석, 순위부여 함수 SELECT절에서만 사용가능
RANK() OVER([그룹화 기준] 정렬기준) : 공동 1위가 3명이라 하면 그 다음 순위는 4위
DENSE_RANK() OVER([그룹화 기준] 정렬기준) : 공동 1위가 3명일 때 그 다음 순위는 2위
ROW_NUMBER() OVER([그룹화 기준] 정렬기준) : 각 결과 값에 항상 고유한 번호를 부여하는 함수
LAG / LEAD (칼럼, 행번호, 행번호가없을경우 기본값)
OVER([그룹화 기준] ORDER BY 정렬기준)
GROUP BY 절 : 그룹으로 만들어주는 절 그룹함수와 같이 사용하기위해
HAVING : 그룹에 대한 조건 제시를 할 때 사용 구문
UNION : 두 쿼리문을 수행한 결과값을 하나로 합한후 중복부분 제거(합집합)
UNION ALL : 두 쿼리문을 수행한 결과값을 하나로 더한 집합 중복제거를 하지 않는다
INTERSECT : 두 쿼리문의 수행 결과값에서 중복된 결과 집합을 반환 (교집합)
MINUS : 선행 쿼리문의 결과값에서 후행 쿼리문 결과값을 뺀 나머리 (차집합)
<그룹별 집계함수>
ROLLUP (칼럼1, 칼럼2) : GROUP BY로 묶은 소그룹 간의 합계,
전체 합계,
칼럼1번 기준의 합계를 산출하는 매서드
GROUP BY ROLLUP (칼럼1, 칼럼2) = GROUP BY 칼럼1, 칼럼2
UNION ALL
GROUP BY 칼럼1
UNION ALL
모든 집합 그룹 결과를 반환
CUBE (칼럼1, 칼럼2) : GROUP BY로 묶은 소그룹간의 합계
,전체합계
, 칼럼1번 기준의 합계
, 칼럼2번 기준의 합계를 반환하는 매서드
(산출가능한 모든 결과값을 계산하여 반환하는 함수)
GROUP BY GROUPING SETS(칼럼1. 칼럼2) = GROUP BY 칼럼1
UNION ALL
GROUP BY 칼럼2
JOIN
JOIN : 두 개 이상의 테이블에서 데이터를 조회 할때 사용
INNER JOIN : 비교 칼럼의 값이 서로 일치하는 행만 조인
오라클구문과 ANSI 구문으로 구분된다.
OUTER JOIN : 일치하지 않는 행 즉 모든행을 조회 (LEFT/RIGHT 필요)
카테이산 곱(CARTESIAN PRODUCT) / 교차 조인(CROSS JOIN) : 조인 테이블간의 행들이 곱만큼의 행이 조회
비등가 조인(NON EQUI JOIN) : 다른 비교 연사자를 써서 JOIN함(>, < >=, <=, BETWEEN 등)
자체조인 (SELF JOIN) : 같은 테이블 JOIN시 사용.
SUBQUERY : 하나의 주된 SQL(SELECT, CREATE, INSERT, UPDATE ...) 안에 포함된 또 하나의 SELECT문
SELECT -> 스칼라 쿼리 -> 하나의 값(스칼라)을 반환해주는 서브쿼리라는 의미.
ROM -> 인라인 뷰 -> 서브쿼리 조회결과를 테이블처럼 사용할때 사용.
WHERE, HAVING -> 스칼라 쿼리, 프래디케이트 쿼리 -> 조건검사에 사용되는 서브쿼리.
단일행 (단일열) 서브쿼리 (SINGE ROW SUBQUERY)
다중행 (단일열) 서브쿼리 (MULTI ROW SUBQUERY)
(단일행) 다중열 서브쿼리
다중행 다중열 서브쿼리
INSERT : 테이블에 새오운 행을 추가하는 구문
UPDATE : 테이블에 기록된 기존의 데이터를 "수정"하는 구문
DELETE : 테이블에 기록된 데이터를 "행" 단위로 삭제 구문
DDL (DATA DEFINITION LANGUAGE)데이터 정의 언어
CREATE TABLE : 객체 생성 문법
CHAR( BYTE/CHAR ) = 최대 2000BYTE까지 저장 가능 고정길이
VARCHAR2 ( BYTE/CHAR ) = 최대 4000byte 까지 저장 가변길이
NUMBER(P , S) : 소숫점 자릿수 지정(S)
DATE : 세기/년/월/일/시/분/초 단위로 데이터를 보관한다.
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';
CONSTRAINTS : 원하는 데이터 값을 유지하기 위한 특정 "칼럼"마다 설정하는 제약
UNIQUE : 컬럼에 중복값을 제한하는 조건(제약조건)
CHECK : 컬럼에 기록될 수 있는 값에 대한 조건을 설정할 수 있는 제약조건.
DEFAULT : 제약조건은 아니다 특정 칼럼에 들어 올 값에 대한 기본값 설정 가능.
PRIMARY KEY : 유일하게 식별'할 수 있는 칼럼에 부여하는 제약 조건
FOREIGN KEY ( 외래키) :
ALTER TABLE : 객체의 구조를 수정하는 구문.
DROP TABLE : 객체를 삭제하는 구문
객체접근권한 (GRANT), 회수(REVOKE)
TCL (TRANSACTION CONTROL LANGUAGE)
트랜잭션(TRANSACTION) : 데이터베이스의 논리적인 작업 단위
ACID (Atomicity Consistenoy Isolataion Durability)
원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)
OBJECT , PLSQL
VIEW (뷰) : SELECT 문을 저장해 둘 수 있는 객체
FORCE / NOFORCE 옵션
WITH CHECK OPTION
WITH READ ONLY (DML 불가)
SEQUENCE (시퀀스) : 자동으로 번호를 입력시켜주는 객체(자동 번호 부여)
INDEX : '목차'의 개념을 추상화 (B*TREE방식 대표적)
PLSQL : 오라클에 내장된 절차적 언어
DECLARE : 변수 및 상수 선언 하는 공간 일반타입 변수, 레어런스 변수, ROW타입 변수 3가지가 존재
BEGIN : 실행부
PROCEDURE(프로시져) : PL/SQL "저장"해서 이용하는 객체
FUNCTION : 프로시져와 유사하지만 실행결과를 반환 받을 수 있다
TRIGGER(트리거) : 자동으로 매번 실행 할 내용을 미리 정의 할 수 있는 객체
(Statement) JDBC, CRUD
JDBC (MVC 분류)
https://velog.io/@yhcactus/D36
Template : JDBC과정 중 반복적으로 쓰이는 구문들을 메소드로 정의한 클래스
View : 용자가 보게될 시각적인 요소를 담당.(화면 => 입력, 출력)
DAO(Data Access Object)
Service : 컨트롤러에 의해 실행되는 메소드들
Refactoring : 기존의 코드를 변경하여 코드를 더 이해하기 쉽고, 유지보수하기 쉽게 만드는 과정.