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단위로 읽는데 보여주는 것만 칼럼일 뿐.)
◎ 명령어 구조
-- 자주쓰는 명령어 (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단위로 읽는데 보여주는 것만 칼럼일 뿐.)
댓글
댓글 쓰기