Oracle 2 (오라클 기초 2)

Date:     Updated:

카테고리:

태그:

oracle.png

오라클 기초

DDL(Data Definition Language) 데이터 정의어

테이블의 생성 CREATE

CREATE TABLE 테이블 이름(
    필드명1 DATATYPE [DEFAULT  OR 제약조건 ],
    필드명2 DATATYPE [DEFAULT  OR 제약조건 ],
    필드명3 DATATYPE [DEFAULT  OR 제약조건 ].
    필드명4 DATATYPE [DEFAULT  OR 제약조건 ],
    ...
    필드명 DATATYPE [DEFAULT  OR 제약조건 ],
)

도서대여점의 도서 목록 테이블 생성

  • 필드 : booknum, subject, makeyear, inprice, outprice,
  • 자료형 : booknum(문자 5자리), subject(문자30), makeyear(숫자4), inprice(숫자6), outprice(숫자6)
  • 제약조건 : booknum(Not null), subject(Not null), makeyear(). inprice(), outprice()
  • 테이블 명 : booklist
CREATE TABLE booklist(
    booknum varchar2(5),
    subject varchar2(30) not null,
    makeyear number(4),
    inprice number(6) not null,
    outprice number(6) not null,
    -- 필드명 옆에 현재 필드에만 적용하는 제약조건을 필드레벨의 제약이라고 한다
    -- 아래처럼 쓰는건 테이블 레벨의 제약조건이다
    constraint booklist_pk primary key (booknum)
    -- constraint : 테이블 수준의 제약조건을 지정하는 키워드(명령)
    -- booklist_pk : 테이블 외부에서 현재 제약조건을 컨트롤 하기 위한 제약조건의 고유이름
    -- primary key(booknum) : 기본키로 booknum을 지정하겠다는 뜻
);
select * FROM booklist;
DROP TABLE booklist purge;

텍스트 실행 (Execute selected text)

실행하기 이전 아래와 같이 빨간 표시부분을 Type : Oracle_11, Name : New Oracle, Database : xe 로 바꿔주어야 한다

oracle_start.png

그리고 아래의 사진과 같이 텍스트를 실행할 때에는 실행할 부분을 마우스로 스크롤 한 뒤 마우스 우클릭 하여 execute selected text 를 클릭하거나 단축키 Alt + X 를 클릭하여 준다

oracle_create1.png

첫번재로 테이블을 생성한 모습이다. 생성이 성공하면 왼쪽아래 Status 란에 파란색 v자 표시와 함께 Succeeded 라는 메세지가 나온다

oracle_create.png

다음은 select * FROM booklist; 를 실행시켜서 생성된 테이블을 확인해보자

oracle_select.png

위에서 선언해준 booknum, subject, makeyear, inprice, outprice 이 생성된 모습을 볼 수 있다

DROP TABLE booklist purge;는 삭제하는 명령어이다. 모든 명령 뒤에 ;세미콜론은 빼먹지 말도록 하자

  • not null : null 을 허용하지 않는 제약, 해당 필드가 빈칸채로는 레코드가 insert 되지 않는다

  • 기본키(Primary Key) : 테이블을 구성하는 필드들 중에서 갖는 값들이 빈칸(null)이 없고
    서로다른 값(유일한값)들을 갖고 있어 레코드들을 유일하게 구분해 낼 수 있는 필드
    테이블을 구성하는 필드들 중 자격이 되는 필드중 하나에 부여하는 테이블의 대표값
    기본키를 지정함으로써 기본키가 지정하지 않았을 때 발생할 수 있는 오류들을 미연에 방지할 수 있다 기본키로 결함을 없애는 것. 그래서 결함없이 유지되는 것을 “개체 무결성” 이라고 부른다

  • creat table 명령의 세부규칙

  1. 테이블의 이름은 객체를 의미할 수 있는 적합한 이름을 사용한다(자바의 변수이름과 비슷)
  2. 다른 테이블과 이름이 중복되지 않게 정한다(같은 아이디로 로그인했을때의 중복)
  3. 한 테이블 내에서 필드이름도 중복되지 않게 한다
  4. 각 필드들은 “,”로 구분하여 생성한다
  5. create 를 비롯한 모든 sql 명령은 “,” 로 마친다
  6. 필드명 뒤에 DATA TYPE 은 반드시 지정하고 []안에 내용은 해당내용이 있을 때 작성하며 생략 가능하다
  7. 예약어 명령어 등을 테이블명과 필드명으로 쓸수 없다
  8. 테이블 생성시 대/소문자 구분은 하지 않는다(기본적으로 테이블이나 컬럼명은 대문자로 만들어짐) create table
    CREATE TABLE
    Create Table
  9. 보통은 데이터형식과 용량(크기)를 지정하는데, DATE 데이터 형식은 유형을 별도로 크기를 지정하지 않는다
  10. 문자데이터의 DataType->varchar2(10), number(4)
  11. 문자 데이터 유형은 반드시 가질 수 있을 최대 길이를 표시해야 한다
  12. 숫자 데이터 형식은 byte 수로 표현하지 않고, 자리수로 표현 number(4) -> 4자리 숫자(0~9999)
  13. 컬럼(필드)과 컬럼(필드)의 구분은 콤마로 하되, 마지막 컬럼이나 constaint 를 작성후엔 콤마를 찍지 않는다
  • 테이블 생성 2
  • 테이블 이름 : MemberList(회원리스트)
  • 필드 : memberNum, memberName, Phone, Birth, Bpoint
  • 데이터 형식 : memberNum : VARCHAR2(5), memberName : VARCHAR2(12), Phone : VARCHR2(13), Birth : DATE, Bpoint : NUMBER(6)
  • 제약 조건 : memberNum, memberNAME, Phone 세개의 필드 Not Null - 필드레벨로 설정 memberNum : Primary Key - 테이블 레벨로 설정
