Oracle 2 (오라클 기초 2)
카테고리: Oracle
오라클 기초
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 로 바꿔주어야 한다
그리고 아래의 사진과 같이 텍스트를 실행할 때에는 실행할 부분을 마우스로 스크롤 한 뒤 마우스 우클릭 하여 execute selected text 를 클릭하거나 단축키 Alt + X 를 클릭하여 준다
첫번재로 테이블을 생성한 모습이다. 생성이 성공하면 왼쪽아래 Status 란에 파란색 v자 표시와 함께 Succeeded 라는 메세지가 나온다
다음은 select * FROM booklist; 를 실행시켜서 생성된 테이블을 확인해보자
위에서 선언해준 booknum, subject, makeyear, inprice, outprice 이 생성된 모습을 볼 수 있다
DROP TABLE booklist purge;는 삭제하는 명령어이다. 모든 명령 뒤에 ;세미콜론은 빼먹지 말도록 하자
-
not null : null 을 허용하지 않는 제약, 해당 필드가 빈칸채로는 레코드가 insert 되지 않는다
-
기본키(Primary Key) : 테이블을 구성하는 필드들 중에서 갖는 값들이 빈칸(null)이 없고
서로다른 값(유일한값)들을 갖고 있어 레코드들을 유일하게 구분해 낼 수 있는 필드
테이블을 구성하는 필드들 중 자격이 되는 필드중 하나에 부여하는 테이블의 대표값
기본키를 지정함으로써 기본키가 지정하지 않았을 때 발생할 수 있는 오류들을 미연에 방지할 수 있다 기본키로 결함을 없애는 것. 그래서 결함없이 유지되는 것을 “개체 무결성” 이라고 부른다 -
creat table 명령의 세부규칙
- 테이블의 이름은 객체를 의미할 수 있는 적합한 이름을 사용한다(자바의 변수이름과 비슷)
- 다른 테이블과 이름이 중복되지 않게 정한다(같은 아이디로 로그인했을때의 중복)
- 한 테이블 내에서 필드이름도 중복되지 않게 한다
- 각 필드들은 “,”로 구분하여 생성한다
- create 를 비롯한 모든 sql 명령은 “,” 로 마친다
- 필드명 뒤에 DATA TYPE 은 반드시 지정하고 []안에 내용은 해당내용이 있을 때 작성하며 생략 가능하다
- 예약어 명령어 등을 테이블명과 필드명으로 쓸수 없다
- 테이블 생성시 대/소문자 구분은 하지 않는다(기본적으로 테이블이나 컬럼명은 대문자로 만들어짐)
create table
CREATE TABLE
Create Table - 보통은 데이터형식과 용량(크기)를 지정하는데, DATE 데이터 형식은 유형을 별도로 크기를 지정하지 않는다
- 문자데이터의 DataType->varchar2(10), number(4)
- 문자 데이터 유형은 반드시 가질 수 있을 최대 길이를 표시해야 한다
- 숫자 데이터 형식은 byte 수로 표현하지 않고, 자리수로 표현 number(4) -> 4자리 숫자(0~9999)
- 컬럼(필드)과 컬럼(필드)의 구분은 콤마로 하되, 마지막 컬럼이나 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를 확인한다
select * from memberlist; 로 생성된 필드를 확인한다
memberNum, memberName, Phone, Birth, Bpoint
-
외래키(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 까지 잘 생성 되었다
외래키의 참조 대상이 되는 필드는 그쪽 테이블의 기본기이어야 합니다
- 제약조건 (CONSTRAINT)
PRIMARY KEY
- 테이블에 저장된 레코드를 고유하게 식별하기 위한 키, 하나의 테이블에 하나의 기본키만 정의 할 수 있다
- 여러 필드가 조합된 기본키 생성 가능하다
- 기본키는 중복된 값을 갖을 수 없으며 빈칸도 있을 수 없다
- PRIMARY KEY = UNIQUE KEY + NOT NULL
UNIQUE KEY
- 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의 한다
- 단 NULL은 고유키 제약의 대상이 아님으로, NULL 값을 가진 행이 여러개가 UNIQUE KEY 제약에 위반하지는 않는다
NOT NULL
- 비어있는 상태, 아무것도 없는 상태를 허용하지 않는다 - 입력필수
CHECK
- 입력할 수 있는 값의 범위를 제한한다. CHECK 제약으로는 TRUE or FALSE 로 평가할 수 있는 노리식을 지정한다
FOREIGN KEY
- 관계형 데이터 베이스에서 테이블간에 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다 - 참조 무결성 제약 옵션이 탄생
댓글 남기기