ed  - 전에 실행한 버퍼에 들어간 명령문을 edit한다.


set linesize 1000;
set pagesize 1000;  사이즈 변경


버퍼에 있는 내용 실행   /


SQL문 작성시 유의사항

SQL문은 대소문자를 가리지 않는다.
data값은 대소문자를 가린다.




연산자 우선순위

단항 +, -  이항 * , /, + , -
- 괄호를 사용하여 연산자 우선순위를 조정할 수 있다.


NULL

Null이란 아직 값을 알 수 없는 상태 또는 의미가 없는 상태를 표현한다.

Null은 0이나 space 등과는 다르다.

산술 연산 수식에 Null인 값이 하나라도 포함되어 있다면 결과값은 항상 Null이 된다. (s_no + NULL) = NULL
     (s_no + 0) = s_no
Not Null이나 PRIAMARY KEY 제약 조건을 갖는 column은 NULL일 수 없다.

Oracle Database에서 Null인 column은 Length가 0 으로 data를 위한 물리적 공간을 차지 하지 않는다.



NULL값 처리 함수 - NVL(expr1, expr2)

다음은 사번과 커미션을 출력하면서 커미션이 없는 사원의 경우 NULL이 아니라 0으로 출력하도록 하는 문장이다.
Select empno, ename, NVL(comm, 0) comm FROM emp;

다음은 매니저가 없는, 즉 최고 직급의 사원인 경우 'No Manage'라고 출력하도록 하는 문장이다.
Select NVL(mgr, 'No Manager') FROM emp;
에러가 난다! mgr이 숫자형이기 때문에 문자열을 넣기때문에 오류가 난다.


Alias - 열에 이름을 임의로 정해준다.


alias는 SELECT 절에 expression을 사용할 때 유용하다.

column명이나 expression 바로 뒤에 명시하거나 column명과  alias사이에 AS를 끼워 넣어 사용한다.

Double Quotation("  ")을 사용하여 alias내에 공백이나 특수문자를 포함할 수 있다.

SQL> SELECT sal*12 Annual_Salary FROM emp;
SQL> SELECT sal*12 Annual Salary FROM emp; (* Error 발생) 띄어쓰기
SQL> SELECT sal*12 "Annual Salary" FROM emp;
SQL> SELECT sal*12 AS "Annual Salary" FROM emp;



연결연산자(||)

문자열들을 연결하여 하나의 결과 문자열을 만들어 낸다.
문자열에 NULL을 연결시키면 원래의 문자열이 그대로 된다.

SQL> SELECT empno||ename||hiredate FROM emp;
(* number나 date 값은 default 형태의 character 값으로 자동 변환된 후 연결된다.)


Literals

Literal은 상수 값을 의미한다.
Character literal은 작은 따옴표로 묶어서, Number literal은 따옴표 없이 그냥 써서 표현한다.
Character literal을 작은 따옴표로 묶어 주어야 Oracle server가 keyword나 object 이름과 구별 할 수 있다.

SQL> SELECT ename|| ' ' || sal FROM emp;
SQL> SELECT ename || ' is working as a ' || job FROM emp;

literal이나 literal들의 연산결과를 출력해 볼 때는 sys사용자 소유의 dual이라는 dummy table(가상테이블)을 활용한다.

SQL> SELECT 'Korea Fighting' FROM dual;
SQL> SELECT 10 + 20 FROM dual;
SQL> SELECT 'Red' ||' '|| 'Devil' FROM dual;


dual table을 이용하여 server의 현재 시각이나 현재 접속중인 DB 사용자를 조회해 볼 수 있다.
SQL> SELECT sysdate, user FROM dual;


ALL | DISTINCT

ALL이 default로 조회된 결과를 모두 return 해준다.
SELECT job FROM emp; (ALL은 안써도 Default로 되어있다.)

DISTINCT는 조회 결과 중 중복된 row들은 하나의 결과만 return하도록 해준다. 
SELECT DISTINCT job FROM emp;



CASE - IF-THEN-ELSE와 비슷한 logic을 제공한다.


