본문 바로가기
CLASS/DATABASE

#3-1/ Oracle table,column

by hingu 2024. 9. 3.

👀 배열 자료형

  • Oracle에는 enum 없음 
    mgender enum('M','W') not null default 'M'
    =요렇게=> mgender char(1) check (mgender IN('M','N')) not null
  • set 도 없음

=> check column 자료형 사용

 

 

👀 table명 변경

rename 기존테이블명 to 변경할테이블명

rename member to member_ship

: table명 member  ->  member_ship 으로 변경

 

👀 table list 확인

select table_name from user_tables;  

: table명 아님 이게 진짜 명령문임ㅎ

 

👀 data 삽입

insert into member_ship values ('hong','홍길동','01012345678','hong@naver.com',23,'M');

 


create table member_ship(
mid varchar2(30) not null,
mname nchar(10) not null,
mtel varchar2(11) null,
memail varchar2(60) null,
mage number(3) null,
mgender char(1) check (mgender IN('M','N')) not null,
primary key(mid)
);


#지금 요렇게 만들어져있음

 

👀 column 이름 변경

alter table table명 rename column 기존column명 to 변경할column명;

 

alter table member_ship rename column MID to user_id;

 

👀 column 자료형 변경

alter table member_ship modify mid nvarchar2(10) not null;

 

👀 column 추가

alter table 테이블명 add column 추가할컬럼명 자료형 not null or null

alter table member_ship add user_pw NVARCHAR2(100) not null;

alter table member_ship add user_pw VARCHAR2(100) default 'pwtest' not null;   -data추가하면서 colomn 추가

=> ⭐ 이미 table에 data가 한개라도 있는 경우에 not null로만으로는 컬럼추가 불가능

      -> defalut로 값 입력하면서 추가하면 가능

 

👀 column 삭제

alter table member_ship drop column user_pw

 

👀 column 활성화/비활성화 (숨김)

alter table member_ship modify mgender INVISIBLE;     -  컬럼 비활성화

alter table member_ship modify mgender VISIBLE;   - 컬럼 활성화

 

👀 column 위치변경

: 바꿀 column 제외하고 모두 INVISIBLE 후 다시 VISIBLE 해주면 숨겼던 colmn이 다 뒤에 생김

 

🔽

 

create table member_ship2 as 
select user_id,user_pw,mname,mage,mtel,memail,mgender from member_ship;


#요렇게 하고 rename 해줘도 됨

 


 

👀 SEQUENCE 제작

Oracle은 auto_increment가 없음 => SEQUENCE를 이용하여 자동증가값(고유값)을 핸들링 할 수 있음

create SEQUENCE 만들시퀀스명 start with 1 INCREMENT BY 1 MAXVALUE 99999999

 

INCREMENT BY n(숫자)   => n씩 숫자를 증가시키는 형태 

START WITH n(숫자)  => 시작값 

MAXVALUE  n(숫자) => 최대값 

NOMAXNALUE  => 최대값이 없음

CYCLE  => MAXVALUE가 되었을 경우 다시 1부터 시작 여부를 사용 / 기본은 NOCYCLE

CACHE  => 미리 생성할 번호 갯수를 메모리에 저장 (최대 20번까지 저장 가능)  / 기본은 NOCACHE

 

sequence먼저 꼭 만들고 table 생성해야함!

sequence이름은 중복 불가

auto_increment(자동증가값) 기능 만드는거임 

 

⭐ sequence 사용시 주의 

  • 다른 table과 sequece를 공용으로 사용시 1부터 시작 안하고 기존 사용하던 마지막 번호가 적용됨!!!
     => sequnece는 공용사용하지 말쟈... 각각의 sequence를 제작하여 사용하는것을 권장!
  • 삭제시 큰일남

 

👀 자동증가값 적용하여 insert

insert into 테이블명 values (시퀀스이름.nextval, '', '', '',  ...... );

#table 생성
create table member(
midx number(8) not null,
mid varchar2(30) not null,
mname nchar(10) not null,
mtel varchar2(11) null,
memail varchar2(60) null,
mage number(3) null,
mgender char(1) check (mgender IN('M','N')) not null,
primary key(midx,mid)
);

#insert - sequence 적용 : autono.nextval
insert into member values (autono.nextval,'hong2','홍길동2','01012345678','hong@naver.com',22,'M');

 

 

👀 SEQUENCE 없이 사용하는 형태

: SEQUENCE 제작 + Table 제작  동시에

 

cloumn명 number(4) GENERATED ALWAYS as IDENTITY (START WITH 1 INCREMENT BY 1)

 

insert

    insert into table면 (컬럼명-자동증값을 뺀 나머지 컬럼 모두 작성) values ('', '','' .....);

#table 제작
create table member3(
midx number(8) GENERATED ALWAYS as IDENTITY (START WITH 1 INCREMENT BY 1),
mid varchar2(30) not null,
mname nchar(10) not null,
mtel varchar2(11) null,
memail varchar2(60) null,
mage number(3) null,
mgender char(1) check (mgender IN('M','N')) not null,
primary key(midx,mid)
);

#이렇게 넣어야함 => midx를 아예 넣어주지 않기 때문에 앞 () 생략 불가
insert into member3 (mid,mname,mtel,memail,mage,mgender) values 
('kim','김유신','01012345678','kim@naver.com','33','M');

 

 


 

👀 휴지통 기능

drop된 테이블을 복구할 수 있는 기능이 있음

 

select * from user_recyclebin;   

휴지통에 있는 table list 출력

요렇게 확인 가능

 

 

FLASHBACK table 복구할table명 to before DROP;

명령문으로 DROP으로 삭제된 table 복구 ( data도 복구됨 )

요렇게해도됨 - 휴지통에서 우클릭 - FLACHBACK

 

 

PURGE RECYCLEBIN;

휴지통 비우는 명령문   =>  휴지통도 용량을 차지하기 때문에 필요없으면 지워주는게 좋을듯ㅎ

 

 

'CLASS > DATABASE' 카테고리의 다른 글

#4-1 / Oracle sts 연결  (0) 2024.09.03
#3-2/ Oracle data복구  (0) 2024.09.03
#2-1 / Oracle 사용자 추가 / 문자,숫자,date 자료형  (0) 2024.09.02
🌸 Oracle Setting  (0) 2024.08.21
mysql -> json 변환 사이트  (0) 2024.07.01