관리 메뉴

IT journey

DBMS-Table&레코드와 시퀀스 본문

개인공부공간/DBMS

DBMS-Table&레코드와 시퀀스

step 2021. 6. 11. 22:20
728x90
반응형

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)

※ 들어가기 전, 공지사항

1. 실습 내용은 이어지므로 차례대로 하는 것을 권장해드립니다.

2. 본문에 들어가기 전, DBMS - 개요에서 실습 후 계정을 삭제하신 분들이나 처음 DBMS를 진행하신 분들은 DBMS - 개요 글을 참고하여 계정을 생성한 뒤 계정 권한까지 설정해주시길 부탁드립니다.

계정을 생성하려고 들어갔는데 아래와 같은 창이 뜬다면  !!

 

내 컴퓨터에서 서비스 창을 찾아, 아래 빨간색으로 표시된 프로그램들을 실행해주셔야 합니다.

실행 후 DBMS - 개요 글을 참고하여 계정을 생성하신 분들은 아래 내용을 봐주시면 됩니다.

 

DBMS - 개요

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :) DB ○ DB의 정의 다량의 데이터를 저장할 수 있는 저장소입니다. ○ 특징 (1) Real-time Accessibilites(실시간 접근이 가능)  -> 즉시

step-journey.tistory.com


Table

▷ 실습 하기 전 알아야 할 개념부터 정리해보겠습니다.

  • 테이블이란, 데이터베이스 내에서 데이터 들이 저장되는 공간, 창고(표)로 생각하면 됩니다.
  • 테이블은 테이블 스페이스라는 곳에 사용자에 따라 각 테이블이 만들어지게 되며 사용자에 따라 각 테이블이 만들어지게 됩니다.
  • 테이블 관련 용어는 아래와 같습니다.

  • 테이블을 생성하고자 할 때는 create table 테이블명(필드명 필드타입 제약조건, 필드명 필드타입...); 를 이용합니다.
  • 계정 내에 있는 테이블 목록을 확인할 때는 select * from tab;을 이용합니다.
  • 테이블 상세 확인 할 때는 desc 테이블명; 을 이용합니다.
  • 테이블을 복사할 때에는 데이터까지 복사되며, *NOT NULL  조건만 복사됩니다. 이 때, create table 생성할 테이블명 as select * from 복사할테이블명;을 이용합니다.
  • 필드를 추가할 경우에는 alter table 테이블명 add(필드명 필드타입,...);을 이용합니다.
  • 필드 *자료형을 변경할 경우에는 alter table 테이블명 modify(필드명 필드타입,...); 을 이용합니다.
  • 필드를 삭제할 경우에는 alter table 테이블명 drop(필드명,...);을 이용합니다.
  • 테이블을 삭제할 경우에는 아래 두 가지 방법이 있습니다.
  • ① drop table 테이블명;
  • ② drop table 테이블명 cascade; 
  • 참고로, ②번의 방법은 해당 테이블과 관계있는 모든 객체들도 삭제한다는 것입니다. 쉽게 말해, 데이터를 휴지통을 거치지 않고 완전히 삭제하겠다는 말과 같습니다.

*NOT NULL 이란 값이 꼭 입력되어야 한다는 것입니다.

*자료형(Data Type)이란 컴퓨터 시스템과 프로그래밍 언어에서 실수, 정수, 소수 자료형 등의 여러 종류의 데이터를 식별하는 타입으로서, 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행할 수 있는 명령어, 데이터의 형태, 의미, 크기와 해당 자료형의 값이 저장되는 방식입니다.

참고로, Oracle의 자료형은 크게 4가지가 있습니다. 

  • 문자열 데이터 타입