CREATE TABLE MemberList(
    memberNum varchar2(5) not null,
    memberName varchar2(12) not null,
    Phone varchar2(13) not null,
    Birth DATE,
    Bpoint number(6),
    
    constraint member_pk primary key(memberNum)
);

select * from memberlist;

이번에도 테이블을 생성 완료했다는 Succeeded를 확인한다

oracle_create2.png

select * from memberlist; 로 생성된 필드를 확인한다
memberNum, memberName, Phone, Birth, Bpoint

oracle_select2.png

  • 외래키(FOREIGN KEY) : 테이블 간의 필수 포함 관계에 있어 상대 테이블의 특정 필드값을 참조하면서 없는 값을 사용할 수 없도록 하는 규칙 외래키로 유지되는 무결성을 “참조무결성” 이라고 부른다. 예를 들면 booklist 에 존재 하지 않은 도서의 번호가 rentlist 의 빌려간 도서의 번호로 등록되지 못하게 하는것을 말한다

  • 테이블 생성 3
  • 테이블 이름 : rentlist
  • 필드 : idx(NUMBER(3)), rent_date(date), bnum(VARCHAR2(5)), mnum(VARCHAR2(5)), discount(NUMBER(4))
  • 제약조건 : bnum, mnum : not null
CREATE TABLE renlist(
    idx number(3), -- 대여기록번호
    rent_date date defaul sysdate, -- 대여날짜 (sysdate를 default로 주게되면 설정하지 않아도 오늘날짜로 올라감)
    -- rent_seq number(3), -- 하나의 날짜안에서 지정된 순번
    bnum varchar2(5) not null, -- 대여해간 도서번호
    mnum varchar2(5) not null, -- 대여한 회원의 회원번호
    discont number(4) default 500, -- 할인금액
    -- constranint rent_pk primary key( rent_date, rent_seq )
    constraint rent_pk primary key( idx ),
    constraint fk1 foreign key(bnum) references booklist(booknum),
    -- 현재 테이블의 bnum 필드는 booklist 테이블의 booknum 필드값을 참조한다
    constraint fk2 foreign key(mnum) references memberlist(membernum)
    -- 현재 테이블의 mnum 필드는 memberlist 테이블의 membernum 필드값을 참조한다
);

select * from rentlist;

테이블이 잘 생성되었는지 확인한다

idx, rent_date, bunm, mnum, discont 까지 잘 생성 되었다

oracle_select3.png

외래키의 참조 대상이 되는 필드는 그쪽 테이블의 기본기이어야 합니다

  • 제약조건 (CONSTRAINT)

PRIMARY KEY

  • 테이블에 저장된 레코드를 고유하게 식별하기 위한 키, 하나의 테이블에 하나의 기본키만 정의 할 수 있다
  • 여러 필드가 조합된 기본키 생성 가능하다
  • 기본키는 중복된 값을 갖을 수 없으며 빈칸도 있을 수 없다
  • PRIMARY KEY = UNIQUE KEY + NOT NULL

UNIQUE KEY

  • 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의 한다
  • 단 NULL은 고유키 제약의 대상이 아님으로, NULL 값을 가진 행이 여러개가 UNIQUE KEY 제약에 위반하지는 않는다

NOT NULL

  • 비어있는 상태, 아무것도 없는 상태를 허용하지 않는다 - 입력필수

CHECK

  • 입력할 수 있는 값의 범위를 제한한다. CHECK 제약으로는 TRUE or FALSE 로 평가할 수 있는 노리식을 지정한다

FOREIGN KEY

  • 관계형 데이터 베이스에서 테이블간에 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다 - 참조 무결성 제약 옵션이 탄생

Oracle 카테고리 내 다른 글 보러가기

댓글 남기기