select ename, sal, deptno, (case deptno
when 10 then sal *1.1
when 20 then sal *1.2
else sal*10 end) result
from emp

deptno가 10이면 sal * 1.1 20이면 .......case 문을 result로 alias 하였다.

'프로그래밍 기초 > 오라클' 카테고리의 다른 글

Advanced Query  (0) 2010.02.25
Single-Row Functions  (0) 2010.02.24
기본쿼리2  (0) 2010.02.24
SQL문 정리  (0) 2010.02.22
Database System  (0) 2010.02.22
Posted by 아몰라
NUMBER(l,d) -일반적인 숫자 데이터를 저장한다. l는 저장할 수 있는 최대 자릿수이고, d는 소수점 이하 자리 수를 가리킨다.

CHAR(size) - size에서 지정하는 만큼, 2000byte까지 고정 길이 문자열 데이터를 저장한다.

VARCHAR2(size) - size에서 지정하는 만큼, 4000byte까지 가변 문자열 데이터를 저장한다.

DATE - BC 4712년 1월 1일부터 AD 4712년 12월 31일까지의 날짜를 저장한다.

LONG - 2GB의 문자까지 문자열 데이터를 저장할 수 있다.

BLOB - 이진(Binary) LOB 데이터 타입으로서 이진 데이터를 4GB까지 저장한다.

CLOB - 문자 LOB 데이터 타입으로 4GB의 문자열을 저장한다.

BFILE - Read-Only 이진(Binary)데이터를 저장하는 이진(Binary)파일 타입으로, 데이터베이스 외부에 저장된다.




CREATE TABLE -
데이터를 저장하고 검색하기 전에 선행 되어야 할 일이 데이터베이스 개체의 구축이다. 이 구문으로 테이블을 생성한다.

desc 문으로 생성된 테이블의 정의와 구조를 확인해 보았다.


INSERT - 위에서 생성한 테이블에 데이터를 넣을때 쓰인다.



이렇게 생성되었다. 여기서 select 문으로 확인해 보겠다.

잘 등록이 되었다.

이번에는 여러개를 등록해보고 s_class 에는 값을 안쓰고 등록해보자.


값의 수가 충분하지 않다고 나온다.

이럴때는 아래 처럼 하면 되는데 대신 처음에 생성할때 NOT NULL로 데이터형을 지정을 했는지 안했는지가 중요하다.
NOT NULL로 했다면 당연히 값을 안넣으면 삽입되지 않는다.



SELECT - 기존에 생성한 테이블의 데이터를 검색하는 SQL문으로서 가장 많이 쓰인다.
필수부분과 선택부분으로 나뉜다.

필수부분

SELECT : 무엇을 보고 싶은지를 (테이블의 컬럼 이름) 명시한다.
FROM : 보고 싶은 데이터를 어디로부터 얻을 걷인지를 (하나 또는 둘 이상의 테이블 이름) 명시 한다.

선택부분

WHERE : 검색할 데이터의 검색 조건을 지정한다.
ORDER BY : 검색결과 반환되는 행의 정렬을 위해 사용된다.



여태 만든 테이블을 전체검색과 부분검색으로 검색하였다.

아래와 같이 조건을 걸어서 검색 할 수 있다.


s_no 가 3이상이거나 s_class가 2보다 작을시 student테이블에 있는 데이터들을 s_no를 기준으로 오름차순정렬하여
보여준다.



UPDATE- 테이블 안의 데이터를 수정할때 사용한다.



s_name이 성훈인 행의 s_no 를 3으로 바꿔준다.
s_name을 기준으로 오름차순으로  정렬하여서 바뀐 데이터를 확인해보았다.


DELETE - 사용하지 않는 데이터를 삭제한다.

s_no 이 1인 데이터를 삭제한다.


ALTER TABLE - 기존의 테이블의 정의와 구조를 수정한다.

처음에 오류가 나는 이유는 NOT NULL로 바꿀려는데 기존의 값중에 NULL인 값이 있기 때문에 오류가 난것이다.
그러므로 ALTER하려는 구조가 기존의 데이터와 일치하지않으면 사용할 수 없다는 것이다.
즉, 기존에 존재하는 데이터는 보호된다!


