Chillax in dev

Oracle 공부 기초 01 : DDL create, 제약조건 본문

DataBase 공부/Oracle

Oracle 공부 기초 01 : DDL create, 제약조건

Seong Story 2020. 7. 12. 14:35
728x90

Oracle 공부 기초 01

- 이제 이클립스를 이용해서 Oracle 기초부터 수업 내용을 차근차근 정리하며 복습하기 위해 공부를 시작합니다. 데이터베이스란 결국 대량의 정보를 컴퓨터로 저장하고 관리하는 것입니다.

현재 출시된 데이터 베이스의 종류 :oracle, Mysql , mssql, MariaDB, MongoDB, Access 등 다양합니다. 데이터 베이스의 조작운영을 가능하게 하는 프로그램 DBMS(Database Management System)입니다. 각 데이터 베이스 제품들에는 자신의 데이터 베이스를 관리할 수 있는 DBMS가 존재합니다. 
 특히 현재 사용 중인 오라클 데이터 베이스에서 사용 가능한 DBMS는 SQL PLUS, 이클립스, 오라클 DBMS 등이 있습니다.
데이터 베이스 활용분야: 일반 웹사이트 게시문 저장용, 포털 검색 사이트 검색 대상 정보 저장용 RPG 등 게임의 게임 정보 또는 캐릭터 정보 등 방대합니다.

- SQL 파일에서 주석 문은 -- 로 표시합니다. 참고로 이클립스 단축키 ctrl + / 로도 가능합니다.

- 데이터베이스는 Table이다!

-- TABLE :데이터 베이스에서 사용되는 데이터 집합의 단위 (=릴레이션 쉽 = 표)
-- 열(column) : (핃드)Field = 속성 = 에트리뷰트 = 데이터의 항목
-- 행(row) : (레코드)Record = 튜플 =한건의 데이터

 

칼럼1 칼럼2 칼럼3
0형0열 (0,0) (0,1) (0,2)
(1,0) 1행1열(1,1) (1,2)

 

SQL 종류)

1. DDL

2. DML

3. DCL

 

SQL 종류

- 테이블 의생성 (create)

1
2
3
4
5
6
7
 