CHAR(n) *고정 길이 데이터 타입(최대 2000byte)
VARCHAR2(n) *가변 길이 데이터 타입(최대 4000byte)
NCHAR(N) 고정 길이 유니코드 데이터 타입(최대 2000byte)
NVARCHAR2(n) 가변 길이 유니코드 데이터 타입(최대 4000byte)
LONG 가변 길이 데이터 타입(최대 2Gbyte)
CLOB 대용량 텍스트 데이터 타입(최대 4Gbyte)
NCLOB 대용량 텍스트 유니코드 데이터 타입(최대 4Gbyte)

*고정 길이는 지정된 길이보다 짧은 데이터가 입력시 나머지 공간은 공백으로 채워지고, 가변 길이는 지정된 길이보다 짧은 데이터 입력시 나머지 공간은 공백으로 채워지지 않습니다.

  • 숫자형 데이터 타입
BINARY_FLOAT 부동 소수점 데이터 타입(4byte)-32bit 부동소수
BINARY_DOUBLE 부동 소수점 데이터 타입(8byte)-64bit 부동소수
NUMBER(P,S) P,S로 표현 숫자 데이터 타입
P(precision):1~38 -> 유효숫자
S(Scale):-84~127 -> 소수점 유효자리 
  • 날짜형 데이터 타입
DATE 고정 길이 날짜
INTERVAL_YEAR 날짜(년도, 월) 형태의 기간 표현 데이터 타입
INTERVAL_DAY 날짜 및 시간(요일, 시, 분, 초) 형태의 기간 표현 데이터 타입
TIMESTAMP 밀리초(ms)까지 표현 데이터 타입
TIMESTAMP_WITH TIME ZONE 날짜 및 시간대 형태의 데이터 타입
TIMESTAMP_WITH LOCAL TIME ZONE 저장 시 데이터베이스 시간대를 준수, 조회시 조회하는 클라이언트 시간 표현 데이터 타입
  • 이진 데이터 타입
RAW(n) 가변 길이 이진 데이타 타입(최대 2Gbyte)
LONGRAW 가변 길이 이진 데이터 타입(최대 4Gbyte)
BLOB 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입(최대 4Gbyte)
BFILE 대용량의 바이너리 데이터를 파일형태로 저장하기 위한 데이터 타입(최대 4Gbyte)

▷ 이제 실습해보겠습니다.

1. 실습 계정을 연결해보세요.

2. 아래 조건에 부합하는 테이블을 만들어주세요.

[조건]

테이블명 : sample

학번(n) - 숫자 형태

이름(name) - 고정 문자열 최대 한글 17글자

주소(address) - 가변 문자열 최대 100글자

3. 계정 내에 있는 테이블 목록을 확인해해보세요.

4. sample 테이블을 상세 확인해보세요.

5. sample 테이블을 복사할 때 복사할 테이블명을 tb로 해보세요.

6. sample 테이블을 삭제해보세요.

7. tb 테이블의 필드를 아래 조건을 추가해보세요.

나이(age) - 숫자 형태

8. tb 테이블의 필드 자료형을 아래 조건과 같이 수정해보세요.

주소(address) - 가변 문자열 최대 100글자 에서 고정 문자열 최대 100글자로 변경해보세요.

9. tb 테이블의 필드명(address) 삭제해보세요.

10. tb 테이블 삭제 해보세요.

참고로, 정답은 순서대로 입니다.

더보기
conn oracle/oracle;
create table sample(n number,name char(10),address varchar2(100));
select * from tab;
desc sample;
create table tb as select * from sample;
drop table sample;
alter table tb add(age number);
alter table tb modify(address char(10));
alter table tb drop(address);
drop table tb;

레코드와 시퀀스

레코드

▷ 레코드에 대한 개념을 알아봅시다.

  • 레코드란, 테이블 안에 저장되는 데이터들을 말합니다.
  • 데이터(레코드)들을 추가할 때는 insert into 테이블명(필드명1,필드명2,...) values(데이터1,데이터2,...);를 사용합니다.

참고로, 작업을 저장할 때는 commit; 을 입력해주고 작업을 되돌려줄때는 rollback;을 입력해줍니다.

