일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #오라클 #자바 #연동
- #자바 #입출력
- #StringBuffer #자바 #
- #HTML4.01또는 5의 차이 #parsing #웹브라우저 #form 태그 #태그 속성 #id #name
- #Web #웹 #jsp #servlet
- #오라클 #함수 #MAX() #MIN() #LPAD() #SUBSTR() #TO_CHAR() #복사 #지우기 #수정
- #스윙 #함수 #Swing
- #자바 #오라클 #연동
- #돔 트리 #form 태그 #이스케이프문자 #시작태그 #form태그
- #오라클 #용어 정리 #데이터 타입 #비교 연산자 #논리 연산자 #SELECT 문
- #리뷰 #CSS #선택자
- #자바 #스윙관련 함수 #API보고 정리했음
- #오라클 #11g #테이블
- #자바
- #jdbc #자바
- #함수 #VIEW #시퀀스 #INDEX
- #웹 #HTTP 프로토콜
- #48일차 #한 내용 #요약
- #웹 #중요한 것
- #BigDecimal
- #프로그래밍 기초
- #제약 조건 #함수 #컬럼 변경 #테이블 변경& 삭제
- #함수 #키워드 #조인 #서브쿼리
- #자바 #오라클 #JDBC
- #자바 #파일 #함수
- #자바 #입출력 #함수
- #Ajax #EL #JSTL
- #오라클 #계정 생성 #테이블 #생성 #조회 #추가
- #스프링 프레임 워크 #인코딩 #컨텍스트 #환경설정
- #웹 #정의 #5대 브라우저 #
- Today
- Total
IT journey
DBMS-Table&레코드와 시퀀스 본문
직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)
※ 들어가기 전, 공지사항
1. 실습 내용은 이어지므로 차례대로 하는 것을 권장해드립니다.
2. 본문에 들어가기 전, DBMS - 개요에서 실습 후 계정을 삭제하신 분들이나 처음 DBMS를 진행하신 분들은 DBMS - 개요 글을 참고하여 계정을 생성한 뒤 계정 권한까지 설정해주시길 부탁드립니다.
계정을 생성하려고 들어갔는데 아래와 같은 창이 뜬다면 !!
내 컴퓨터에서 서비스 창을 찾아, 아래 빨간색으로 표시된 프로그램들을 실행해주셔야 합니다.
실행 후 DBMS - 개요 글을 참고하여 계정을 생성하신 분들은 아래 내용을 봐주시면 됩니다.
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;
'개인공부공간 > DBMS' 카테고리의 다른 글
DBMS-서브쿼리, join, 제약조건, 뷰 (8) | 2021.06.15 |
---|---|
DBMS-데이터를 검색,수정,삭제(feat.오라클 함수 2편) (16) | 2021.06.14 |
DBMS- 오라클 함수 1편 (10) | 2021.06.12 |
DBMS - 개요 (10) | 2021.06.10 |