DB/DBMS & SQL

DBMS SQL Oracle Database CRUD - DML 시퀀스

쏠솔랄라 2023. 3. 8. 12:06

 

 

DBMS & SQL 기본개념과 정의 Oracle Database

https://developernew.tistory.com/57

 

DBMS & SQL 기본개념과 정의 Oracle Database

DB(DataBase) : 다량의 데이터를 저장할 수 있는 저장소 DBMS(DataBase Management System) : DB에 데이터를 저장하고 관리하는 시스템 ex. Oracle(Oracle), MySQL, MS-SQL Server(MS), DB2(IBM), SQLite, MariaDB, ... SQL(Structured Query

developernew.tistory.com

 

DBMS SQL Oracle Database CRUD - DDL 테이블, 휴지통

https://developernew.tistory.com/58

 

DBMS SQL Oracle Database CRUD - DDL

https://developernew.tistory.com/57 DBMS & SQL 기본개념과 정의 Oracle Database DB(DataBase) : 다량의 데이터를 저장할 수 있는 저장소 DBMS(DataBase Management System) : DB에 데이터를 저장하고 관리하는 시스템 ex. Oracle(

developernew.tistory.com

 

 


 

 

CRUD - 생성, 읽기, 수정, 삭제 (DML)

 

 

CRUD - 생성, 읽기, 수정, 삭제

 

DML에 대한 CRUD

C : insert

R : select

U : update

D  delete

DML에서의 CRUD

 

 

레코드(데이터) 추가

insert into 테이블(필드1, 필드2, 필드3, ...) values(데이터1, 데이터2, 데이터3, ...);

insert into sample(num, name, reg) values (1, '김민준', to_date('2023-03-08'));

 

insert into sample(reg, num) values(sysdate, 3);

 

 

* 12C 이상부터 일반 유저에게 table에 입력할 수 있는 권한을 주지 않으므로

별도의 권한을 함께 주어야 데이터를 입력할 수 있다

alter user 계정명 default tablespace users quota unlimited on users;

alter user c##jsp01 default tablespace users quota unlimited on users;

 

 

트랜젝션

하나의 작업 단위

DML에 한해서 작동이 된다

 

작업 저장 : commit;

작업 되돌리기 : rollback;

 

 

sequence 시퀀스

 

오라클에서만 존재

어떤 중복되지 않는 번호를 붙일 때 사용하는 객체

 

 

생성

create sequence 시퀀스명 옵션1 옵션2 옵션3 ... ;

** 콤마가 아닌 스페이스로 옵션명 지정

create sequence sample_seq;

 

 

옵션

start with 시작값
minvalue 최소값 
maxvalue 최대값
increment by 증감값
cycle / nocycle
order / noorder 
cache / nocache

 

(default 값)

start with 시작값 ; 1 (LAST_NUMBER)
minvalue 최소값 ; 1 ; 
maxvalue 최대값 ; 1.000E-28 ; 최대 28자리까지 쓸 수 있다
increment by 증감값 ; 1
cycle / nocycle ; nocycle
order / noorder  ; noorder
cache  / nocache ; 20

 

minvale를 바꾸면 start with값이 바뀐다

start with 값을 바꾸어도 minvalue 값은 바뀌지 않는다

 

ex. 캐쉬를 주지 않고 시작값을 1로, 최대값은 100까지 변화는 3씩인 시퀀스를 만들어라

-> alter sequence sample_seq maxvalue 100 increment by 3;

 

 

시퀀스 확인

select * from user_sequences;

 

 

시퀀스 추출

시퀀스명.nextval

insert into sample(num, name, reg) values (sample_seq.nextval, '김땡땡', to_date('2023-03-08'));

insert into sample values (sample_seq.nextval, '마동석', '2023-03-08');

insert into sample(reg, num) values (sysdate, sample_seq.nextval);

num sequence가 3 단위로 증가하는 것을 볼 수 있다

 

 

시퀀스 삭제

delete sequence

 

 


 

 

Exercise 1

 

다음의 조건에 부합하는 테이블을 구현하세요

테이블명 : testmember

항목 : 번호(no) - 숫자 형태
이름(name) - 가변 문자열 최대 한글 10글자
아이디(id) - 가변 문자열 최대 영문 20글자
비밀번호(pw) - 가변 문자열 최대 영문 20글자
마일리지(money) - 숫자 형태
가입일(joindate) - 날짜 형태

번호를 부여할 수 있는 시퀀스를 생성하세요(testmember_seq)
-> 캐시 사이즈 0, 시작번호 1, 증가 간격 1로 설정

위의 형식에 맞게 테이블 생성 후 메모장 파일의 데이터 시트를 추가하세요

가변문자열(varchar2) 항목을 간격조절 하신다음 목록까지 출력하시면 완성

간격조절방법 : col 항목명 for a크기; (크기는 a10, a5 와 같이 지정)
예를들어 name 항목의 크기를 조절하고 싶으면 col name for a10;

 

 

STEP1 테이블 생성

 

create table testmember (
no number,

name varchar2(30),

id varchar2(20),

pw varchar2(20),

money number,

joindate date

);

 

 

STEP2 시퀀스 생성

 

create sequence tsetmember_seq nocache; 

 

 

STEP3 필드 데이터 입력

 

 

STEP4 가변문자열 항목 조정

 

col 항목명 for a숫자(간격);

col name for a15;

col name for a10;

 

col 항목명 for 99999(자리수);

// 숫자행 간격 잘못 조절한 경우 

 

 

STEP5 목록 출력