▷ 레코드에 대한 실습해봅시다.

1. 계정을 연결해주세요.

2. 아래 조건에 부합하는 테이블을 만들어주세요.

[조건]

테이블명 : sample

학번(no) - 숫자 형태

이름(name) - 고정 문자열 최대 한글 17글자

날짜(da) - 고정 길이 날짜

3. 아래와 같은 데이터를 추가해보세요.

필드명은 no,name,da 으로 입력하고

데이터는2123456, '둘리', 2021-06-11'로 하면서 da에 해당하는 데이터를 입력할 때, to_date를 쓰세요.

참고로 , 정답은 순서대로 입니다.

더보기
conn oracle/oracle;
create table sample(no number,name char(10),da date);
insert into sample(no,name,da) values(2123456,'둘리',to_date('2021-06-11'));

/*참고로,들어간 데이터를 확인해보고 싶을시에는 아래와 같이 해주면 됩니다.*/
select * from sample;

시퀀스

▷ 시퀀스에 대한 개념을 알아봅시다.

- 시퀀스란, 어떤 중복되지 않는 번호를 붙일 때 사용되는 객체입니다.

- 생성할 때는

CREATE SEQUENCE 시퀀스명

   [  START  WITH  ] 

   [  {MINVALUE  n  |  NOMINVALUE}  ] 

   [  {MAXVALUE  n  |  NOMAXVALUE}  ] 

   [  INCREMENT  BY  n  ] 

   [  {CYCLE /  NOCYCLE}  ] 

   [  {ORDER / NOORDER} ]

   [  {CACHE  n  /  NOCACHE} ];

을 이용합니다. 이 옵션들은 선택사항인데 안 쓰게 되면 디폴트값으로 들어갑니다.

각각에 대한 옵션에 대해 설명해 보겠습니다.

쉽게 생각하면 for문이라고 생각하면 되나, 음수는 쓰면 안됩니다. 

START  WITH 는 시작값으로,

MINVALUE 는 최소값으로 초기식을 생각하면 이해하기 쉬우며,

MAXVALUE 는 최대값으로 조건식으로 생각하며 이해하기 쉬우며,

INCREMENT  BY 는 변화값으로 증감식으로 하면 이해하기 쉽고,

CYCLE / NOCYCLE 중 디폴트 값은 NOCYCLE 이며, 

ORDER / NOORDER 는 정렬할 때 쓰이는 것으로 많이 쓰이지 않고,

CACHE  /  NOCACHE 는 사용자가 많으면 CACHE 를 주어야 합니다. 대부분 CACHE를 줍니다.

- 시퀀스를 조회할 때는 selcect * from user_sequences; 를 이용합니다.

- 시퀀스를 삭제할 때는 drop sequence 시퀀스명; 을 이용합니다.

- 시퀀스는 수정하지 못합니다.

- 시퀀스를 추출할 때는 시퀀스명.nextval를 씁니다.

▷ 시퀀스에 대한 실습을 해봅시다.

1. 계정을 연결해주세요.

2. 아래 조건에 부합하는 시퀀스를 만들어주세요.

[조건]

시퀀스명 : test_seq

캐시를 주지않고 시작값은 1부터 최대 50까지 변화는 5를 줍니다.

3. test_seq를 조회해주세요.

4. test_seq에서  '둘리', 2021-06-11'를 추출해주세요.

*만약 table이 없다면 레코드 실습을 통해 table을 만들어주세요!!

5. test_seq를 삭제해주세요.

6. sample 테이블을 삭제해주세요.

참고로 , 정답은 순서대로 입니다.

더보기
conn oracle/oracle;
create seqence test_seq nocache start with 1 maxvaule 50 increment by 5;
select * from user_sequences;
insert into sample(no,name,da) values(test_seq.nextval,'둘리',to_date('2021-06-11'));
drop sequence test_seq;
drop table sample;
728x90
반응형
Comments