Oracle DB - Query 문 종류와 SELECT문

▣ Oracle SQL

◎ 명령어 구조

-- 자주쓰는 명령어 (99.99퍼) --
SELECT : quary

-- 나머지 0.01퍼 정도 --
INSERT : row 생성
UPDATE : row 변경
DELETE : row 삭제

-- 이하는 시스템 관리자(DBA)가 사용 --
CREATE : 테이블 생성
ALTER : 테이블 변경
DROP : 테이블 삭제

-- 이하는 부가권한이 있는 관리자가 사용 (권한 부여 및 삭제) --
GRANT : 권한 부여
REVOKE : 권한 삭제

▣ 명령어 종류

◎ select문
: SELECT [col, col, ...] FROM table;
→ 테이블에 속한 특정 칼럼을 선택해 출력해준다.

: SELECT * FROM table;
→ 테이블에 속한 모든 칼럼을 출력해준다.

▷ FROM절은 생략할 수 없다.
▷ 정해진 포맷이 없기 때문에, 여러 줄에 걸쳐 사용가능 → 가독성 높일 수도 있겠다

◈ 테이블 구조의 확인 - DESC
: DESC (table)
→ 테이블의 구조를 확인할 수 있다.
ex)
SQL> DESC emp
 이름                                                    널?    유형
 ----------------------------------------------------- -------- ------------------------------------
 ENO                                                            VARCHAR2(4)
 ENAME                                                          VARCHAR2(10)
 SEX                                                            VARCHAR2(2)
 JOB                                                            VARCHAR2(8)
 MGR                                                            VARCHAR2(4)
 HDATE                                                          DATE
 SAL                                                            NUMBER
 COMM                                                           NUMBER
 DNO                                                            VARCHAR2(2)

유형 :
VARCHAR - 가변 길이 문자 필드를 의미
VARCHAR2 - VARCHAR 형의 일종
DATE - 날짜를 의미하지만 연/월/일/시/분/초 구분이 아닌 시리얼 넘버의 형태
NUMBER - 수를 의미

ex. 생년월일 920825 : 수라고 생각되겠지만 문자의 나열으로 본다.

- 내가 가진 테이블이 무엇인지 확인하기 위한 방법
: SELECT * FROM tab;
→ tab 은 가상의 테이블

- 스키마 : 사용자가 가진 모든 오브젝트
oracle에서는 ast08로 접속하면 'ast08'이라는 스키마를 갖게 된다.
→ 각 사용자의 테이블은 다른 사용자의 테이블과 독립적이다.

: SELECT (칼럼명) as "별명"
  ▷ 칼럼이름을 "별명"으로 바꾸어서 출력 가능 (출력 헤더의 변경)
  ▷ as는 생략 가능하고 이중 인용 부호 ' " ' 역시 생략 가능
    → 별명이 숫자로 시작하거나 공백이 포함되었을때는 "" 사용해야 함.

: SELECT (수식) (별명)
  ▷ 수식의 결과를 별명의 칼럼으로 출력가능
  ▷ 수식에 들어가는 값의 일부가 NULL인 경우 연산이 되지 않는다 (결과가 없음)
    → NVL 함수를 이용해서 NULL값을 치환해야함. (NVL(column명, 0)) - NULL to 0
    → 애초에 NULL이 되지 않게 생성 시 미리 설정하는 것이 바람직하다.

◎ SQL의 특징
 - 모든 SQL의 문장은 ';' 으로 끝내야한다.
 - 쿼리문은 대/소문자를 구분하지 않는다.
 - SQL은 반드시 출력을 갖는다. (결과가 없다면 오류가 난 것)

tip.
▷ 데이터 딕셔너리?
 - 오라클을 관리하는 정보가 담겨있는 테이블과 뷰

▷ SELECT (수식) from dual 을 통해 수식을 출력 가능
 → dual = 더미 테이블 명

▷ 2차원 배열과 테이블의 구분
  - 배열 : 각 칼럼만 읽기가 가능 (선택한 칼럼만 메모리에 올라옴)
  - 테이블 : 각 칼럼만 읽기가 불가능
       (각 행이 하나의 데이터이기 때문, row단위로 읽는데 보여주는 것만 칼럼일 뿐.)

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)