1. 오라클 설치
   오라클 접속 ( 툴 이용 )

2. SQL ( Structured Query Language )
: 데이터베이스 명령어
: 데소문자 구별이 없다. (리터럴 제외, 즉 실제값은 대소문자 구별됨)
: 문장의 끝은 ;

<종류>
가. DML ( Data Manipulation Language )
- insert (데이터 삽입)
- delete (데이터 삭제)
- updata (데이터 수정)
- merge  (데이터 병합)
==> 트랜잭션 (transaction) 고려해야 된다.

나. DDL ( Data Definition Language )
- create (객체 생성)
- alter  (객체 수정)
- drop   (객체 제거)

* 객체 종류( Object )
- 테이블
- 인덱스
- 뷰
- 시퀀스
- 시노님

다. TCL ( Transaction Control Language )
=> 트랜잭션 관련 명령어
- commit
- rollback

라. 권한할당 / 권한취소
- grant (권한 할당)
- revoke (권한 취소)

마. qurey
- select ( 데이터 조회 )

3. 관계형 데이터베이스
=> 데이터를 테이블 형태로 관리하며, 테이블간에 관계를 맺으면서 데이터를 관리하는 방법

 열(컬럼)
  이름     나이    주소     ==> 컬럼헤딩
 -----------------------
 홍길동     20     서울     ==> 행(레코드 : 자바의 인스턴스)
 이순신     44              ==> 비어있는 컬럼 ( null 값을 갖는다고 표현 )
 유관순     18     경기

* 제약조건 5가지
=> 테이블의 올바른 데이터 설정하기 위해서.

가. primary key 제약조건 (PK)
=> 레코드를 식별하기 위해서 특정 컬럼에 지정. (유일하기 때문에)
=> 지정된 컬럼은 반드시 유일한 값을 갖는다.
   또한 null값을 갖지 못한다.
=> 중복데이터 저장을 방지할 수 있다.
=> 예> 주민번호, 사원번호, 학번

나. unique 제약조건 (UK)
=> 컬럼에 유일한 값을 저장하기 위한 제약조건.
   null값 허용.

다. not null 제약조건 (NN) (개체 무결성)
==> 컬럼에 null 값을 허용 안함.

라. check 제약조건 ( CK )
=> 컬럼에 저장할 데이터의 조건체크해서 저장여부 결정

 예> age > 20

마. foreign key 제약조건 ( FK ) (참조 무결성)
=> 다른 테이블의 PK값을 갖거나 또는 null 값을 가질수 있는 제약조건

4. select 문
- 데이터 조회시 사용되는 SQL문.

문법 :
 select 컬럼명,컬럼명2
 from 테이블명;

 select * from 테이블명;

 select salary, salary+100 -- 연산 가능
 from 테이블명;

  * 주의할점은 null을 연산하면 결과는 null이다.
   NVL (컬럼값, 초기값)
 select 컬럼명 as별명, 컬럼명 별명
 from 테이블명;
 => 모든 레코드 대상으로 출력된다.

5. 특정 레코드 검색

 select 컬럼명,컬럼명2 ( * : 모든 컬럼)
 from 테이블명
 where 조건식;

가. 비교연산자

where 컬럼 = 값;
where 컬럼 > 값;
where 컬럼 >= 값;
where 컬럼 < 값;
where 컬럼 <= 값;
where 컬럼 != 값;

 * 리터럴 종류
a. 수치
b. 문자 => ' '
c. 날짜 => ' '
==> 리터럴은 대소문자 구분됨


나. 논리연산자

AND, OR, NOT

다. 범위 지정

BETWEEN a AND b ( a부터 b까지 , a 와 b 포함 )

라. IN 연산자
=> 일치하는 값만 출력
예> salary IN(2000,4000,6000);
==> salary = 2000 OR salary= 4000 OR salary = 6000

마. LIKE 연산자
==> 일부분만 일치해도 출력
==> 2가지 심볼(symbol) 사용

% : 없거나 여러문자 대치
_ : 한문자 대치

예> s로 시작하는 사원?
    where first_name LIKE 's%';

    s로 끝나는 사원?
    where first_name LIKE '%s';

    s문자를 갖는 사원?
    where first_name LIKE '%s%';

    s로 끝나는 사원?
    where first_name LIKE '____s';

바. null 값 찾기

: IS NULL
예>
    where commission_pct IS NULL;

사. NOT 연산자
: 부정
예>  
    where commission_pct IS NOT NULL;