아래를 보면 바뀌었다.


DROP - 기존의 테이블을 삭제한다.


'프로그래밍 기초 > 오라클' 카테고리의 다른 글

Advanced Query  (0) 2010.02.25
Single-Row Functions  (0) 2010.02.24
기본쿼리2  (0) 2010.02.24
기본쿼리  (1) 2010.02.23
Database System  (0) 2010.02.22
Posted by 아몰라

Database의 정의

어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 data의 집합


Database의 특징

실시간 접근성 (Read-time accessiblility)  : 사용자의 요구에 대한 즉각적인 응답
계속적인 변화(Continuous evolution) : 삽입, 삭제, 갱신 작업이 수시로 발생
동시 공용(Concureent sharing) : 여러 사용자가 동시에 자기가 원하는 data에 접근 가능
내용에 의한 참조(Content reference) : 물리적 주소가 아닌 data에 대한 참조

DBMS의 정의

사용자와 Database 사이에 위치하여 사용자의 요구에 따라 Database를 조작하고 제어하는 기능을 제공하는 소프트웨어

DBMS의 장점

  • data의 독립성 및 중복 최소화
  • 응용 프로그램의 개발 시간 단축
  • data의 무결성과 보안 보장
  • 표준화되고 일관된 data 관리 기능
  • data 동시 사용가능
  • data 회복 가능
DBMS의 단점

  • 시스템 자원 요구로 운영비 증대
  • 고급 프로그래밍 필요로 자료 처리의 복잡화
  • 장애 발생 대비를 위한 복잡한 Back up과 Recovery 작업 필요




DBMS의 기능

정의 기능 : Database의 논리적, 물리적 구조를 정의할 수 있는 기능
조작 기능 : 사용자가 Database 내의 data를 조작할 수 있도록 하기 위한 기능
제어 기능 : Database가 항상 정확하고 올바른 data를 유지하도록 하기 위한 기능



Data Language

Database를 정의, 조작, 제어하기 위하여 사용자와 Database 시스템 간에 사용하는 통신 수단으로 SQL이 하나의 예이다.

- data 정의어(DDL)
- data 조작어(DML)
- data 제어어(DCL)


DBA의 역할

- Database 설계와 운영 : Database 구성 요소 결정, schema 정의, 저장 구조와 접근 방법 설정, 보안 및 권한 부여 정책 결정, 백업, 회복 절차 수립 등의 작업 수행
- 행정 및 불평 해결 : 사용자의 요구를 받아 분석하고 불만을 해소
- 시스템 감시 및 서능 분석 : 시스템 이용도, 병목 현상, 이용 패턴, data 사용 추세, 각종 통계 등의 분석 작업 수행

DB Machine

- Database 시스템의 성능을 향상시키기 위해 사용하는 후위 컴퓨터
- 대용량의 data에 대한 빠른 처리를 위해 사용됨




스키마(Schema)

- Database의 논리적 정의


3단계 스키마

External 스키마 - 각 사용자의 입장에서 본 Database의 구조
                    - 사용자마다 서로 다른 Database 스키마를 가짐
                    - 개념 스키마에 대한 서브 스키마

Conceptual 스키마 - 조직 전체의 입장에서 본 Database의 구조
                        - 한 개의 스키마만 존재하며, 서로 다른 사용자가 공유
                        - data 객체(개체, 관계), 제약조건에 대한 명세를 유지

Physical 스키마 - 저장 장치의 입장에서 본 Database 구조
                     - 각 data 객체의 저장 구조를 표현함
                     - 내부 레코드의 형식
                     - 인덱스의 유무
                     - 저장 data 항목의 표현 방법


출처 - 선문비트









'프로그래밍 기초 > 오라클' 카테고리의 다른 글

Advanced Query  (0) 2010.02.25
Single-Row Functions  (0) 2010.02.24
기본쿼리2  (0) 2010.02.24
기본쿼리  (1) 2010.02.23
SQL문 정리  (0) 2010.02.22
Posted by 아몰라