CREATE TABLE 테이블명(
                필드명1 데이터타입 [디폴트값 제약조건 및 형식],
                필드명2 데이터타입 [디폴트값 제약조건 및 형식],
                필드명3 데이터타입 [디폴트값 제약조건 및 형식]
                                 ...
);
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--EX01)테이블 작성예  (도서대여점 테이블)
create table BookList(
    BookNum varchar2(5not null,--5 글자문자열,null값이 될수없게 하는 제약조건 추가
    title varchar2(30)    not null,
    makeyear number(4), --출판년도,숫자형식, 4바이트가 아니고 4자리 숫자라는 의미입니다.
    inprice number(6), --입고가격
    outprice number(6), --출고가격
    
    constraint booklist_pk primary key(BookNum) --추가 제약 조건 Booknum을 기본키로 설정
    --테이블의 외부에서 현재의 제약 조건을 boolist_pk 로 접근 가능합니다.
    
);
 
SELECT * FROM BookList; --테이블의 명령을 조회하는 명령
 
 
--EX02) 테이블생성 예제
--필드:    PersonNum, PersonName,  Phone, Birth, Bpoint
CREATE TABLE person(
    PersonNum VARCHAR2(5NOT NULL , --필드레벨로 설정(Not NULL )
    PersonName VARCHAR2(12NOT NULL,--필드레벨로 설정
    Phone VARCHAR2(13NOT NULL,--필드레벨로 설정
    Birth DATE,
    enterDate DATE default sysdate,
    Bpoint NUMBER(6default(0),
    
    CONSTRAINT person_pk PRIMARY KEY(PersonNum) -->테이블 레벨로 설정
);
select * from person;
 
create table in_out(
    out_date DATE NOT NULL--대여날짜 -조합한 기본키
    indexk NUMBER(3NOT NULL,--대여순번 -조합한 기본키
    booknum VARCHAR2(5NOT NULL,--대여도서번호
    personnum VARCHAR2(5NOT NULL,--회원 번호
    discount NUMBER(6),--할인금액
    CONSTRAINT in_out_pk PRIMARY KEY(out_date,indexk), --마땅한 프라이머리 값이없을떄 이둘을 조합해서 고유한 키를만든것
    CONSTRAINT fk1 FOREIGN KEY(booknum) REFERENCES booklist(booknum),
    CONSTRAINT fk2 FOREIGN KEY(personnum) REFERENCES person(personnum)

--데이터는 객체 무결성을 유지하도록 만들어야한다
--booklist에 없는값이 booknum 에 올수 없다.  - >참조 무결성--out_date, indexk 두개의 필드를 조합하여 기본키(in_out_PK)를 생성함
--booknum 는  in_out테이블의 외래키(fk1)로서  booklist 테이블의 booknum 참조함
--personnum in_out테이블의 외래키(fk2)로서 person 테이블의 personnum 참조함

-- 기본키에 대한 무결성 -> 개체무결성
-- 외래키에 대한 무결성 -> 참조무결성
);
select * from in_out;
cs

<주의사항>

# 테이블 이름은 객체를의미할수 있는 적절한 이름을 사용합니다.
# 테이블이름은 다른 테이블과 중복되는 이름이면 안됩니다. 공백 X
# 한 테이블 내에서 필드 이름이 중복되지 않게 합니다.
# 각필 드는 ", "로 구분하여 생성합니다.
# CREATE를 비롯 한 모든 SQL명령은 ";"세미클론을 붙여 마무리해야 합니다.
# 필드 뒤에 DATATYPE은 반드시 지정하고 [] 안에 해당 내용이 있을 때 작성하며, 생략 가능합니다.
# 테이블명과 필드명은 반드시 문자로 시작해야 하고 예약어 명령어 등을 테이블명과 필드명으로 쓸 수 없습니다.
# 테이블 생성 시 대/소 문자는 구분하지 않습니다.(기본적으로 테이블이나 칼럼명은 대문자로 합니다)
# Date유형은 별도로 크기를 지정하지 않다.
# 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 합니다.
# 칼럼과 칼럼의 구분은 콤마로 하되 , 마지막 칼럼은 콤마를 찍지 않습니다.
# 칼럼에 대한 제약 조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.
# 제약 조건은 위 예시처럼 DvdNum뒤에 NotNull을 기술한 것과 같은 필드 LEVEL 방식과 COSTRAINT로 테이블 생성 마지막에 모든 제약조건을 기술하는 테이블 LEVEL 방식이 있다.

 

- 제약조건(CONSTRAINT)

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

 # UNIQUE KEY
- 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의합니다.
 단 NULL 은 고유키 제약의 대상이 아님으로,
 NULL 값을 가진 행이 여러 개가 UNIQUE KEY 제약에 위반하지는 않습니다.
 
 # NOT NULL 
 - 비어있는 상태, 아무것도 없는 상태를 허용하지 않습니다. -> 입력을 필수로 해라!
 
 # CHECK  
 - IF문처럼 참 거짓을 얻어내서 본다.
 입력할 수 있는 값의 범위를 제한한다.
 CHECK제약으로는 TRUE OR FALSE로 평가할 수 있는 논리식을 지정합니다.
 
 # FOREIGN KEY
 - 관계형 데이터 베이스에서 테이블 간의 관계를 정의하기 위해
 기본키를 다른 테이블의 외래 키로 복사하는 경우 외래 키가 생성됩니다.
 이로서 참조 무결성 제약 옵션이 생성됩니다.

 

 

정리

- 데이터 베이스란?  

- SQL의 의미와 종류?

- 테이블 생성(CREATE)

- 제약조건(constraint)

728x90
LIST
Comments