6. 함수 ( function )
가. 대문자로 변경 : upper(컬러명)
나. 소문자로 변경 : loewr(컬럼명)
다. NVL : null값을 다른값으로 변경
라. 변환함수
 수치데이터 문자데이터 날짜데이터 
 to_char()
 => 문자데이터로 변경
 to_number()
 => 수치데이터로 변경
 to_data()
 => 날짜데이터로 변경

 예>
 where salary = '2000';

 * 특정 포맷 지정 가능
 to_char (hire_data , 'YYYY')

마. 그룹함수
  
    - max(컬럼값)
      => 최대값
   
    - min(컬럼값)
      => 최소값

    - sum(컬럼값)
      => 합계

    - avg(컬럼값)
      => 평균
   
    - count(컬럼값)
      => 레코드 개수

    - count(*)
      =>

=======> 결과값이 하나이다. 따라서 다른 컬럼과 같이 사용불가, 같이 사용하려면 일반
         컬럼을 그룹으로 묶는다.


바. 날짜 함수
- sysdate
==> 년/월/일
- timestamp
==> 년/월/일 시:분:초.소수점9자리까지
==> 정밀도가 높다.

예 > select sysdate,timestamp
     from dual;   //daul 은 임시테이블

     select 123*234
     from dual;

7. 정렬
==> SELECT문의 마지막 문이다.

: 오름차순(기본) : asc,ASC
    ==> order by 컬럼명 ASC;
 order by 컬럼명;

: 내림차순 : desc,DESC
    ==> order by 컬럼명 DESC;

select
where
groub by
having
order by

* 다중정렬
order by 컬럼명 DESC ,  컬럼명 ASC;

-----------------------------------------------------------------------------------------
8.DDL (Data Definition Language)
- create
- alter
- drop

 * 스키마 ( schema )
: 특정 사용자가 접속해서 생성한 객체들의 대표이름.
: 사용자 개정명과 동일하다.
  스키마라고 하면 계정을 의미한다.

: 스키마는 반드시 소유자가 있다.
  다른 스키마는 접속 불가. ( 권한 없기 때문에 )

==> 스키마.테이블명;

예> select * from hr.employee;  -- hr 스키마의 employees 테이블 접근

* 객체 종류
- 테이블 : 데이터 저장
- 뷰 : 테이블의 창 , 보안과 편리한 조회
- 시퀀스 : 테이블의 특정 컬럼의 값을 자동으로 증감시키는 객체. 예> 게시판의 글번호
- 인덱스 : 테이블의 검색속도를 향상시키기 위해서, 책의 인덱스
           PK,Unique 컬럼에는 자동으로 부여된다.
- 시노님 : 테이블의 별명 예> hr.employees


9. 테이블 생성
문법>

 create table 테이블명(
    컬럼명  데이터형  제약조건
      컬럼명  데이터형 ,
        컬럼명  데이터형
 );

* 데이터형
가. 수치형 : number(자릿수) ==> 정수
      number(자릿수, 소수점자릿수)  ==> 실수
          예>
       age NUMBER(3), ==? 000 ~ 999

나. 문자형 : char( 바이트 ) ==> 캐릭터 --> 고정형( 크기고정 )
      예> name char(10) ===> 'aaa' 저장해도 10byte가 크기 지정됨
      => 최대 2000바이트까지

      varchar2( 바이트 ) ==> 박캐릭터투, 바차투 --> 가변형 (크기가변)
      예> name varchar2(10) ===> 'aaa' 저장해도 3byte가 크기 지정됨
      => 최대 4000바이트까지
다. 날짜형 : data

       timestamp

* 실습
가. scott 계정생성 => 관리자만 가능

 create user 계정명
 identified by 비번;
예>
 create user scott
 identified by tiger;

나. 권한 부여
==> 접속권한(connect),객체생성권한(resource)
==> 관리자만 부여
     
 grant 권한, 권한2
 to 계정;

예>
        grant connect, resource
        to scott;

* 권한 과 롤 (role)
권한 : 사용자가 특정 작업을 가능하게 할 수 있는것.

권한 종류
a. 시스템 권한 : 관리자만 부여 가능
b. 객체 권한 : 객체를 소유한 사용자가 부여 가능

권한 형태
: create table
: create view
: create index
: drop table
: create session

롤( role )?
==> 권한들의 묶음을 의미.
==> 권한부여 및 취소를 편리하게 하기 위해서....
예> connect, resource

