* DML?

 -Data Manipulation Language : 

 -데이터 조작 언어로 테이블에 값을 삽입 / 수정 / 삭제 하는 언어

 

 

0. SELECT : 테이블에서 값들을 조회

  -SELECT ~ FROM ~

  JOIN ~

  WHERE ~

  GRUOP BY ~

  HAVING ~

  ORDER BY ~

 

    SELECT 구문에서 실행 :

    FROM => WHERE => GROUP BY => HAVING => SELECT => ORDER BY

    순으로 이루어지므로 주의해야 한다.

 

1. INSERT : 테이블에 새로운 행 추가

- INSERT INTO `테이블명` VALUES ( 값 ...) ;

- INSERT INTO `테이블명` (`컬럼명` ...) VALUES (값 ...) ;

 * VALUES 대신 서브쿼리를 넣을수도 있다 , 값을 안넣으면 NULL이 된다

 * INSERT ALL 로 서브쿼리의 값을 여러 테이블에 한번에 삽입 가능

 

2. UPDATE : 테이블에 기록된 컬럼의 값을 수정

 - UPDATE `테이블명` SET `컬럼명`  = 값(서브쿼리 가능)

 -(WHERE ~조건)

 

3. DELETE : 테이블의 행을 삭제

 - DELETE FROM `테이블명`

 - (WHERE ~조건)

 

 

서브쿼리?

하나의 SQL 문 안에 포함된 또 다른 SQL , 메인쿼리 실행 전 1번 실행된다

SELECT / FROM / WHERE / HAVING 등에 사용되며

비교 연산 시 반드시 오른쪽에 쓰고 , 괄호 안에 쓰며 개수와 자료형을 일치시킨다

유형

1. 단일행 : 서브쿼리 결과값이 1개이며 앞에 비교연산자 가능( > < = ...)

2. 다중행 : 서브쿼리 조회 결과값이 여러행으로 나오며 비교연산자를 쓸 수 없다

                                    

  --그러므로 다음을 사용한다.

  • IN / NOT IN :  한개라도 일치하는 것이 존재
  • >ANY , <ANY : 여러 결과보다 하나라도 크다, 작다
    • 가장 작은것보다 크다 / 가장 큰값보다 작다 를 의미한다
  • >ALL, <ALL : 모든 값보다 크다 ,작다 의미
  • (NOT) EXISTS : 값이 존재 하는지 아닌지 여부

3. 다중열 : 서브쿼리 컬럼수가 여러개이다.

 

    비교 컬럼을 동일하게 서브쿼리를 작성해야 한다

     ->( 1 ,  2 )  IN ( SELECT  1  ,  2  FROM ~~~) 

4. 다중행 다중열 : 서브쿼리 개수, 행이 여러개다

5. 상관쿼리 :

  메인 쿼리의 값이 바뀌면 서브쿼리에도 영향을 줘 바뀌는 상호 연관 쿼리이다.

6. 스칼라쿼리 : 상관쿼리 중 결과 값이 1개인 서브쿼리

7. 인라인 뷰 : FROM 절에 사용하는 경우로 서브쿼리 결과를 테이블로 사용

   TOP-N분석에 사용할 수 있다 (ROWNUM OR RANK() OVER / DENSE_RANK() )

  * WITH 로 서브쿼리에 별칭을 주고 따로 사용할 수 있다

   - WITH (별칭 ) AS (서브쿼리) 

     SELECT ~ FROM (별칭) ;

 

 

여러 테이블을 합쳐서 합집합 교집합을 만들 수 있고 하나의 결과값으로도 만들 수 있다

 

-집합 연산자

  • UNION : 합집합
  • UNION ALL : 중복을 포함한 합집합
  • INTERSECT : 교집합
  • MINUS : 차집합

-JOIN = 하나 이상의 테이블에서 데이터를 조회 시 사용

 

1. INNER JOIN : 연결되는 컬럼의 값이 일치하는 행들만 조회 (없으면 제외됨)

(EX) SELECT A.컬럼 , B.컬럼

        FROM A 

        JOIN B ON A.컬럼 = B.컬럼 ; 

(두 컬럼명이 같으면

JOIN B USING (같은 컬럼명)

NATURAL JOIN B 로 가능 )

 

2. OUTER JOIN

 LEFT/ RIGHT / FULL JOIN : 해당 테이블을 기준으로해서 일치하지 않아도 포함됨

3. CROSS JOIN : 교차 해서 조인 결과가 나옴

 --주로 조인이 잘못된 경우 나온다

4. NATURAL JOIN : 컬럼명이 같은 경우 사용

5. 다중 JOIN : 여러번 JOIN 가능하며 순서가 영향을 미친다.

 

함수 : 컬럼의 값을 읽어서 계산 결과 반환

  1. 단일행 -> N개를 읽어서 N개를 반환
  2. 그룹 -> N개를 읽어서 1개 반환

<단일행 함수>

1. 문자열 관련 함수

  • LENGTH() : 글자수 반환
  • INSTR('문자열', '찾는 문자' , 시작점, N번째 문자) : 해당 문자 찾아 인덱스 반환, 시작점이 -1이면 거꾸로
  • TRIM() : 양쪽 공백제거
  • LTRIM / RTRIM : 왼쪽 오른쪽 공백제거
  • LPAD /RPAD : 왼쪽 오른쪽에 문자 덧붙히기
  • LOWER : 소문자로
  • UPPER : 대문자로
  • INITCAP : 카멜표기법으로

