ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [1회차] ORACLE (SELECT문)
    ORACLE 2021. 4. 28. 08:37

    강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정

    강의 날짜 : 21.04.26

     

     

    <DB의 개념>

     

    DB(Data Base)란 유용한 데이터의 집합이다.

    방대한 저장공간 안에서 데이터를 관리하는 것이다.

    데이터의 검색, 수정, 삭제가 용이해야 한다.

     

     

    1. DBMS(DataBase Management System)

     

    유지 관리해야 하는 방대한 양의 데이터를 편리하게 관리하는 운영체제급 시스템 소프트웨어이다.

     

    응용 프로그램과 데이터베이스의 중재자라고 할 수 있다.

    응용 프로그램에는 JAVA등 여러 툴이 존재하기 때문에 결국 DB를 공용할 수 있도록 해주는 것이다.

     

    파일 시스템보다 좀 더 관리가 효율적이다.

     

     

    2. DB의 장점

     

    ① 데이터의 공유

    ② 무결성 

    ③ 중복성 감소

    ④ 불일치 최소화

    ⑤ 보안 유지

    ⑥ 표준화가 가능

     

     

    3. 데이터 베이스 용어

     

    용어 설명
    릴레이션 표, 테이블
    레코드  행(클래스)
    컬럼 속성, 열(멤버)
    하나의 데이터

    데이터베이스의 레코드는 JAVA의 클래스급이고 컬럼들은 JAVA의 멤버 변수, 메소드 등과 같다.

    이렇게 클래스를 모아서 처리하는 것이 Array List와 닮았다.

    그래서 JAVA에서 데이터베이스를 처리할 때는 Array List를 사용한다.

    Array List의 제네릭 타입에 클래스급이 온다는 뜻이 이것이다!

     

     

    4. RDBMS 

    여러 종류의 DBMS 중 관계형 데이터베이스를 기반으로 하는 시스템이다.

     

     

    <SQL (Structured Query Language)>

     

    관계 DB를 처리하기 위한 언어이며 DB표준 언어이다.

     

    Query는 조회, 입력, 수정, 삭제를 실시간 대화하듯이 처리하는 질의라는 뜻을 가지고 있다.

    SQL은 세미콜론으로 끝을 표시한 후 엔터를 치면 바로 그 명령문이 실행이 되는데,

    이것을 바로 대화식 언어, Query Language 라고 한다.

     

    * SQL의 언어

    SQL 종류
    DML
    TCL
    DDL
    DCL
    Query어

     

    *접속 명령어

    접속 명령어
    외부에서 SQL접속 SQLPLUS
    내부에서 계정 접속 CONN

     

    * 오라클 

     

    사용자 계정명 = DB명

    : DB를 만든다? 계정을 만든다!

     

    DBMS는 시스템이고 그 안의 DB는 하나의 디렉토리(폴더)와 같다.

    DB안에는 여러 테이블이 존재하는데, 테이블의 한 레이블은 클래스급이므로 테이블을 클래스, 즉 파일로 볼 수 있다.

    여기서 DB는 테이블간 공유가 가능하므로 static의 성격을 가지고 있다고 볼 수 있다.

     

    즉, DBMS(=운영 시스템) > DB (디렉토리, 폴더, 패키지) > 테이블 (클래스, 파일) 이라고 생각할 수 있다.

     

     

    1. SELECT문

     

    SELECT {* or 컬럼명} FROM 테이블명;

     

    명령어에는 대소문자 구분이 업다.

    하지만 값은 대소문자를 구분한다. " " 그리고 ' '에 주의!

    대소문자를 구분하고 싶으면 " "나 ' '를 쓰면 된다.

    항상 문장의 마지막은 세미콜론(;)이다.

     

    이름들에는 한글이름을 줘 버릇하지 말 것.

     

    * (*) 은 ALL을 뜻하는 와일드 카드이다.

     

    * AS의 다른 쓰임

    CREATE TABLE lion.emp AS SELECT * scott.emp 복사 연산 AS
    : scott계정의 emp테이블을 복사해서 lion계정에 emp라는 이름으로 테이블을 생성
    SELECT 컬럼 AS 별칭 별칭 AS
    : 컬럼을 조회하는데 출력할 때 별칭을 속성명으로 주어 출력

    별칭을 설정하는 AS는 생략이 가능하다.

    단, 그 별칭이 " "로 묶여있는 경우에만 가능하다.

     

    * ' '의 쓰임

    만약 SELECT문 뒤에 컬럼명이 아닌 '문자열'이 온다면, 이 문자열을 그대로 복사하여 컬럼에 넣는다.

     

    * || 연산자

     

    컬럼명 || '문자열' || 컬럼명

    → 하나의 문자열로 만들어준다.

     

    즉, 문자열 결합 연산자이다.

    (JAVA의 concat연산자와 같음)

     

     

    2. WHERE절

     

    WHERE 조건;

     

    SELECT {* or 컬럼명} FROM 테이블명

    WHERE 조건;

     

    * 해석 순서

    ① FROM절

    ② WHERE 절

    ③ SELECT 

     

    * 관계 연산자

    관계연산자 기호 설명
    < 미만
    <= 이하
    > 초과
    >= 이상
    <> 같지 않다
    != 같지 않다
    = 같다

     

    *논리 연산자

    논리 연산자 설명
    NOT 부정
    AND JAVA의 &&
    OR JAVA의 ||

     

    * 동일 연산자일때 OR 연산일 경우 간단하게 표현하는 연산자 IN

     

    WHERE comm =300 OR comm =500 OR comm =1400;

     

    WHERE comm IN (300, 500, 1400);

     

    * AND 연산자를 간단히 표현하는 연산

     

    WHERE sal >= 500 AND sal <= 4000;

     WHERE sal BETWEEN 500 AND 4000;

    (무조건 양쪽에 등호가 있는 경우이다.)

     

     

    3. NOT 연산자(부정)

     

    WHERE NOT 조건;

     

    WHERE 컬럼명 NOT IN(값1, 값2....);

    : IN연산에 대한 부정

     

    WHERE 컬럼명 NOT BETWEEN 값1 AND 값2;

    : BETWEEN 연산에 대한 부정

     

     

    4. LIKE연산과 와일드 카드

     

    LIKE연산은 문자열을 처리하는 연산자로 와일드 카드와 함께 쓰여야 한다.

     

    와일드 카드  설명
    % 0개 이상의 문자열을 대체
    _ 1개의 문자를 대체
    예시 설명
    LIKE 'J%' J로 시작하는 문자열
    LIKE '%N' N으로 끝나는 문자열
    LIKE '%A%' A가 포함된 문자열
    LIKE '_A%' A가 두 번째 글자인 문자열
    LIKE '___D' 네 자이고 맨 뒷자리가 D인 문자열
    LIKE '_L_R%' 두 번째 자리가 L이고 네 번째 자리가 R인 문자열
    NOT LIKE '%A%' A가 포함된지 않은 문자열

     

     

    5. NULL 연산자

     

    비어져 있는 값 = NULL = 알 수 없는 값

     

    데이터베이스에서  NULL은 하나의 값으로 취급된다.

    그래서 0과는 다른 의미이다.

     

    NULL 값은 연산이 불가능하다.

    그래서 어떤 연산에도 이 값은 포함이 될 수 없다.

    즉, NULL 전용 처리 연산이 필요하다.

     

    WHERE 컬럼 IS NULL;

    → 값이 NULL인 경우를 조건으로 줌

     

    WHERE 컬럼 IS NOT NULL;

    → 값이 NULL이 아닌 경우는 조건으로 줌

     

     

    6. SELECT문의 FULL SYSTEX

     

    SELECT [DISTINCT] {* 또는 컬럼명1, 컬럼명2, ...}

    FROM 테이블명

    WHERE 조건

    GROUP BY 컬럼명

    [HAVING 그룹 조건]

    ORDER BY 컬럼명 [ASC 또는 DESC];

     

    * 해석순서

    ① FROM

    ② WHERE

    ③ GROUP BY

    ④ HAVING

    ⑤ SELECT

    ⑥ ORDER BY

     

     

    7. ORDER BY

     

    ORDER BY 컬럼명 [ASC 또는 DESC];

     

    컬럼명을 기준으로 정렬을 한다.

    ASC : 오름차순(DEFAULT, 생략가능)

    DESC : 내림차순

     

    만일 컬럼명이 여러 개가 온다면 처음 컬럼으로 1차 정렬, 다음 컬럼으로 2차 정렬을 진행한다.

     

     

    8. GROUP BY

     

    SELECT 컬럼명0, 컬럼명1, ... FROM 테이블명

    GROUP BY 컬럼명0;

     

    그룹으로 묶어주는 컬럼명은 SELECT문에서 가장 먼저 나와주어야 한다.

     

    * 해석순서

    ① FROM

    GROUP BY

    ③ SELECT

     

    * GROUP BY에서 사용하는 내장함수

    그룹함수, 통계함수 설명
    SUM 합계
    AVG 평균
    MAX 최대치
    MIN 최소치
    COUNT 행 개수 카운트
    COUNT(*) 모든 행 카운트
    (NULL값 포함)

    NULL값은 연산에서 제외된다는 것에 주의하자.

    하지만 유일하게 COUNT(*)는 NULL값을 포함하여 연산한다.

     

     

    9. HAVING

    데이터베이스의 임시 테이블을 사용하여 그룹에 대한 조건을 지정하는 절이다.

    즉, HAVING절이 나온다면 GROUP BY절이 앞에 나와주어야 한다.

     

     

    10. 자료형

    DATA TYPE 설명
    CHAR(size) 고정 길이 문자열
    VARCHAR2(size) 가변 길이 문자열
    INTEGER 정수
    DOUBLE 실수
    DATE 날짜

     

     

    11. 기타 명령어 정리

    명령어 설명
    CREATE 생성문
    GRANT 권한 부여
    CONN 접속
    RESOURCE 자원 관리(데이터 관리)
    @ SQL자료를 찾는 연산 기호
    IDENTIFIED BY 비밀번호 설정
    SHOW USER  사용자 확인
    TAB 테이블
    SELECT 조회
    * ALL
    DISTINCT 중복값 제외(컬럼명은 하나만 올 수 있다.)

     

    * 날짜 처리

    작은 따옴표 (' ')로 묶어 문자열처럼 전달한다.

    - 이나 / 가 DATE의 약속 문자이다.

     

     

Designed by Tistory.