다. person 테이블 생성
--> scott 계정에서
 create table person(
 num NUMBER(4),    -- 숫자
 name VARCHAR(10), -- 이름
 age NUMBER(3),    -- 나이
  address VARCHAR(100) --주소
    );

* default 키워드 사용
==> null 방지 기능 및 특정값 입력 가능한 방법.

   create table person2(
   num NUMBER(4),            -- 숫자
   name VARCHAR2(10),        -- 이름
   age NUMBER(3) DEFAULT 20, -- 나이
   address VARCHAR2(100)     -- 주소
 );

 예 >
   --게시판
 create table board(
  
   writeday DATE DEFAULT SYSDATE,  --작성한 날짜를 항상입력하는게아니라 자동적으로
   ...

 );

10. 데이터 저장
==> insert 문

문법>
 insert into 테이블명 ( 칼럼명, 컬럼명2 )
 values( 값, 값2 );

 => 컬럼명과 값이 일대일 대응.
    지정하지 않은 컬럼에는 null값이 저장됨
예>
 insert into person ( num, name, age )
 values( 10, '홍길동', 20 );
 insert into person ( num, name, age, address )
 values( 11, '이순신', 44, '전라');
 insert into person ( num, name, age )
 values( 12, '유관순', 18, '서울' );

나.
 insert into 테이블명
 values( 값, 값2, 값3, 값4 );
 
   ==> 반드시 테이블의 모든 컬럼에 데이터 저장해야 된다.
              또한 반드시 테이블의 컬럼순서대로 저장해야 된다.

     예>  insert into person
          values(15,'이순신',44,'전라');

 -- 에러난다.
   insert into person
          values('이순신',15,44,'전라');

11. 제약조건 ( constraints )

  가. primary key
    ==> 레코드 식별하기 위해서 특정 컬럼에 부여 가능.
    ==> 자동으로 인덱스 생성된다.
    ==> 제약조건은?
 : 반드시 유일한 값 + null값이 아닌값을 저장해야 된다.
    ==> 일반적으로 테이블당 하나씩 생성한다.
    ==> 문법 >

      가. 컬럼레벨 지정 방식
 ==> 컬럼을 지정시 같이 제약조건 지정하는 방식

 num NUMBER(4) CONSTRAINT 제약조건이름 PRIMARY KEY
   ==> 제약조건이름은 '테이블명_컬럼명_PK'형식을 지정.

 또는
 num NUMBER(4) PRIMARY KEY  ==> SYSXXXX 자동으로 지정.


     예 >
 drop table person purge; 

 create table person3(
   num NUMBER(4) constraint person3_num_PK primary key,   --  숫자
   name VARCHAR2(10),  --이름
   age NUMBER(3) DEFAULT 20,  --나이
   address VARCHAR2(100)  --주소
 );

 insert into person3 ( num, name, age )
        values(10,'이순신',44,);

 insert into person3 ( num ,name, age )
        values(10,'이순신',44);   -- 에러발생(중복값:10)

 insert into person3 ( name, age )
        values('이순신',44); --에러발생(null)

 insert into person3 ( num, name, age )
        values(null,'이순신',44); --에러발생(null)

 


      나. 테이블 레벨 지정 방식
 ==> 컬럼을 모두 지정하고 마지막으로 제약조건 지정하는 방식.

 drop table person purge; 
 create table person4(
   num NUMBER(4),   --  숫자
   name VARCHAR2(10),  --이름
   age NUMBER(3) DEFAULT 20,  --나이
   address VARCHAR2(100),  --주소
   CONSTRAINT person4_num_PK PRIMARY KEY(num)
 );

 

12. DML( insert, delete, update, merge ) 관련 작업 고려 사항
  ==> 요청한 작업이 DB에 반영이 안된 상태이다.
      언제든지 요청작업을 취소가 가능하다.
  ==> 요청작업 확정 : commit
      요청작업 취소 : rollback


  ==> 트랜잭션(transaction)과 관련됨.

    *트랜잭션 정의?
 ==> 작업단위
 ==> '여러 작업들의 묶음'으로서 하나의 작업처럼 처리하는 개념.
 
 예> 계좌이체

        500
   A --------> B    ==>A에서 수정(1000 --> 500 : update)
 1000        B에서 사입(null --> 500 : insert)

 결과 :  성공시 :
            A --------> B
           500         500


  실패시 :
     A --------> B
          1000          0

 ==> 반드시 DML작업은 트랜잭션이 발생된다.
     따라서 트랜잭션을 종료시키는 작업이 필요하다.( commit, rollback )

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,