2. 숫자함수

  • ABS() 절대값
  • MOD() 나머지 구하기
  • ROUND() 반올림, 자릿수 지정가능
  • CEIL() 올림
  • FLOOR() 내림
  • TRUNC() 버림

3. 날짜함수

  • SYSDATE :현재 DATE
  • SYSTIMESTAMP : 밀리세컨드까지 반환
  • MONTHS_BETWEEN (1, 2) : 1 과 2의 개월수 차이
  • ADD_MONTHS() : N개월 후
  • TO_CHAR : 숫자 ,날짜 -> 문자 타입으로 바꿈
  • TO_DATE : 날짜 형태 문자,숫자 -> 날짜 타입으로 바꿈

4. 형변환 함수

  • TO_NUMBER : 문자 -> 숫자
    • TO_NUMBER('1,000,000' , '9,999,999') => 1000000 으로 형식있는 문자를 숫자로 가능
    • 반대로
    • TO_CHAR(1000000,'L9,999,999' => \1,000,000 으로 형식있는 문자로도 변환 

5. NULL 처리함수

  • NVL(컬럼 , NULL일 경우의 값) = NULL인 경우의 결과값을 지정할 수 있다
  • NVL2(컬럼, NULL아닌경우, NULL인 경우 값) = NULL이 아닌경우 까지도 설정할 수 있다
  • NULLIF(A,B) : A=B 이면 NULL을 A<> B 이면 A를 나타낸다

6. 선택함수 : 여러 경우(조건) 에 따라 원하는 값을 선택할 수 있도록 한다

 -DECODE(계산식/컬럼 , 조건1, 값1 ,조건2, 값2 ... 조건N, 값 N , DEFAULT값 )

 

 -CASE

    WHEN ~ THEN ~

    ... 반복 ...(여러개 가능)

   END  


<그룹 함수>

  1. SUM, AVG , MAX, MIN
    1. AVG 는 계산시 NULL을 제외시킨다
    2. MAX 와 MIN 는 숫자 뿐만 아니라 문자와 날짜에도 적용된다
  2. COUNT()
    1. COUNT(*) + GROUP BY = 갯수가 0인 경우 출력이 되지 않는다
    2. COUNT(~~) 로만 사용해야 0도 포함해 출력된다.

* GROUP BY : 같은 값들을 하위 그룹으로 묶음 

                  -SELECT 문에는 묶은 컬럼 OR 그룹함수만 올 수 있게 제한된다.

(집계함수 ROLLUP / CUBE) ->GROUP BY 뒤에 사용해서 엑셀처럼 중간 집계 , 최종 집계를 볼 때 사용한다

 

 

 

Data = 값 (----Data 기반 의미부여---->) = Information

 

*DATABASE : 한 조직에 필요한 정보여러 시스템에서 공용할 수 있도록 논리적으로 연관된 데이터를 모으고

                 중복 제거로 최소화하여 구조적으로 통합 저장한 것

[특징]

  1. 실시간 접근성
  2. 계속적인 변화
  3. 동시 공유
  4. 내용에 따른 참조

-DBMS 

  1. 데이터 추출
  2. 데이터 조작
  3. 데이터 정의
  4. 데이터 제어

할 수 있게하는 데이터베이스 관리 시스템

-DBMS 사용이점

  1. 데이터 통합화
  2. 데이터 중복 최소화/데이터 무결성
  3. 데이터 보안향상
  4. 관리 편의성 향상

-관계형 DBMS? 

 : 모든 데이터를 2차원 테이블 형태로 표현

  ->객체관계형 DBMS로 넘어감

 

*디벨로퍼에서 접속환경 만들기

CREATE USER ~ IDENTIFIED BY~

GRANT 권한(EX : CONNECT, RESOURCE) TO ~

 

[SQL] : RDBMS에서 데이터를 조회하거나 조작하기 위해 사용하는 언어

        데이터 조작, 조회 시 절차가 아닌 조건을 기술하여 작성하는 구조적 질의언어

  • DQL = 검색 : SELECT
  • DML = 조작 : INSERT, UPDATE, DELETE
  • DDL = 정의 : CREATE, DROP , ALTER
  • DCL = 제어 : GRAND, REVOKE
  • TCL = 트랜잭션 제어 : COMMIT, ROLLBACK

*오라클 주요 데이터 타입

  1. NUMBER
  2. CHAR :고정길이 , 빈칸 그대로
  3. VARCHAR2 : 가변길이, 빈칸 사라짐( 좋지만 속도면에서 느린 경우도 존재)
  4. LONG
  5. DATE :날짜 , 날짜 타입끼리 연산도 가능함
  6. CLOB : 가변길이 문자
  7. BLOB 2진수

<별칭 붙히기> 컬럼명 + 별칭 OR  + AS + "별칭"  (띄어쓰기 포함시)

<중복 표시 제거> DISTINCT + 컬럼명

<문자 포함 여부 와일드카드> WHERE ~ LIKE '_%'

  • _ 는 1개의 임의 문자가 반드시 있어야 한다 의미
  • %는 몇개든 임의 문자가 공백을 포함해 있는 경우 의미
  • _ 과 %를 단지 특수문자로 쓰려면 ESCAPE 필요
  • EX) ~ LIKE '@__' ESCAPE '@'

- IN 연산자 :  비교하려는 값이 IN 목록에 있는 것과 일치하는 것이 있는지 확인

   -OR 을 연속사용하는 것과 같은 효과

-병합 : || -> 70000 || '원' => 70000원 으로 합쳐지도록 함

-IS NULL / IS NOT NULL : NULL 인지 확인하는 조건문에 많이 사용

 

+ Recent posts